⚠️ この記事は開発者向けです。 Gemini API をプログラムから使う話で、コードを書く前提の内容です。 チャットとして使いたい方は、Geminiとは何か と Geminiの始め方 をご覧ください。そちらはコードを書きません。
ローカルで作った Gemini API アプリを「自分のパソコンの外」で動かして、URL でみんなが使える状態にしたい。そんなときに役立つのが Gemini Cloud Run デプロイ をはじめとするサーバーレスへの公開です。この記事では、Cloud Run と Cloud Functions の違いと選び方、デプロイのおおまかな流れ、そしてAPIキーを安全に扱う運用のコツまで、API開発者向けにやさしく整理します。
結論:手元のGemini APIアプリを「サーバー管理なし」で公開できる
先に要点だけ言うと、Cloud Run や Cloud Functions を使うと、次のことができます。
- ローカルで動くGemini APIアプリを、そのままインターネットに公開できる: 自分のPCを起動し続けなくても、URL経由でアクセスできるサービスにできる
- サーバーの管理がいらない: OSのアップデートや台数の増減(スケール)をクラウド側が面倒を見てくれるので、アプリのコードに集中できる
- アクセスに応じて自動でスケールする: 利用が増えれば自動で処理能力が増え、来ない間は小さく保たれる(従量課金と相性が良い)
つまり、「自分のPCで動くプログラム」を「誰でも使えるWebサービス」に変えるのが、ここでやることです。難しいインフラ運用を肩代わりしてくれるのがサーバーレスの魅力です。
この記事は概念と流れの整理が目的です。具体的なコマンドやSDKの細かな指定は更新が速いので、断定は避け、最後に公式ドキュメントへ案内します。
なぜサーバーレス(Cloud Run / Cloud Functions)なのか
Gemini API アプリを公開する方法はいくつもありますが、サーバーレスが入門に向いているのは次の理由からです。
- サーバーを自分で立てて管理しなくてよい: 仮想マシンの構築・保守・セキュリティパッチといった手間が大幅に減る
- 自動でスケールする: アクセスが急に増えても、基本はクラウド側が処理能力を調整してくれる
- 従量課金でムダが出にくい: 使われていない時間のコストを抑えやすく、個人開発や小さなサービスでも始めやすい
- 公開URLがすぐ手に入る: デプロイすると、外部からアクセスできるURLが割り当てられる
特に Gemini API のように「リクエストが来たときだけ処理する」使い方は、常時サーバーを動かしておくより、必要なときに立ち上がるサーバーレスと相性が良いです。
Cloud RunとCloud Functionsの違いと選び方
どちらも Google Cloud のサーバーレスですが、向いている用途が少し違います。
ざっくりした違い
| Cloud Run | Cloud Functions | |
|---|---|---|
| 単位 | コンテナ(アプリ一式) | 関数(1つの処理) |
| イメージ | 小さなAPIサーバーを丸ごと載せる | 「この処理だけ」を置く |
| 向くもの | 複数のエンドポイントを持つAPI、常駐的なサーバー的アプリ | 特定のイベントに反応する軽い処理 |
| 自由度 | 高い(好きな構成のコンテナを動かせる) | 手軽(関数を書いて置くだけに近い) |
選び方の目安
- Cloud Runが向くケース: 「チャットボットのAPI」「複数の機能をまとめたGemini APIサーバー」など、まとまった機能を一つのサービスとして公開したいとき。コンテナ単位なので、使うライブラリや構成を自由に決められます
- Cloud Functionsが向くケース: 「フォームが送信されたら要約する」「アップロードをきっかけにGeminiで分類する」など、何かのイベントに反応する軽い1機能を置きたいとき
迷ったときの考え方はシンプルです。まずシンプルなほうで試し、足りなくなったら見直す。最初から完璧な構成を狙わず、動くものを公開してから育てるのが現実的です。
両サービスの最新の機能差・対応言語・制限値は更新されます。細かい仕様で迷ったら、Cloud Run の公式ドキュメントとCloud Functions の公式ドキュメントで最新を確認してください。
デプロイの流れ(概略)
ここでは「どんな順番で進むか」という全体像をつかみます。サービスやツールによって細部は変わるため、正確なコマンドや手順は公式ドキュメントを正としてください。あくまで流れのイメージです。
おおまかなデプロイの流れ(イメージ):
1. ローカルでGemini APIアプリを動くようにする
└ APIキーは環境変数から読む(コードに直書きしない)
2. 公開用の形に整える
└ Cloud Run ならコンテナ化、Functions なら関数として用意
3. APIキーを安全に渡す設定をする
└ 環境変数 / Secret Manager に登録(リポジトリには入れない)
4. デプロイして公開URLを得る
5. 公開URLにアクセスして動作確認&ログ確認
ポイントは、ローカルで「環境変数からキーを読む」形にしておけば、本番でも同じ仕組みで安全に渡せることです。ローカルとデプロイ先で読み込み方をそろえておくと、移行でつまずきにくくなります。
AI Studio から作ったアプリを Cloud Run へ公開する流れも用意されており、その場合はAPIキーがサーバー側の環境に注入され、ブラウザ側のコードには含まれない形で公開されます。手段は複数あるので、自分の構成に合うものを公式の手順から選んでください。
運用の注意(ここがいちばん大事)
公開して終わりではなく、ここからが本番です。特に次の点を押さえてください。
APIキーは絶対にコードへ直書きしない
最重要のルールです。
- コードやリポジトリにキーを書かない: GitHub などに上げてしまうと、自動収集ツールに見つかって不正利用される恐れがあります。不正利用の課金はキー所有者に請求されます
- 環境変数、できればSecret Managerで管理する: サーバーレスの環境変数に入れるか、より安全にはSecret Manager(シークレット管理サービス)に保管し、実行時に読み込みます
- キーはサーバー側だけに持たせる: ブラウザやスマホアプリ側のコードにキーを埋め込むと、利用者から丸見えになります。Geminiへの呼び出しはサーバー側で行い、クライアントには結果だけ返す設計にします
- 漏れたら即失効・再発行: 少しでも露出した疑いがあれば、放置せずすぐ失効させて作り直します
コスト・タイムアウト・同時実行
- コスト: サーバーレス自体は従量課金で抑えやすい一方、Gemini API の利用料は別にかかります。アクセスが増えればそのぶん増えるので、想定外の課金を避けるなら上限アラートなどの仕組みも検討します
- タイムアウト: 長文生成やストリーミングは応答に時間がかかります。サーバーレスには実行時間の上限があるため、上限を超えて処理が打ち切られないか確認します
- 同時実行(スケール): 急なアクセス増で同時実行が跳ね上がると、Gemini API側のレート制限に当たることがあります。リトライやキューで山をならす設計も視野に入れます
CORS・認証
- CORS: ブラウザから直接呼ぶ構成では、別ドメインからのアクセス可否(CORS)の設定が必要になります
- 認証: 公開APIを誰でも叩ける状態にすると、悪用やコスト増につながります。用途に応じてアクセス制限や認証をかけ、入力は必ずバリデーションしてください
単価・無料枠・タイムアウトの上限・同時実行の制限といった具体的な数値は変わりやすいため、断定はせず、Cloud Run・Cloud Functions・Gemini APIそれぞれの公式を最新の情報源としてください。
一次体験:ローカルとデプロイ先で「キーの読み方」をそろえる
実際に手元のGemini APIアプリを公開したとき、いちばん効いたのは最初からローカルでも環境変数経由でキーを読むようにしておくことでした。ローカルでは .env に置いて読み込み、デプロイ先では環境変数(やSecret Manager)に同じ名前で登録する。こうしておくと、コードを一切いじらずにそのまま公開でき、移行でのトラブルがほとんど起きませんでした。
逆に、開発中につい「動けばいい」とキーを直書きしてしまうと、公開のたびに書き換えが必要になり、消し忘れて事故るリスクが一気に上がります。最初の一歩からキーを外に出さない運用にしておくのが、結局いちばん速くて安全だと感じています。
まとめ
- Cloud Run / Cloud Functions を使うと、ローカルのGemini APIアプリをサーバー管理なしで公開でき、自動スケール・従量課金の恩恵を受けられる
- Cloud Run=コンテナ/常駐的なAPIサーバー向き、Cloud Functions=イベントに反応する軽い関数向き。迷ったらシンプルなほうで試して育てる
- デプロイの流れは「ローカルで動かす → 公開用に整える → キーを安全に渡す → デプロイ → 動作・ログ確認」。ローカルとデプロイ先でキーの読み方をそろえるとつまずきにくい
- 運用の核はAPIキーをコードに直書きしないこと。環境変数・Secret Managerで管理し、サーバー側だけに持たせ、漏れたら即失効
- コスト・タイムアウト・同時実行・CORS・認証にも目を配る。具体的な数値や手順は変わりやすいので、Cloud Run / Cloud Functions / Gemini API の公式ドキュメントで最新を確認する
まず API そのものに不安がある方はGemini API入門(AI Studio)から、コードを書かずに業務へ組み込みたい方はGemini×GASで業務自動化を、より本格的な基盤を検討するならVertex AIとGemini APIの違いもあわせてご覧ください。