GEMINI LABEN
CHAT — 8月26日から Google Chat が Gemini のハブになります。検索・下書き・会話の追いつき・タスクとイベントの管理を、Workspace の文脈を持ったまま行えるようになります。残り3日ですANDROID — 9月4日から Android の Google アシスタントを Gemini が置き換えます。残り12日です。アシスタント前提で組んだ音声ショートカットは、置き換え後の挙動を確認しておきたいところですSCALE — Gemini アプリが8月11日に月間10億ユーザーへ到達しましたROBOTICS — gemini-robotics-er-1.6-preview は8月31日で停止します。残り8日です。後継は ER 2 系で、空間推論・多段のツール連携・複数ロボットの協調に対応しますFLASH — Gemini 3.7 Flash は8月13日に GA となり、AI Pro と Ultra 向けの Gemini Spark のエンジンとして160か国以上で動いています。導入価格は12月31日までですCLASSROOM — Gemini in Classroom が8月10日から全年齢の学生へ開放されました。フラッシュカード・練習問題・学習ガイド・ガイド付きプロンプトが使えますCHAT — 8月26日から Google Chat が Gemini のハブになります。検索・下書き・会話の追いつき・タスクとイベントの管理を、Workspace の文脈を持ったまま行えるようになります。残り3日ですANDROID — 9月4日から Android の Google アシスタントを Gemini が置き換えます。残り12日です。アシスタント前提で組んだ音声ショートカットは、置き換え後の挙動を確認しておきたいところですSCALE — Gemini アプリが8月11日に月間10億ユーザーへ到達しましたROBOTICS — gemini-robotics-er-1.6-preview は8月31日で停止します。残り8日です。後継は ER 2 系で、空間推論・多段のツール連携・複数ロボットの協調に対応しますFLASH — Gemini 3.7 Flash は8月13日に GA となり、AI Pro と Ultra 向けの Gemini Spark のエンジンとして160か国以上で動いています。導入価格は12月31日までですCLASSROOM — Gemini in Classroom が8月10日から全年齢の学生へ開放されました。フラッシュカード・練習問題・学習ガイド・ガイド付きプロンプトが使えます
記事一覧/API / SDK
API / SDK/2026-08-23中級

アプリに載せる AI 機能を、実行時呼び出しから配布前の一括処理に寄せました

アプリに Gemini を組み込むとき、実行時に呼ぶか配布前に呼び終えるかで呼び出し回数の増え方が変わります。素材数に比例させる設計へ切り替えた判断基準と、冪等な一括処理の実装をまとめました。

gemini107gemini-api285アプリ開発5コスト設計13個人開発106

プレミアム記事

浮世絵壁紙アプリの素材を追加する日は、プレビュー用のフォルダに並んだ画像を一枚ずつ開くところから始まります。30 ある分類のどれに入れるかを決めていく、地味な作業です。

この仕分けを Gemini に任せるようになってから、しばらくの間、私は当たり前のようにアプリの中で呼ぶつもりでいました。利用者が分類タブを開いたときに、その場で判定させる形です。図に描くと自然に見えました。

見積もりを取り直したのは、実装に入る直前でした。同じ処理なのに、置き場所を変えるだけで月あたりの呼び出し回数が3桁変わることが分かりました。

結論から書きます。入力が利用者に依存せず、対象が有限に列挙できる処理は、配布前に呼び終えておくほうが個人開発では合理的でした。 実行時に残したのは、事前に列挙できない入力を扱う機能ひとつだけです。

呼び出し回数を決めているのは、利用者数か素材数か

「アプリに AI を載せる」という言葉を、私は無意識に「実行時に API を呼ぶ」と同じ意味で受け取っていました。ここに落とし穴がありました。

同じ分類処理でも、置き場所によって回数の増え方が変わります。

  • 実行時に置く場合、回数は 利用者数 × 起動回数 に比例します。アプリが伸びるほど増えます
  • 配布前に置く場合、回数は 素材数 に比例します。利用者が何人になっても変わりません

壁紙アプリの分類結果は、誰が開いても同じです。同じ答えを人数分だけ計算し直していたことになります。この構造に気づいてから、判断の軸が「どちらが速いか」ではなく「回数が何に比例するか」に変わりました。

