【AI Agentハッカソン】幹事の負担をなくす、全員参加型の旅行計画AIエージェント『trimee』
旅行計画、なぜ面倒なのか
友人や家族との旅行計画。本来は楽しいはずなのに、実際には「幹事」に負担が集中しがちです。
行き先のリサーチ、メンバーへの確認、スケジュール調整――気づけば幹事ひとりが情報収集と調整に追われ、他のメンバーは「どこでもいいよ〜」と受け身になる。情報もLINEグループ、Googleマップ、メモアプリとバラバラに散らばって、計画そのものが「作業」になってしまう。
この旅行計画における負担の非対称性と情報の分断を解決するために、AIエージェントを活用した共同編集ツール『trimee』を開発しました。
trimeeとは
『trimee』(トリミー)は、旅行計画を「幹事ひとりが頑張るタスク」から「全員で創る体験」に変えるための、AIエージェント付きプランニングアプリです。
主な機能:
- カードベースのアイデア出し — 全員が「行きたい場所」「やりたいこと」をカードとして非同期に投稿できる。LINEでバラバラに送り合う必要がない。
- AIによるプランの叩き台生成 — 投稿されたカードと各メンバーのリアクションをもとに、AIが複数の旅程案を自動生成。ゼロからプランを組む必要がない。
- 投票による意思決定 — 生成されたプランやスポットに対して全員で投票。「誰が決めたの?」にならない。
- リアルタイム共同編集 — 全員の操作がリアルタイムに同期。通話しながらのライブセッションにも対応。
コンセプト:AIを「最適化マシン」ではなく「ファシリテーター」にする
既存の旅行計画ツールにおけるAIは、ユーザーが入力した条件に基づいて「最適な」プランを返す、いわば最適化マシンです。でもこのアプローチだと、結局は幹事が条件を入力する必要があり、負担の構造は変わりません。
trimeeではAIの役割を**ファシリテーター(進行役)**として再定義しました。
- 発散を促す — 全員のアイデア(カード)を整理し、関連スポットをサジェストして「もっと出してみよう」を後押しする。
- 収束を助ける — バラバラのアイデアを構造化し、議論の叩き台となるプランを複数パターン提示する。
- 不在者を代弁する — セッションに参加できないメンバーが事前に登録した好みをもとに、AIがそのメンバーの意向を反映する。
AIが人間の創造性を代替するのではなく、人間同士のコラボレーションを促進する。計画プロセスそのものを楽しくすることが、trimeeの設計思想です。
システムアーキテクチャ
FlutterとFirebaseを中心としたサーバーレス構成です。リアルタイムな共同編集とAIエージェントの柔軟な呼び出しを両立させています。

データフロー:
- クライアント (Flutter) — ユーザーがFlutterアプリを通じてFirestoreのデータをリアルタイムに読み書き。
- トリガー — 「AIにプランを作ってもらう」ボタン押下などの操作をトリガーに、Cloud Functionsを呼び出し。
- AIロジック (Cloud Functions) — リクエスト内容に応じて適切なGeminiモデル(ProまたはFlash)を選択し、プロンプトを組み立ててAPIを呼び出す。
- AI処理 (Gemini) — プロンプトをもとにプランやサジェストを生成し、結果をFunctionに返却。
- 結果の保存 — FunctionがAIレスポンスを整形してFirestoreに書き込み。
- 同期 — Firestoreの更新がリアルタイムに全クライアントへプッシュされ、UIに即座に反映。
技術スタック
| 領域 | 技術 | 採用理由 |
|---|---|---|
| フロントエンド | Flutter | iOS/Android/Webを単一コードベースでカバー。個人開発の生産性を最大化できる。 |
| 状態管理 | Riverpod | コンパイルセーフな依存性注入でFlutterの状態管理をシンプルかつ堅牢に。 |
| バックエンド | Firebase (Firestore, Functions, Auth, Storage, Hosting) | フルマネージドBaaSでインフラ管理コストがゼロ。リアルタイム同期・認証が標準装備。 |
| AI | Gemini 3 Pro / Gemini 3 Flash (Firebase AI Logic経由) | 高品質な推論と低コスト・低レイテンシの使い分けが可能。Firebaseとの統合がスムーズ。 |
コア技術の解説
1. Firestoreによるリアルタイム共同編集
「みんなでワイワイ計画する」体験の根幹を支えるのがCloud Firestoreです。
Firestoreはオフライン対応とリアルタイムリスナーをデフォルトで提供しています。クライアントがドキュメントやコレクションを購読(subscribe)するだけで、データ変更時に自動で最新状態がプッシュされる仕組みです。
これによりWebSocketを使った双方向通信を自前で実装する必要がなく、複数人が同時にカードを追加したり投票したりするリアルタイム共同編集を、極めて少ないコードで実現できました。
2. Firebase AI LogicとGeminiの使い分け
AIエージェントの中核は、Cloud Functions for FirebaseとGemini APIの連携で実装しています。処理の特性に応じて2つのモデルを使い分けています。
- Gemini 3 Pro — プラン自動生成に使用。時間・場所・メンバーの好みといった複雑な制約を考慮し、構造化された長文出力が求められるタスク向け。品質重視だが、コストとレイテンシは高め。
- Gemini 3 Flash — カードの追加サジェストや不在者の意見代弁に使用。比較的単純な処理で、低レイテンシ・低コストが求められるタスク向け。
プラン自動生成の実装フロー:
- クライアントがFirebase AI Logic経由でGemini in Vertex AIを呼び出す。
- Firestoreから旅行に関連する全カード情報(タイトル、場所、リアクション数)とメンバーの好みを取得。
- 取得した情報をもとにGemini 3 Pro向けの詳細なプロンプトを生成。出力形式(JSON)や制約条件(「アクティブ重視」「のんびり」など)を厳密に指定。
- Gemini APIを呼び出し、複数プラン(JSON形式)を受け取る。
- JSONをパースしてFirestoreの
plansコレクションに書き込み。
このアーキテクチャにより、クライアント側はAIに関する複雑なロジックを一切持たず、Firebaseの機能を呼び出すだけでAIエージェントの恩恵を受けられます。
まとめ
trimeeは、旅行計画における「幹事への負担集中」と「情報の分断」という課題に対して、AIをファシリテーターとして活用することで解決を図るアプリです。
FlutterとFirebaseの組み合わせにより、個人開発でありながらリアルタイム共同編集と高度なAI連携を両立したスケーラブルなアプリケーションを短期間で構築できました。今後はユーザーフィードバックをもとに機能を磨き込み、正式リリースを目指していきます。
Discussion