こんにちは。
本日2026年2月20日に Google からリリースされた最先端の推論モデルである Gemini 3.1 Pro について解説します。
1. 概要
Gemini 3.1 Pro とは
Gemini 3.1 Pro は、Google が提供する高度な推論が可能な生成AIモデルです。先週リリースされた科学・研究用途向けの「Gemini 3 Deep Think」を支えるコア・インテリジェンスがベースとなっており、複雑なタスクや問題解決に特化して設計されています。
飛躍的な推論能力の向上
Gemini 3.1 Proは、未知の論理パターンを解く能力を評価するベンチマークである「ARC-AGI-2」において、77.1% のスコアを記録しました。前モデルの Gemini 3 Pro のスコア(31.1%)と比較して、推論パフォーマンスが 2 倍以上に向上しています。
また、複雑なタスクを扱う他社の強力なモデル(GPT-5.2 や Claude Opus 4.6 など)と比較しても、各種ベンチマークで高いパフォーマンスを発揮します。
参考 :(https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro/)
2. Google 検索グラウンディングの性能向上
個人的に驚いているのはGoogle検索グラウンディングです。
今まで、Geminiは何となく最新情報をもとに回答することを苦手としていたような気がしました。
ですが、体感的な精度向上だけでなく、ベンチマーク結果からも Google 検索を用いたグラウンディング能力の向上が裏付けられています。
公式の評価レポート(Model Card)によると、自律型エージェントの検索・実行能力を測るベンチマーク「BrowseComp(Agentic search: Search + Python + Browse)」において、以下のような結果が示されています。
- Gemini 3 Pro: 59.2%
- Gemini 3.1 Pro: 85.9%
この結果から、AI が自ら検索を行い、情報を取得して必要に応じてコードを実行し、正確な答えを導き出す能力が大きく改善されていることが分かります。
参考 :(https://deepmind.google/models/evals-methodology/gemini-3-1-pro)
3. 主な仕様と開発者向け機能
トークン制限とマルチモーダル入力
2026年2月現在、プレビュー版として提供されている gemini-3.1-pro-preview の仕様は以下の通りです。最大 100 万トークンのコンテキストウィンドウをサポートしています。
- 最大入力トークン : 1,048,576
- 最大出力トークン : 65,536(出力はテキストのみ)
- サポートされる入力 : テキスト、コード、画像(最大900枚)、音声(最大約8.4時間)、動画(最大約45分〜1時間)、PDFドキュメント(最大900ファイル)
機能のアップデート
Vertex AI 上の Gemini 3.1 Pro には、品質とユーザビリティの改善がいくつか含まれています。
- SWE とエージェント機能の改善 : ソフトウェアエンジニアリングにおける動作が改善され、より自律的なコードベースの修正や、スプレッドシートなどのドメインでエージェントとして機能します。
- 思考レベルの拡張 :
thinking_levelパラメータに新たにMEDIUMが導入されました。これにより、費用、パフォーマンス、処理速度のトレードオフをユースケースに合わせて最適化できます。
参考 :(https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro)
4. 使用方法(実践)
Gemini 3.1 Pro の特徴的な機能の一つとして、テキストプロンプトから Web サイトで直接使用できる SVG アニメーションを生成する機能があります。実際にプロンプトを送信してツールの挙動を確認してみます。
まずは、Google AI Studioを開いて下さい。
https://aistudio.google.com/

次にモデルにgemini-3.1-pro-previewを選択してください。

以下のようなプロンプトを Gemini 3.1 Pro に送信します。
2つのミニマルな立体的なスマートフォンを描いてください。一方の画面からゴールドのコインが飛び出し、点線の軌道を通って、もう一方の画面にあるデジタルウォレット(財布)に吸い込まれるSVGアニメーションを作成してください。全体はパステルブルーとグリーンのフラットUIスタイルでお願いします。
指示から数十秒後、MP4 や GIF などの画像ファイルではなく、以下のような純粋な SVG と CSS アニメーションのコードがレスポンスとして返却されました。
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600" width="100%" height="100%">
<defs>
<!-- Path Gradient (Pastel Blue to Pastel Green) -->
<linearGradient id="pathGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#38BDF8" stop-opacity="0" />
<stop offset="15%" stop-color="#38BDF8" stop-opacity="1" />
<stop offset="85%" stop-color="#34D399" stop-opacity="1" />
<stop offset="100%" stop-color="#34D399" stop-opacity="0" />
</linearGradient>
<!-- Coin Definition -->
<g id="coin-def">
<!-- Drop Shadow -->
<circle cx="0" cy="8" r="16" fill="rgba(0, 0, 0, 0.12)" />
<!-- Coin Base / Edge -->
<circle cx="0" cy="0" r="18" fill="#F59E0B" />
<!-- Coin Face -->
<circle cx="0" cy="-3" r="18" fill="#FCD34D" />
<circle cx="0" cy="-3" r="13" fill="none" stroke="#F59E0B" stroke-width="2" />
<!-- Currency Symbol -->
<text x="0" y="2" font-family="'Segoe UI', Roboto, Helvetica, Arial, sans-serif" font-weight="bold" font-size="14" fill="#F59E0B" text-anchor="middle">¥</text>
</g>
</defs>
<!-- Background -->
<rect width="100%" height="100%" fill="#F0FDF4" />
<!-- Ambient Floating Decorations (Clouds & Shapes) -->
<g fill="#FFFFFF" opacity="0.8">
<!-- Cloud 1 -->
<rect x="100" y="120" width="70" height="24" rx="12" />
<rect x="120" y="96" width="50" height="24" rx="12" />
<!-- Cloud 2 -->
<rect x="620" y="160" width="60" height="20" rx="10" />
<rect x="640" y="140" width="40" height="20" rx="10" />
<!-- Cloud 3 -->
<rect x="360" y="50" width="80" height="26" rx="13" />
<rect x="390" y="24" width="50" height="26" rx="13" />
</g>
<!-- Ambient Floating Sparkles -->
<!-- Cross Shape -->
<g transform="translate(480, 100)">
<g stroke="#38BDF8" stroke-width="5" stroke-linecap="round">
<line x1="-10" y1="0" x2="10" y2="0" />
<line x1="0" y1="-10" x2="0" y2="10" />
<animateTransform attributeName="transform" type="rotate" values="0; 90; 90; 0" keyTimes="0; 0.4; 0.8; 1" dur="4s" repeatCount="indefinite" />
</g>
</g>
<!-- Circle Shape -->
<circle cx="280" cy="180" r="6" fill="#FDE047">
<animate attributeName="opacity" values="0.3; 1; 0.3" dur="2s" repeatCount="indefinite" />
<animateTransform attributeName="transform" type="translate" values="0,0; 0,-10; 0,0" dur="2s" repeatCount="indefinite" />
</circle>
<!-- Dot Shape -->
<circle cx="600" cy="450" r="4" fill="#34D399">
<animate attributeName="opacity" values="0.2; 0.8; 0.2" dur="3s" repeatCount="indefinite" />
</circle>
<!-- Floor Shadows for Phones -->
<ellipse cx="250" cy="480" rx="95" ry="40" fill="rgba(167, 243, 208, 0.6)" />
<ellipse cx="550" cy="360" rx="95" ry="40" fill="rgba(167, 243, 208, 0.6)" />
<!-- ========================================== -->
<!-- PHONE 1 (SENDER - LEFT) -->
<!-- ========================================== -->
<g id="phone1">
<!-- Ripple Effect emitting from phone -->
<circle cx="250" cy="420" r="20" fill="none" stroke="#38BDF8" stroke-width="4">
<animate attributeName="r" values="20; 70" dur="0.8s" repeatCount="indefinite" />
<animate attributeName="opacity" values="0.8; 0" dur="0.8s" repeatCount="indefinite" />
</circle>
<!-- 3D Phone Body -->
<g transform="translate(250, 420)">
<!-- Shadow Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#94A3B8" transform="translate(0, 20) scale(1, 0.5) rotate(45)" />
<!-- Mid Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#E2E8F0" transform="translate(0, 10) scale(1, 0.5) rotate(45)" />
<!-- Top Bezel Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#FFFFFF" transform="scale(1, 0.5) rotate(45)" />
<!-- Screen Base (Pastel Blue) -->
<rect x="-70" y="-130" width="140" height="260" rx="14" fill="#E0F2FE" transform="scale(1, 0.5) rotate(45)" />
<!-- Screen UI Contents (Iso-Transformed) -->
<g transform="scale(1, 0.5) rotate(45)">
<!-- Top Notch -->
<rect x="-20" y="-125" width="40" height="12" rx="6" fill="#94A3B8" />
<!-- Header -->
<rect x="-50" y="-90" width="100" height="40" rx="10" fill="#BAE6FD" />
<rect x="-30" y="-80" width="60" height="8" rx="4" fill="#7DD3FC" />
<rect x="-20" y="-65" width="40" height="6" rx="3" fill="#7DD3FC" />
<!-- App Content Blocks -->
<rect x="-50" y="-30" width="100" height="80" rx="12" fill="#FFFFFF" />
<rect x="-40" y="-15" width="50" height="10" rx="5" fill="#E0F2FE" />
<rect x="-40" y="5" width="80" height="8" rx="4" fill="#F1F5F9" />
<rect x="-40" y="25" width="60" height="8" rx="4" fill="#F1F5F9" />
<!-- Send Button -->
<rect x="-40" y="70" width="80" height="35" rx="17.5" fill="#38BDF8" />
<!-- Button icon (Arrow/Line) -->
<rect x="-15" y="85" width="30" height="6" rx="3" fill="#FFFFFF" />
</g>
</g>
</g>
<!-- ========================================== -->
<!-- DOTTED FLIGHT PATH -->
<!-- ========================================== -->
<!-- We draw the path here so it lays over Phone 1 but under Phone 2 and Wallet -->
<path id="flight-path" d="M 250,420 C 250,130 550,100 550,285" fill="none" stroke="url(#pathGrad)" stroke-width="6" stroke-dasharray="12 12" stroke-linecap="round">
<!-- Flowing animation -->
<animate attributeName="stroke-dashoffset" from="24" to="0" dur="0.8s" repeatCount="indefinite" linear="true" />
</path>
<!-- ========================================== -->
<!-- PHONE 2 (RECEIVER - RIGHT) -->
<!-- ========================================== -->
<g id="phone2">
<g transform="translate(550, 300)">
<!-- 3D Phone Body -->
<!-- Shadow Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#94A3B8" transform="translate(0, 20) scale(1, 0.5) rotate(45)" />
<!-- Mid Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#CBD5E1" transform="translate(0, 10) scale(1, 0.5) rotate(45)" />
<!-- Top Bezel Layer -->
<rect x="-80" y="-140" width="160" height="280" rx="24" fill="#FFFFFF" transform="scale(1, 0.5) rotate(45)" />
<!-- Screen Base (Pastel Green) -->
<rect x="-70" y="-130" width="140" height="260" rx="14" fill="#D1FAE5" transform="scale(1, 0.5) rotate(45)" />
<!-- Screen UI Contents (Iso-Transformed) -->
<g transform="scale(1, 0.5) rotate(45)">
<!-- Top Notch -->
<rect x="-20" y="-125" width="40" height="12" rx="6" fill="#9CA3AF" />
<!-- Header -->
<rect x="-50" y="-90" width="100" height="30" rx="8" fill="#A7F3D0" />
<!-- Activity List Placeholders -->
<rect x="-50" y="30" width="100" height="24" rx="8" fill="#FFFFFF" />
<rect x="-50" y="65" width="100" height="24" rx="8" fill="#FFFFFF" />
<rect x="-50" y="100" width="100" height="24" rx="8" fill="#FFFFFF" />
</g>
</g>
</g>
<!-- ========================================== -->
<!-- WALLET (BACK PORTION) -->
<!-- ========================================== -->
<!-- Placed on top of Phone 2. Drawn BEFORE the coins so coins go inside -->
<g transform="translate(550, 300)">
<!-- Cast Shadow of Wallet on Screen -->
<ellipse cx="0" cy="15" rx="55" ry="20" fill="rgba(0, 0, 0, 0.08)" />
<!-- Wallet Back Flap (Light Green) -->
<rect x="-50" y="-60" width="100" height="75" rx="10" fill="#34D399" />
<!-- Wallet Interior Mouth (Dark Green/Teal for depth) -->
<rect x="-45" y="-50" width="90" height="65" rx="6" fill="#059669" />
</g>
<!-- ========================================== -->
<!-- ANIMATED COINS -->
<!-- ========================================== -->
<!-- 3 Coins traveling sequentially along the path -->
<!-- Coin 1 -->
<g opacity="0">
<!-- Visibility Controller -->
<animate attributeName="opacity" values="0; 1; 1; 0" keyTimes="0; 0.05; 0.9; 1" dur="2.4s" begin="0s" repeatCount="indefinite" />
<!-- Follow Path -->
<animateMotion dur="2.4s" begin="0s" repeatCount="indefinite">
<mpath href="#flight-path" />
</animateMotion>
<!-- Scale / Pop Effect -->
<g>
<animateTransform attributeName="transform" type="scale" values="0; 1.3; 1; 1; 0.4; 0" keyTimes="0; 0.05; 0.1; 0.8; 0.92; 1" dur="2.4s" begin="0s" repeatCount="indefinite" />
<use href="#coin-def" />
</g>
</g>
<!-- Coin 2 -->
<g opacity="0">
<!-- Visibility Controller -->
<animate attributeName="opacity" values="0; 1; 1; 0" keyTimes="0; 0.05; 0.9; 1" dur="2.4s" begin="0.8s" repeatCount="indefinite" />
<!-- Follow Path -->
<animateMotion dur="2.4s" begin="0.8s" repeatCount="indefinite">
<mpath href="#flight-path" />
</animateMotion>
<!-- Scale / Pop Effect -->
<g>
<animateTransform attributeName="transform" type="scale" values="0; 1.3; 1; 1; 0.4; 0" keyTimes="0; 0.05; 0.1; 0.8; 0.92; 1" dur="2.4s" begin="0.8s" repeatCount="indefinite" />
<use href="#coin-def" />
</g>
</g>
<!-- Coin 3 -->
<g opacity="0">
<!-- Visibility Controller -->
<animate attributeName="opacity" values="0; 1; 1; 0" keyTimes="0; 0.05; 0.9; 1" dur="2.4s" begin="1.6s" repeatCount="indefinite" />
<!-- Follow Path -->
<animateMotion dur="2.4s" begin="1.6s" repeatCount="indefinite">
<mpath href="#flight-path" />
</animateMotion>
<!-- Scale / Pop Effect -->
<g>
<animateTransform attributeName="transform" type="scale" values="0; 1.3; 1; 1; 0.4; 0" keyTimes="0; 0.05; 0.1; 0.8; 0.92; 1" dur="2.4s" begin="1.6s" repeatCount="indefinite" />
<use href="#coin-def" />
</g>
</g>
<!-- ========================================== -->
<!-- WALLET (FRONT PORTION) -->
<!-- ========================================== -->
<!-- Drawn AFTER the coins so it covers the lower half of them as they enter -->
<g transform="translate(550, 300)">
<!-- Wallet Front Pocket -->
<rect x="-55" y="-20" width="110" height="55" rx="10" fill="#10B981" />
<!-- Wallet Flap Design Overlay (Two-Tone Pastel Look) -->
<path d="M -55,-20 L 0,-2 L 55,-20 L 55,25 C 55,30.5 50.5,35 45,35 L -45,35 C -50.5,35 -55,30.5 -55,25 Z" fill="#6EE7B7" />
<path d="M -55,-20 L 0,-2 L 55,-20" fill="none" stroke="#059669" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
<!-- Center Clasp / Button -->
<circle cx="0" cy="-2" r="6" fill="#FDE047" />
<circle cx="0" cy="-2" r="4" fill="#FCD34D" />
</g>
</svg>
出力されたコードを HTML ファイルとしてブラウザで表示すると、指示通りの滑らかなアニメーションが再生されました。
出力されたコードの右上の再生ボタンをクリックで、プレビュー可能です。


ピクセルベースの動画ではなく純粋なコードで生成されるため、ファイルサイズが数 KB 程度と非常に小さく、解像度に依存せずに拡大しても鮮明に表示されるというメリットがあります。空間と時間に関する複雑な指示を数式(コード)として正確に出力できる点に、推論能力の高さが表れています。
5. 提供チャネル
Gemini 3.1 Pro は、現在以下のチャネルで順次ロールアウトが開始されています。
- 一般ユーザー向け : Gemini アプリ、NotebookLM(※Google AI Pro / Ultra プランのユーザー限定)
- 開発者・エンタープライズ向け : Google AI Studio (Gemini API)、Vertex AI、Gemini Enterprise、Android Studio、Gemini CLI、Google Antigravity
6. まとめ
ここ最近、NotebookLMのアップデートや音楽生成モデル「Lyria 3」など、怒涛のアップデートでしたが、Gemini 3.1 Proもリリースされましたね。
キャッチアップがいよいよ大変になってきましたが、明日から三連休。Gemini 3.1 Proを使い倒してみようと思います。

