1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【カロリー計算 LINE Bot】

1
Last updated at Posted at 2025-12-06

はじめに

お手軽な開発として、LINEに食べ物の写真を送ると、カロリー(+PFC)を教えてくれるLINE Botを作りました。
もう20代後半なので、健康的な食事に気をつけていきたい。。。

この記事では、具体的なLambdaのコードは記載していません。
あくまで、LINE Developers設定、Gemini APIキーの取得、Lambda設定のみ解説していることにご注意ください。

成果物

いきなりですが、こんな感じのものが作れました。

IMG_4564.jpg

健康に気をつけようとしているのに、トンカツ定食を食べている矛盾。。。

数値の妥当性確認のために、松のやさんの「ロースカツ定食」 の数値を確認してみます。

LINE Botはどの数値も高めに出ている気がしますが、ここはAIのモデルを変えるなどすれば改善しそう。

松のや LINE Bot
カロリー [kcal] 821 890
たんぱく質(P) [kcal] 30.1 38
脂質(F) [kcal] 33.1 44
炭水化物(C) [kcal] 98.1 104

工夫した点

  • Geminiに投げるプロンプトでフォーマットを指定したことで、毎回ブレなく同じような結果が返ってくる点
  • アドバイスでユーザーに寄り添い、次もバランスの良い食事を摂りたくなるようにした点

開発手順

手順としては大きく分けて、下記の3つです。
①LINE公式アカウントの設定、②Gemini APIキーの取得、③AWS Lambdaの設定
以下、順に解説していきます。

1. LINE公式アカウントの設定(参考:公式ドキュメント

  1. Bot用のアカウントを作成(https://entry.line.biz/form/entry)
  2. LINE Developersのページに遷移
  3. Messaging API設定のタブを開く
  4. 下にスクロールすると、チャネルアクセストークン(長期)があるので、メモしておく

APIキーは流出しないように管理してください

2. Gemini APIキーの取得

  1. 下記リンクからGoogle Cloud プロジェクトの作成
    プロジェクトを作成する
  2. 遷移先にある「リソースの管理]に移動」という青いボタンを押下して画面遷移
    スクリーンショット 2025-12-06 15.36.39.png
  3. APIを有効化
    1. 検索バーで「有効なAPIとサービス」と検索
      スクリーンショット 2025-12-06 15.39.04.png
    2. 画面上部にある「+ APIとサービスを有効にする」を押下
    3. 検索バーで「gemini api」を入力し、選択
      スクリーンショット 2025-12-06 15.41.26.png
    4. 「Gemini API」を選択
      スクリーンショット 2025-12-06 15.42.14.png
    5. 「有効にする」を押下
  4. 認証情報を取得
    1.左のタブから「認証情報」を選択
    スクリーンショット 2025-12-06 15.44.47.png
    1.「認証情報を作成」という青いボタンを押下し、「APIキー」を選択
    スクリーンショット 2025-12-06 15.45.42.png
    1. 取得できたAPIキーを保存する

    APIキーは流出しないように管理してください

3. AWS Lambdaの設定

  1. リソースの作成
    1. 今回は「Python3.12」を使用
      スクリーンショット 2025-12-06 15.53.00.png
    2. その他の設定
      • 関数URL:有効化(LINEのWebhookからLambdaを直接叩くため)
      • 認証タイプ:NONE(LINEがIAM認証なしでLambdaを叩けるようにするため)
        スクリーンショット 2025-12-06 15.54.25.png
    3. コードのデプロイ
      • コードについては、不正アクセス防止のため割愛
    4. Lambdaの設定で、下記を環境変数に入れる
      • LINEのチャネルアクセストークン
      • GeminiのAPIキー
    5. Lambdaのタイムアウト値を伸ばす
      • 15秒程度に設定すれば、LINEで画像を送った際に「タイムアウトで結果が返ってこない」ということは起きないはず
    6. レイヤーの追加
      • コードにはrequestsモジュールを使用することになると思うが、Lambdaでは標準で使用できないため、Layerを使って追加する
      • 記事執筆時点では、下記のARNを使用(参照元
        arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p312-requests:19
        
    7. Webhookの設定
      1. Lambdaの関数URLをコピー
      2. LINE Developerの画面に戻り、「Messaging API設定」タブを開く
      3. 「Webhook設定」に先ほどの関数URLを貼り付け、「Webhookの利用」をONにする
        スクリーンショット 2025-12-06 16.11.38.png

以上で、完成!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?