AIコーディング 2026.05.03
ClaudeとChatGPTで栄養管理アプリを作る|5ステップ実装ガイド【2026年版】
5ステップ実装ガイド
Step 1 (15分): 作りたいものを明確にする(機能リスト・データ構造)
Step 2 (10分): Claude/ChatGPTにコード生成を依頼する
Step 3 (10分): 生成されたコードを実行してエラーを確認
Step 4 (10分): エラーをAIに貼り付けて修正を依頼
Step 5 (5分): 動作確認・テスト
合計: 50分で最初の動作版が完成
Step 2: コード生成プロンプト例
以下の条件で栄養管理アプリをPythonで作ってください。
機能:
1. 食事を入力する(名前・量)
2. Claude APIで栄養素(カロリー・タンパク質・炭水化物・脂質)を推定する
3. 1日の合計を表示する
4. JSONファイルに保存する
制約:
- requests, anthropic パッケージのみ使用
- コマンドライン(CLI)で動作する
- 環境変数でAPIキーを管理する
- 初心者でも読めるコメントを追加する
出力: 完全に動作するPythonコードのみ
栄養管理アプリの実装例
# nutrition_tracker.py
# Claude APIで食事の栄養素を推定して記録する
import anthropic
import json
from pathlib import Path
from datetime import date
client = anthropic.Anthropic()
DATA_FILE = Path("nutrition_log.json")
NUTRITION_SYSTEM = """あなたは栄養士です。
食事名と量から栄養素を推定してください。
出力形式(JSON):
{
"calories": 数値,
"protein_g": 数値,
"carbs_g": 数値,
"fat_g": 数値
}
JSONのみ出力してください。"""
def estimate_nutrition(food: str, amount: str) -> dict:
"""Claude APIで食事の栄養素を推定する"""
response = client.messages.create(
model="claude-haiku-4-5-20251001", # 栄養素推定はHaikuで十分
max_tokens=100,
system=NUTRITION_SYSTEM,
messages=[{"role": "user", "content": f"食事: {food} ({amount})"}]
)
cost = (response.usage.input_tokens * 0.80 + response.usage.output_tokens * 4.00) / 1_000_000
try:
nutrition = json.loads(response.content[0].text)
nutrition["food"] = food
nutrition["amount"] = amount
nutrition["cost_usd"] = round(cost, 5)
return nutrition
except json.JSONDecodeError:
return {"error": "解析失敗", "food": food, "cost_usd": round(cost, 5)}
def log_meal(food: str, amount: str) -> dict:
"""食事を記録して今日の合計を返す"""
today = str(date.today())
log = json.loads(DATA_FILE.read_text()) if DATA_FILE.exists() else {}
if today not in log:
log[today] = []
nutrition = estimate_nutrition(food, amount)
log[today].append(nutrition)
DATA_FILE.write_text(json.dumps(log, ensure_ascii=False, indent=2))
return nutrition
def daily_summary() -> dict:
"""今日の栄養合計を計算する"""
today = str(date.today())
if not DATA_FILE.exists():
return {"calories": 0, "protein_g": 0, "carbs_g": 0, "fat_g": 0}
log = json.loads(DATA_FILE.read_text())
meals = log.get(today, [])
return {
"calories": sum(m.get("calories", 0) for m in meals),
"protein_g": sum(m.get("protein_g", 0) for m in meals),
"carbs_g": sum(m.get("carbs_g", 0) for m in meals),
"fat_g": sum(m.get("fat_g", 0) for m in meals),
"meal_count": len(meals),
"total_cost_usd": round(sum(m.get("cost_usd", 0) for m in meals), 5)
}
# 使用例
print("朝食を記録:")
breakfast = log_meal("玄米ご飯", "1杯(200g)")
print(f" {breakfast['food']}: {breakfast.get('calories', '?')}kcal")
lunch = log_meal("鶏むね肉の塩焼き", "150g")
print(f" {lunch['food']}: {lunch.get('calories', '?')}kcal")
summary = daily_summary()
print(f"\n今日の合計:")
print(f" カロリー: {summary['calories']}kcal")
print(f" タンパク質: {summary['protein_g']}g")
print(f" {summary['meal_count']}食分の推定コスト: ${summary['total_cost_usd']:.5f}")