SECTION 16

Gemini API
モデル選定とリージョン設計

正しいモデル・正しいリージョン — 404エラーを二度と出さない

calendar_today2026年3月改訂 businessLCREATOR.Inc schoolGoogle AI 研修プログラム

SECTION 16 — OVERVIEW

なぜこのセクションが重要か

2 / 29
error_outline よくある失敗パターン

Gemini APIはモデルによってリージョンが異なる
2.5系を global リージョンで呼ぶと 404。
3.x系を us-central1 で呼んでも 404。
モデル名の入力ミスでも静かに 404 が返る。

warning
gemini-3.1-flash というモデルは存在しません。
正しくは gemini-3.1-flash-lite-preview
task_alt このセクションで身につくこと
  • モデルファミリー(2.5系 / 3.x系)の違い
  • リージョンルールを一発で覚える方法
  • AI Studio と Vertex AI の違い(本研修は Vertex AI を基本利用)
  • GAS・Python からの正しい接続パターン
  • 404エラーの原因を即座に特定する方法

SECTION 16 — OVERVIEW

Gemini API への 2 つのアクセス経路

3 / 29
computer
あなたのアプリ
GAS / Python / その他
arrow_forward
vpn_key
Google AI Studio
認証: APIキー
対象: 3.x系モデル
用途: プロトタイプ・個人開発
cloud
Vertex AI
認証: OAuth / SA
対象: 2.5系 + 3.x系
用途: 業務システム・本番
arrow_forward
auto_awesome
Gemini モデル
2.5系 / 3.x系
lightbulb
GASの場合、Vertex AI 経由が推奨。ScriptApp.getOAuthToken() でGCPの認証が自動で通るため、APIキーの管理が不要です。

SECTION 16 — ACCESS METHODS

Google AI Studio(APIキー方式)

4 / 29
vpn_key

シンプルなAPIキー認証

ai.google.dev でキーを発行。環境変数 GEMINI_API_KEY に設定するだけで利用開始。

science

プロトタイプ・検証に最適

GCPプロジェクト不要。素早く試せる。無料枠があり、学習・検証コストが低い。

new_releases

最新モデルへの早期アクセス

3.x系プレビューモデルにいち早くアクセス可能。新機能の検証に向いている。

Google AI Studio 画面
warning 制限事項・注意点
  • キー流出リスク(セキュリティが低い)
  • データ処理地域を指定できない
  • SLAなし・エンタープライズサポートなし
  • 2.5系モデルは非対応
  • 本番業務システムには不適切
security
APIキーをソースコードに直書きしない。
GASでは PropertiesService に保存してください。

SECTION 16 — ACCESS METHODS

Vertex AI(GCPプロジェクト方式)

5 / 29
shield

IAMによる強固なアクセス制御

GCPのIAMロールで細かく権限管理。誰がどのモデルを使えるか組織レベルで制御可能。

location_on

リージョン指定でデータ主権を確保

リクエストを特定リージョン内に閉じられる。日本法令・社内ポリシーへの対応が容易。

verified

エンタープライズSLA対応

稼働率保証・テクニカルサポートあり。2.5系(安定版)と3.x系(最新)の両方に対応。

Vertex AI コンソール画面
info GASとの親和性が高い理由

GASは Google アカウントで動作するため、
ScriptApp.getOAuthToken() を使うと
APIキーなしでVertex AIに接続できる。
認証情報の管理が大幅に簡略化される。

thumb_up
業務システムでは必ずVertex AIを使用してください。セキュリティ・コンプライアンス・SLAの観点から推奨です。

SECTION 16 — COMPARISON

Google AI Studio vs Vertex AI — 徹底比較

6 / 29
項目 Google AI Studio(APIキー) Vertex AI(GCPプロジェクト)
認証方式 APIキー(HTTP ヘッダー) サービスアカウント / OAuth / GAS自動
セキュリティ キー流出リスクあり IAM で組織管理
対応モデル 3.x系のみ(2.5系は非対応) 2.5系 + 3.x系 の両方
データ処理地域 指定不可 リージョン指定可
SLA なし エンタープライズSLA あり
料金 無料枠あり / 従量課金 $300クレジット / 従量課金
GASとの統合 PropertiesServiceにキー保存が必要 OAuthToken で自動認証
推奨用途 個人開発・プロトタイプ・学習 業務システム・本番運用
school
研修ではVertex AI 経由を基本として学びます。本番を見据えた正しい設計を最初から身につけましょう。
layers PART 2

