📸

改善点を赤ペン添削&チャットで深掘り質問! コンテスト入賞を目指すためのAI写真コーチを作ってみた

に公開

最近、カメラを買って写真を始めました。趣味として非常に面白く、いずれは写真コンテストに応募してみたいと思って、写真を練習しています。

写真は教科書もたくさんあるのである程度は理論があるものだと思うのですが、教科書と全く同じシチュエーションで撮ることはなかなか難しいので、自分の撮った写真がどこが良くて、どこが改善できるのかを掴むのに苦労しています。

そこで、Geminiのマルチモーダル能力を活かして、写真を添削してくれるAIエージェントを作ってみました。

https://youtu.be/ijHTulSlVks

ポイントと解決する課題

  • 採点と講評: 写真をアップロードするだけで、AIが「構図」「露出」「色彩」など、写真の基本的な要素を採点し、良いところと改善すべき所を講評。
  • 赤ペン入り画像の生成: 言葉だけでなく、**「ここをこう直せ」という赤ペン先生のような書き込み(Visual Feedback)**を画像生成で行う。
  • 継続的な質問: 対話を繋げることが出来るので、講評に対してさらに深掘った質問ができる。

機能紹介

  1. レーダーチャート分析:
    • 構図、露出、色彩、ライティングなど8項目を10点満点で評価。
    • 一目で自分の弱点がわかる。

  1. 赤ペン先生機能 (The "Red Pen" Enhancement):

    • AIが改善点を指摘するだけでなく、元画像に「矢印」や「丸」を書き込んで視覚的にアドバイス。
    • 「この余白が広すぎる」「ここに視線誘導が必要」などが直感的にわかる。
  2. AIコーチとの対話:

    • 「もっとふんわり撮りたいんだけど?」といった抽象的な質問にも、元画像と分析結果を踏まえて回答。

https://youtube.com/shorts/jMhAfcbisw8

システムアーキテクチャ (Architecture)

全体構成図

非同期処理フロー

画像分析と生成は時間がかかるため、非同期ジョブとして実装しています。

  1. Frontend: 画像アップロード -> jobId を発行
  2. Backend:
    • 画像のリサイズ & Google Cloud Storageアップロード
    • Analysis: gemini-3-flash-preview で8項目評価 (JSON出力)
    • Enhancement: gemini-3-pro-image-preview で「赤ペン画像」と「理想的な完成画像」を並列生成
    • State Update: 結果を Firestore のセッション状態に保存
  3. Frontend: ポーリングで完了を検知 -> 結果表示

技術的なチャレンジ

(1) Go言語製 Agent Framework「ADK」の採用

Google純正の Agent Development Kit (ADK) (google.golang.org/adk) を採用しました。

  • 採用理由:
    • ステートフルな会話管理、ツール呼び出し、コンテキスト維持が容易。
    • 単純に、Go言語で何か作るチャレンジがしたかった
  • 実装ポイント:
    • Session Service としてFirestoreを使用し、会話履歴を永続化。
    • State 機能を使って、分析結果(JSON)や画像URLをツール間で共有。

(2) Gemini モデルの使い分け

適材適所でモデルを切り替えています。

  • Gemini 3 Flash (Preview):
    • 画像解釈性能の高さ、手頃な料金
    • 8項目の詳細スコアリングに使用
  • Gemini 3 Pro Image (Preview):
    • 「赤ペン先生」画像の生成。
    • Prompt Engineering: 「あなたは写真講師です。改善点に赤ペンで書き込みを入れてください」と指示することで、マルチモーダル生成能力を活用。

今後の展望

  • LINE対応: スマートフォンからもっと手軽に使いたいため
  • ユーザー別傾向学習: ユーザーがどんなジャンルに関心があるかを把握して、より的確なアドバイス

おわりに

単なるAIチャットではなく、「撮り手のスキルを向上させる」ことを目指したAIエージェントです。
Geminiのマルチモーダル能力の面白い活用例になったのでは、と思っています。

技術スタック一覧

  • Frontend: Next.js, TypeScript
  • Backend: Go 1.25.6
  • AI: Gemini 3 Flash/Pro Image (Preview)
  • Libraries: google.golang.org/adk, google.golang.org/genai
  • Infra: Firebase App Hosting, Cloud Storage, Firestore, Cloud Run

Discussion