GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/開発ツール
開発ツール/2026-03-21上級

Gemini Nano が手元で動かないとき — Chrome と Android で入口が違います

Gemini Nano のサンプルを貼っても動かないことがあります。Chrome は ai.* 名前空間から LanguageModel へ移り、Android の入口は ML Kit GenAI です。現行の書き方と端末側の要件を整理しました。

Gemini Nano2オンデバイスAI2Chrome Built-in AIML KitAndroid10

プレミアム記事

オフラインでも要約が動けば、電波の届かない場所でも使ってもらえる。そう考えて Chrome のコンソールに手元のサンプルを貼り付けた日、返ってきたのは一行だけでした。

Uncaught ReferenceError: ai is not defined

綴りを疑い、フラグを確認し、Chrome を再起動しました。原因はそのどれでもありませんでした。ai という名前空間そのものが、もう存在しなかったのです。

Gemini Nano は「軽量な Gemini」と説明されることが多いのですが、実際につまずくのはモデルの性能ではありません。入口の選択と、モデルがまだ端末に無いかもしれない、という前提の扱い方です。この2点を外すと、どれだけ正しいプロンプトを書いても一行も実行されません。

Chrome と Android、それぞれの現在地を整理します。

ai.languageModel はもう存在しません

初期の Chrome Built-in AI は aiwindow.ai というグローバルの下に各機能がぶら下がる設計でした。ネット上に残るサンプルの多くは、この時期のものです。

現在は、機能ごとに独立したグローバルクラスへ移りました。

// 旧: ai is not defined で落ちます
const session = await ai.languageModel.create({
  systemPrompt: "あなたは親切なアシスタントです。"
});
 
// 現行: グローバルの LanguageModel を直接呼びます
const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'あなたは親切なアシスタントです。簡潔に回答してください。' }
  ]
});

システムプロンプトの渡し方も変わりました。systemPrompt という専用フィールドではなく、initialPrompts の先頭に role: 'system' のメッセージを置きます。会話の履歴を復元したいときも同じ配列に userassistant を並べるだけで済むので、こちらのほうが素直だと感じます。

要約も同様です。

// 旧
const summarizer = await ai.summarizer.create({ type: "tl;dr" });
 
// 現行
const summarizer = await Summarizer.create({
  type: 'tldr',          // tldr / key-points / teaser / headline
  length: 'short',
  format: 'plain-text',
});

type の値が "tl;dr" から 'tldr' へ変わっている点は見落としやすいところです。ここを直さずに名前空間だけ直すと、今度は無効なオプションで弾かれます。

各 API の提供状況も、ひとまとめに「Chrome に入った」と言える段階ではありません。2026年7月時点では次のように分かれています。

APIWeb ページからChrome 拡張から
Translator / Language DetectorChrome 138 で安定版Chrome 138 で安定版
SummarizerChrome 138 で安定版Chrome 138 で安定版
PromptChrome 148 で安定版Chrome 138 で安定版
Writer / Rewriterデベロッパートライアルデベロッパートライアル
Proofreaderデベロッパートライアルデベロッパートライアル

注目したいのは Prompt API の行です。Chrome 拡張からは 138 で安定版になった一方、通常の Web ページから使えるようになったのは 148。同じ API でも、拡張とページで解禁時期が10バージョン離れていました。「拡張で動いたコードをそのままページに移したら動かない」という現象は、この差から生まれます。

Writer と Rewriter を製品の中核機能に据えるのは、まだ早いと私は考えています。デベロッパートライアル段階の API は、仕様変更の可能性を織り込んだ上で使うものです。詳細は Chrome の Built-in AI API ステータス一覧 が正本になります。

availability() を挟まないと create() は落ちます

名前空間を直しても、まだ動かないことがあります。次に見るのはここです。

Gemini Nano は Chrome に同梱されていません。API はブラウザに組み込まれていますが、モデルは初回利用時にオリジンごとに別途ダウンロードされます。つまり、あなたのコードが走る瞬間、端末にモデルが無い可能性が常にあります。

そのため、現行の API は「使う前に状態を尋ねる」ことを前提にした形になっています。

// 1. 状態を確認する
//    prompt() に渡すのと同じオプションを availability() にも渡すのが重要です
const availability = await LanguageModel.availability({
  expectedInputs: [{ type: 'text', languages: ['ja'] }],
  expectedOutputs: [{ type: 'text', languages: ['ja'] }],
});
 
if (availability === 'unavailable') {
  // 端末要件を満たしていません。クラウドへ回すか、機能を隠します
  return fallbackToCloud();
}
 
// 2. ユーザー操作を起点にダウンロードを開始する
//    availability が 'downloadable' のとき、create() はユーザー操作が必要です
downloadButton.addEventListener('click', async () => {
  const session = await LanguageModel.create({
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        progressBar.value = e.loaded * 100;
      });
    },
  });
 
  // 3. ここでようやく実行できます
  const result = await session.prompt('この記事を3行で要約してください。');
  console.log(result);
});

ここで見落とされがちなのが2つあります。

ひとつは availability()prompt() に同じオプションを渡すこと。言語やモダリティの組み合わせによっては非対応のことがあり、オプションを揃えないと「利用可能」と答えが返ったのに実行時に NotSupportedError が飛ぶ、という食い違いが起きます。

もうひとつは ユーザー操作(user activation)の要件です。ページ読み込み直後に create() を呼ぶコードは、モデル未ダウンロードの端末で必ず失敗します。数 GB のダウンロードが、ユーザーの同意なく始まらないようにするための仕様です。開発機ではすでにモデルが入っているため通ってしまい、この失敗は本番で初めて表面化します。

個人開発でひとりで検証していると、この2つを飛ばしたコードを「動いた」と判断しかけます。私自身、そうなりかけました。手元の Chrome にモデルが、すでに入っていただけだったのです。オンデバイス AI の検証では、モデルが無い端末での初回体験こそが本番だと考えるようになりました。

なお availability() が返すのは 'unavailable''downloadable''downloading''available' の4状態です。真偽値ではないので、if (availability) のような書き方をすると 'unavailable' を通してしまいます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
確認 → ダウンロード → 実行の3段を守る、現行 Chrome / Android の実装パターン
手元の1台で測った初回ダウンロードと推論のレイテンシ、クラウド往復との比較
QuotaExceededError やモデル削除に負けず、必ずクラウドへ戻れる例外分岐の書き方
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-05-29
0.5B のローカル LLM を『前段ルーター』として使うときの設計 — Gemini Nano と Qwen 0.5B を並べて考える
Qwen2.5 0.5B のような超軽量ローカル LLM は『汎用チャット AI として弱い』と語られがちですが、設計思想を読むと意図が違います。Gemini Nano と並べて、モバイルアプリ開発者が前段ルーターとして使うときの判断軸を整理します。
開発ツール2026-07-18
難読化されたスタックトレースを Gemini に渡していました — retrace を前段に置くまで、診断はもっともらしく外れ続けます
release ビルドのスタックトレースは R8 で名前が潰れています。それをそのまま Gemini に渡すと、診断は落ち着いた文体のまま外れます。retrace を前段に置き、mapping を versionCode で突合し、復元できないときは断定させない。42件で数え直した記録です。
開発ツール2026-04-01
Gemini × Rork で iOS/Android アプリを AI 生成する — プロンプトひとつでアプリ開発を加速する
Gemini と Rork を組み合わせたiOS/Androidアプリ開発の実践ガイド。AI生成プラットフォームRorkにGemini APIを連携させ、プロンプトからアプリ設計・実装・デバッグまでを一気通貫で進める方法を解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →