GEMINI LABEN
SUNSET — 画像生成モデルの停止まで残り6日です。imagen-4.0 系と Gemini 3 Image 系が8月17日に止まりますMIGRATE — 移行先として gemini-3.1-flash-image が案内されています。generate_images から generate_content への書き換えが必要ですCHECK — 移行後に同じプロンプトで同じ絵が出る保証はありません。必要な生成物は停止前に確保しておく判断が要りますCLASSROOM — 8月17日は Gemini in Classroom のモバイル提供が始まる日でもあります。web は8月10日に全年齢の学生へ広がりましたDEPRECATION — Grok 4.1 ファミリーの停止は8月20日、gemini-robotics-er-1.6-preview は8月31日で、後継は er-2 系ですCHANGELOG — Gemini API の changelog は7月30日が最新のままです。直近の大きな変更は Gemini 3.6 Flash と 3.5 Flash-Lite の GA ですSUNSET — 画像生成モデルの停止まで残り6日です。imagen-4.0 系と Gemini 3 Image 系が8月17日に止まりますMIGRATE — 移行先として gemini-3.1-flash-image が案内されています。generate_images から generate_content への書き換えが必要ですCHECK — 移行後に同じプロンプトで同じ絵が出る保証はありません。必要な生成物は停止前に確保しておく判断が要りますCLASSROOM — 8月17日は Gemini in Classroom のモバイル提供が始まる日でもあります。web は8月10日に全年齢の学生へ広がりましたDEPRECATION — Grok 4.1 ファミリーの停止は8月20日、gemini-robotics-er-1.6-preview は8月31日で、後継は er-2 系ですCHANGELOG — Gemini API の changelog は7月30日が最新のままです。直近の大きな変更は Gemini 3.6 Flash と 3.5 Flash-Lite の GA です
記事一覧/開発ツール
開発ツール/2026-03-27上級

Gemini API × Flutter で AI チャットアプリを個人開発で運用するノート — iOS / Android 同時リリースで踏んだ設計と落とし穴

Flutter で iOS / Android を同時にリリースしている個人開発アプリに Gemini API を組み込んで運用してみた実装ノートです。AdMob 併用で eCPM とトークンコストのバランスを取る設計、ストリーミング切断・Firestore コスト・Cold Start などの実測値と対処を、コード例と数値付きで整理しました。

gemini-api281flutterdartcross-platform3chat-appstreaming18firebase6multimodal24

プレミアム記事

手元の Flutter アプリに AI チャットを足すかどうかで、半年ほど決めきれずにいました。理由は単純で、このアプリは AdMob の広告収益で回っているため、トークン単価がその収益を食い潰した時点で機能ごと畳むしかないからです。Gemini Flash の単価が実用ラインまで降りてきた 2026 年、ようやく計算が合いそうだと判断して、個人開発のアプリ 1 本に組み込み、実運用に回しました。このノートはその記録です。

先に実感を書いておくと、いちばん時間を取られたのはモデル選定でもプロンプトでもありませんでした。ストリーミングがモバイル特有の事情で途切れる箇所、Firestore の書き込み課金、そして安全性フィルタで応答が返ってこないときの見せ方です。動くところまでは驚くほど早く着きます。そこから「毎月の請求書とストア審査に耐える形」へ持っていく工程が長い、というのが個人開発で載せてみた率直なところです。

取り組みの背景 — なぜ Flutter × Gemini を個人開発で選んだのか

最初に断っておくと、私の個人開発アプリは AdMob 広告収益で運用していて、月の AdMob 売上が固定費を上回るかどうかが事業の生命線です。AI チャットを足す動機は「課金率を上げたい」ではなく、「無料ユーザーの 1 セッションあたり滞在時間を伸ばし、結果として広告インプレッションを増やす」ことでした。

Flutter は単一コードベースで iOS / Android / Web をカバーでき、google_generative_ai パッケージで Gemini API をそのまま叩けます。SwiftUI / Jetpack Compose で 2 本書く手間が省けるので、個人開発の限られた時間配分にちょうど合います。Gemini Flash の入力 1M トークンあたり $0.075、出力 $0.30(2026年5月時点)という単価は、平均 1 セッション 800〜1,200 トークンの利用なら、AdMob の追加 eCPM で十分回収できる計算でした。