モデルファミリーとリージョン

2.5系 vs 3.x系 — 何が違い、どこで動くのか

SECTION 16 — MODEL FAMILIES

Gemini モデルファミリー概要

8 / 29
2.5 系
GA 安定版
gemini-2.5-flash
高速・低コスト。大量処理に最適
gemini-2.5-flash-lite
さらに軽量。単純タスク向け
gemini-2.5-pro
高精度。複雑な推論・分析向け
place
リージョン: us-central1 固定
3.x 系
Preview 最新
gemini-3-flash-preview
最新Flash。APIキー / Vertex AI global
gemini-3.1-pro-preview
最高精度。APIキー / Vertex AI global
gemini-3.1-flash-lite-preview
軽量版。APIキー / Vertex AI global
place
リージョン: global(us-central1 は 404)

SECTION 16 — REGION MATRIX

認証方式 × リージョン 対応表(2026年3月時点)

9 / 29
モデル名 APIキー
AI Studio
Vertex AI
global
Vertex AI
us-central1
gemini-2.5-flash
gemini-2.5-flash-lite
gemini-2.5-pro
gemini-3-flash-preview
gemini-3.1-pro-preview
gemini-3.1-flash-lite-preview
緑背景 = 2.5系(安定版)— Vertex AI us-central1 のみ
青背景 = 3.x系(最新)— APIキー または Vertex AI global

SECTION 16 — REGION RULES

リージョンルール — これだけ覚える

10 / 29
verified 2.5 系モデル
gemini-2.5-flash
gemini-2.5-flash-lite
gemini-2.5-pro
arrow_downward
us-central1

Vertex AI の us-central1 リージョンを使用

swap_horiz
auto_awesome 3.x 系モデル
gemini-3-flash-preview
gemini-3.1-pro-preview
gemini-3.1-flash-lite-preview
arrow_downward
global

Vertex AI の global リージョンを使用
またはAPIキー(AI Studio)

dangerous
間違えると必ず 404 NOT_FOUND Publisher Model エラーになります

3.x系を us-central1 で呼ぶ → 404 / 2.5系を global で呼ぶ → 404
「モデルが存在しない」ように見えるが、実際は「そのリージョンにモデルが配置されていない」のが原因

SECTION 16 — TROUBLESHOOTING

よくある 404 エラーの原因と対策

11 / 29
エラーメッセージ 原因 対策
404 NOT_FOUND Publisher Model リージョンが違う(最多) 2.5系 → us-central1
3.x系 → global
404 Model not found モデルIDのスペルミス models.list() でモデル名を確認
API key not valid APIキーが無効・環境変数未設定 環境変数 GEMINI_API_KEY を確認
403 Permission denied IAMロールが不足 Vertex AI ユーザーロールをサービスアカウントに付与
よくある誤ったモデルID
gemini-3.1-flash gemini-3.1-flash-lite-preview
gemini-3-flash gemini-3-flash-preview
update
モデルはプレビュー→GAで名前が変わります。
月1回 client.models.list() で最新名を確認しましょう。
code PART 3

GAS からの接続

Google Apps Script で Vertex AI を正しく呼び出す

SECTION 16 — GAS CONNECTION

GAS × Vertex AI — 2.5 系(us-central1)

13 / 29
place
リージョン: us-central1 — URLにリージョンプレフィックスが付く
GAS (JavaScript) const projectId = 'YOUR_PROJECT_ID'; const location = 'us-central1'; // 2.5系はここ const model = 'gemini-2.5-flash'; // OAuthトークンで自動認証(APIキー不要) const token = ScriptApp.getOAuthToken(); // エンドポイント URL(リージョンプレフィックスあり) const url = `https://${location}-aiplatform.googleapis.com` + `/v1/projects/${projectId}` + `/locations/${location}` + `/publishers/google/models/${model}:generateContent`; const res = UrlFetchApp.fetch(url, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, payload: JSON.stringify({ contents: [{ role: 'user', parts: [{ text: 'こんにちは' }] }] }) });
エンドポイントの構造
https://us-central1-aiplatform
.googleapis.com/v1/
projects/{projectId}
/locations/{location}
/publishers/google/models/
{model}:generateContent
info
URLのホスト名は
us-central1-aiplatform.googleapis.com
(リージョン名がプレフィックスに入る点に注意)

