AI モデル実機検証

安いのに、ここまで作れた
Gemini 3.8 Flash を 3.7 と並べて実機検証

入力 0.75ドル / 出力 3.75ドル の軽量モデルで、マイクラ風のワールドが歩けて、3Dの鬼ごっこも遊べるところまで来た。ただし得意と不得意ははっきり割れる。同じ7課題を 3.8 と 3.7 に同条件で投げて、計14本を全部操作した記録。

安いのに、ここまで作れた
図解:Routine Labo

この記事でわかること

1. 9月2日に出たもの

Google が Gemini 3.8 Flash3.8 Flash Cyber を同時に公開した。3.7 Flash からわずか3週間、3.6 Flash から数えると6週間で3本目の Flash になる。ただし Cyber の方は Fairwind と呼ばれる限定プログラム経由でしか使えないので、この記事では 3.8 Flash を扱う。

モデルID
gemini-3.8-flash
入力コンテキスト
1,048,576 トークン
出力上限
65,536 トークン
入力できるもの
テキスト / 画像 / 動画 / 音声 / PDF
思考レベル
low / medium / high(既定は medium)
非対応
音声生成・画像生成・Live API・思考レベル minimal
6週間で3本目
図解:Routine Labo

2. 良くなったところは、はっきり良い

先に公平な話をしておく。公式の比較表は16項目あり、そのうち7項目で 3.8 Flash が全モデル中1位だった。金融エージェント、法務エージェント、複雑なグラフの読解、長い動画の理解、専門家レベルの推論、生物学の難問、実務的な研究タスク。いずれも実務に近い領域で首位に立っている。

公式比較表の金融エージェントと法務エージェントの行(全6モデル)
出典:Introducing Gemini 3.8 Flash and 3.8 Flash Cyber(2026-09-04 取得)
blog.google

しかも単価は Opus 5 の約6.7分の1(入力 0.75ドル 対 5.00ドル、出力 3.75ドル 対 25.00ドル)。この値段でこの守備範囲というのは、素直に強い。

ここは素直に強い
図解:Routine Labo

3. ただし、同じ表の中で結論がひっくり返る

見出しでよく引かれているのが Terminal-bench 2.1 だ。ここでは 3.8 Flash が 89.4% で、Opus 5 の 89.1% をわずかに上回る。ところが同じ表のすぐ下の行を見ると、話がまるで違う。

Terminal-bench 2.1 と 4.0 の比較行
出典:Introducing Gemini 3.8 Flash and 3.8 Flash Cyber(2026-09-04 取得)
blog.google
ベンチマークGemini 3.8 FlashClaude Opus 5結果
Terminal-bench 2.1(旧版)89.4%89.1%0.3ポイント差で勝ち
Terminal-bench 4.0(新版)19.1%51.8%約2.7倍の差で負け
OSWorld-2.059.0%75.4%負け
GDPVal-AA v2(Elo)15451824負け
同じ表の中で逆転する
図解:Routine Labo

公式が書いている測定条件

公式が書いた条件
図解:Routine Labo

ベンチが嘘だとは言わない。条件を全部書いてあるのはむしろ誠実だ。ただ、これだけ条件で動く数字なら、自分の仕事で確かめた方が早い

4. 同じ7課題を、同じ条件で、両方に投げた

検証コースの7課題を 3.8 と 3.7 に同条件で投げて、計14本のアプリを作らせた。出力上限64,000トークン・制限時間1,800秒・単価をすべて揃えてある。14生成すべて成功、失敗0

課題は、2Dアクション / 企業サイト / 生WebGL2の3Dアクション / ボクセル / 対戦 / 転がし / 鬼ごっこ。いずれも単一のHTMLファイル1本で動くこと、外部アセット禁止、コード省略禁止、という条件つきだ。

自分の環境で測る
図解:Routine Labo

ここから先は、動画では触れていない追試です。14本を実際に操作して壊れ方を追い、請求と速度についても仮説を立てて測り直しました。動画の続きとして読んでください。

5. 機械の検査は、14本すべて通った

起動時のコンソールエラーは14本とも0件。凍結もしない。課題で要求した仕様チェックリストも、どれも自己申告で提出されている。ここまでだと全部合格に見える。

検査は全部通る
図解:Routine Labo

6. でも、操作すると3本が遊べない

実際に起動して動かしてみると、14本のうち3本が成立していなかった。

3本が遊べない
図解:Routine Labo

ボクセル × 3.7 — 開始できるのに一歩も動けない

自動計測で、同じ開始操作と同じ入力を両方に与えた結果がこれ。

モデル開始状態開始前の座標2.5秒後の座標水平変位
3.8 FlashRUNNING(8.00, 14.00, 8.00)(8.00, 14.00, -2.50)10.500
3.7 FlashPLAYING(8.00, 22.00, 8.00)(8.00, 22.00, 8.00)0.000

出典:本記事による実測(2026-09-04・puppeteer で自動操作)

3.7 は高さ22のまま落下すらしない。地面に立っているのではなく、ブロックの中に埋まっていて全方向が壁になっている状態だ。コンソールエラーは0件のまま。

対戦 × 3.8 — 初撃を当てた瞬間に永久停止

これはコードを読むと理由がはっきりする。

該当箇所(1048行・1122行・1492行)
// 1048行  updatePhysics の冒頭
updatePhysics() {
  if (this.hitStop > 0) { this.hitStop--; return; }   // ← 硬直中はここで抜ける
  ...
  // 1122行  同じ updatePhysics の中
  hb.duration--;            // ← ヒットボックスの寿命。硬直中は減らない
}

// 1492行  resolveCombat(毎フレーム走る)
attacker.hitStop = hb.isHeavy ? 6 : 2;   // ← 止まったままの重なりを再検出して再設定

ヒットボックスの寿命を減らす処理が updatePhysics() の中にあり、その関数の冒頭で硬直中は return している。つまり硬直を解除するはずの処理が、硬直そのものによって止まっている。多段ヒットを防ぐフラグも無いので、止まったままの同じ重なりが毎フレーム再検出され、硬直が何度でも設定し直される。自力では抜けられない。

対戦 × 3.7 — 標準60Hzで床を抜ける

該当箇所(1406行)
// 1406行
const prevY = p.y - this.vel.y * 0.016;   // 60Hz の実際の dt は 0.016667

60Hz の実際の dt は 0.016667。定数 0.016 で前フレームの位置を逆算しているので、実際に移動した区間より短くしか調べない。速度が乗った瞬間に床をまたいで、判定が空振りする。0.0007 の差で成立しなくなる。

7. なぜ機械の検査をすり抜けたのか

3件に共通しているのは、起動した時点では何も起きていないことだ。

いつ分かるかどの不具合か
入力するまでボクセル × 3.7 が一歩も動けない。起動画面は正常に出る
当てるまで対戦 × 3.8 が永久停止。初撃を当てるまで何も起きない
速度が乗るまで対戦 × 3.7 が床を抜ける。止まっている間は正常
なぜ検査を抜けたか
図解:Routine Labo

エラーは、異常が起きたときに出るものだ。何も起きずに止まっているとき、コンソールは何も言わない。

8. ついでに測った数字は、2つとも外れた

正直に書いておく。この検証には仮説を持って入った。Google 公式は複雑なタスクでより多くのトークンを使うことがあると書いているし、第三者ベンチでも同じ評価一式で出力トークンが 64M から 120M へ、実費が約70%増えていた。だから請求が増えるはずだと思っていた。

指標Gemini 3.8Gemini 3.7
出力トークン(7課題)140,314141,4440.99倍
費用0.5314ドル0.5355ドル0.99倍
出力トークン(追試)60,93163,3760.96倍

出典:本記事による実測(2026-09-04)

増えなかった。7課題のうち5課題は 3.8 の方がむしろ少ない。理由ははっきりしていて、ワンショットのHTML生成は出力の90〜99%が成果物の本文だからだ。思考が何倍になっても、本文が9割を占める仕事では請求にほとんど効かない。

次に、1回目の計測では時間が1.60倍かかっていたので、3.8 は遅いのだと思った。念のため同じ課題を2巡し直した結果がこれ。

課題3.8 秒3.7 秒秒比
2Dアクション1691260.55
2Dアクション276870.87
転がし1145692.09
転がし294861.10
合計3843681.04

出典:本記事による実測(2026-09-04・追試)

消えた。同じ課題・同じ条件で 0.55倍から 2.09倍までブレる。ブレ幅が効果より大きいので、速い遅いは判定できない。第三者ベンチの公表値(出力速度 305.5 対 300.9 tok/s)とも整合する。1回測って速い遅いを言ってはいけないという実例そのものになった。

外した仮説が2つ
図解:Routine Labo

9. 増えたのは量ではなく密度

面白いのはここで、3.8 の方が出力トークンは少ないのに、7課題中4課題で作り込みは 3.8 が上だった。2Dアクション、生WebGL2、ボクセル、鬼ごっこ。企業サイトは 3.7 の方が厚く、対戦と転がしは互角。

量ではなく密度
図解:Routine Labo

10. それでも効くレバーと、詰まるところ

消費を自分で下げたいなら、思考レベルの指定が唯一すぐ効く。答えが1文字にしかならない質問を投げて、レベルだけを変えて実測した結果が次の通り。

実行したコマンド(low の部分を medium / high に差し替えて3回叩く)
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "2+3の答えだけ数字で書いて"}]}],
    "generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}
  }' | python3 -m json.tool
思考レベル答え思考合計
low1なし10
medium(既定)15262
high16171
minimalエラーで使えない

出典:本記事による実測(Gemini API・2026-09-04)

答えはどれも同じ1文字なのに、既定のままだと62トークン、low なら10トークン。6.2倍の差がつく。ただし効くのは短い応答を大量に回す用途だけで、長文生成では本文が9割なので効かない。

思考レベルで6.2倍
図解:Routine Labo

思考レベル minimal は使えない

再現コマンド
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "2+3の答えだけ数字で書いて"}]}],
    "generationConfig": {"thinkingConfig": {"thinkingLevel": "minimal"}}
  }' | python3 -m json.tool
返ってくるエラー
400 Thinking level MINIMAL is not supported for this model.
Please retry with other thinking level.

3.7 以前の感覚で minimal を指定していると、そのままでは動かない。対処は low に置き換えるだけで済む。

乗り換えで詰まる3点
図解:Routine Labo

11. 今の安さは期間限定

0.75ドル / 3.75ドル は導入価格で、2026年12月31日まで2027年1月1日から 1.50ドル / 7.50ドル へ倍になることが、公式の価格表にも比較表の脚注にも明記されている。

今の安さは期間限定
図解:Routine Labo

12. どちらを使うか

どちらを使うか
図解:Routine Labo
仕事の種類選ぶもの理由
短い応答を大量に回す定型処理3.8 を low で3世代でいちばんトークンが少ない
推論やツール操作を重ねるエージェント3.8公式16項目の首位はこの領域
一発で長い成果物を書かせる用途3.8 でよい請求は同じで、作り込みは 3.8 が上
最難関のエージェント処理上位モデルTerminal-bench 4.0 は 19.1% 対 51.8%

まとめ

どのモデルを選んでも、動かして確かめる工程は省けない。

今日のまとめ
図解:Routine Labo