この記事の対象読者
この記事で得られること
- Gemini 3.1 Proの技術的な立ち位置: 何が変わったのか、前世代と比べて何が強いのか
- ベンチマーク比較の読み方: ARC-AGI-2やSWE-Bench Verifiedの数値が実務で何を意味するか
- APIを使った実装方法: Python/Node.jsでの具体的なコード例とThinking Level制御
この記事で扱わないこと
- Gemini 3 Flashとの詳細比較(別記事予定)
- Vertex AIでの本番デプロイ手順
- ファインチューニング
1. Gemini 3.1 Proとの出会い
「また新しいモデルが出たのか」——正直、最初はそう思った。
2026年に入ってからのAIモデルリリースラッシュは凄まじく、Claude Opus 4.6、GPT-5.3 Codex、そしてGemini 3.1 Proと、毎週のようにフロンティアモデルが更新されている。「もうベンチマークの数字を追いかけるのは疲れた」という声も聞こえてきそうだ。
しかし、Gemini 3.1 Proの数字を見て正直に驚いた。ARC-AGI-2スコアが前世代の31.1%から77.1%へ。2倍以上の伸び。しかも価格は据え置き。これは「マイナーアップデート」の枠を完全に超えている。
Gemini 3.1 Proを一言で表すなら、「推論力に全振りした、コスパ最強のフロンティアモデル」だ。料理で言えば、同じ価格のランチセットなのに、メインディッシュが突然ミシュラン三ツ星シェフの一皿に変わったような衝撃である。
ここまでで、Gemini 3.1 Proがどんなインパクトを持つモデルか、なんとなくイメージできたでしょうか。次は、この記事で使う用語を整理しておきましょう。
2. 前提知識の確認
本題に入る前に、この記事で登場する用語を確認します。
2.1 ARC-AGI-2とは
ARC-AGI-2は、AIが「本当に考えることができるか」を測るためのベンチマークだ。ARC Prize財団が運営しており、訓練データの暗記では絶対に解けない、未知の論理パターンを解く能力を評価する。つまり「どれだけ頭がいいか」ではなく「どれだけ応用が利くか」を測る試験だと思ってほしい。
2.2 SWE-Bench Verifiedとは
実際のGitHubリポジトリから抽出された「本物のバグ修正タスク」を解かせるベンチマーク。テストが通るかどうかで正否が決まるため、「コードを書けるか」ではなく「現実の問題を解決できるか」を測定する。エンジニアにとっては最も実務に近いベンチマークと言える。
2.3 Thinking Levelとは
Gemini 3シリーズから導入された、推論の「深さ」を制御するパラメータ。Low / Medium / Highの3段階があり、Highにするほど推論に時間とトークンを使うが精度が上がる。コストと品質のトレードオフを開発者が制御できる仕組みだ。
2.4 コンテキストウィンドウとは
モデルが一度に処理できるテキストの最大長のこと。Gemini 3.1 Proは入力100万トークン、出力65,536トークンをサポートする。100万トークンは、おおよそ長編小説10冊分に相当する。
これらの用語が押さえられたら、Gemini 3.1 Proの背景を見ていきましょう。
3. Gemini 3.1 Proが生まれた背景
3.1 Gemini 3シリーズの系譜
2025年末にリリースされたGemini 3 Proは、Googleの「Deep Think」推論アーキテクチャを初めて搭載したモデルだった。しかしリリース直後、Claude Opus 4.6やGPT-5.3 Codexに主要ベンチマークで追い抜かれるという事態に。Googleにとっては巻き返しが急務だった。
3.2 「0.1」アップデートの異例さ
Google DeepMindがGeminiシリーズで「0.1刻みのアップデート」をリリースしたのは今回が初めてである。通常はメジャーバージョン(2.0 → 3.0)か、サフィックス変更(Pro → Flash)で区分してきた。わざわざ「3.1」という新しい命名規則を採用した事実が、このアップデートの重要性を物語っている。
3.3 解決しようとした課題
Gemini 3 ProにはSWE-Benchでの出力途中切れ問題や、ツール呼び出し時にカスタム関数よりbashを優先してしまうクセがあった。3.1 Proでは専用エンドポイント(gemini-3.1-pro-preview-customtools)の追加を含め、エージェント型ワークフローの信頼性向上が図られている。
背景がわかったところで、基本的な仕組みを見ていきましょう。
4. 基本概念と仕組み
4.1 ベンチマーク比較:2026年2月フロンティアモデル対決
数字の羅列だけでは退屈なので、各モデルの「得意分野」がわかる形にまとめた。
| ベンチマーク | Gemini 3.1 Pro | Claude Opus 4.6 | GPT-5.3 Codex | 評価対象 |
|---|---|---|---|---|
| ARC-AGI-2 | 77.1% | 68.8% | 52.9% | 未知のパターン推論 |
| SWE-Bench Verified | 80.6% | 79.6% | 75.2% | 実コードのバグ修正 |
| GPQA Diamond | 94.3% | 非公開 | 非公開 | 博士レベル科学問題 |
| LiveCodeBench Pro Elo | 2887 | 非公開 | 2393 | 競技プログラミング |
| Terminal-Bench 2.0 | 68.5% | 非公開 | 77.3% | ターミナル操作タスク |
| GDPval-AA Elo | 1317 | 1633 | 非公開 | 実務エキスパートタスク |
ポイントは以下の通りだ。
- 抽象推論・科学分野ではGemini 3.1 Proが圧勝。ARC-AGI-2の77.1%は全フロンティアモデル中トップ
- コーディング総合力は僅差。SWE-Benchでは1ポイント差でGemini有利
- ターミナル操作系はGPT-5.3 Codexが依然リード(約9ポイント差)
- 実務タスクの人間評価(GDPval-AA)ではClaude Opus 4.6が首位
つまり「万能の最強」は存在せず、用途に応じた使い分けが重要だ。
4.2 Thinking Level — 推論コストの制御
Gemini 3.1 Proの最大の特徴の一つが、推論の深さを開発者が制御できる「Thinking Level」機能だ。
| Thinking Level | 用途 | レイテンシ | コスト |
|---|---|---|---|
| Low | チャットボット、定型処理 | 最小 | 最安 |
| Medium ★3.1で新追加 | コードレビュー、分析タスク | 中 | 中 |
| High(デフォルト) | 複雑な推論、数学、研究 | 大 | 最大 |
注意: thinking_levelを省略するとHighがデフォルト適用される。コスト最適化を意識するなら明示的な指定が必須だ。
4.3 API料金体系
| 項目 | 料金 |
|---|---|
| 入力(〜200Kトークン) | $2.00 / 1Mトークン |
| 入力(200K超) | 上位料金適用 |
| 出力 | $12.00 / 1Mトークン |
| コンテキストキャッシュ | 最大75%割引 |
Gemini 3 Proと完全に同一料金。つまり無料アップグレードだ。
基本概念が理解できたところで、実際にコードを書いて動かしてみましょう。
5. 実践:実際に使ってみよう
5.1 環境構築
# Python SDKのインストール(1.51.0以上が必須)
pip install google-genai>=1.51.0
# APIキーの取得
# 1. https://aistudio.google.com にアクセス
# 2. 「Get API Key」→「Create API Key」
# 3. 環境変数に設定
export GEMINI_API_KEY="your-api-key-here"
注意: Gemini 3.1 Pro Previewは無料枠がない。APIコールには課金アカウントが必要。AI Studioのプレイグラウンド(Web UI)は無料で利用可能。
5.2 環境別の設定ファイル
以下の3種類の設定ファイルを用意しました。用途に応じて選択してください。
開発環境用(config.yaml)
# config.yaml - 開発環境用(このままコピーして使える)
gemini:
model: "gemini-3.1-pro-preview"
thinking_level: "medium" # 開発時はMediumで十分
max_output_tokens: 8192
temperature: 0.7
api:
base_url: "https://generativelanguage.googleapis.com"
timeout: 60
retry_count: 3
logging:
level: "DEBUG"
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
本番環境用(config.production.yaml)
# config.production.yaml - 本番環境用
gemini:
model: "gemini-3.1-pro-preview"
thinking_level: "high" # 本番は精度優先
max_output_tokens: 65536
temperature: 0.3 # 再現性重視
api:
base_url: "https://generativelanguage.googleapis.com"
timeout: 120
retry_count: 5
logging:
level: "INFO"
format: "%(asctime)s - %(levelname)s - %(message)s"
テスト環境用(config.test.yaml)
# config.test.yaml - CI/CD用
gemini:
model: "gemini-3.1-pro-preview"
thinking_level: "low" # テストはコスト最小で
max_output_tokens: 1024
temperature: 0.0 # 決定論的出力
api:
base_url: "https://generativelanguage.googleapis.com"
timeout: 30
retry_count: 1
logging:
level: "WARNING"
5.3 基本的な使い方
"""
Gemini 3.1 Pro API 基本サンプル
実行方法: python gemini_basic.py
前提条件: pip install google-genai>=1.51.0
環境変数 GEMINI_API_KEY を設定済み
"""
from google import genai
from google.genai import types
def basic_text_generation():
"""基本的なテキスト生成"""
client = genai.Client() # GEMINI_API_KEYを自動読み取り
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents="Pythonでフィボナッチ数列を再帰とメモ化の両方で実装し、パフォーマンスの違いを説明してください。",
)
print(response.text)
print(f"\n--- トークン使用量 ---")
print(f"入力: {response.usage_metadata.prompt_token_count}")
print(f"出力: {response.usage_metadata.candidates_token_count}")
def controlled_thinking():
"""Thinking Levelを制御した推論"""
client = genai.Client()
# Medium Thinking: コードレビューに最適
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents="以下のPythonコードのバグを見つけて修正してください:\n\ndef binary_search(arr, target):\n left, right = 0, len(arr)\n while left < right:\n mid = (left + right) // 2\n if arr[mid] == target:\n return mid\n elif arr[mid] < target:\n left = mid\n else:\n right = mid\n return -1",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
thinking_level="MEDIUM" # LOW, MEDIUM, HIGH
),
max_output_tokens=4096,
temperature=0.3,
),
)
print(response.text)
def multimodal_example():
"""マルチモーダル入力(画像 + テキスト)"""
client = genai.Client()
# URLから画像を読み込んで分析
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents=[
types.Part.from_uri(
file_uri="https://example.com/architecture-diagram.png",
mime_type="image/png",
),
"このアーキテクチャ図を分析し、改善点を3つ挙げてください。",
],
)
print(response.text)
if __name__ == "__main__":
print("=== 基本テキスト生成 ===")
basic_text_generation()
print("\n=== Thinking Level制御 ===")
controlled_thinking()
# マルチモーダルは画像URLを実際のものに差し替えて使用
# print("\n=== マルチモーダル分析 ===")
# multimodal_example()
5.4 Node.js版
/**
* Gemini 3.1 Pro API 基本サンプル(Node.js)
* 実行方法: node gemini_basic.mjs
* 前提条件: npm install @google/genai
* 環境変数 GEMINI_API_KEY を設定済み
*/
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
async function basicGeneration() {
const response = await ai.models.generateContent({
model: "gemini-3.1-pro-preview",
contents: "TypeScriptでジェネリクスを使った型安全なAPIクライアントを実装してください。",
config: {
thinkingConfig: { thinkingLevel: "MEDIUM" },
maxOutputTokens: 4096,
temperature: 0.5,
},
});
console.log(response.text);
}
basicGeneration().catch(console.error);
5.5 実行結果
上記のPythonコード(basic_text_generation)を実行すると、以下のような出力が得られます:
$ python gemini_basic.py
=== 基本テキスト生成 ===
## フィボナッチ数列:再帰 vs メモ化
### 1. 素朴な再帰実装
...(フィボナッチの実装と解説が出力される)...
--- トークン使用量 ---
入力: 42
出力: 1,247
5.6 よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
google.genai.errors.ClientError: 400 |
SDKバージョンが古い |
pip install google-genai>=1.51.0 でアップグレード |
API key not valid |
APIキー未設定 or 無効 | AI Studioで再発行し GEMINI_API_KEY に設定 |
Model not found: gemini-3.1-pro |
モデルID誤り | 正しくは gemini-3.1-pro-preview(-preview必須) |
Thinking config not supported |
SDK 1.50以下 | pip install --upgrade google-genai |
Quota exceeded |
無料枠なし/課金未設定 | Google Cloudで課金アカウントを有効化 |
| カスタム関数がbashに置換される | モデルのデフォルト動作 |
gemini-3.1-pro-preview-customtools エンドポイントを使用 |
5.7 環境診断スクリプト
問題が発生した場合は、以下のスクリプトで環境を診断できます:
#!/usr/bin/env python3
"""
Gemini 3.1 Pro 環境診断スクリプト
実行方法: python check_gemini_env.py
"""
import sys
import os
def check_environment():
"""環境をチェックして問題を報告"""
issues = []
info = []
# Python バージョン確認
if sys.version_info < (3, 9):
issues.append(f"Python 3.9以上が必要です(現在: {sys.version})")
else:
info.append(f"Python: {sys.version}")
# SDKバージョン確認
try:
import google.genai as genai
version = getattr(genai, "__version__", "不明")
info.append(f"google-genai: {version}")
# バージョン比較(簡易)
parts = version.split(".")
if len(parts) >= 2 and int(parts[0]) == 1 and int(parts[1]) < 51:
issues.append(
f"google-genai 1.51.0以上が必要です(現在: {version})"
)
except ImportError:
issues.append("google-genai がインストールされていません")
issues.append(" → pip install google-genai>=1.51.0")
# APIキー確認
api_key = os.environ.get("GEMINI_API_KEY")
if not api_key:
issues.append("環境変数 GEMINI_API_KEY が設定されていません")
elif len(api_key) < 10:
issues.append("GEMINI_API_KEY の値が短すぎます(無効な可能性)")
else:
info.append(f"GEMINI_API_KEY: 設定済み({api_key[:8]}...)")
# API接続テスト
if not issues:
try:
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents="Hello",
config={"max_output_tokens": 10},
)
info.append("API接続テスト: 成功")
except Exception as e:
issues.append(f"API接続テストに失敗: {e}")
# 結果表示
print("=" * 50)
print("Gemini 3.1 Pro 環境診断結果")
print("=" * 50)
if info:
print("\n[情報]")
for i in info:
print(f" ✅ {i}")
if issues:
print("\n[問題]")
for issue in issues:
print(f" ❌ {issue}")
else:
print("\n🎉 環境は正常です!Gemini 3.1 Proを使う準備ができています。")
if __name__ == "__main__":
check_environment()
実装方法がわかったので、次は具体的なユースケースを見ていきます。
6. ユースケース別ガイド
6.1 ユースケース1: 大規模コードベースの分析
想定読者: 既存プロジェクトのリファクタリングやレビューを行うエンジニア
推奨構成: Thinking Level HIGH + 100万トークンのコンテキストウィンドウをフル活用
なぜGemini 3.1 Proか: 100万トークンのコンテキストウィンドウにより、大規模リポジトリ全体を一度に読み込んで分析できる。SWE-Bench 80.6%の実力は、実際のバグ発見能力に直結する。
サンプルコード:
"""
大規模コードベース分析サンプル
複数ファイルを一括で読み込み、アーキテクチャレビューを実行
"""
from google import genai
from google.genai import types
from pathlib import Path
def analyze_codebase(project_dir: str) -> str:
"""プロジェクトディレクトリを分析してレビュー結果を返す"""
client = genai.Client()
# ソースファイルを収集
code_files = []
extensions = {".py", ".js", ".ts", ".yaml", ".json"}
for path in Path(project_dir).rglob("*"):
if path.suffix in extensions and "node_modules" not in str(path):
try:
content = path.read_text(encoding="utf-8")
code_files.append(f"### {path.relative_to(project_dir)}\n```\n{content}\n```")
except (UnicodeDecodeError, PermissionError):
continue
codebase_text = "\n\n".join(code_files)
prompt = f"""以下のコードベース全体を分析し、レポートを作成してください:
1. アーキテクチャの評価(SOLID原則の遵守度)
2. 潜在的なバグ(重要度順)
3. パフォーマンスボトルネック
4. リファクタリング提案(優先度付き)
{codebase_text}"""
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
max_output_tokens=65536,
),
)
return response.text
if __name__ == "__main__":
result = analyze_codebase("./my-project")
print(result)
6.2 ユースケース2: データ分析レポートの自動生成
想定読者: CSVやExcelデータから定期的にレポートを生成したいデータエンジニア
推奨構成: Thinking Level MEDIUM + 構造化出力
なぜGemini 3.1 Proか: GPQA Diamond 94.3%が示す通り、科学的・統計的な分析能力がフロンティアモデル中最高。定量データの解釈において信頼性が高い。
サンプルコード:
"""
CSVデータ分析レポート生成サンプル
"""
import json
from google import genai
from google.genai import types
def generate_data_report(csv_content: str) -> dict:
"""CSVデータを分析してJSON形式のレポートを返す"""
client = genai.Client()
prompt = f"""以下のCSVデータを分析し、以下のJSON形式で結果を返してください。
JSONのみ出力し、マークダウンのバッククォートは含めないでください。
{{
"summary": "データの概要(1-2文)",
"key_findings": ["発見1", "発見2", "発見3"],
"anomalies": ["異常値1", "異常値2"],
"recommendations": ["推奨アクション1", "推奨アクション2"]
}}
データ:
{csv_content}"""
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="MEDIUM"),
max_output_tokens=4096,
temperature=0.2,
),
)
return json.loads(response.text)
if __name__ == "__main__":
sample_csv = """date,revenue,users,churn_rate
2026-01-01,150000,1200,0.03
2026-01-08,148000,1180,0.035
2026-01-15,165000,1350,0.028
2026-01-22,142000,1100,0.042
2026-01-29,170000,1400,0.025"""
report = generate_data_report(sample_csv)
print(json.dumps(report, ensure_ascii=False, indent=2))
6.3 ユースケース3: エージェント型ワークフロー(関数呼び出し)
想定読者: AIエージェントを構築したい開発者
推奨構成: gemini-3.1-pro-preview-customtools + Function Calling
なぜGemini 3.1 Proか: 専用のカスタムツール用エンドポイントがあり、エージェントがbashよりもカスタム関数を優先的に選択する。APEX-Agents 33.5%やBrowseComp 85.9%といったエージェント系ベンチマークでも大幅に改善。
サンプルコード:
"""
Function Callingサンプル(エージェント型ワークフロー)
"""
from google import genai
from google.genai import types
def search_database(query: str, limit: int = 10) -> str:
"""データベース検索(モック)"""
return f'{{"results": [{{"id": 1, "title": "Result for: {query}"}}], "total": 1}}'
def create_report(title: str, content: str) -> str:
"""レポート作成(モック)"""
return f'{{"status": "created", "title": "{title}"}}'
# ツール定義
tools = [
types.Tool(
function_declarations=[
types.FunctionDeclaration(
name="search_database",
description="社内データベースを検索する",
parameters=types.Schema(
type="OBJECT",
properties={
"query": types.Schema(type="STRING", description="検索クエリ"),
"limit": types.Schema(type="INTEGER", description="取得件数"),
},
required=["query"],
),
),
types.FunctionDeclaration(
name="create_report",
description="分析レポートを作成する",
parameters=types.Schema(
type="OBJECT",
properties={
"title": types.Schema(type="STRING", description="レポートタイトル"),
"content": types.Schema(type="STRING", description="レポート内容"),
},
required=["title", "content"],
),
),
]
)
]
def run_agent():
"""エージェントを実行"""
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.1-pro-preview-customtools", # カスタムツール用エンドポイント
contents="先月の売上データを検索して、月次レポートを作成してください。",
config=types.GenerateContentConfig(
tools=tools,
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
),
)
# Function Callの結果を処理
for part in response.candidates[0].content.parts:
if hasattr(part, "function_call"):
fc = part.function_call
print(f"関数呼び出し: {fc.name}({fc.args})")
if __name__ == "__main__":
run_agent()
ユースケースを把握できたところで、この先の学習パスを確認しましょう。
7. 学習ロードマップ
この記事を読んだ後、次のステップとして以下をおすすめします。
初級者向け(まずはここから)
- Google AI Studio でプレイグラウンドを試す(無料)
- Gemini API クイックスタート(公式) でAPIキーの取得とHello World
- Gemini 3 Developer Guide(公式) でThinking Levelの基礎を学ぶ
中級者向け(実践に進む)
- コンテキストキャッシュを使ったコスト最適化(大規模入力の75%割引)
- Google Antigravity でエージェント型ワークフローを構築
- LangGraphとの統合で複雑なマルチステップパイプラインを実装
上級者向け(さらに深く)
- Gemini 3.1 Pro Model Card(公式) で安全性評価を確認
- Vertex AIでのプロダクションデプロイとモニタリング
- Gemini CLIやGitHub Copilotとの統合によるエージェント開発
8. まとめ
この記事では、Gemini 3.1 Proについて以下を解説しました:
- ARC-AGI-2で77.1%を達成した推論力の飛躍 — 前世代から2倍以上の改善
- 2026年2月のフロンティアモデル比較 — 推論ではGemini、実務ではClaude、ターミナルではGPT-5.3と使い分けが重要
- Python/Node.jsでの具体的な実装方法 — Thinking Level制御からFunction Callingまで
私の所感
Gemini 3.1 Proの最大の強みは「価格据え置きでの大幅強化」という点に尽きる。$2/1Mトークンでフロンティア級の推論能力が手に入るのは、開発者にとって純粋に嬉しいアップデートだ。
一方で、GDPval-AA(実務エキスパートタスク)のスコアが示すように、「ベンチマーク上の推論力」と「実務での使いやすさ」は必ずしも一致しない。モデル選定は数字だけでなく、自分のユースケースで実際に試して判断することを強くおすすめする。
まだPreview段階であることも忘れずに。本番導入を検討する際は、GA(一般提供)版のリリースを待つか、十分なテストの上で判断しよう。
参考文献
- Gemini 3.1 Pro: A smarter model for your most complex tasks(Google公式ブログ)
- Gemini 3.1 Pro Model Card(Google DeepMind公式)
- Gemini 3 Developer Guide(Google AI for Developers公式)
- Gemini API Quickstart(公式)
- ARC Prize公式リーダーボード
この記事が参考になったら、いいね・ストックをお願いします!
他にもAI/ML関連の記事を書いています。よければフォローもお願いします。
Xでも技術情報を発信しています → https://x.com/geneLab_999