SECTION 16 — GAS CONNECTION

GAS × Vertex AI — 3.x 系(global)

14 / 29
place
リージョン: global — URLにリージョンプレフィックスが付かない
GAS (JavaScript) const projectId = 'YOUR_PROJECT_ID'; const location = 'global'; // 3.x系はここ const model = 'gemini-3-flash-preview'; const token = ScriptApp.getOAuthToken(); // 注意: globalの場合URLにリージョンプレフィックスがつかない const url = `https://aiplatform.googleapis.com` + `/v1/projects/${projectId}` + `/locations/${location}` + `/publishers/google/models/${model}:generateContent`; const res = UrlFetchApp.fetch(url, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, payload: JSON.stringify({ contents: [{ role: 'user', parts: [{ text: 'こんにちは' }] }] }) });
2.5系との違いに注意
https://us-central1-aiplatform.googleapis.com
https://aiplatform.googleapis.com

global の場合はホスト名の先頭にリージョン名が入りません。この違いを間違えると 404 になります。

エンドポイントの構造(global)
https://aiplatform
.googleapis.com/v1/
projects/{projectId}
/locations/global
/publishers/google/models/
{model}:generateContent

SECTION 16 — GAS SETUP

appsscript.json — OAuth スコープの設定

15 / 29

Vertex AI をGASから呼ぶには、appsscript.json に 適切な OAuth スコープを追加する必要があります。

