成分 / Seibun

栄養素ティア & ADT

成分 API は栄養素をティアで分け、各栄養値は種別(kind)を保持したまま返します。 「微量(Tr)」や「未測定」を 0 に潰さないのが、このデータの中核的な価値です。

ティア(core / extended)

ティア含まれる栄養素取得方法
core(既定)エネルギー(kcal)・たんぱく質・脂質・炭水化物・食塩相当量+食物繊維総量既定で返る
extendedカルシウム・鉄・カリウム・ビタミン A・D・B1・B2・C?include=extended

一般的な栄養成分表に載る範囲が core、ビタミン・ミネラル類が extended です。 core は食事管理アプリの土台として最も使う範囲なので、既定で返します。

# 既定(core のみ)
curl "https://api.example.com/v1/foods/01001" -H "X-API-Key: fnk_xxxx"
 
# extended を追加(ビタミン・ミネラル)
curl "https://api.example.com/v1/foods/01001?include=extended" -H "X-API-Key: fnk_xxxx"

fields で絞り込む

必要な栄養素だけが欲しいときは fields= でキーを指定します。

curl "https://api.example.com/v1/foods/01001?fields=energy_kcal,protein" \
  -H "X-API-Key: fnk_xxxx"

栄養値の kind(型保存契約)

各栄養値は { kind, value?, unit, note? } の形を取ります。kind は成分表の元表記を **判別共用体(ADT)**として保持したもので、次の 6 種類です。

kind元表記意味value
measuredN測定値あり
estimated(N)推定値あり
traceTr微量(定量下限未満)なし
estimatedTrace(Tr)推定の微量なし
notMeasured- / 空欄未測定なし
measuredWithNoteN†測定値(注記付き)あり(+ note

value が無い種別(traceestimatedTracenotMeasured)を 0 として扱うと、 「微量に含まれる」と「測定していない」と「含まれない」が区別できなくなります。 API はこの区別を保ったまま返すので、表示や計算の方針はクライアント側で選べます。

{
  "nutrients": {
    "energy_kcal":  { "kind": "measured",  "value": 343,  "unit": "kcal" },
    "protein":      { "kind": "estimated", "value": 11.3, "unit": "g" },
    "fat":          { "kind": "measured",  "value": 6.0,  "unit": "g" },
    "carbohydrate": { "kind": "measured",  "value": 64.9, "unit": "g" },
    "salt":         { "kind": "measured",  "value": 0.0,  "unit": "g" },
    "dietaryFiber": { "kind": "trace",     "unit": "g" }
  }
}

unit は栄養素カタログから合成され、すべての種別に付きます。任意量へのスケーリングでは measured / estimated のみ線形にスケールし、trace / estimatedTrace / notMeasured は素通しされます(ポーション を参照)。

栄養素カタログ(名称・単位・分類・ティア)は GET /v1/nutrients?tier=core|extended|all で取得できます。