生成AI を用いたトレーニングメニューの提案

# 生成AI を用いたトレーニングメニューの提案

年末年始、運動不足や食べすぎが気になる季節ですね！
この記事では、運動量・身長・体重から 最適なカロリー と PFCバランス（タンパク質・脂質・炭水化物）を考慮し、年末年始の12日間の食事メニュー を自動生成するPythonコードを紹介します。このコードを使って脱メタボ！！

## この記事でできること
・基礎代謝量 と 運動レベル に応じた最適な1日分のカロリーを計算
・カロリーから PFCバランス（タンパク質20%、脂質25%、炭水化物55%）を計算
・OpenAI API を利用して朝食・昼食・夕食の具体的な食事メニューを生成
・12日間分 の食事提案をアドベントカレンダー風に表示

## 必要な準備
１．Python環境
２．Gemini APIキー（[Gemini API](https://ai.google.dev/gemini-api/docs?gad_source=1&gclid=CjwKCAiA34S7BhAtEiwACZzv4YjJs0iXs1e5hfy9CMWYt-LkiQzjnSFsSbGHNUUJ4Pub38YsNoUT2RoCy6cQAvD_BwE&hl=ja) から取得）
３．必要なライブラリをインストールします：
```
pip install google-generativeai
```

## 提案コード

```python
import google.generativeai as genai
import datetime

# APIキー設定

genai.configure(api_key="Your_API_Key")  # Google Cloudで取得したAPIキーを設定
def calculate_calories(height, weight, activity_level):
    """ 身長、体重、運動量からカロリーを計算 """
    bmr = 10 * weight + 6.25 * height - 5 * 25 + 5
    return round(bmr * activity_level)

def calculate_pfc(calories):
    """ カロリーからPFCバランスを計算 """
    return round((calories * 0.2) / 4), round((calories * 0.25) / 9), round((calories * 0.55) / 4)

def generate_meal_menu(day, calories, protein, fat, carbs, user_request):
    """ Gemini APIを使って食事メニューを生成 """
    prompt = f"""
    あなたは栄養士です。以下の要件に基づき、{day}日目の食事メニューを提案してください。

    - 総カロリー: {calories} kcal
    - タンパク質: {protein} g, 脂質: {fat} g, 炭水化物: {carbs} g
    - 要望: {user_request}
    - 朝食、昼食、夕食を具体的に提案し、料理名、材料、分量を含めてください。
    """
    try:
        model = genai.GenerativeModel("gemini-1.5-pro")
        response = model.generate_content(prompt)
        return response.text
    except Exception as e:
        return f"エラー: {e}"

def advent_calendar_meals():
    """ 12日間の食事メニューを生成し表示 """
    print("\n🎄 **12日間のPFCバランス食事メニュー** 🎄\n")
    try:
        # ユーザー入力
        height = float(input("📏 身長 (cm): "))
        weight = float(input("⚖️ 体重 (kg): "))
        activity_choice = int(input("🏃 運動レベル (1:低い, 2:中, 3:高): "))
        activity_level = {1: 1.2, 2: 1.55, 3: 1.9}.get(activity_choice, 1.2)
    except ValueError:
        print("❗ 入力エラー: 数値を入力してください。")
        return

    # カロリーとPFCバランス計算
    total_calories = calculate_calories(height, weight, activity_level)
    protein, fat, carbs = calculate_pfc(total_calories)

    # ユーザーの要望を入力
    print("\n🍽️ **特別な要望や希望があれば入力してください**")
    user_request = input("例: '低脂質メニュー', '高タンパク質を重視', '和食中心' など: ").strip()
    if not user_request:
        user_request = "特になし"

    # メニュー生成
    print(f"\n🔍 **1日の目標栄養素**")
    print(f"カロリー: {total_calories} kcal")
    print(f"タンパク質: {protein}g, 脂質: {fat}g, 炭水化物: {carbs}g")
    print(f"📝 要望: {user_request}\n")

    # 12日間のメニュー生成
    start_date = datetime.date.today()
    for day in range(1, 13):
        date = start_date + datetime.timedelta(days=day - 1)
        print(f"🗓️ **{day}日目 ({date})**")
        menu = generate_meal_menu(day, total_calories, protein, fat, carbs, user_request)
        print(menu)
        print("\n" + "-" * 60 + "\n")

if __name__ == "__main__":
    advent_calendar_meals()

```
# 実行結果
もちえもんの結果
```
🎄 **12日間のPFCバランス食事メニュー** 🎄

📏 身長 (cm): 167.5
⚖️ 体重 (kg): 48.5
🏃 運動レベル (1:低い, 2:中, 3:高): 1


🍽️ **特別な要望や希望があれば入力してください**
例: '低脂質メニュー', '高タンパク質を重視', '和食中心' など: 年末は蟹食いたい

🔍 **1日の目標栄養素**
カロリー: 1694 kcal
タンパク質: 85g, 脂質: 47g, 炭水化物: 233g
📝 要望: 年末は蟹食いたい

🗓️ **1日目 (2024-12-17)**
## 1日目の食事メニュー (1694kcal)

**テーマ：年末カニづくし！ヘルシーにカニを楽しむ1日**

**(タンパク質: 85g, 脂質: 47g, 炭水化物: 233g)**

**朝食 (420kcal)**

**料理名：カニとアボカドのオープンサンド**

* 材料：
    * 全粒粉パン：60g (2枚)
    * カニ缶 (フレーク)：50g
    * アボカド：1/4個
    * マヨネーズ(カロリーオフ)：小さじ1
    * レモン汁：少々
    * ブラックペッパー：少々
    * レタス：2枚
    * ミニトマト：4個
    * ゆで卵：1個

* 作り方：
    1. アボカドをフォークで潰し、マヨネーズ、レモン汁、ブラックペッパーで和える。
    2. パンにレタス、カニフレーク、アボカドペースト、ミニトマト、ゆで卵を乗せる。

**栄養価 (目安):** タンパク質 20g, 脂質 17g, 炭水化物 50g


**昼食 (574kcal)**

**料理名：カニとブロッコリーのペペロンチーノ風パスタ**

* 材料：
    * 全粒粉スパゲッティ：80g (乾麺)
    * カニ缶 (フレーク)：50g
    * ブロッコリー：100g
    * ニンニク：1かけ
    * オリーブオイル：大さじ1
    * 赤唐辛子 (輪切り)：少々
    * 塩：少々
    * ブラックペッパー：少々

* 作り方：
    1. スパゲッティを茹でる。
    2. フライパンにオリーブオイル、ニンニク、赤唐辛子を入れ、弱火で香りを出す。
    3. ブロッコリーを加えて炒め、カニフレークも加える。
    4. 茹で上がったスパゲッティを加え、塩、ブラックペッパーで味を調える。

**栄養価 (目安):** タンパク質 25g, 脂質 15g, 炭水化物 90g


**夕食 (700kcal)**

**料理名：カニと野菜のあんかけ丼**

* 材料：
    * カニ缶 (脚)：100g
    * 白米：150g (炊飯後)
    * 卵：1個
    * 玉ねぎ：1/4個
    * 人参：1/4本
    * しいたけ：2個
    * 水菜：30g
    * だし汁：200ml
    * 醤油：大さじ1
    * みりん：大さじ1
    * 片栗粉：小さじ2 (水大さじ2で溶く)

* 作り方：
    1. 玉ねぎ、人参、しいたけを薄切りにする。
    2. 鍋にだし汁、野菜を入れ、煮込む。
    3. カニの脚を加え、醤油、みりんを加える。
    4. 水溶き片栗粉でとろみをつける。
    5. 溶き卵を回し入れ、半熟状にする。
    6. 丼にご飯を盛り、あんかけをかけ、水菜を乗せる。

**栄養価 (目安):** タンパク質 40g, 脂質 15g, 炭水化物 103g


**注意点:**

* カロリー、PFCバランスは目安です。使用する材料や調理法によって変動します。
* カニ缶は種類によって塩分量に差があるため、調味料の量を調整してください。
* カニアレルギーの方は、他の食材に置き換えてください。


年末の蟹をヘルシーに楽しんでいただけるように、野菜をたっぷり使い、全粒粉のパンやパスタを取り入れました。  このメニューを参考に、素敵な年末をお過ごしください。
```

蟹を食いたいという要望をこれでもかとかなえてくれました！！
みなさんも自分の要望を自分に合った食事メニューをAIに考えてもらいましょう！！