appsscript.json { "timeZone": "Asia/Tokyo", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/cloud-platform" ] }
1

appsscript.json を表示

GASエディタの「プロジェクトの設定」→「appsscript.json ファイルをエディタで表示する」をオン

2

oauthScopes を追加

左のコードを参考に2つのスコープを追加して保存

3

GCPプロジェクトと紐付け

「プロジェクトの設定」→「Google Cloud Platform(GCP)プロジェクト」にプロジェクト番号を入力

4

Vertex AI API を有効化

GCPコンソールで「Vertex AI API」を有効化

terminal PART 4

Python SDK からの接続

google-genai SDK を使った 2.5系・3.x系の接続パターン

SECTION 16 — PYTHON SDK

google-genai SDK — 2.5系 と 3.x系の接続パターン

17 / 29
verified 2.5 系 — us-central1
Python from google import genai # 2.5系: location = "us-central1" client_25 = genai.Client( vertexai=True, project="YOUR_PROJECT_ID", location="us-central1" # ← ここ ) response = client_25.models.generate_content( model="gemini-2.5-flash", contents="こんにちは" ) print(response.text)
auto_awesome 3.x 系 — global
Python from google import genai # 3.x系: location = "global" client_3x = genai.Client( vertexai=True, project="YOUR_PROJECT_ID", location="global" # ← ここが違う ) response = client_3x.models.generate_content( model="gemini-3-flash-preview", contents="こんにちは" ) print(response.text)
warning
location を間違えると必ず 404。2.5系に global、3.x系に us-central1 を指定するとエラーになります。

SECTION 16 — PYTHON SDK

models.list() — 利用可能モデルを動的に確認する

18 / 29
Python from google import genai # us-central1 で利用可能なモデル一覧 client_25 = genai.Client( vertexai=True, project="YOUR_PROJECT_ID", location="us-central1" ) print("=== us-central1 ===") for m in client_25.models.list(): if 'gemini' in m.name.lower(): print(m.name) # global で利用可能なモデル一覧 client_3x = genai.Client( vertexai=True, project="YOUR_PROJECT_ID", location="global" ) print("=== global ===") for m in client_3x.models.list(): if 'gemini' in m.name.lower(): print(m.name)
なぜ定期実行が必要か
  • プレビューモデルはいつGA移行するか分からない
  • GA時にモデル名が変わることがある
  • 新モデルが突然追加されることがある
  • 廃止予定モデルへの依存を早期発見できる
schedule
月1回の定期確認を推奨。本番システムでは GAS の定期実行で自動チェックさせるのが理想的です。
tune PART 5

モデル選定ガイド

用途・コスト・精度から最適なモデルを選ぶ

SECTION 16 — MODEL SELECTION

用途別モデル選定 — Flash vs Pro

20 / 29
bolt Flash 系(高速・低コスト)
check_circle メール自動分類・スコアリング
check_circle テキスト要約・キーワード抽出
check_circle チャットボット・FAQ対応
check_circle 構造化データ抽出(OCR後処理)
check_circle 大量バッチ処理・定期レポート
gemini-2.5-flash gemini-3-flash-preview
workspace_premium Pro 系(高精度)
check_circle 複雑な法律・契約書レビュー
check_circle マルチステップ推論・論文解析
check_circle コード生成・レビュー・デバッグ
check_circle 精密な感情分析・ニュアンス把握
check_circle 長文ドキュメントの深い理解
gemini-2.5-pro gemini-3.1-pro-preview
savings
コスト最適化のヒント: まず Flash で試して、精度が不足する場合のみ Pro に切り替え。多くのユースケースは Flash で十分です。

SECTION 16 — IMAGE MODELS

画像生成モデル — リージョン対応

21 / 29
モデル名 APIキー Vertex global Vertex us-c1
gemini-3.1-fast-image
gemini-3.1-pro-image
gemini-3.1-flash-image-preview
image
Gemini 3.1 fast/pro-image は Vertex AI us-central1 専用。flash-image-preview は APIキーまたは global で使用可能。
画像モデルの使い分け

gemini-3.1-fast-image

高速生成。アイコン・サムネイルなど大量生成向け

gemini-3.1-pro-image

高品質生成。マーケティング素材・詳細なイラスト向け

gemini-3.1-flash-image-preview

プレビュー版。APIキーで手軽に試せる

SECTION 16 — COST

モデル別コスト比較

22 / 29
モデル 入力 ($/1M token) 出力 ($/1M token) 速度感
gemini-2.5-flash-lite 最安 最安 最速
gemini-2.5-flash 速い
gemini-3-flash-preview 低〜中 低〜中 速い
gemini-3.1-flash-lite-preview 速い
gemini-2.5-pro 中〜高 中〜高 普通
gemini-3.1-pro-preview 普通
Gemini モデルコスト比較チャート
コスト最適化の考え方
  1. まず Flash で品質を評価する
  2. 不十分な場合のみ Pro に切り替え
  3. バッチ処理は Flash-Lite を活用
  4. 本番前に月間コストを試算する
calculate
正確な最新単価は Google Cloud の
料金計算ツールで確認してください。プレビューモデルの価格はGA時に変更になる場合があります。
build HANDS-ON

ハンズオン

3 つの演習でリージョンの違いを体で覚える

SECTION 16 — HANDS-ON 1

GAS から Vertex AI 2.5-flash を呼び出す

24 / 29
GAS function callGemini25Flash() { const projectId = 'YOUR_PROJECT_ID'; const location = 'us-central1'; const model = 'gemini-2.5-flash'; const token = ScriptApp.getOAuthToken(); const url = `https://${location}-aiplatform.googleapis.com/v1` + `/projects/${projectId}/locations/${location}` + `/publishers/google/models/${model}:generateContent`; const res = UrlFetchApp.fetch(url, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, payload: JSON.stringify({ contents: [{ role: 'user', parts: [{ text: '「Hello Vertex AI」と返してください' }] }] }) }); const result = JSON.parse(res.getContentText()); Logger.log(result.candidates[0].content.parts[0].text); }
実行手順
1

GASエディタで新しいプロジェクトを作成

2

YOUR_PROJECT_ID を自分のGCPプロジェクトIDに変更

3

appsscript.json に OAuthスコープを追加(スライド15参照)

4

実行して「Hello Vertex AI」が返ってくることを確認

task_alt
成功条件: ログに Hello Vertex AI が表示されること

SECTION 16 — HANDS-ON 2

GAS から Vertex AI 3.x-flash を呼ぶ — リージョンの違いを体験

25 / 29

2.5系との差分のみを確認してください。変更点は2箇所だけです。