この記事は Gemini API × Kotlin で Android アプリに AI を組み込む実践ガイド で扱ったネイティブ実装の知見を、クロスプラットフォームに延ばして「個人開発の運用に耐える」ところまで持っていく内容です。

環境構築とプロジェクトセットアップ

前提条件

開発を始める前に、以下の環境を準備してください。

  • Flutter SDK 3.22 以上(Dart 3.4 以上)
  • Google AI Studio で取得した Gemini API キー
  • Firebase プロジェクト(認証・Firestore を使用する場合)
  • Android Studio または VS Code(Flutter 拡張機能付き)

プロジェクト作成と依存パッケージ

まず Flutter プロジェクトを作成し、必要なパッケージを追加します。

flutter create gemini_chat_app
cd gemini_chat_app
flutter pub add google_generative_ai
flutter pub add flutter_markdown
flutter pub add image_picker
flutter pub add firebase_core firebase_auth cloud_firestore
flutter pub add flutter_riverpod
flutter pub add envied envied_generator build_runner --dev

主要パッケージの役割は以下の通りです。

  • google_generative_ai — Gemini API 公式 Dart SDK。モデル呼び出し・ストリーミング・マルチモーダル入力を統一的に扱える
  • flutter_markdown — Gemini の Markdown 形式レスポンスをリッチにレンダリング
  • flutter_riverpod — 状態管理。チャット履歴やストリーミング状態の管理に使用
  • envied — API キーをコンパイル時に難読化して埋め込む(ハードコード防止)

API キーの安全な管理

API キーをソースコードにハードコードするのは厳禁です。envied パッケージを使い、環境変数から読み込む設計にします。

// lib/env/env.dart
import 'package:envied/envied.dart';
 
part 'env.g.dart';
 
@Envied(path: '.env')
abstract class Env {
  @EnviedField(varName: 'GEMINI_API_KEY', obfuscate: true)
  static String geminiApiKey = _Env.geminiApiKey;
}

プロジェクトルートに .env ファイルを作成し、.gitignore に追加してください。

GEMINI_API_KEY=YOUR_GEMINI_API_KEY
dart run build_runner build

これにより、API キーがコンパイル済みバイナリ内で難読化され、リバースエンジニアリングへの耐性が向上します。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Flutter × Gemini を個人開発アプリに載せたときの月額コスト構成(Gemini API・Firestore・AdMob 相殺)の実測
ストリーミング応答が iOS バックグラウンドで切れる問題への、Riverpod + AppLifecycleState を使った再開実装
AdMob と AI チャット機能を同居させる場合の eCPM への影響と、無料/プレミアム切替の判断ライン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-04-18
Gemini API × Tauri 2.0 でクロスプラットフォームAIデスクトップアプリを構築する
Tauri 2.0とGemini APIを組み合わせてmacOS・Windows・Linux対応のデスクトップAIアプリを構築する実践ガイド。Rustバックエンドによる安全なAPIキー管理、ストリーミング配信、ネイティブOS機能との連携を動くコードで解説します。
開発ツール2026-04-18
Gemini API × Kotlin Multiplatform:iOS/Android 共通 AI ロジックの設計から App Store 公開まで
Kotlin Multiplatform(KMP)とGemini APIを組み合わせ、iOS・Android両対応のAI機能を1つのコードベースで実装する完全ガイド。共通ビジネスロジック設計・SwiftUI/Compose UI・本番APIキー管理・マルチモーダル対応まで動作確認済みコードで解説します。
開発ツール2026-04-03
Next.js 15 App Router × Gemini API フルスタック本番構築
Next.js 15 App RouterとGemini APIを組み合わせたフルスタックAIアプリを本番レベルで構築する完全ガイド。Server Actions、Streaming、RAG、認証・レート制限まで徹底解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →