マクロ計算ツール
1日の目標カロリーをタンパク質、炭水化物、脂質に振り分けます。2000kcalを30/40/30で分けると、タンパク質150g、炭水化物200g、脂質66.7gです。合計が100になれば割合は自由に選べます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 1日のカロリー
- 2,000
- たんぱく質(%)
- 30
- 炭水化物(%)
- 40
- 脂質(%)
- 30
- たんぱく質(g)
- 150
1 日の総カロリーをタンパク質・炭水化物・脂質に分け、割合の入力からそれぞれのグラム数と kcal を返します。タンパク質と炭水化物は 1 g あたり 4 kcal、脂質は 1 g あたり 9 kcal を用います。
カロリーからグラムへ、2段階で計算
マクロの計画は、1日の目標カロリーという1つの数と、そのうちタンパク質、炭水化物、脂質がそれぞれどれだけを占めるかという3つの割合から始まります。まず、各割合を合計に当てはめます。2000kcalを初期設定の30、40、30%で分けると、タンパク質600kcal、炭水化物800kcal、脂質600kcalです。次に、タンパク質と炭水化物は1gあたり4kcal、脂質は9kcalという一般的な係数でエネルギーを重さに換えます。結果はタンパク質150g、炭水化物200g、脂質66.7gです。
マクロを振り分けるときのよくある間違い
すべての割合を4で割るのが典型的な間違いです。脂質は1gあたりのエネルギーが2倍以上あるため、タンパク質と同じに扱うとグラム数を多く見積もってしまいます。合計がちょうど100にならない割合もよくある誤りで、ここでは黙って引き伸ばさずに受け付けないため、入力ミスが計画に紛れ込みません。各割合は0から100の間、目標カロリーは0より大きくする必要があります。結果は初期設定で小数点以下1桁に丸められ、0桁から2桁まで選べます。
割合・既定値・合計 100 の規則
3 つの割合は 1e-9 の許容誤差内で 100 に合計されなければなりません。そうでなければ、割合が 100 に足し合わされなければならないというメッセージで呼び出しは失敗します。この許容誤差は意図的に厳しく、30/40/30 は通りますが 30/40/29 は静かに再スケールされる代わりに拒否されます。
calories 自体は 0 より厳密に大きい有限な数でなければなりません。
活用例
栄養とダイエットのアプリ
式をクライアントに送り込むことなく、ユーザーのカロリー目標と選んだマクロ比率を、グラム単位の 1 日の計画に変えます。
よくある質問
calories だけを送るとどうなりますか?
既定の 30% タンパク質・40% 炭水化物・30% 脂質の分割を使いますので、1 つの calories 値が完全なマクロの内訳を返します。
なぜグラム数 × 4 が kcal と正確に一致しないのですか?
グラム数と kcal はそれぞれ丸めていないエネルギー値から独立に丸められますので、丸めた形は設計上わずかに異なることがあります。
カロリーからタンパク質のグラム数はどう求めますか?
目標カロリーにタンパク質の割合を掛け、1gあたりのエネルギーである4で割ります。2000kcalでタンパク質30%なら600kcal、つまり1日150gです。
脂質は4ではなく9で割るのはなぜですか?
脂質は1gあたり9kcal、タンパク質と炭水化物は4kcalだからです。そのため脂質600kcalは66.7gにとどまり、同じエネルギーのタンパク質150gより軽くなります。
割合の合計が100にならないとどうなりますか?
黙って調整せず、受け付けません。30、40、29のような組み合わせは通らないので、3つの合計がちょうど100になるようどれかを直して、もう一度試してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/macro-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"calories":2000}'const res = await fetch("https://api.kit.forhosting.com/dev/macro-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"calories": 2000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/macro-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"calories": 2000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/macro-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"calories":2000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"calories":2000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/macro-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"calories": 2000
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.macro_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
分割の計算方法
グラム数はタンパク質で kcal / 4、炭水化物で kcal / 4、脂質で kcal / 9 です。既定の 30/40/30 を 2000 kcal の目標に適用すると 600・800・600 kcal になり、それが 150 g のタンパク質・200 g の炭水化物・66.7 g の脂質になって、出荷される例と正確に一致します。calories に各割合を 100 で割った値を掛けて protein_kcal・carb_kcal・fat_kcal を得て、次に Atwater 係数を用いてエネルギーを質量に変換します。応答は総カロリーと 3 つの割合を返しますので、呼び出し側はクライアント側で何も再計算することなく、1 回のリクエストから完全なマクロ計画を保存できます。
割合・既定値・合計 100 の規則
protein_percent は既定 30、carb_percent は 40、fat_percent は 30 ですので、calories だけを渡すとバランスの取れた分割が返ります。各割合は 0 以上 100 以下の有限な数でなければならず、フィールドごとに検査され、範囲外の値はそのフィールド名を示す invalid_input を送出します。
丸めと 6 つの数値出力
任意の decimals パラメータは既定 1 で、0 から 2 までの整数でなければなりません。両者は丸めていないエネルギー値から得られます。それ以外は invalid_input を送出します。グラム数と kcal は別々に丸められるため、protein_g × 4 が常に丸めた protein_kcal を再導出するとは限りません。丸めの後、各数値フィールドは有限性を再検査され、非有限の結果は invalid_input を送出しますので、出力は常に 6 つのマクロ数値すべてがそろった、きれいで完全に埋められた JSON オブジェクトになります。
連携の活用例
食事準備とコーチングのツール
API を通じて多数のクライアントのタンパク質・炭水化物・脂質の目標を一度に生成し、それぞれ独自の割合で分割します。
フィットネスのコンテンツと計算ツール
無料の widget を埋め込み、訪問者が 40/40/20 のような比率を試してグラム数が決定的に更新されるのを見られるようにします。
技術的な質問
どの 1 グラムあたりカロリー係数が使われますか?
タンパク質と炭水化物は 1 グラムあたり 4 kcal、脂質は 1 グラムあたり 9 kcal で、lib.js で適用される標準的な Atwater 変換です。
割合は 100 に足し合わされなければなりませんか?
はい。protein_percent・carb_percent・fat_percent は 1e-9 の範囲内で 100 に合計されなければならず、そうでなければ呼び出しは invalid_input エラーを返します。
無料ですか、また API の費用はいくらですか?
ブラウザ widget は無料で(tier A)、同一のコアを実行します。API 呼び出しは成功したリクエストごとに $0.002 から課金されます。