差分(ハイライト行を変更) const projectId = 'YOUR_PROJECT_ID'; const location = 'global'; // ← us-central1 から変更 const model = 'gemini-3-flash-preview'; // ← モデル変更 const token = ScriptApp.getOAuthToken(); // URLのホストも変わる(プレフィックスなし) const url = `https://aiplatform.googleapis.com/v1` + `/projects/${projectId}/locations/${location}` + `/publishers/google/models/${model}:generateContent`;
わざと間違えてみよう(エラー体験)

location を us-central1 のまま、モデルを gemini-3-flash-preview に変えて実行すると、404 NOT_FOUND Publisher Model が返ってくることを確認。

確認ポイント
A

global + gemini-3-flash-preview

→ 成功。レスポンスが返る

B

us-central1 + gemini-3-flash-preview

→ 404 NOT_FOUND Publisher Model

C

global + gemini-2.5-flash

→ 404 NOT_FOUND Publisher Model

psychology
エラーを実際に体験することでリージョンルールが身につきます。A・B・C の3パターンを全部試してみましょう。

SECTION 16 — HANDS-ON 3

models.list() で利用可能モデルを確認する

26 / 29
Python(ローカル実行) from google import genai PROJECT_ID = "YOUR_PROJECT_ID" # us-central1 で利用可能なモデルを確認 client_25 = genai.Client( vertexai=True, project=PROJECT_ID, location="us-central1" ) print("--- us-central1 (2.5系) ---") for m in client_25.models.list(): if 'gemini' in m.name.lower(): print(" •", m.name) # global で利用可能なモデルを確認 client_3x = genai.Client( vertexai=True, project=PROJECT_ID, location="global" ) print("--- global (3.x系) ---") for m in client_3x.models.list(): if 'gemini' in m.name.lower(): print(" •", m.name)
事前準備
1

pip install google-genai

2

gcloud auth application-default login

3

YOUR_PROJECT_ID を自分のIDに変更して実行

期待される出力
--- us-central1 (2.5系) ---
• gemini-2.5-flash
• gemini-2.5-flash-lite
• gemini-2.5-pro
--- global (3.x系) ---
• gemini-3-flash-preview
• gemini-3.1-pro-preview
• gemini-3.1-flash-lite-preview

SECTION 16 — MAINTENANCE

モデル更新への対応 — プレビューから GA への移行

27 / 29
プレビュー → GA 移行時に起こること
  • モデル名から -preview が外れる
  • リージョン設定が変わる場合がある
  • 料金体系が変更になる場合がある
  • 旧プレビュー版は一定期間後に廃止
dangerous
プレビュー版に依存した本番システムは、GA移行時に突然動かなくなる可能性があります。移行計画を事前に立てましょう。
推奨する対応策
1

モデルIDを定数管理

ハードコードを避け、設定ファイルやPropertiesServiceで一元管理

2

月1回の定期チェック

models.list() で現在のモデル状態を確認

3

廃止通知をモニタリング

Google Cloud のリリースノートを定期購読

SECTION 16 — SUMMARY

まとめ — モデル選定チェックリスト

28 / 29
check_circle
2.5系は Vertex AI us-central1 を使う
check_circle
3.x系は Vertex AI global または APIキーを使う
check_circle
GASからは ScriptApp.getOAuthToken() で認証する
check_circle
業務システムは必ず Vertex AI を使う(APIキー禁止)
check_circle
モデルIDは -preview まで正確に入力する
check_circle
通常タスクは Flash、精度重視は Pro を選ぶ
check_circle
月1回 models.list() でモデル名の変更を確認する
check_circle
404 が出たらまずリージョンとモデルIDを確認する

リージョンの選択ミスはコードが正しくても 404 を引き起こす。2.5系 → us-central1 / 3.x系 → global — このルールを覚えれば、エラーの9割は防げる。

Section 16 完了

正しいモデル × 正しいリージョン × 正しい認証方式で、
堅牢な Gemini API 連携を実現しましょう。

arrow_forward 次へ — Section 17: 実践 名刺管理 OCR アプリ
学習モデル数
6+
重要ルール
2系/3系
ハンズオン
3本
エラー対策
4種
🏠 研修ポータル ▶ この章の動画 📺 動画一覧