二つの置き場所を、同じ式に並べて比べる

見積もりは 20 行程度で足ります。実装の前にこれを書くだけで、後から請求額に驚くことがなくなります。

# 同じ機能を「実行時」と「配布前」に置いたときの月間呼び出し回数を比べる
# 自分のアプリの数字に置き換えて実行してください
 
def runtime_calls(mau, sessions_per_user, calls_per_session):
    """実行時に呼ぶ場合。利用者数に比例して増える"""
    return mau * sessions_per_user * calls_per_session
 
def preship_calls(new_assets, passes_per_asset, prompt_revisions):
    """配布前に呼ぶ場合。素材数に比例する。
    prompt_revisions は、分類プロンプトを直して全件やり直す回数"""
    return new_assets * passes_per_asset * (1 + prompt_revisions)
 
rows = []
for mau in (500, 5_000, 50_000):
    rt = runtime_calls(mau, sessions_per_user=6, calls_per_session=1)
    ps = preship_calls(new_assets=120, passes_per_asset=1, prompt_revisions=2)
    rows.append((mau, rt, ps, rt / ps))
 
print(f"{'MAU':>8} {'実行時/月':>12} {'配布前/月':>12} {'比':>8}")
for mau, rt, ps, ratio in rows:
    print(f"{mau:>8,} {rt:>12,} {ps:>12,} {ratio:>7.1f}x")
 
# 損益分岐となる利用者数(配布前の回数と釣り合う MAU)
print(f"\nbreak-even MAU = {360 / (6 * 1):.0f}")

手元で実行すると、こうなります。

     MAU    実行時/月    配布前/月        比
     500        3,000          360      8.3x
   5,000       30,000          360     83.3x
  50,000      300,000          360    833.3x
 
break-even MAU = 60

分岐点は 60 人でした。つまり、身内に配る規模を超えた時点で、実行時に置く理由は回数の面からは消えます。素材を月 120 点足し、プロンプトを2回直して全件やり直しても、回数は 360 回で固定されます。

比で見ると、MAU 500 で 8.3 倍、5,000 で 83.3 倍、50,000 で 833.3 倍です。桁が変わっていくのは片側だけです。

この差は本番運用に入って請求を見るまで表に出てきません。気づいてから設計を戻すのは、審査を挟む分だけ高くつきます。回避策は単純で、実装に入る前にこの 20 行を走らせておくことでした。

ここで大事なのは絶対値ではなく、片方だけが利用者数に比例していることです。単価が下がっても、比例している側は伸びに合わせて増え続けます。呼び出し単価の記録方法は Gemini API の usageMetadata でコストを記録する実装パターン にまとめています。

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

この記事の続きを読む

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

この記事で得られること
自分のアプリの AI 機能について、呼び出し回数がユーザー数と素材数のどちらに比例するかを式で判断できるようになります
運用に入ってから請求額が想定を外れる形の設計ミスを、実装前の数分の見積もりで避けられるようになります
途中で止まっても同じ結果に収束する一括処理の書き方を、自分のプロジェクトへそのまま移せるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-08-22
メディエーショングループが20を超えたとき、設定の抜けをどう見つけるか
広告メディエーションのグループが増えると、設定の抜けや型のずれが静かに溜まります。設定を1枚の表に正規化して機械でずれを確定させ、判断が必要なセルだけを Gemini に渡す分担にした手順をまとめました。
API / SDK2026-06-26
Gemini 3.1 Flash Image で日本語テキスト入り画像を安定生成する ― OCR検証ゲート付きパイプライン
プレビュー停止後の GA 版 gemini-3.1-flash-image で、画像内の日本語テキストが崩れる問題に向き合います。生成→OCR検証→再生成/合成フォールバックの二段構えを、動くコードと無人運用のリトライ設計まで含めて記録しました。
API / SDK2026-05-18
Gemini Vision で壁紙アプリの自動カテゴリ分類を実装した話
個人開発の壁紙アプリで Gemini Vision API を使い、画像の自動カテゴリ分類を実装した実体験です。精度改善のプロセスと、公式ドキュメントには載っていない落とし穴、GPT-4o Vision とのコスト比較までまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →