⚙️
旅行アプリ開発記録① LLM API × Flutter × FastAPI
システム構成
本アプリは、ユーザーが希望条件を入力すると、OpenAIやGoogle Maps APIを活用して旅行プランを自動生成し、課金制限付きで提供するiOS向けFlutterアプリです。
構成は以下のようになっています。

構成要素の一覧
| 区分 | コンポーネント | 主な役割 |
|---|---|---|
| フロントエンド | Flutter App (iOS) | UI/ユーザー操作全般 |
| 認証 | Firebase認証 | 匿名ログイン、UID発行 |
| 課金 | RevenueCat SDK+App Store | サブスクリプション管理 |
| バックエンド | FastAPI (Render) | API処理、外部API呼び出し |
| データベース | PostgreSQL (Render) | 使用制限カウント保存 |
| 外部API | OpenAI API | 旅行プラン生成(GPT) |
| 外部API | Google Maps Platform | 位置情報・ルート・場所検索 |
各ノードの役割
Flutterアプリ(iOS)
今の主流かなと思い採用、最初はAndroid拡張も容易かなとの思惑もあり。
-
main.dartに主要機能を集約 -
shared_preferencesでお気に入り保存 -
video_playerでload画面とかpaywalに動画載せてます - Firebaseで匿名ログイン後、UIDを保持しつつRevenueCatでサブスク状況を取得
💰 料金:無料、Flutter自体はコストなし!
🔐 Firebase認証
- 匿名認証を使用し、ユーザーID(UID)を発行
- 認証処理はすべてクライアント側で完結
💰 料金:無料(月1万ユーザー以上で有料化になるようだが、、、無縁かなと笑)
💳 RevenueCat
これもios課金だと超主流と聞いて。たしかに超簡単でした。
- サブスクリプションの購入・確認を担当
- クライアントSDKで完結+バックエンドからREST APIでも状態参照
- 管理画面で商品・オファリング・エンタイトルメントを設定
- デバイス交換時のapple id経由の課金復元までサポート
💰 料金:無料。売上に対する手数料なし(Apple税 15%は別途)
🧠 OpenAI API
中核です。選定はclaude等と少し悩みましたが、日本語と総合力、料金でベタにGPTで。
利用方法的に、精度は最低限、速度と料金が最優先でした。組み込みだとこうなる気がしますね。
- GPT-4.1 nanoで「地域+条件」から候補エリアを生成
(最初はmini使ってましたが、nanoの方が早くて半額だったので変更。) - ユーザーの入力プロンプトを元に、日帰りor宿泊・観光地・ルート案を生成
- その他、電車のルート検索を代替で実施させてます
(この辺りかなりひと悶着あったので、別途記事書きたい)
💰 料金(2025年7月時点)
- gpt-4.1 nano:$0.0005 / 1K tokens(入力+出力)
今回のケースでいうと、正直殆ど料金発生しません。
🗺 Google Maps Platform
- Geocoding API:住所↔座標変換
- Places API:カテゴリやキーワードから観光地を検索
- Directions API:移動時間やルートを取得
💰 料金
- Geocoding / Directions:月10,000回まで無料(Essentialsプラン)
- Places API:種類により課金(Place Detailsは有料)
今回の一番のネック、かつ爆弾。★☆正直少額アプリでの運用は実質不可能だと思います。☆★
FastAPI(Render)
バックエンドの中核、すごく楽でした。pythonなら慣れてるのもありますけど、そうでなくても。応答性も十二分です。
- APIルーティング、認証ヘッダー処理、サブスク検証、制限確認、外部API呼び出しなどを担当
- フロントエンドからは下記ヘッダーが常に送られる
X-Firebase-UIDX-Device-IDX-Payment-Status
💰 Render料金
- Starterプラン:$7/月〜(常時稼働)
探した中ではほぼ最安値、仕方ないかなと、、、
PostgreSQL(Render)
無料ユーザーには何回か体験してもらいつつ、回数到達後は半永続的に利用制限する必要があるため、全ユーザーの利用回数を不揮発管理。
💰 Render DB料金
- Freeプラン:~256MB(読み書き制限あり)
今回のユースケースなら無料、助かる。
今回作ってみての気づき、ポイント
-
Vibe Codingは個人開発の革命
iphoneアプリやバックエンド系はほぼ知識無でした。それで正味10日かからずリリースまでいけるのは数年前では考えられない状況ですよね。 - とにかくGoogleMap系のAPIは高い
- 逆にLLM APIは軽度の利用ならほぼ問題にならない
- 知見がなくても、バックエンドサーバーを立てるハードルは低い
さいごに
色々作るにあたって素人ながらの気づきがあったので、今後も残していこうと思います。
Discussion