Contents
Google Cloud プロジェクトの作成と請求設定
このセクションでは、Gemini AI を本番で利用するために必須となる GCP プロジェクトの作成 と 課金有効化 の手順を解説します。プロジェクトが正しく構成されていないと API が無効になるだけでなく、Enterprise 向けサブスクリプションの適用もできません。以下の流れに沿って作業してください。
プロジェクト新規作成手順
GCP コンソールからプロジェクトを作る際は、組織単位で管理できるようにすると後々の IAM や請求設定が楽になります。
- Google Cloud コンソール にログインし、左上メニュー → 「IAM と管理」 > 「プロジェクト」 を選択。
- 「新しいプロジェクト」 ボタンをクリックし、プロジェクト名(例:
gemini-demo-2026)と所属組織/フォルダを指定して 「作成」。 - 作成完了後の概要ページに表示される Project ID を控えておきます。API 呼び出しやサービスアカウント作成時に必須です。
ポイント:Enterprise 系サービスは、組織単位 のプロジェクトで利用することがベストプラクティスです。個人アカウントでも動作しますが、請求・ポリシー管理の柔軟性が制限されます。
課金有効化と Gemini Enterprise の前提条件
Gemini Enterprise は Vertex AI のエンタープライズ向けサブスクリプション で提供され、Marketplace から直接購入できるわけではありません。利用開始には以下のステップが必要です。
| 手順 | 内容 |
|---|---|
| 1. 請求アカウントのリンク | プロジェクト設定画面左側メニューの 「請求」 から、有料の請求先アカウントをプロジェクトに紐付けます。 |
| 2. Enterprise サブスクリプションの取得 | Google Cloud の営業窓口またはパートナー経由で Gemini Enterprise の契約手続きを行い、契約情報がプロジェクトに自動的に適用されます(Marketplace ではなく Cloud Billing 経由)。 |
| 3. サポートリージョンの確認 | 現在サポートされているリージョンは us-central1, europe-west4, asia-southeast1 (2026 年 5 月時点)。新規リージョンが追加された場合は、Vertex AI のリリースノートをご確認ください。 |
| 4. 課金ステータスの確認 | コンソール右上の 「請求」 アイコンが緑色に変わり、課金情報がリアルタイムで表示されていれば設定完了です。 |
Gemini API の有効化と IAM ロール設定
この章では、Gemini AI を呼び出すための Vertex AI API 有効化 と、最小権限で安全に運用できる IAM ロール の付与方法を紹介します。コンソールと gcloud CLI 両方の手順を示すので、好みの方法で実施してください。
Vertex AI API(Gemini API)有効化
Vertex AI が提供する Gemini モデルは、aiplatform.googleapis.com を有効にするだけで利用可能です。API 有効化後、数分でエンドポイントが作成されます。
コンソールからの有効化手順
- ナビゲーションメニュー → 「API とサービス」 > 「ライブラリ」 に移動。
- 検索ボックスに 「Vertex AI API」(正式名称
aiplatform.googleapis.com)と入力し、結果一覧から選択。 - 「有効化」 ボタンをクリック。
gcloud CLI での有効化手順
|
1 2 3 4 5 6 |
# プロジェクトコンテキストを設定 gcloud config set project YOUR_PROJECT_ID # Vertex AI API を有効化 gcloud services enable aiplatform.googleapis.com |
必要な IAM ロールとベストプラクティス
Gemini の呼び出しに最低限必要なのは roles/aiplatform.user です。データソースへのアクセスが必要になるケースでは、以下のロールを組み合わせます。
| ロール | 主な権限 | 推奨シナリオ |
|---|---|---|
roles/aiplatform.user |
Vertex AI モデル呼び出し・予測実行 | 基本的な Gemini 呼び出し |
roles/bigquery.dataViewer |
BigQuery データセットの読み取り | プロンプト生成にクエリ結果を使用 |
roles/sheets.reader, roles/sheets.writer |
Google Sheets の閲覧・書き込み | 結果を書き戻すフロー |
roles/logging.viewer |
Cloud Logging の閲覧 | デバッグ時のログ取得 |
roles/secretmanager.secretAccessor (任意) |
Secret Manager からシークレット取得 | API キーや DB パスワード管理 |
ロール付与例(サービスアカウントを想定)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# サービスアカウント作成 gcloud iam service-accounts create gemini-sa \ --display-name "Gemini Integration Service Account" # プロジェクト ID を変数に格納(可読性向上) PROJECT_ID=$(gcloud config get-value project) # 必要ロールを一括付与 gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:gemini-sa@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:gemini-sa@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.dataViewer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:gemini-sa@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/sheets.writer" |
ベストプラクティス
最小権限の原則を徹底し、不要なownerやeditor権限は付与しない。
本番環境ではロール変更履歴を Cloud Logging で監査できるように設定する。
Application Integration(旧称 Cloud Composer UI)で Gemini アシスタンスフローを作成
このセクションでは、Application Integration のノーコード UI を使って Gemini AI を組み込んだワークフローを構築します。2024 年にリニューアルされた UI では 「Templates(テンプレート)」 タブから AI アシスタンス用のサンプルが取得でき、数クリックでデプロイ可能です。
テンプレート取得と基本構成
- コンソール左側メニュー → 「Application Integration」 を選択。
- 上部タブの 「Templates」(旧 UI の “Explore” に相当)をクリックし、「AI‑powered integration templates」 カテゴリを展開。
- 「Gemini アシスタンス」 テンプレートカードの 「Use this template」 ボタンを押すと、フローデザイナが自動的にロードされます。
ポイント:テンプレートは「トリガー → Gemini 呼び出し → 結果処理」の 3 ブロックで構成されています。必要に応じてブロックを追加・削除でき、JSON/YAML エクスポートも可能です。
フローデザインのカスタマイズ手順
| ステップ | 内容 | 設定例 |
|---|---|---|
| トリガー | HTTP リクエスト、Pub/Sub メッセージ、または Cloud Scheduler から起動できます。 | HTTP Trigger(POST /gemini)を選択し、認証は IAM または API キー で制御 |
| Gemini 呼び出し | model=gemini-pro(デフォルト)に加えて temperature や max_output_tokens を指定可能です。 |
プロンプトフィールドに {{input.text}} と変数展開を設定 |
| 結果処理 | JSON 出力をそのまま BigQuery へ書き込む、もしくは Cloud Functions / Cloud Run に渡すことができます。 | BigQuery Insert Row アクションでテーブル gemini_results を指定 |
デプロイとバージョン管理
|
1 2 3 4 5 6 7 8 9 10 |
# フローをローカルにエクスポート(YAML 形式) gcloud integration flows export \ --flow=gemini-assist-flow \ --destination=./gemini_flow.yaml # 内容を編集後、同名フローで上書きデプロイ gcloud integration flows import \ --source=./gemini_flow.yaml \ --replace |
デプロイ完了後は 「Instances」 タブから稼働状況とエラーログをリアルタイムに確認できます。
BigQuery と Google スプレッドシートとの連携例
この章では、BigQuery で取得したテキストデータを Gemini AI に渡し、生成された要約結果を Google スプレッドシート に自動書き込みするフローを実装します。2024 年 6 月の公式ブログに基づきつつ、最新のベストプラクティス(外部関数+Cloud Functions)を取り入れています。
1. BigQuery スクリプトでデータ取得と Gemini 呼び出し
ML.PREDICT は Vertex AI の AutoML モデル用の関数であり、Gemini モデルは対象外です。そのため 外部関数 と Cloud Functions(Node.js) を組み合わせて API 呼び出しを実装します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
-- 1‑1. データ取得(レビュー本文を改行区切りで結合) DECLARE input_text STRING; SET input_text = ( SELECT STRING_AGG(description, '\n') FROM `my_dataset.product_reviews` WHERE rating < 3 ); -- 1‑2. 外部関数定義(Node.js ランタイムの Cloud Function を呼び出す例) CREATE TEMP FUNCTION call_gemini(prompt STRING) RETURNS STRING LANGUAGE js AS """ const {GoogleAuth} = require('google-auth-library'); const fetch = require('node-fetch'); async function invokeGemini(p) { const auth = new GoogleAuth({scopes: ['https://www.googleapis.com/auth/cloud-platform']}); const client = await auth.getClient(); const token = await client.getAccessToken(); const resp = await fetch( `https://us-central1-aiplatform.googleapis.com/v1/projects/${process.env.PROJECT_ID}/locations/us-central1/publishers/google/models/gemini-pro:predict`, { method: 'POST', headers: { Authorization: `Bearer ${token.token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({instances:[{prompt:p}]}) }); const data = await resp.json(); return data.predictions[0].content; } // 同期的に呼び出すためのラッパー return invokeGemini(prompt); """; -- 1‑3. 関数実行で要約テキスト取得 SELECT call_gemini(input_text) AS summary; |
ポイント:
CALLの代わりにCREATE TEMP FUNCTION … LANGUAGE jsを使うことで、BigQuery 内から直接外部 HTTP エンドポイント(Cloud Function)へリクエストできます。実行は非同期ですが、SQL スクリプトの中で完結するのでデータパイプラインがシンプルになります。
2. Python スクリプトで Sheets 書き込み
取得した要約テキストを Google Sheets API に渡す例です。サービスアカウントに roles/sheets.writer と roles/bigquery.dataViewer が付与されていることを前提とします。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import json, requests from google.oauth2 import service_account from google.cloud import bigquery from googleapiclient.discovery import build # ---------- 認証 ---------- SCOPES = [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/spreadsheets" ] creds = service_account.Credentials.from_service_account_file( "service-account.json", scopes=SCOPES ) # ---------- BigQuery でプロンプト取得 ---------- bq = bigquery.Client(credentials=creds, project=creds.project_id) prompt_query = """ DECLARE input_text STRING; SET input_text = ( SELECT STRING_AGG(description, '\n') FROM `my_dataset.product_reviews` WHERE rating < 3 ); SELECT input_text AS prompt; """ job = bq.query(prompt_query) prompt = list(job)[0].prompt # ---------- Gemini API 呼び出し ---------- token = creds.refresh(requests.Request()) gemini_url = ( f"https://us-central1-aiplatform.googleapis.com/v1/projects/{creds.project_id}" "/locations/us-central1/publishers/google/models/gemini-pro:predict" ) payload = {"instances": [{"prompt": prompt}]} headers = { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json", } resp = requests.post(gemini_url, headers=headers, data=json.dumps(payload)) summary = resp.json()["predictions"][0]["content"] # ---------- Sheets へ書き込み ---------- sheets_service = build("sheets", "v4", credentials=creds) spreadsheet_id = "YOUR_SPREADSHEET_ID" range_name = "Summary!A1" # シート名とセル範囲 body = {"values": [[summary]]} result = ( sheets_service.spreadsheets() .values() .update( spreadsheetId=spreadsheet_id, range=range_name, valueInputOption="RAW", body=body, ) .execute() ) print(f"{result.get('updatedCells')} cells updated.") |
重要:API 呼び出し時のリージョンは
us-central1に固定していますが、プロジェクトでサポートされている他リージョン(例:europe-west4,asia-southeast1)を利用する場合は URL のlocations/<region>部分を書き換えてください。
Gemini Developer API と Enterprise Agent Platform API の比較とハンズオン
Gemini AI には Developer API と Enterprise Agent Platform API の二つの提供形態があります。どちらを選ぶべきかは、スケール要件・ガバナンス要件・コスト構造によって変わります。本節では両者の特徴、料金感、実装サンプル、そしてデバッグ手順をまとめます。
主要な違いと選択基準
| 項目 | Gemini Developer API | Gemini Enterprise Agent Platform API |
|---|---|---|
| 対象ユーザー | 個人開発者・スタートアップ。迅速な PoC に最適。 | 大規模組織・エンタープライズ向け。統合監査や SLA が必要なケース。 |
| 認証方式 | サービスアカウントまたは OAuth2(cloud-platform スコープ)。 |
同上に加えて roles/aiplatform.admin などエンタープライズロールが必須。 |
| 課金モデル | 文字数ベース(例:1M トークン ≈ $0.0005)。無料枠あり。 | サブスクリプション + 使用量課金。月額 $200〜$500 の基本料に加えてトークン単価が適用。 |
| カスタマイズ性 | プロンプトエンジニアリングのみ。モデルは固定(gemini-pro、gemini-1.5‑flash 等)。 | エージェントごとに ツールチェーン・シークレット管理・ロールベースアクセス制御 が構築可能。 |
| スケーラビリティ | 自動水平スケール。クオータ増枠はサポート窓口で申請可。 | エージェント単位で レプリカ数 を設定でき、予測的な容量計画が容易。 |
いつ Developer API、いつ Enterprise Agent Platform を選ぶか
- PoC・社内ツール → Developer API(導入コスト最小)
- 部門横断の業務自動化や顧客向けチャットボット → Enterprise Agent Platform(統合監査と SLA が必須)
実装サンプル:Python で Developer API を呼び出す
以下は、サービスアカウントを使って Gemini Pro にプロンプトを投げ、エラーハンドリングまで網羅した例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import json, requests from google.oauth2 import service_account from google.auth.transport.requests import Request # ---------- 認証 ---------- SCOPES = ["https://www.googleapis.com/auth/cloud-platform"] creds = service_account.Credentials.from_service_account_file( "service-account.json", scopes=SCOPES ) creds.refresh(Request()) access_token = creds.token # ---------- Gemini 呼び出し ---------- def call_gemini(prompt: str, model: str = "gemini-pro") -> str: url = ( f"https://us-central1-aiplatform.googleapis.com/v1/projects/{creds.project_id}" f"/locations/us-central1/publishers/google/models/{model}:predict" ) payload = {"instances": [{"prompt": prompt}]} headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", } resp = requests.post(url, headers=headers, data=json.dumps(payload)) if not resp.ok: err = resp.json().get("error", {}) raise RuntimeError( f"Gemini API error {resp.status_code}: {err.get('message', resp.text)}" ) return resp.json()["predictions"][0]["content"] # ---------- 実行例 ---------- if __name__ == "__main__": try: result = call_gemini("2026 年の AI トレンドを 3 行で要約してください。") print("Gemini 出力 →", result) except Exception as e: print("呼び出し失敗:", e) |
ポイント解説
access_tokenは 1 時間有効 なため、長時間実行するジョブではトークンのリフレッシュ処理を組み込むと安全です。- エラーメッセージは Cloud Logging にも自動転送されるので、
runtimeerrorを捕捉したら同時にlogging.error()で出力すると運用が楽になります。
実装サンプル:Enterprise Agent Platform API(gcloud CLI)
エージェントを作成し、プロンプトを投げるまでの流れです。CLI のみで完結できるので CI/CD に組み込みやすいです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 1. エージェント作成(初回のみ実行) gcloud aiplatform agents create sales-assistant \ --location=us-central1 \ --display-name="Sales Assistant" \ --description="Enterprise 向け Gemini エージェント" # 2. プロンプト送信 PROMPT='2026 年度の売上レポートを要約し、増減率を示してください。' gcloud aiplatform agents query sales-assistant \ --location=us-central1 \ --prompt="${PROMPT}" \ --format=json > response.json # 3. エラーハンドリング例(シェルスクリプト) if [[ $? -ne 0 ]]; then echo "Agent API 呼び出しエラー" cat response.json | jq . exit 1 fi # 正常時は結果だけ抽出 cat response.json | jq -r '.predictions[0].content' > summary.txt echo "要約結果 → $(cat summary.txt)" |
スケーリングとクオータ管理
- Developer API:
quota.googleapis.comのaiplatform.googleapis.com/predict_requests_per_minuteがデフォルトで 60,000。増枠は Google Cloud Support にリクエスト。 - Enterprise Agent Platform:
--replica-countフラグでレプリカ数を指定でき、1 エージェントあたり最大 10 レプリカ(リージョン別上限あり)にスケール可能。
デバッグ・ログ確認手順
| 手順 | 操作内容 |
|---|---|
| 1. Cloud Logging のフィルタ設定 | ログビューアで resource.type="aiplatform.googleapis.com/Model" または resource.type="aiplatform.googleapis.com/Agent" を選択し、severity>=ERROR で絞り込む。 |
| 2. エラーレスポンスの取得 | Python の例では response.json()["error"]["message"]、CLI では --format=json 出力を jq で確認。 |
| 3. IAM ポリシーシミュレータ | コンソール → 「IAM」→「ポリシーシミュレーター」で対象サービスアカウントが必要ロールを持つか事前検証。 |
料金概算(2026 年 5 月時点)
| プラン | 基本料金 | トークン単価 (1M) | 想定月間使用例 |
|---|---|---|---|
| Developer API | 無料枠:40,000 トークン/月(約 $20 相当) | $0.0005 | 200,000 トークン → 約 $0.10 |
| Enterprise Agent Platform | 月額 $250(基本サブスクリプション) | $0.0004(割引あり) | 500,000 トークン + 基本料 → 約 $450 |
注意:料金はリージョン・モデルバージョンにより変動します。最新の価格は Google Cloud の料金ページ を必ず確認してください。
まとめ
- プロジェクトと請求設定を正しく行うことで、Gemini Enterprise のサブスクリプションが適用可能になります。Marketplace ではなく営業窓口経由で取得する点に注意しましょう。
- Vertex AI API(aiplatform.googleapis.com) を有効化し、
roles/aiplatform.userなど最小権限ロールを付与すれば、セキュリティを保ちつつ Gemini API が利用できます。 - Application Integration のテンプレート機能(旧 “Explore”)でノーコードフローを素早く構築し、必要に応じて YAML エクスポート・CLI デプロイが可能です。
- BigQuery と Sheets の連携は、外部関数+Cloud Functions で Gemini 呼び出しを行い、Python スクリプトで結果を書き戻す流れが推奨されます。
ML.PREDICTは Gemini に非対応なので使用しないでください。 - Developer API と Enterprise Agent Platform の違いを理解したうえで、PoC には Developer API、本番の大規模・ガバナンス重視シーンには Enterprise Agent Platform を選択するとコストと運用が最適化できます。
これらの手順とベストプラクティスに沿って構築すれば、2026 年以降も拡張性・可観測性を保ちつつ Gemini AI の強力な生成能力を自社システムへ統合できるでしょう。