<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>デベロッパー</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/</link><description>デベロッパー</description><atom:link href="https://cloudblog.withgoogle.com/blog/ja/topics/developers-practitioners/rss/" rel="self"></atom:link><language>ja</language><lastBuildDate>Wed, 08 Apr 2026 22:15:18 +0000</lastBuildDate><image><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/static/blog/images/google.a51985becaa6.png</url><title>デベロッパー</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/</link></image><item><title>Google ADK、MCP、Cloud Run を使用して専門家向けコンテンツ用のマルチ エージェント システムを構築する - パート 1</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/build-a-multi-agent-system-for-expert-content-with-google-adk-mcp-and-cloud-run-part-1/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 19 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/build-a-multi-agent-system-for-expert-content-with-google-adk-mcp-and-cloud-run-part-1?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;私のチームのミッションは、コードの作成から Google Cloud で安全な AI ワークロードを実行するまで、デベロッパーの取り組みを加速させることです。デベロッパーの成功を支援するため、Google はデベロッパーが最も切実に求めている質問を特定し、簡単に実装できるわかりやすいソリューションを提供するデモを構築することに重点を置いています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;最近、新しい &lt;/span&gt;&lt;a href="https://developers.google.com/knowledge/mcp?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Developer Knowledge MCP サーバー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;がリリースされたとき、私にはひらめきが湧きました。そこで、&lt;/span&gt;&lt;a href="https://github.com/google/adk-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Agent Development Kit（ADK）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用して設計されたマルチエージェント システムである &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を構築し、Reddit から技術的な質問を特定し、公式ドキュメントを使用して調査し、詳細な技術ブログ記事の下書きを作成しました。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; には、&lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/products/nano-banana-pro/?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blo" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Nano Banana Pro&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使用したカスタム ビジュアルも備わっています。エージェントが私の好みのスタイルやブログ記事の書き方を記憶できるように、長期&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/agent-builder/agent-engine/memory-bank/overview?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;記憶&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;レイヤも統合しました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コーディング アシスタントである &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/codeassist/gemini-cli?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; をデベロッパー ナレッジ MCP サーバーに接続することで、このシステム全体をわずか 2 日で構築して &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/run/docs?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud Run&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; にデプロイしました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここでは、長期記憶を備えた複雑なマルチ エージェント システムを設計する方法、ローカルおよびリモートの MCP サーバーを利用してツールを標準化する方法、安全な Cloud Run デプロイのための詳細な Terraform スクリプトを作成する方法など、さまざまな方法をご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;今すぐコードを見てご自分のペースで調べる場合は、&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/ai-ml/dev-signal" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;からリポジトリをクローニングできます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=abZxJiXGrJs"
      data-glue-modal-trigger="uni-modal-abZxJiXGrJs-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        &lt;img src="//img.youtube.com/vi/abZxJiXGrJs/maxresdefault.jpg"
             alt="A YouTube video that walks through a demo to set up the Dev Signal system"/&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-abZxJiXGrJs-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="abZxJiXGrJs"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=abZxJiXGrJs"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;学習内容&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;4 回に分けてお届けするこのブログシリーズでは、このプロジェクトをどのように実現したのか、その手順を段階的にご紹介します。各ブログ投稿では、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; の構築とデプロイの過程を説明します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;パート 1: エージェント機能を構築するためのツール &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; – まず、プロジェクト環境をセットアップし、Model Context Protocol（MCP）を使用してエージェントにツールを装備します。トレンドの発見に Reddit を、技術的なグラウンディングに Google Cloud ドキュメントを、画像生成にカスタム Nano Banana Pro ツールを使用する方法を学びます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;パート 2: 長期記憶を備えたマルチ エージェント アーキテクチャ &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;– ルート オーケストレーターと専門エージェント チームを実装して、システムの「頭脳」を構築します。また、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/agent-builder/agent-engine/memory-bank/overview?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI Memory Bank&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を統合することで、エージェントがセッション全体でユーザーの好みを学習して保持できるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;パート 3: エージェントをローカルでテストする&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; – クラウドに移行する前に、エージェントのコンポーネントを同期し、ワークステーションでエージェントのパフォーマンスを検証します。専用のテストランナーを使用して、検出、調査、マルチモーダル作成のライフサイクル全体をシミュレートします。特に、ローカル エージェントをクラウドベースの Vertex AI Memory Bank に直接接続して、長期記憶の永続性を検証することに重点を置きます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;パート 4: Cloud Run へのデプロイと本番環境への移行&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; – 最後に、再現可能なインフラストラクチャを実現するため、Terraform を使用して Google Cloud Run にサービスをデプロイします。また、高品質で安全な本番環境システムに必要な次のステップについても説明します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal の概要&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; は、ノイズをフィルタして価値を生み出すように設計されたインテリジェントなモニタリング エージェントです。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; は次のように動作します。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;発見&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Reddit を調査して、エンゲージメントの高い技術的な質問を見つけます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;グラウンディング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 正確性を確保するために、Google Cloud の公式ドキュメントを使用して回答を調査します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;作成&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 調査結果に基づいて、プロフェッショナルな技術ブログ投稿の下書きを作成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;マルチモーダル生成&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: これらの投稿のカスタム インフォグラフィック ヘッダーを生成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;長期記憶&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Vertex AI Memory Bank&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、さまざまなセッションにわたってフィードバックを記憶します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;前提条件&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;始める前に、以下がインストールされていることを確認してください。&lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Python 3.12 以降&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;uv&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（Python パッケージ管理システム）: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;curl -LsSf https://astral.sh/uv/install.sh | sh&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/sdk/docs/install?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud SDK&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; CLI）（インストールおよび認証済み）&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://developer.hashicorp.com/terraform/install" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Terraform&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（Iinfrastructure as Code 用）&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.npmjs.com/downloading-and-installing-node-js-and-npm" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Node.js と npm&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（Reddit MCP ツールに必要）&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次も必要です。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;課金を有効にした &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud プロジェクト&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/endpoints/docs/openapi/enable-api?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;有効な API&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: Vertex AI、Cloud Run、Secret Manager、Artifact Registry。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Reddit API 認証情報&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（クライアント ID、シークレット）- &lt;/span&gt;&lt;a href="https://www.reddit.com/prefs/apps" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Reddit デベロッパー ポータル&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;から入手できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Developer Knowledge API Key&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（Google Cloud ドキュメント検索用）- 入手方法については、&lt;/span&gt;&lt;a href="https://developers.google.com/knowledge/mcp?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;プロジェクトのセットアップ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Dev Signal&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; システムは、&lt;/span&gt;&lt;a href="https://www.linkedin.com/in/remigiusz-samborski/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Remigiusz Samborski&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; 氏と &lt;/span&gt;&lt;a href="https://www.linkedin.com/in/vkolesnikov/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vlad Kolesnikov&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; 氏による &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=XCGbDx7aSks" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Factory のエピソード&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で説明されている自動化されたアーキテクト ワークフローに従って、まず &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/agent-starter-pack" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Starter Pack&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を実行して構築されました。この基盤により、エージェント ロジック、サーバーコード、ユーティリティ、ツール間の関心を分離するために使用される、プロジェクトのモジュール式ディレクトリ構造が用意されました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Starter Pack は、プロフェッショナルなインフラストラクチャ、CI / CD パイプライン、オブザーバビリティ ツールの作成を数秒で自動化するため、強力な出発点となります。これにより、基盤となるプラットフォームのセキュリティとスケーラビリティを確保しながら、エージェント独自のインテリジェンスに十分集中できるようになります。&lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/introducing-gemini-cli-open-source-ai-agent/?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;a href="https://antigravity.google/?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; の AI アシスタンスを使用して、生成されたボイラープレートを基に構築することで、開発プロセスが大幅に加速されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Agent Starter Pack のアーキテクチャの概要:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/agentstarterpack.max-1000x1000.png"
        
          alt="agentstarterpack"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;1. プロジェクトを初期化する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プロジェクト用の新しいディレクトリを作成し、初期化します。ここでは、非常に高速な Python パッケージ管理システムである &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uv&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;uv init dev-signal&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b4a00&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;2. フォルダ構造&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このプロジェクトは次の構造に従います。これらのファイルにデータを段階的に入力していきます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;dev-signal/\r\n├── dev_signal_agent/\r\n│   ├── __init__.py\r\n│   ├── agent.py           # Agent logic &amp;amp; orchestration\r\n│   ├── fast_api_app.py    # Application server &amp;amp; memory connection\r\n│   ├── app_utils/         # Env Config\r\n│   │   └── env.py\r\n│   └── tools/             # External capabilities\r\n│       ├── __init__.py\r\n│       ├── mcp_config.py  # Tool configuration (Reddit, Docs)\r\n│       └── nano_banana_mcp/# Custom local image generation tool\r\n│           ├── __init__.py\r\n│           ├── main.py\r\n│           ├── nano_banana_pro.py\r\n│           ├── media_models.py\r\n│           ├── storage_utils.py\r\n│           └── requirements.txt\r\n├── deployment/\r\n│   └── terraform/         # Infrastructure as Code\r\n├── .env                   # Local secrets (API keys)\r\n├── Makefile               # Shortcuts for building/deploying\r\n├── Dockerfile             # Container definition\r\n└── pyproject.toml         # Dependencies&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b4df0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;3. 依存関係を定義する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;必要な依存関係を使用して &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;pyproject.toml&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を更新します。エージェント フレームワークには &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google-adk&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を、モデルのインタラクションには &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google-genai&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;[project]\r\nname = &amp;quot;dev-signal&amp;quot;\r\nversion = &amp;quot;0.1.0&amp;quot;\r\ndescription = &amp;quot;A multi-agent system for monitoring and content creation.&amp;quot;\r\nreadme = &amp;quot;README.md&amp;quot;\r\nrequires-python = &amp;quot;&amp;gt;=3.12, &amp;lt;3.14&amp;quot;\r\ndependencies = [\r\n     &amp;quot;google-adk&amp;gt;=0.1.0&amp;quot;,\r\n    \xa0&amp;quot;google-genai&amp;gt;=1.0.0&amp;quot;,\r\n     &amp;quot;mcp&amp;gt;=1.0.0&amp;quot;,\r\n    \xa0&amp;quot;python-dotenv&amp;gt;=1.0.0&amp;quot;,\r\n     &amp;quot;fastapi&amp;gt;=0.110.0&amp;quot;,\r\n     &amp;quot;uvicorn&amp;gt;=0.29.0&amp;quot;,\r\n     &amp;quot;google-cloud-logging&amp;gt;=3.0.0&amp;quot;,\r\n     &amp;quot;google-cloud-aiplatform&amp;gt;=1.38.0&amp;quot;,\r\n    \xa0&amp;quot;fastmcp&amp;gt;=2.13.0&amp;quot;,\r\n     &amp;quot;google-cloud-storage&amp;gt;=3.6.0&amp;quot;,\r\n     &amp;quot;google-auth&amp;gt;=2.0.0&amp;quot;,\r\n     &amp;quot;google-cloud-secret-manager&amp;gt;=2.26.0&amp;quot;,\r\n]&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b4430&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;uv sync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を実行してすべてインストールします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェント コード用の新しいディレクトリを作成します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;mkdir dev_signal_agent\r\ncd dev_signal_agent&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b40d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェント機能の構築: MCP ツール&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントは外部とやり取りする必要があります。これを標準化するために、&lt;/span&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Model Context Protocol（MCP）&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用します。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Model Context Protocol（MCP）&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;は、AI エージェントを外部のデータやツールに接続するための普遍的な基準です。カスタム API ラッパーを記述する代わりに、標準の MCP サーバーを使用します。これにより、共通のインターフェースを使用して、API（Reddit）、ナレッジベース（Google Cloud ドキュメント）、さらにはローカル スクリプト（Nano Banana Pro を使用した画像生成）にも接続できます。エージェント ツール用の新しいディレクトリを作成します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;mkdir tools\r\ncd tools&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b42e0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ツールの構成&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ツールセットは &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/mcp_config.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; で定義します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このファイルでは、3 つの主要なツールの接続パラメータを定義します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Reddit&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ローカル stdio サブプロセス経由で接続されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;デベロッパー ナレッジ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: リモート HTTP エンドポイント経由で接続されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Nano Banana&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ローカル stdio サブプロセス（Google のカスタム Python スクリプト）経由で接続されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Reddit 検索（発見ツール）&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://github.com/Arindam200/reddit-mcp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Reddit MCP サーバー &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は Reddit API へのブリッジとして機能し、複雑な API ラッパーを記述しなくても、トレンドとなっている投稿をエージェントが発見してエンゲージメントを分析できるようにします。移植性を確保するために、コードでは「検索またはフェッチ」戦略が使用されています。まずローカル インストールをチェックし、見つからない場合は &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;npx&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用してサーバーをオンデマンドでダウンロードして実行します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ネットワーク接続の代わりに、エージェントはサーバーをローカル サブプロセスとして起動し、標準入出力（stdio）を介して通信します。Google ADK 内の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;McpToolset&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; クラスは、これらの接続を標準化する普遍的なラッパーとして機能し、エージェントが共通のインターフェースを使用して、コミュニティ リソースからカスタム スクリプト（Nano Banana 画像生成ツールなど）まで、さまざまなツールとやり取りできるようにします。環境変数を介して API 認証情報を安全に渡すことで、システムはこれらの「プラグ アンド プレイ」モジュールが AI と外部プラットフォーム間のシームレスなブリッジとして機能することを保証します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/mcp_config.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import os\r\nimport shutil\r\nfrom mcp import StdioServerParameters\r\nfrom google.adk.tools import McpToolset\r\nfrom google.adk.tools.mcp_tool import StreamableHTTPConnectionParams, StdioConnectionParams\r\n\r\ndef get_reddit_mcp_toolset(client_id: str = &amp;quot;&amp;quot;, client_secret: str = &amp;quot;&amp;quot;, user_agent: str = &amp;quot;&amp;quot;):\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    Connects to the Reddit MCP server.\r\n    This server runs as a local subprocess (stdio) and proxies requests to the Reddit API.\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    # Check if \&amp;#x27;reddit-mcp\&amp;#x27; is installed globally, otherwise use npx to run it\r\n    cmd = &amp;quot;reddit-mcp&amp;quot; if shutil.which(&amp;quot;reddit-mcp&amp;quot;) else &amp;quot;npx&amp;quot;\r\n    args = [] if shutil.which(&amp;quot;reddit-mcp&amp;quot;) else [&amp;quot;-y&amp;quot;, &amp;quot;--quiet&amp;quot;, &amp;quot;reddit-mcp&amp;quot;]\r\n    \r\n    # Inject secrets into the environment of the subprocess only\r\n    env = {\r\n        **os.environ, \r\n        &amp;quot;DOTENV_CONFIG_SILENT&amp;quot;: &amp;quot;true&amp;quot;, \r\n        &amp;quot;LANG&amp;quot;: &amp;quot;en_US.UTF-8&amp;quot;\r\n    }\r\n\r\n    if client_id: env[&amp;quot;REDDIT_CLIENT_ID&amp;quot;] = client_id\r\n    if client_secret: env[&amp;quot;REDDIT_CLIENT_SECRET&amp;quot;] = client_secret\r\n    if user_agent: env[&amp;quot;REDDIT_USER_AGENT&amp;quot;] = user_agent\r\n\r\n    return McpToolset(\r\n        connection_params=StdioConnectionParams(\r\n            server_params=StdioServerParameters(\r\n                command=cmd, \r\n                args=args, \r\n                env=env # Pass injected secrets directly to the subprocess\r\n            ),\r\n            timeout=120.0\r\n        )\r\n    )&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b4b80&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud ドキュメント（ナレッジツール）&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://developers.google.com/knowledge/mcp?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Developer Knowledge MCP サーバー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は、エージェントが Google Cloud の公式ドキュメントのコーパス全体を検索できるようにすることで、エージェントのグラウンディングを提供します。これは、ローカルの Reddit サーバーとは異なり、Google がホストするマネージド サービスであり、インターネット経由でリモート エンドポイントとしてアクセスされます。セマンティック クエリ用の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google_developer_documentation_search&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; や、完全なマークダウン コンテンツを取得するための &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google_developer_documentation_fetch&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; などの特殊なツールが公開されており、エージェントが技術的な主張を行うたびに、最新の確かな事実によって裏付けられるようになっています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;注:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/introducing-gemini-cli-open-source-ai-agent/?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; や &lt;/span&gt;&lt;a href="https://antigravity.google/?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; などのコーディング アシスタント ツールをデベロッパー ナレッジ MCP サーバーに接続して、最新の便利な Google Cloud ドキュメントをアシスタントに提供することもできます。このブログ記事を書くときも使っています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;接続するために、エージェントは &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;McpToolset&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; クラスと &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;StreamableHTTPConnectionParams&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用し、ローカル プロセスを起動する代わりにウェブ URL を指定します。リクエスト ヘッダーで渡される &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;DK_API_KEY&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;（&lt;/span&gt;&lt;a href="https://developers.google.com/knowledge/mcp?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;API キーを作成&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;）を使用して安全に認証し、エージェントが単一の標準化されたインターフェースを通じて、公式ドキュメント、コミュニティの感情、より広範なウェブ コンテキスト全体で「包括的な調査スイープ」を実行できるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/mcp_config.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;def get_dk_mcp_toolset(api_key: str = &amp;quot;&amp;quot;):\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    Connects to Developer Knowledge (Google Cloud Docs).\r\n    This is a remote MCP server accessed via HTTP.\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    headers = {}\r\n    if api_key:\r\n        headers[&amp;quot;X-Goog-Api-Key&amp;quot;] = api_key\r\n    else:\r\n        # Fallback to os.environ for local testing if not passed via API\r\n        headers[&amp;quot;X-Goog-Api-Key&amp;quot;] = os.getenv(&amp;quot;DK_API_KEY&amp;quot;, &amp;quot;&amp;quot;)\r\n\r\n    return McpToolset(\r\n        connection_params=StreamableHTTPConnectionParams(\r\n            url=&amp;quot;https://developerknowledge.googleapis.com/mcp&amp;quot;,\r\n            headers=headers\r\n        )\r\n    )&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48583b4a60&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;画像生成ツール（Nano Banana MCP）&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Reddit とドキュメントには外部 MCP サーバーを使用しましたが、特定の Python ロジックをラップする独自のカスタム MCP サーバーを構築することもできます。この例では、Gemini 3 Pro Image（Nano Banana Pro とも呼ばれます）を搭載した画像生成ツールを作成します。これは、任意の Python 関数を、任意のエージェントが理解できるツールに標準化できることを示しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;画像生成の仕組み:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://gofastmcp.com/getting-started/welcome" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;FastMCP&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;fastmcp&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; ライブラリを使用してサーバーの作成を大幅に簡素化し、数行のコードで Python 関数をツールとして登録できるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini のインテグレーション&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: サーバーは Google GenAI SDK を使用して &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gemini-3-pro-image-preview&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; モデルを呼び出し、エージェントの説明的なプロンプトを未加工の画像バイトに変換します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;GCS へのアップロードとホスティング:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; エージェント インターフェースでは通常、画像を表示するために URL が必要となるため、サーバーは生成されたバイトを Google Cloud Storage（GCS）に自動的にアップロードし、公開リンクを返します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このローカルツールを接続するには、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;StdioConnectionParams&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用します。これは、サーバーが標準入出力を介して通信するローカル サブプロセスとして実行されるためです。この転送方法は、サーバーのエントリポイントで定義する &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;transport="stdio"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; 構成に直接一致し、カスタムのローカル スクリプトのシームレスな接続を保証します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードは、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/mcp_config.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; で MCP 接続を定義します。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uv run&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、すべての依存関係が正しくインストールされている、隔離された環境でサーバーが起動するようにします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/mcp_config.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;def get_nano_banana_mcp_toolset():\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    Connects to our local \&amp;#x27;Nano Banana\&amp;#x27; image generator.\r\n    This demonstrates how to wrap a local Python script as an MCP tool.\r\n    &amp;quot;&amp;quot;&amp;quot;\r\n    path = os.path.join(&amp;quot;dev_signal_agent&amp;quot;, &amp;quot;tools&amp;quot;, &amp;quot;nano_banana_mcp&amp;quot;, &amp;quot;main.py&amp;quot;)\r\n    bucket = os.getenv(&amp;quot;AI_ASSETS_BUCKET&amp;quot;)     \r\n    return McpToolset(\r\n        connection_params=StdioConnectionParams(\r\n            server_params=StdioServerParameters(\r\n                command=&amp;quot;uv&amp;quot;, \r\n                args=[&amp;quot;run&amp;quot;, path], \r\n                env={**os.environ, &amp;quot;AI_ASSETS_BUCKET&amp;quot;: bucket}\r\n            ),\r\n            timeout=600.0 # Image generation can take time\r\n        )\r\n    )&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48429921c0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Nano Banana Pro サーバー ロジックの実装&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、このサーバーの実際のロジックを実装します。この実装は、Remigiusz Samborski 氏による &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=XCGbDx7aSks&amp;amp;list=PLIivdWyY5sqLXR1eSkiM5bE6pFlXC-OSs&amp;amp;index=2" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Factory&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; デモの&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/a9a5f64a3394a4b5ecc64061f397bd5ed82927ee/ai-ml/agent-factory-antigravity-nano-banana-pro/mcp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;コード&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;に基づいています。Remi の元のコードには、MCP サーバーを Cloud Run にデプロイする手順が記載されていますが、ここでは開発とテストを迅速に行うために、ローカル サブプロセスとして実行します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、新しいサーバー用のディレクトリを作成します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;mkdir -p dev_signal_agent/tools/nano_banana_mcp\r\ncd dev_signal_agent/tools/nano_banana_mcp&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48429928e0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;サーバー エントリポイント（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;main.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;）&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このファイルは、MCP サーバーを初期化して起動する「頭脳」として機能します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;FastMCP の初期化: &lt;/strong&gt;&lt;code style="vertical-align: baseline;"&gt;FastMCP&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; ライブラリを使用して、「MediaGenerators」という名前のサーバーを作成し、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;generate_image&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; 関数をツールとして登録します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;安全なロギング: &lt;/strong&gt;&lt;code style="vertical-align: baseline;"&gt;_initialize_console_logging&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; 関数が重要な役割を果たします。この関数はすべてのログを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;sys.stderr&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に強制的に出力します。これは、MCP の「stdio」転送がエージェントとツールの間の通信に &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;sys.stdout&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用するためです。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;stdout&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に送信される標準ログは、そのプロトコルを破損させます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;実行&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;mcp.run(transport="stdio")&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; 行は、サーバーをローカル サブプロセスとして起動し、標準入力経由でエージェントからのリクエストをリッスンできるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/nano_banana_mcp/main.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import logging\r\nimport os\r\nimport sys\r\nfrom fastmcp import FastMCP\r\nfrom dotenv import load_dotenv\r\nfrom nano_banana_pro import generate_image\r\n\r\ndef _initialize_console_logging(min_level: int = logging.INFO):\r\n    # Ensure logs go to STDERR so they don\&amp;#x27;t break the MCP stdio protocol\r\n    handler = logging.StreamHandler(sys.stderr)\r\n    logging.basicConfig(level=min_level, handlers=[handler], force=True)\r\n\r\ntools = [generate_image]\r\nmcp = FastMCP(name=&amp;quot;MediaGenerators&amp;quot;, tools=tools)\r\n\r\nif __name__ == &amp;quot;__main__&amp;quot;:\r\n    load_dotenv()\r\n    _initialize_console_logging()\r\n    mcp.run(transport=&amp;quot;stdio&amp;quot;)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4842992250&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;生成ロジック（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;nano_banana_pro.py）&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここでは、Gemini を使用して実際に画像が生成されます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;GenAI クライアント:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Google の生成モデルとやり取りするために、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;genai.Client()&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を初期化します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;モデルの選択:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 具体的には &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gemini-3-pro-image-preview&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; モデルを対象とします。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;response_modalities&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を「IMAGE」に設定して、テキストだけでなくピクセルも必要であることをモデルに伝えます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;堅牢性&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: コードには、一時的な生成エラーを処理するための &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;MAX_RETRIES&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; ループ（5 に設定）が含まれており、エージェントが有効な画像を複数回取得できるようにしています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;バイト処理: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;モデルが画像を生成すると、未加工のインライン データとして届きます。これらのバイトを抽出し、ヘルパーを呼び出してクラウドに移動します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;URI 変換:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 最後に、内部の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gs://&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; パスを、ブラウザからアクセス可能な &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;https://&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; URL に置き換え、ユーザーが実際に画像を見られるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/nano_banana_mcp/nano_banana_pro.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import logging\r\nfrom typing import Literal, Optional\r\nfrom google import genai\r\nfrom google.genai import types\r\nfrom media_models import MediaAsset\r\nfrom storage_utils import upload_data_to_gcs\r\n\r\nAUTHORIZED_URI = &amp;quot;https://storage.mtls.cloud.google.com/&amp;quot;\r\nMAX_RETRIES = 5\r\n\r\nasync def generate_image(\r\n    prompt: str,\r\n    aspect_ratio: Literal[&amp;quot;16:9&amp;quot;, &amp;quot;9:16&amp;quot;] = &amp;quot;16:9&amp;quot;,\r\n) -&amp;gt; MediaAsset:\r\n    &amp;quot;&amp;quot;&amp;quot;Generates an image using Gemini 3 Image model.&amp;quot;&amp;quot;&amp;quot;\r\n    genai_client = genai.Client()\r\n    content = types.Content(parts=[types.Part.from_text(text=prompt)], role=&amp;quot;user&amp;quot;)\r\n    \r\n    logging.info(f&amp;quot;Starting image generation for prompt: {prompt[:50]}...&amp;quot;)\r\n    asset = MediaAsset(uri=&amp;quot;&amp;quot;)\r\n    \r\n    for _ in range(MAX_RETRIES):\r\n        response = genai_client.models.generate_content(\r\n            model=&amp;quot;gemini-3-pro-image-preview&amp;quot;,\r\n            contents=[content],\r\n            config=types.GenerateContentConfig(\r\n                response_modalities=[&amp;quot;IMAGE&amp;quot;],\r\n                image_config=types.ImageConfig(aspect_ratio=aspect_ratio)\r\n            )\r\n        )\r\n        if response and response.parts:\r\n            for part in response.parts:\r\n                if part.inline_data and part.inline_data.data:\r\n                    # Upload the raw bytes to GCS\r\n                    gcs_uri = await upload_data_to_gcs(\r\n                        &amp;quot;mcp-tools&amp;quot;,\r\n                        part.inline_data.data,\r\n                        part.inline_data.mime_type\r\n                    )\r\n                    asset = MediaAsset(uri=gcs_uri)\r\n                    break\r\n        if asset.uri: break\r\n\r\n    if not asset.uri:\r\n        asset.error = &amp;quot;No image was generated.&amp;quot;\r\n    else:\r\n        # Convert gs:// URI to an HTTP accessible URL if needed\r\n        asset.uri = asset.uri.replace(\&amp;#x27;gs://\&amp;#x27;, AUTHORIZED_URI)\r\n        logging.info(f&amp;quot;Image URL: {asset.uri}&amp;quot;)\r\n        \r\n    return asset&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4842992610&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;GCS アップロード ヘルパー（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage_utils.py）&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントは画像を表示するためにリンクを必要とするため、このユーティリティは Google Cloud Storage（GCS）でホスティングを処理します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;バケットの動的な選択&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 環境変数でバケット名を探し、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI_ASSETS_BUCKET&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; から &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;LOGS_BUCKET_NAME&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; にフォールバックして、データの保存場所が常に確保されるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;一意のファイル名:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 未加工の画像データの MD5 ハッシュを使用して、一意のファイル名を作成します。これにより、ファイル名の競合を防ぐことができ、同じ画像の重複アップロードを回避する簡単な方法として機能します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;クラウド アップロード: &lt;/strong&gt;&lt;code style="vertical-align: baseline;"&gt;blob.upload_from_string&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; メソッドは、未加工の画像バイトを GCS バケットに直接 push します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/nano_banana_mcp/storage_utils.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import hashlib\r\nimport mimetypes\r\nimport os\r\nfrom google.cloud.storage import Client, Blob\r\nfrom dotenv import load_dotenv\r\n\r\nload_dotenv()\r\nstorage_client = Client()\r\nai_bucket_name = os.environ.get(&amp;quot;AI_ASSETS_BUCKET&amp;quot;) or os.environ.get(&amp;quot;LOGS_BUCKET_NAME&amp;quot;)\r\nai_bucket = storage_client.bucket(ai_bucket_name)\r\n\r\nasync def upload_data_to_gcs(agent_id: str, data: bytes, mime_type: str) -&amp;gt; str:\r\n    file_name = hashlib.md5(data).hexdigest()\r\n    ext = mimetypes.guess_extension(mime_type) or &amp;quot;&amp;quot;\r\n    blob_name = f&amp;quot;assets/{agent_id}/{file_name}{ext}&amp;quot;\r\n    blob = Blob(bucket=ai_bucket, name=blob_name)\r\n    blob.upload_from_string(data, content_type=mime_type, client=storage_client)\r\n    return f&amp;quot;gs://{ai_bucket_name}/{blob_name}&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4842992400&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;データモデル（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;media_models.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;）&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このファイルにより、データが厳格な構造（スキーマ）に従うことが保証されます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;構造化された出力:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Pydantic &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;BaseModel&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用することで、ツールが常に &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uri&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;（リンク）とオプションの &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;error&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; メッセージを含む一貫した JSON オブジェクトを返すことを保証します。これにより、AI エージェントがツールの結果を理解して処理することがはるかに容易になります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/nano_banana_mcp/media_models.py&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;from typing import Optional\r\nfrom pydantic import BaseModel\r\n\r\nclass MediaAsset(BaseModel):\r\n    uri: str\r\n    error: Optional[str] = None&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4842992d30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;ツールの依存関係（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;requirements.txt）&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コードの実行には &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uv&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用しますが、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;requirements.txt&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; ファイルは、Nano Banana サーバーが機能するために &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uv&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; がインストールする必要がある特定の依存関係を定義するため、依然として不可欠です。これにより、隔離された環境をサーバーの起動前にセットアップするために必要な「材料」が提供されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このファイルには、このツールに必要な 3 つのコアライブラリがリストされています。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;google-cloud-storage:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 生成された画像をクラウドでホストするために使用されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;google-genai:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Gemini 3 Pro の画像生成のロジックを提供します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;fastmcp:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Python スクリプトを標準化された MCP ツールに変えるフレームワークです。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコードを &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;dev_signal_agent/tools/nano_banana_mcp/requirements.txt&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に貼り付けます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;google-cloud-storage==3.6.*\r\ngoogle-genai==1.52.*\r\nfastmcp==2.13.*&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4863bd1d30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;シリーズのパート 1 では、Model Context Protocol（MCP）を通じて外部統合を標準化することにより、エージェントのコア機能を確立することに焦点を当てました。高速な依存関係管理のために &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;uv&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用してプロジェクトを初期化し、トレンド発見のための Reddit、技術的なグラウンディングのための Google Cloud ドキュメント、マルチモーダル画像生成のためのカスタム「Nano Banana」MCP サーバーという 3 つの重要なツールセットを構成しました。Google ADK の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;McpToolset&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を利用することで、複雑な API ロジックをシンプルなプラグ アンド プレイ モジュールに抽象化し、ツールが共通のインターフェースを共有してインテリジェンスから統合を切り離せるようにしました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;技術的基盤について詳しく確認するには、&lt;/span&gt;&lt;a href="https://developers.google.com/knowledge/mcp?utm_campaign=CDR_0x91b1edb5_default_b485268863&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Developer Knowledge MCP サーバー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;でナレッジ グラウンディングの詳細を確認するか、&lt;/span&gt;&lt;a href="https://github.com/google/adk-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google ADK GitHub リポジトリ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;でフレームワークのコア機能について調べることができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ツールセットが完全に構成され、使用できる状態になったので、パート 2 に進みましょう。パート 2 では、マルチ エージェント アーキテクチャを構築し、Vertex AI Memory Bank を統合してこれらの機能をオーケストレートします。さらに詳しく調べる場合は、&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/ai-ml/dev-signal" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub リポジトリ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;でシリーズ全体の詳細なコードを確認できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;この記事に対して、レビューとフィードバックを提供してくださった&lt;/span&gt;&lt;a href="https://www.linkedin.com/in/remigiusz-samborski/" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt; Remigiusz Samborski &lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;氏に心より感謝いたします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このようなコンテンツをさらにご覧になりたい場合は、&lt;/span&gt;&lt;a href="https://www.linkedin.com/in/shirmeirlador/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;a href="https://x.com/shirmeir86?lang=en" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;X&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; で私をフォローしてください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;AI / プロダクト / DevRel 責任者、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Shir Meir Lador&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 09 Apr 2026 01:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/build-a-multi-agent-system-for-expert-content-with-google-adk-mcp-and-cloud-run-part-1/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/devsignalheroimage.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Google ADK、MCP、Cloud Run を使用して専門家向けコンテンツ用のマルチ エージェント システムを構築する - パート 1</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/devsignalheroimage.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/build-a-multi-agent-system-for-expert-content-with-google-adk-mcp-and-cloud-run-part-1/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Shir Meir Lador</name><title>Head of AI, Product DevRel</title><department></department><company></company></author></item><item><title>LLM 推論の効率的フロンティアに到達するための 5 つの手法</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/five-techniques-to-reach-the-efficient-frontier-of-llm-inference/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 28 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/five-techniques-to-reach-the-efficient-frontier-of-llm-inference?hl=en&amp;amp;e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;モデル推論に費やした費用の分だけ、レイテンシとスループットのグラフ上で良いポジションが得られます。上の図には、ハードウェアから可能な限り最大のパフォーマンスを引き出した、最適な構成の曲線が示されています。この曲線は、金融のポートフォリオ理論から借用したもので、&lt;/span&gt;&lt;a href="https://en.wikipedia.org/wiki/Efficient_frontier" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;効率的フロンティア&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;と呼ばれます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ハードウェアの予算が固定されていると仮定すると、レイテンシとスループットをトレードオフできます。ただし、フロンティア曲線自体が移動しない限り、一方を改善するには他方を犠牲にする必要があります。根本的に異なる 2 つのダイナミクスが作用しており、これは本番環境で LLM を実行するすべての人にとって重要なインサイトです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;最初のダイナミクスはフロンティアに到達することです。これには、現在利用可能なあらゆる手法を適用することが含まれます。この部分は、自分で制御できます。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/tutorials/serve-gemma-gpu-tensortllm?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;継続的なバッチ処理&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/machine-learning/inference/llm-optimization?hl=ja#model-memory"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;アテンションの分割&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/about-gke-inference-gateway?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;インテリジェント ルーティング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/docs/blog/posts/from-research-to-production-accelerate-oss-llm-with-eagle-3-on-vertex?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投機的デコーディング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/machine-learning/inference/llm-optimization?hl=ja#quantization"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;量子化&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;はすべて、現在存在する手法です。これらの手法を使用していない場合、運用がフロンティアを下回り、パフォーマンスを最大限に引き出すことができません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;2 つ目のダイナミクスは、フロンティア自体が常に外側に移動していることです。この部分は、ほとんどの場合、自分で制御できません。研究者は新しいアルゴリズムを発表し、ハードウェア ベンダーは新しいアーキテクチャを出荷し、オープンソース プロジェクトは成熟します。ブレイクスルーが起こるたびに、物理的に達成可能なことが再定義され、曲線が拡大されるため、昨日の最適な構成が今日の非効率になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プラットフォーム エンジニアの仕事は、フロンティアにできるだけ近い位置を維持しながら、新しい進歩がもたらされるたびにそれを吸収できる十分な柔軟性を持つインフラストラクチャを構築することです。この記事では、そのためのツールをご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;推論に効率的フロンティアがある理由&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;すべての LLM リクエストには 2 つの計算フェーズがあり、それぞれ異なるハードウェア リソースでボトルネックが発生する可能性があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. プレフィル（コンピューティング バウンド）&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このフェーズでは、GPU が入力プロンプト全体を一度に処理して、アテンション機構の &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/machine-learning/inference/llm-optimization?hl=ja#attention-layer-optimization?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Key-Value（KV）キャッシュ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を構築します。命令は並列でバッチ処理されるため、GPU のコンピューティング コア（テンソルコア）の使用率が高くなります。このフェーズは高速かつ効率的です。プロセッサは、大規模な行列乗算を実行するために必要なすべてのデータをすぐに利用できます。プロンプトが長くなると、単純に計算量が増えます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. デコード（メモリ帯域幅バウンド）&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このフェーズでは、新しいトークンが一度に 1 つずつ&lt;/span&gt;&lt;a href="https://en.wikipedia.org/wiki/Autoregressive_model" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;自己回帰的&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;に生成されます。1 つのトークンのみを生成する場合、GPU は作業をバッチ処理できません。モデル全体の重みと増大する KV キャッシュを&lt;/span&gt;&lt;a href="https://en.wikipedia.org/wiki/High_Bandwidth_Memory" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;高帯域幅メモリ（HBM）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;からコンピューティング コアにフェッチする必要があります。その後、GPU はその 1 つのトークンを計算し、次のトークンに対して再び同じ処理を行うのを待ちます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この不一致こそが、フロンティアが存在する根本的な理由です。トレードオフなしに、単一のシステムを同時に両方のフェーズ向けに最適化することはできません。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/prefill-vs-decode.max-1000x1000.jpg"
        
          alt="prefill-vs-decode"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;推論の 2 つの軸&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;LLM 推論の効率的フロンティアでは、リスクとリターンの代わりに、ハードウェア予算が固定されているという前提で、別の基本的なトレードオフが測定されます。&lt;/span&gt;&lt;/p&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;軸&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://bentoml.com/llm/inference-optimization/llm-inference-metrics" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;測定される主な指標&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ハードウェアの制約&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;レイテンシ（X 軸）&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;最初のトークンまでの時間（TTFT）+ トークン間の時間（TBT）&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コンピューティング（プレフィル）とメモリ帯域幅（デコード）&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;スループット（Y 軸）&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;すべての同時ユーザーの 1 秒あたりの合計トークン数&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;バッチサイズ × メモリ容量&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;費用は、レイテンシとスループットのグラフ自体を購入する制約です。ハードウェアの予算を増やすか、業界が画期的な新しいアルゴリズムを発明すると、フロンティア曲線全体が外側にシフトします。特定の予算とソフトウェア スタックで、最適ではない状態からそのフロンティアに向かって移行するための現在のベスト プラクティスを適用できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;フロンティアに到達する: 制御可能な 5 つの手法&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;現在、本番環境における大部分の推論システムの運用は、フロンティアを下回っています。優れた手法は存在するものの、そのような手法をまだ採用していないために、パフォーマンスが向上していないのです。このセクションで説明する手法はすべて、現在利用可能なものです。これらの手法を適用しない場合、運用が曲線を下回ることになります。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/interventions.max-1000x1000.jpg"
        
          alt="interventions"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. モデル階層間のセマンティック ルーティング&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;すべてのクエリに 4,000 億パラメータのモデルが必要なわけではありません。単純な分類、要約、書式設定のタスクは、トークンあたりの費用が桁違いに安い、より小さな量子化モデルにルーティングできます。ゲートウェイ エッジの軽量分類器がクエリの複雑さを分析し、それに応じてルーティングします。難しい推論にはフロンティア クラスのモデル、それ以外には小規模モデルを使用します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/blog/ja/products/containers-kubernetes/how-gke-inference-gateway-improved-latency-for-vertex-ai?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog&amp;amp;e=48754805&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;セマンティック ルーティング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;により、システムは理論上の最大スループットに劇的に近づき、簡単なタスクでの無駄なサイクルが回避されます。集約された出力の品質が犠牲になることはありません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. プレフィルとデコードの分離&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プレフィル フェーズとデコード フェーズを異なるハードウェアに物理的に分離することは、現在利用可能な、アーキテクチャ上最も重要な最適化の一つです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プレフィル フェーズには、コンピューティング能力の高い GPU が必要です。デコード フェーズには、高帯域幅メモリが必要です。両方のフェーズを同じ GPU に強制的に割り当てると、一方のリソースが常に十分に活用されない状態になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;両方のフェーズをそれぞれ理論上のハードウェア上限に近づけるには、専用のプレフィル クラスタとデコード クラスタを実行します。これらのクラスタを、圧縮された KV キャッシュの状態のみを同じ GPU に転送する高速ネットワークで接続すると、一方のリソースが常に十分に活用されない状態になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;3. 量子化: 精度と速度のトレードオフ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/machine-learning/inference/llm-optimization?hl=ja#quantization?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;モデルの重み&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を FP16 から INT8 または INT4 形式に減らすと、メモリ使用量を半分または 4 分の 1 に削減できます。デコード フェーズにはメモリ帯域幅の制限があるため、4 ビットの重みは 16 ビットの重みよりも最大 4 倍速く読み取ることができます。このアプローチにより、TBT が直接改善されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;単純な量子化ではモデル出力の品質が低下するため、品質とのトレードオフが生じます。Activation-aware Weight Quantization（AWQ）や GPTQ などの最新の手法では、重要な重みの品質を維持しながら、他の重みを積極的に圧縮して、INT4 の速度で FP16 に近い品質を実現します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;4. コンテキスト ルーティング: ほとんどのチームが見落としている最大の要素&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;数十個のモデルレプリカを使用した本番環境でのデプロイでは、ルーティング レイヤが、現在最大の競争優位性を獲得できるかどうかの分かれ目となっています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;2026 年は、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/open-models/model-garden-published-notebooks/model_garden_advanced_features#prefix_caching_"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;接頭辞のキャッシュ保存&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;が基盤となっています。10 人のユーザーが 100 ページの RAG ドキュメントについてまったく同じ質問をしたり、同一の膨大なシステム プロンプトを使用したりする場合、コンピューティング負荷の高いプレフィル フェーズを 10 回実行すべきではありません。KV キャッシュを一度計算して保存し、他の 9 人のユーザーが再利用できるようにする必要があります。このアプローチにより、TTFT を最大 85% 短縮し、コンピューティング費用を大幅に削減できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ただし、注意点があります。標準の L4 ロードバランサはリクエストをランダムに分散します。ユーザー 2 のリクエストがユーザー 1 のリクエストとは異なる GPU に到達した場合、接頭辞のキャッシュは役に立たず、システムはキャッシュをゼロから再計算する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コンテキスト認識型 L7 ルーティングが差別化要因となるのはこのためです。インテリジェント ルーターは、受信したプロンプトの接頭辞を検査し、そのコンテキストをキャッシュにすでに保持している特定の Pod に意図的にリクエストをルーティングします。冗長な作業にコンピューティング能力を無駄に費やすことがなくなり、レイテンシとスループットをハードウェアの物理的な上限に即座に近づけることができます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/prefix-aware-routing.max-1000x1000.jpg"
        
          alt="prefix-aware-routing"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;5. 投機的デコーディング&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;重要な点として、デコード フェーズでは、メモリ帯域幅にボトルネックがあるため、テンソルコアはほとんどアイドル状態です。&lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/blog/posts/from-research-to-production-accelerate-oss-llm-with-eagle-3-on-vertex?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投機的デコーディング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は、この無駄な計算能力を利用します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;小規模で高速な「ドラフト」モデルが、複数の候補トークンを低コストで生成します。その後、大規模なターゲット モデルが、すべての候補を単一のフォワードパスで&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;検証&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;します。これは、シーケンシャル メモリ バウンドのオペレーションではなく、並列コンピューティング バウンドのオペレーションです。ドラフトモデルが候補を正しく予測した場合、1 トークンのメモリコストで 4～5 トークンを生成したことになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このアプローチにより直接、メモリ帯域幅によって設定された TBT の下限よりも短い TBT を達成できます。レイテンシの影響を受けやすいワークロードに投機的デコーディングを使用していない場合、利用可能な最も効果的な最適化の一つを活用できていないことになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ドラフトモデルを追加すると、運用が多少複雑になり、コンピューティング費用がわずかに増加する可能性がありますが、ドラフトモデルはメインモデルに比べて比較的小さなものです。これとレイテンシをトレードオフする価値はあります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;なお、一部の新しいモデルでは自己投機的デコーディングが導入されており、2 つ目のモデルを管理するオーバーヘッドがなくなります。これらのモデルは、将来の追加トークンを同時に予測するようにトレーニングされた特殊な内部レイヤ（多くの場合、予測ヘッドと呼ばれる）を使用します。これらのモデルは一般に、非常に有意義なトークン ヒット率を達成します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ケーススタディ: Vertex AI がフロンティアに近づいた方法&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI エンジニアリング チームは、標準の Kubernetes Gateway API を基盤として構築された &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/containers-kubernetes/how-gke-inference-gateway-improved-latency-for-vertex-ai?utm_campaign=CDR_0x2b6f3004_default&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GKE Inference Gateway&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を採用したときに、フロンティアに近づきました。Inference Gateway はレイヤ 7 でリクエストをインターセプトし、2 つの重要なインテリジェンス レイヤを追加しました。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;負荷認識ルーティング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: モデルサーバーの Prometheus エンドポイントからリアルタイムの指標（KV キャッシュ使用率やキューの深さなど）を直接スクレイピングしました。このプロセスでは、リクエストを最も迅速に処理できる Pod にルーティングします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;コンテンツ認識ルーティング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: リクエストの接頭辞を検査し、そのコンテキストを KV キャッシュにすでに保持している Pod にトラフィックをルーティングしました。このプロセスでは、コストのかかる再計算を回避できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;本番環境のワークロードをこのインテリジェントなルーティング アーキテクチャに移行したところ、ネットワーク レイヤの最適化が、大規模なパフォーマンス向上を実現する鍵であることが、Vertex AI チームによって証明されました。本番環境のトラフィックで検証した結果は、以下のとおりです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Qwen3-Coder（コンテキストの多いコーディング エージェント ワークロード）で &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;TTFT が 35% 短縮&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;DeepSeek V3.1（バースト性の高いチャット ワークロード）の &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;P95 テール レイテンシが 2 分の 1&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（52%）に改善&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;接頭辞キャッシュ ヒット率が 2 倍&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（35% から 70% に最適化）&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;LLM 推論には効率的フロンティアがあります。効率的フロンティアとは、特定のコンピューティング予算に対してレイテンシとスループットの最適なバランスが取れた絶対的な境界を表します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;効率的フロンティアに到達することは、自分で制御できます&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。現在、継続的なバッチ処理、アテンションの分割、インテリジェント L7 ルーティング、投機的デコーディング、量子化、プレフィルとデコードの分離といった手法が存在します。GKE Inference Gateway のケーススタディでは、ハードウェア、モデル、クラスタサイズを変更せずに、ルーティングのみで、TTFT が 35% 短縮され、キャッシュ効率が 2 倍になったことが示されています。フルスタックを適用しない場合、運用は曲線を下回り、トークンごとに過剰な料金を支払うことになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;フロンティア自体が外側に移動し続けています&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。この部分は、自分で制御できません。研究者は新しいアルゴリズムを発表し、ハードウェア ベンダーは新しいアーキテクチャを出荷し、オープンソースのサービング フレームワークはこれらのアルゴリズムとアーキテクチャを統合します。18 か月前には最先端の最適化だったものが、今では基本的な必須事項となっています。次にどのようなブレークスルーが起こるかを予測するのではなく、ブレークスルーが起こったときにそれを吸収できる柔軟なインフラストラクチャを構築することが、あなたの仕事です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;推論エコノミクスで成功する組織は、GPU を最も多く保有している組織ではなく、現在のフロンティアとのギャップを体系的に埋めながら、明日のフロンティアに備える組織です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;これらの最適化手法をご自身の LLM 推論ワークロードに適用したことがある方は、その体験談をぜひお聞かせください。構築したものを &lt;/span&gt;&lt;a href="https://www.linkedin.com/in/karlweinmeister/" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://x.com/kweinmeister" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;X&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://bsky.app/profile/kweinmeister.bsky.social" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;Bluesky&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt; で共有していただければ幸いです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパーリレーションズ担当ディレクター、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Karl Weinmeister&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 08 Apr 2026 02:10:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/five-techniques-to-reach-the-efficient-frontier-of-llm-inference/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/hero-image.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>LLM 推論の効率的フロンティアに到達するための 5 つの手法</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/hero-image.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/five-techniques-to-reach-the-efficient-frontier-of-llm-inference/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Karl Weinmeister</name><title>Director, Developer Relations</title><department></department><company></company></author></item><item><title>AI リテラシーの新しい形: 学生デベロッパーを対象とした調査結果</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/how-uc-berkeley-students-use-ai-as-a-learning-partner/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 27 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/how-uc-berkeley-students-use-ai-as-a-learning-partner?hl=en&amp;amp;e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI により、学生デベロッパーはかつてないレベルで作業を効率化し、難しい問題を解決したり、野心的なプロジェクトに取り組んだりできるようになりました。一方、この新技術の登場によって、技術専攻の学生たちは学習について本質的な問いに向き合うようになってきています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;それは、AI をどの程度、何に使用すべきか、という問題です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dora.dev/dora-report-2025/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google の DORA 2025 レポート&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;によると、現在、日々の業務で AI を使用している技術者は 90% に達しています。こうした状況の中で、次世代が AI ツールとどう付き合っているのかを理解することがこれまでになく重要になっています。カリフォルニア大学バークレー校の学生を対象とした Google の調査では、学業における不正行為や知的作業の省略といった懸念を覆す結果が明らかになりました。学生は AI を近道としてではなく、学習パートナーとして捉え、タスクによって意図的に使用したり、使用を控えたりしています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI がソフトウェア開発の基盤となるにつれ、AI ツールを導入するかどうかよりも、懸命な活用方法が焦点になってきています。カリフォルニア大学バークレー校の学生たちは、その答えの一つを示してくれます。それは、彼らのもつ好奇心や、慎重さ、学習に対する純粋な意欲を、AI は支えることはできても、取って代わることはできない、ということです。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;調査&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;カリフォルニア大学バークレー校の 4 人の学生チーム（Andrew Harlan、Mindy Tsai、Kenny Ly Hong、Karissa Wong）が、学業での AI の利用状況を把握するため、コンピュータ サイエンス、電気工学、デザイン、データ サイエンス専攻の学生を対象に調査を実施しました。この調査には、混合手法を使用しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;また、同校の別のチーム（Edward Fraser、Jessie Deng、Eileen Thai）が、デベロッパー歴 1～5 年の人々を対象に、アイ トラッキング技術を使って AI コーディング アシスタントの使用状況を観察しました。両チームとも専任メンターの支援のもと調査を進め、混合手法調査については Google 社員の Harini Sampath、Becky Sohn、Derek DeBellis が、アイトラッキング調査についてはカリフォルニア大学バークレー校の John Chuang 教授（博士）が助言を行っています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらの調査から、学生が AI を活用すると同時に、真の専門知識を身につけるためにどのような方法をとっているのか、3 つの重要な結果が明らかになりました。学生の間で見られるパターンは、実際に開発職に就いている人々を対象にした DORA の調査結果とよく似通っています。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;調査結果その 1: 24 時間 365 日、いつでも頼れる先生&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI は近道ではなく家庭教師&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;調査で AI との関係性について尋ねられた学生は皆一様に、学びの場ならではの言葉を使いました。AI のことを、アシスタントや生産性向上ツールではなく、「家庭教師」や「先生」と呼んでいたのです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「AI は教師のような存在です。内容の濃い資料を解説してもらったり、データベースにあらかじめ記述されているコードを部分的に説明してもらったりするなど、プロジェクトの基礎的な部分について理解を深めるためにとても役立っています。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「[AI を] お抱えの家庭教師として利用しています。授業や講義の特定のトピックの [理解を深める] ために。コンピュータ サイエンスだけでなく、あらゆる授業で使っています。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここで重要なのは、学生が AI に依存せず、計画的に使用しているということです。AI に課題を完成させるのではなく、自分の理解度を踏まえて AI を使用し、知識の抜けを特定したり、不確かな概念を明らかにしたり、学習プロセスをリードしてもらったりしています。回答の中には、講義で取り上げられた複数の学術論文を要約してもらい、どれを深く読みこむべきかを判断するといった使い方や、コードでエラーが発生する理由を AI に説明してもらう、といったものがありました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ある学生は、学習プロセスに次のように組み込んでいます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「教授の説明がわからなかったときは AI に尋ねます。たとえば、ある概念や、コードの機能について説明してもらったりします。また、ラボのどこから手をつけたらよいかわからないときは、AI にプロンプトで尋ねます。それからコードを書き始め、修正すべき点を尋ねるといった具合です。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;学習障がいのある学生にとっては、常に利用できるという点が、不利な状況を克服するために役立っています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「私は学習障がいがあるため、問題を理解するのに人より時間がかかります。AI にはすごく助けられています。24 時間 365 日、いつでも付いていてくれるサブ教師のような存在です。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI を使えば、学校の営業時間に縛られることなく、いつでも理解を掘り下げられます。AI のおかげで脳の処理能力に余裕が生まれ、より高度な思考が可能となります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「実際にコーディングする時間は減り、全体のアイデアを練るのに時間をかけられるようになりました。今では、手動でコードを生成する代わりに、ロジックとコンセプトの検討や、アイデアの創出に時間を費やしています。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;こうしたコメントから、AI が最終的な作品を仕上げるためではなく、探索ツールとして利用されている様子が浮かび上がります。これは、DORA の調査結果と一致しています。調査によると、AI がルーチンワークを引き受けることで、デベロッパーはユーザーへの価値提供に専念できるようになっています。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;調査結果その 2: 過度な依存に対する積極的な抵抗&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;学びのプロセスを守るために、境界線を設ける&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;学生たちは、AI を学習ツールとして活用する一方で、AI への過依存への不安を率直に表現しました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「AI がなくなったら、自分で解決方法を探すのに苦労してしまうかもしれません。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エッセイ執筆中の脳活動を脳波検査で測定した最近の研究では、AI の利用者は、検索エンジンやツールを使用しない人に比べ、認知エンゲージメントのパターンが弱いことがわかりました。また、AI のヘビーユーザーが、アシスタントを使わずにエッセイを書いてみたところ、以前に書いた作品についての記憶があまりなく、自分の作品であるという意識も低いことがわかりました。このことを、論文の著者は「認知の負債」と表現しています。&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;一方で、ポジティブな兆候が明らかになりました。学生たちは、この認知上のリスクをただ受け入れるのではなく、意図的に境界線を設けて対応しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;機械工学専攻のある学生は、電子機器を何年も使用するうちに、以下のように能力ベースの AI 使用ルールを確立したといいます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「サーボや超音波などの基本的センサーなら自分でコーディングできますが、複雑なセンサーで、かつ、機能を厳密に把握する必要性がないときは、AI を使用します」と回答し、次のように説明しています。「何かがうまくいかないとき、その理由を理解できても、問題を解決するための直接的な言語を知らない場合があります。AI は、そのような状況で役立ちます。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この学生は、最近携わったプロジェクト（触って操作できるストーリーテリング ツールの構築）において、基本的なコンセプトを理解した後、カウントおよび比較のシステム構築のために助けを求めたとのことです。「AI は、基本構造のセットアップに大変役立ちましたが、その後、微調整のコーディングは自力でやる必要がありました。」また、作業の振り分けについては、次のように明確な意見を述べています。「自分でも引き続き、コードを書いています。技術者のように丸投げするわけではなく、AI と共同で作業を進め、私が司令塔となって AI にやってほしいことを指示します。ただやみくもにリクエストしても、まったく役に立ちません。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;学生が AI を利用する際には、明確な利用ルールを設けているケースが多く見られました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「AI にはたまに、完全な答えではなく方向性だけを示すように頼みます。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;過度な依存を避けるため、学生は以下のような具体策を編み出しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;高度なモデルの利用を避ける:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「料金制の AI ツールを使用するつもりはありません。AI モデルを使いすぎてしまう恐れがありますから。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI の使用、不使用を交互に繰り返す:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「for ループの処理など、一部の処理はまた自分で書くようになりました。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;「バイブ コーディング」を警戒する:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「AI ツールがデベロッパーの生産性を高めるために役立つことは間違いありません。ただし、バイブ コーディングに慣れてしまわないよう、十分な注意が必要です。AI が生成するコードを理解して検証し、適切な方法で使用するということが大前提です。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;こうした懸念は、学生たちが認知について意識的に考えているということを示しています。彼らは、一番楽な方法が最も学習効果が高いわけではないと認識しています。これは DORA の調査結果とも一致しています。調査によると、AI の導入率が 90% にのぼるにもかかわらず、利用者の約 30% が AI が生成したコードをほとんど（あるいはまったく）信用していないと答えています。AI を効果的に使用するには、単に導入するだけでなく、厳しい評価と検証の方法を習得することが求められます。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;調査結果その 3: AI の使いどころを心得ている&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;アイ トラッキング データからわかったこと&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;アイ トラッキング技術を使用した調査では、人の動作の面から検証を行いました。1～5 年の経験を持つデベロッパーを対象に、AI コーディング アシスタントとやり取りする様子を観察したところ、タスクの種類によって AI の利用に大きな違いがあることがわかりました。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;思考と深い理解が必要なタスク&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: AI への視覚的注目が 1% 未満&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;機械的なタスク（ボイラープレート コードなど）&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: AI への視覚的注目が 19%&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;高度な作業においては、たとえ AI の提案が正確で時間の節約につながるような場合でも、敢えて無視されていることがわかりました。深い理解が必要なときは、AI は認知上の負担となります。熟練デベロッパーは、AI をオフにすべきときを心得ています。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;すべてを任せるのではなく、意図的に取り入れる&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;学生への聞き取り調査からも、学生が AI を用途に応じて使い分けている様子が伺えます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「私は普段、とっかかりとなるアイデアを得るために AI を使っています。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「AI の使用が許可されていることは知ってましたが、学習と試行錯誤のプロセスを大事にしました。創造性の余地も必要です。」&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;カスタマイズが肝&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;現在、ほとんどの AI コーディング アシスタントは、インライン提案のオン / オフを切り替えたり、オンデマンド専用モードに設定したり、提案頻度を調整したりできます。これらの設定を試して、タスクとその認知要件に応じて AI を使い分けることで、ルーチンワークでは助けてもらいつつ、自分で深く考えたい仕事の邪魔をされないようにすることができます。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;この調査結果が業界において意味すること&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI を利用した開発の未来を形作っていくのは、今の学生たちです&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;調査に協力してくれた学生たちは、時代の一歩先をいっており、すでに AI リテラシーを身につけています。用途に応じた使い分けや、出力の検証方法を心得ており、自らの理解力を維持するためにときには敢えて手動で作業するといった対策をとっています。AI 導入を検討中の方にとって、こうした学生の経験は、進むべき方向を探るヒントとなります。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;さまざまなカスタマイズ設定を試す&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 作業の妨げとならず、助けとなるような設定を見つけましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ワークフローに検証プロセスを取り入れる&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: AI の提案を無批判に受け入れないようにしましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;自分の聖域を確保する&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: スピードよりも深い理解が重要となる高度な問題には、AI の助けを借りずに自分で取り組むようにしましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI がソフトウェア開発の基盤となるにつれ、AI ツールを導入するかどうかよりも、懸命な活用方法が焦点になってきています。カリフォルニア大学バークレー校の学生たちは、その答えの一つを示してくれます。それは、彼らのもつ好奇心や、慎重さ、学習に対する純粋な意欲を、AI は支えることはできても、取って代わることはできない、ということです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;業界の専門家が AI の導入をどのように進めているかについて詳しくは、&lt;/span&gt;&lt;a href="https://dora.dev/dora-report-2025/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;2025 年 DORA レポート: AI 支援によるソフトウェア開発の現状&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をダウンロードしてご覧ください。&lt;/span&gt;&lt;a href="https://dora.dev/insights/tags/uc-berkeley/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;カリフォルニア大学バークレー校の研究者との共同研究による論文全文&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;もあわせてお読みいただけます。&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;sup&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;1. Kosmyna, Nataliya, et al. "Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task." arXiv, 10 June 2025, doi:10.48550/arXiv.2506.08872.（参照日付: 2026 年 1 月 28 日）&lt;/span&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- Andrew Harlan 博士&lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;（独立系 UX リサーチャー兼クリエイティブ テクノロジスト）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- Steve Fadden 博士&lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;（Google、UX リサーチ担当リード）&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 07 Apr 2026 01:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/how-uc-berkeley-students-use-ai-as-a-learning-partner/</guid><category>AI &amp; Machine Learning</category><category>Developers &amp; Practitioners</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>AI リテラシーの新しい形: 学生デベロッパーを対象とした調査結果</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/how-uc-berkeley-students-use-ai-as-a-learning-partner/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Andrew Harlan, Ph.D.</name><title>UX Researcher &amp; Creative Technologist, Independent</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Steve Fadden, Ph.D.</name><title>UX Research Lead, Google</title><department></department><company></company></author></item><item><title>分散 AI エージェントの構築</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/building-distributed-ai-agents/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 19 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/building-distributed-ai-agents?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;率直に言って、1 回だけ動作する AI エージェントを構築するのは簡単です。しかし、本番環境で&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;確実に&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;動作する AI エージェントを構築し、既存の React や Node.js アプリケーションと統合する場合は、まったく別の話です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;（説明は省略して、コードに直接移動したい場合は、&lt;/span&gt;&lt;a href="https://github.com/amitkmaraj/course-creation-ai-agent-architecture" rel="noopener" target="_blank"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;GitHub のコース作成エージェントのアーキテクチャ&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;をご覧ください。）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;身近な例で考えてみましょう。トピックを調査し、コンテンツを生成して、それを評価するという複雑なワークフローがあるとします。このワークフローを、1 つの巨大な Python スクリプトまたは大きなプロンプトに詰め込んだとしましょう。ローカルマシンでは正常に動作しましたが、スマートな外観のフロントエンドに接続しようとすると、厄介なことになります。レイテンシが急上昇し、デバッグが困難で、スケールするためにモノリス全体の複製が必要となります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;一方、AI に対応するために、アプリケーション全体を書き換える必要がないとしたらどうでしょうか。プラグを差し込むだけで使えるとしたら？&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この投稿では、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;オーケストレーター パターン&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;という優れた方法について説明します。具体的には、すべてを請け負う強力なエージェントを 1 つだけ作るのではなく、複数の特化した分散マイクロサービスから成るチームを構築します。このアプローチにより、モノリスの書き換えに悩まされることなく、強力な AI 機能を既存のフロントエンド アプリケーションに直接統合することが可能となります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;そのために、Google の &lt;/span&gt;&lt;a href="https://github.com/google/adk-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使ってエージェントを構築し、&lt;/span&gt;&lt;a href="https://a2a-protocol.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent-to-Agent（A2A）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;プロトコルによって複数のエージェントを接続して相互通信し、&lt;/span&gt;&lt;a href="https://cloud.google.com/run"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Run&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; 上でスケーラブルなマイクロサービスとしてデプロイします。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;分散エージェントを使用する理由（フロントエンド チームに感謝される理由）&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;すでに完成された状態の Next.js アプリケーションがあるとします。これに、「コース作成ツール」という機能を追加したいとしましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;そのためにモノリス エージェントを構築すると、フロントエンドは、長時間かかる単一プロセスがすべて完了するまで待たされることになります。調査部分が滞ると、リクエスト全体がタイムアウトになります。また、個々のエージェントを必要に応じてスケールするといったこともできません。たとえば、評価エージェントがより多くの処理能力を必要とする場合、評価エージェントだけでなく、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;すべて&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;のエージェントをスケールアップすることになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これに対し、分散オーケストレーター パターンを使用すれば、スケーラビリティと柔軟性が得られます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;シームレスなインテグレーション:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; フロントエンドは 1 つのエンドポイント（オーケストレーター）と通信し、オーケストレーターがバックグラウンドで複雑な処理を管理します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;個別にスケーリング:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 評価ステップに時間がかかる場合は、そのサービスだけを 100 インスタンスにスケールアップし、調査サービスは小規模のままにできます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;モジュール式:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 高パフォーマンスのネットワーキング部分を Go で、データ サイエンス部分を Python で記述できます。これらの通信には HTTP を使用します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;全体的な設計: コース作成アプリ&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/building-distributed-ai-agents-course-creator.gif"
        
          alt="building-distributed-ai-agents-course-creator"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、コース作成システムを構築しましょう。以下の 3 つのスペシャリストに分けて考えます。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;調査担当&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 情報を掘り起こすスペシャリスト。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;評価担当&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 品質を保証する QA スペシャリスト。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;オーケストレーター&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 作業間の調整を行い、フロントエンドと通信するマネージャー。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 1: スペシャリスト（リサーチャー）の配備&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、調査の担当者が必要です。ADK を使って、Google 検索の部分のみを担当するエージェントを構築しましょう。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# researcher/app/agent.py\r\nfrom google.adk.agents import Agent\r\nfrom google.adk.tools import google_search\r\n\r\nresearcher = Agent(\r\n    name=&amp;quot;researcher&amp;quot;,\r\n    model=&amp;quot;gemini-2.5-flash&amp;quot;,\r\n    description=&amp;quot;Gathers information on a topic using Google Search.&amp;quot;,\r\n    instruction=&amp;quot;&amp;quot;&amp;quot;\r\n    You are an expert researcher. Your goal is to find comprehensive information.\r\n    Use the `google_search` tool to find relevant information.\r\n    Summarize your findings clearly.\r\n    &amp;quot;&amp;quot;&amp;quot;,\r\n    tools=[google_search],\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f486568b100&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ご覧のように、とても簡単です。このエージェントは、コースやフロントエンドについては関知しません。調査のみを行います。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 2: 評価担当者（構造化されたデータ出力）&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/building-distributed-ai-agents-judge.max-1000x1000.png"
        
          alt="building-distributed-ai-agents-judge"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントからの長ったらしい説明はいりません。コード側で判断しやすいよう、合格（pass）または不合格（fail）の厳密な評価が必要です。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Pydantic&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を使って、このデータ規定を適用しましょう。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# judge/app/agent.py\r\nfrom pydantic import BaseModel, Field\r\nfrom typing import Literal\r\n\r\nclass JudgeFeedback(BaseModel):\r\n    status: Literal[&amp;quot;pass&amp;quot;, &amp;quot;fail&amp;quot;] = Field(\r\n        description=&amp;quot;Whether the research is sufficient (\&amp;#x27;pass\&amp;#x27;) or needs more work (\&amp;#x27;fail\&amp;#x27;).&amp;quot;\r\n    )\r\n    feedback: str = Field(\r\n        description=&amp;quot;Detailed feedback on what is missing.&amp;quot;\r\n    )\r\n\r\njudge = Agent(\r\n    name=&amp;quot;judge&amp;quot;,\r\n    model=&amp;quot;gemini-2.5-flash&amp;quot;,\r\n    description=&amp;quot;Evaluates research findings.&amp;quot;,\r\n    instruction=&amp;quot;&amp;quot;&amp;quot;\r\n    You are a strict editor. Evaluate the findings.\r\n    If they are missing key info, output status=\&amp;#x27;fail\&amp;#x27; and provide feedback.\r\n    &amp;quot;&amp;quot;&amp;quot;,\r\n    output_schema=JudgeFeedback, # Enforce the contract!\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f486568baf0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これで、評価担当者が JSON で話すようになり、アプリケーション ロジックはそれを信頼できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 3: 共通言語（A2A プロトコル）&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/building-distributed-ai-agents-a2a-protoco.max-1000x1000.png"
        
          alt="building-distributed-ai-agents-a2a-protocol"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここでマジックを使いましょう。&lt;/span&gt;&lt;a href="https://a2a-protocol.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;A2A プロトコル&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使って、これらのエージェントをウェブサービスとしてラップします。エージェントの共通言語のようなものとお考えください。エージェントは機能を説明し（&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;agent.json&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;）、標準の HTTP で通信します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# researcher/app/server.py\r\nfrom fastapi import FastAPI\r\nfrom a2a.server.apps import A2AFastAPIApplication\r\nfrom app.agent import app as adk_app\r\n\r\n# ... setup runner ...\r\n\r\n# Create the A2A App wrapper\r\na2a_app = A2AFastAPIApplication(agent_card=agent_card, http_handler=request_handler)\r\n\r\napp = FastAPI(lifespan=lifespan)\r\n\r\n# Register routes: /.well-known/agent.json and /rpc\r\na2a_app.add_routes_to_app(app)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f486568bd00&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これで、リサーチャー（ポート 8000 で実行されるマイクロサービス）を配備できました。このサービスを、オーケストレーターなど、あらゆるものから呼び出すことが可能です。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 4: オーケストレーター パターン&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/building-distributed-ai-agents-orchestrato.max-1000x1000.png"
        
          alt="building-distributed-ai-agents-orchestrator"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、すべてを組み合わせましょう。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;オーケストレーター&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;は、請負業者のようなものです。つまり、自分で調査を行わず、リサーチャーを雇います。自分で判断を下さず、評価担当者に尋ねます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;重要な点は、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;フロントエンドはこのエージェントのみを識別できればよい&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;ということです。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# orchestrator/app/agent.py\r\nfrom google.adk.agents import LoopAgent, SequentialAgent\r\nfrom google.adk.agents.remote_a2a_agent import RemoteA2aAgent\r\n\r\n# Connect to the remote Researcher service\r\nresearcher = RemoteA2aAgent(\r\n    name=&amp;quot;researcher&amp;quot;,\r\n    agent_card=&amp;quot;http://researcher-service:8000/.well-known/agent.json&amp;quot;,\r\n    description=&amp;quot;Gathers information on a topic.&amp;quot;\r\n)\r\n\r\n# Connect to the remote Judge service\r\njudge = RemoteA2aAgent(\r\n    name=&amp;quot;judge&amp;quot;,\r\n    agent_card=&amp;quot;http://judge-service:8000/.well-known/agent.json&amp;quot;,\r\n    description=&amp;quot;Evaluates research findings.&amp;quot;\r\n)\r\n\r\n# The Orchestrator manages the loop\r\nresearch_loop = LoopAgent(\r\n    name=&amp;quot;research_loop&amp;quot;,\r\n    sub_agents=[researcher, judge, escalation_checker],\r\n    max_iterations=3,\r\n)\r\n\r\n# The full pipeline\r\nroot_agent = SequentialAgent(\r\n    name=&amp;quot;course_creation_pipeline&amp;quot;,\r\n    sub_agents=[research_loop, content_builder],\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f486568ba30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;オーケストレーターが複雑な処理（再試行、ループ、状態管理）を担当するため、フロントエンドはクリーンかつシンプルに保たれます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;デプロイ:「食料品店」モデル&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このシステムを Cloud Run にデプロイすることを、私は「食料品店」モデルと呼んでいます。チェックアウトの列（リサーチャーのタスク）が長くなっても、新しい店舗を建設する必要はありません。レジを増やせばいいだけです。Cloud Run は、調査の負荷増大に対応するために調査サービスのみをスケールし、評価サービスはそのまま保たれます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;注意事項、セキュリティ上の配慮&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;もちろん、大いなる力には大きな責任が伴います（そして、セキュリティ チェックが必要となります）。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;認証&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このデモでは、エージェントはオープンな HTTP を介して通信しています。本番環境では、このアクセスを&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;制限する必要&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;があります。mTLS、OIDC、または API キーを使用して、オーケストレーターのみがリサーチャーと通信できるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;レイテンシ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ホップごとに時間が追加されます。オーケストレーター パターンは、詳細レベルの頻繁なインタラクションではなく、ざっくりとしたタスク（「このトピックを調査して」など）に使用するようにしましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;エラー処理&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ネットワークにはエラーがつきものです。オーケストレーターには、タイムアウトと再試行を適切に処理できるような堅牢性が必要です。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;構築を始めるにあたって&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;あらゆる作業を請け負う 1 つの巨大なエージェントを構築するのはやめましょう。&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;オーケストレーター パターン&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;と分散マイクロサービスを使用することで、スケーラブルで保守が容易な AI システムを構築できるだけでなく、既存のアプリとスムーズに連携できるというメリットも得られます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コードについては、&lt;/span&gt;&lt;a href="https://github.com/amitkmaraj/course-creation-ai-agent-architecture" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub のコース作成エージェントのアーキテクチャ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で詳細をご確認ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;準備ができたら、&lt;/span&gt;&lt;a href="https://cloud.google.com/run"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Run&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://github.com/google/adk-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://a2a-protocol.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;A2A&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使ってさっそくエージェント チームを結成しましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;AI デベロッパーリレーションズ エンジニア、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Amit Maraj&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 02 Apr 2026 03:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/building-distributed-ai-agents/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/building-distributed-ai-agents-hero.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>分散 AI エージェントの構築</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/building-distributed-ai-agents-hero.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/building-distributed-ai-agents/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Amit Maraj</name><title>AI Developer Relations Engineer</title><department></department><company></company></author></item><item><title>マルチクラスタ GKE Inference Gateway のご紹介: 世界中で AI ワークロードをスケール</title><link>https://cloud.google.com/blog/ja/products/containers-kubernetes/multi-cluster-gke-inference-gateway-helps-scale-ai-workloads/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 18 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/containers-kubernetes/multi-cluster-gke-inference-gateway-helps-scale-ai-workloads?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI の世界は急速に変化しており、モデルのサービングを大規模かつ確実に行う必要性も高まっています。このたび、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;マルチクラスタ GKE Inference Gateway&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; のプレビュー版がリリースされましたのでお知らせいたします。これにより、複数の Google Kubernetes Engine（GKE）クラスタにわたり（異なる Google Cloud リージョンにまたがる場合も含め）、AI / ML 推論ワークロードのスケーラビリティ、復元力、効率性を強化できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/gateway-api?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GKE Gateway API&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; の拡張機能として構築されたマルチクラスタ Inference Gateway は、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/multi-cluster-gateways?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;マルチクラスタ Gateway&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; の機能を活用して、特に要求の厳しい AI アプリケーション向けに、モデル対応のインテリジェントなロード バランシングを提供します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_gRilinA.max-1000x1000.jpg"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;AI 推論にマルチクラスタを使用する理由&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI モデルの複雑性が増し、ユーザーのグローバル化が進むにつれて、単一クラスタのデプロイでは次のような課題に直面する可能性があります。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;可用性のリスク:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; リージョンの停止やクラスタのメンテナンスがサービスに影響を及ぼす可能性があります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;スケーラビリティの上限:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 単一のクラスタまたはリージョン内で、ハードウェアの上限（GPU / TPU）に達してしまいます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;リソースのサイロ化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; あるクラスタで十分に活用されていないアクセラレータ容量を別のクラスタで使用できません。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;レイテンシ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; サービスを提供しているクラスタから離れているユーザーはレイテンシが高くなる可能性があります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;マルチクラスタ GKE Inference Gateway は、これらの課題に正面から取り組み、次のようなさまざまな機能とメリットを提供します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;信頼性とフォールト トレランスの強化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 異なるリージョン間を含め、複数の GKE クラスタにわたってトラフィックをインテリジェントにルーティングします。1 つのクラスタまたはリージョンで問題が発生した場合、トラフィックは自動的に再ルーティングされ、ダウンタイムが最小限に抑えられます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;スケーラビリティの向上とリソース使用量の最適化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; さまざまなクラスタから GPU / TPU リソースをプールして活用できます。単一クラスタの容量を超えてバーストすることで需要の急増に対応し、利用可能なアクセラレータをフリート全体で効率的に活用できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;グローバルに最適化されたモデル対応のルーティング:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Inference Gateway は、高度なシグナルを使用してスマートなルーティング判断を下すことができます。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;GCPBackendPolicy&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、リアルタイムのカスタム指標（モデルサーバーの KV キャッシュ使用率指標など）に基づいてロード バランシングを構成できるので、最適なバックエンド インスタンスにリクエストが送信されるようになります。処理中リクエストの制限など、他のモードもサポートされています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;運用の簡素化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; モデルを複数の「ターゲット クラスタ」で実行しながら、専用の GKE「構成クラスタ」で 1 つの Inference Gateway 構成を使用して、グローバルに分散された AI サービスへのトラフィックを管理できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;仕組み&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE Inference Gateway には、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;InferencePool&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;InferenceObjective&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; という 2 つの基本リソースがあります。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;InferencePool&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; は、同じコンピューティング ハードウェア（GPU や TPU など）とモデル構成を共有する Pod のリソース グループとして機能し、スケーラブルで高可用性のサービングを実現します。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;InferenceObjective&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; は、特定のモデル名を定義し、サービングの優先順位を割り当てます。これにより、Inference Gateway はトラフィックをインテリジェントにルーティングし、レイテンシの影響を受けやすいタスクと緊急性の低いワークロードを多重化できます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_ek1kPQE.max-1000x1000.png"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このリリースでは、Kubernetes カスタム リソースを使用して、分散推論サービスが管理されます。各「ターゲット クラスタ」の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;InferencePool&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リソースは、モデルサーバーのバックエンドをグループ化します。これらのバックエンドはエクスポートされ、「構成クラスタ」で &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;GCPInferencePoolImport&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リソースとして表示されます。構成クラスタ内の標準の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Gateway&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リソースと &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;HTTPRoute&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リソースは、エントリ ポイントとルーティング ルールを定義し、トラフィックをこれらのインポートされたプールに転送します。&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;CUSTOM_METRICS&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; や &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;IN_FLIGHT&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リクエストの使用など、きめ細かいロード バランシングの動作は、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;GCPInferencePoolImport&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; にアタッチされた &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;GCPBackendPolicy&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; リソースを使用して構成されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このアーキテクチャにより、グローバルな低レイテンシのサービング、障害復旧、容量のバースト、異種ハードウェアの効率的な使用などのユースケースが可能になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE Inference Gateway のコアコンセプトについて詳しくは、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/about-gke-inference-gateway#understand_key_concepts"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ガイド&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;使ってみる&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI 推論サービング ワークロードをより多くの場所とより多くのユーザーにスケールする際に、マルチクラスタ GKE Inference Gateway をぜひお試しください。詳細と利用方法については、次のドキュメントをご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/about-multi-cluster-inference-gateway"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;マルチクラスタ GKE Inference Gateway について&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/setup-multicluster-inference-gateway"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;マルチクラスタ GKE Inference Gateway を設定する&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/customize-backend-multicluster-inference-gateway"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GCPBackendPolicy でバックエンド構成をカスタマイズする&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;シニア プロダクト マネージャー、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Arman Rye&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;シニアスタッフ ソフトウェア エンジニア、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Andres Guedez&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 25 Mar 2026 03:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/containers-kubernetes/multi-cluster-gke-inference-gateway-helps-scale-ai-workloads/</guid><category>AI &amp; Machine Learning</category><category>GKE</category><category>Networking</category><category>Developers &amp; Practitioners</category><category>Containers &amp; Kubernetes</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>マルチクラスタ GKE Inference Gateway のご紹介: 世界中で AI ワークロードをスケール</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/containers-kubernetes/multi-cluster-gke-inference-gateway-helps-scale-ai-workloads/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Arman Rye</name><title>Senior Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Andres Guedez</name><title>Senior Staff Software Engineer</title><department></department><company></company></author></item><item><title>Vertex AI で復元力の高い LLM アプリケーションを構築し、429 エラーを減らす</title><link>https://cloud.google.com/blog/ja/products/ai-machine-learning/reduce-429-errors-on-vertex-ai/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 13 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/reduce-429-errors-on-vertex-ai?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI で大規模言語モデル（LLM）を活用したアプリケーションを構築するのは楽しいことですが、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/error-code-429?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;429 エラー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;が発生すると、イライラの原因になることがあります。これらのエラーは、リクエストの受信速度が、その時点でサービスが処理できる量を上回っていることを示しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;昨年、Google はこれらの 429 エラーの処理に関する&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/learn-how-to-handle-429-resource-exhaustion-errors-in-your-llms?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ガイドを公開&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;しました。この記事では、Vertex AI の使用量モデルについて詳しく掘り下げ、リクエスト フローを管理するためのアーキテクチャのベスト プラクティスについて説明します。これにより、スムーズで復元力が高く、真にスケーラブルな AI アプリケーションを構築できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;適切な使用量オプションの選択&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI は、さまざまなタイプとボリュームの API トラフィックに対応するように設計された、幅広い使用量モデルが用意されています。429 エラーを最小限に抑えるための主な戦略は、アプリケーション固有のトラフィック パターンに最も適した使用量モデルを選択することです。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Build_Resilient_LLM_Applications_on_Vertex.max-1000x1000.jpg"
        
          alt="Build Resilient LLM Applications on Vertex AI and Reduce 429 Errors"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;デフォルト オプション: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI の Gemini におけるデフォルト オプションは、Standard 従量制（Paygo）です。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/standard-paygo?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Standard 従量制&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（Paygo）トラフィックの場合、Vertex AI は使用量ティアシステムを使用します。この動的なアプローチでは、共有プールからリソースが割り当てられ、組織の過去の費用に基づいて使用量ティアとベースライン スループット（TPM）が決まります。このベースラインにより、一般的なワークロードの予測可能なパフォーマンスの下限が決まるものの、アプリケーションは引き続きベスト エフォート ベースでそれ以上のパフォーマンスを発揮できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;予測不可能で、Standard Paygo よりも高い信頼性を必要とする、重要なユーザー向けトラフィックをアプリケーションが生成する場合は、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/priority-paygo?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Priority Paygo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; が適しています。リクエストに優先度ヘッダーを追加することで、そのトラフィックを優先すべきであることを示し、スロットリングされる可能性を減らします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;リアルタイム トラフィックの量が常に多いアプリケーションの場合、共有 PayGo プールから分離できる使用量オプションは&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/overview?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;プロビジョンド スループット&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（PT）だけであり、PayGo における競合が激しい場合でもエクスペリエンスが安定します。PT では、保証されたスループットを予約して料金を支払うことで、重要なトラフィックがスムーズに流れるようにします。&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/products/ai-machine-learning/provisioned-throughput-on-vertex-ai?e=48754805&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI での PT について詳しくは、こちらのガイドをご覧ください。&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;費用対効果の高いオプション: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI には、レイテンシの影響を受けにくいトラフィック向けに、費用対効果の高いオプションが用意されています。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/flex-paygo"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Flex PayGo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; は、レイテンシが許容されるトラフィックに適しており、リクエストを低料金で処理します。オフライン分析や一括データ拡充などの大規模な非同期ジョブは、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/batch-prediction-gemini"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Batch&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; で処理するのが最適です。このサービスは、スケーリングや再試行を含むワークフロー全体をより長い期間（約 24 時間）にわたって管理し、メインのアプリケーションをこの高い負荷から保護します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;複雑なアプリケーションとハイブリッド アプローチ: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;複雑なアプリケーションでは、ハイブリッド アプローチがよく利用されます。PT は最も重要なリアルタイム トラフィック、Priority Paygo は変動するトラフィック、Standard Paygo は一般的なリクエスト、Batch / Flex はレイテンシが許容されるオフラインのリクエスト フローに使用されます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Vertex AI で 429 エラーを減らす 5 つの方法&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. スマート再試行の実装&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;アプリケーションで 429（リソース不足）や 503（サービス利用不可）などの一時的なオーバーロード エラーが発生した場合、すぐに再試行することは推奨されません。ベスト プラクティスとして、ジッターを伴う指数バックオフと呼ばれる再試行戦略を実装できます。指数バックオフとは、再試行の間隔が指数関数的に長くなり、通常は事前定義された上限まで長くなることを意味します。これにより、サービスが過負荷状態から回復する時間を確保できます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;SDK とライブラリ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/retry-strategy#configuring-retries"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Gen AI SDK&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; には、クライアント パラメータの HttpRetryOptions を使用して構成できるネイティブの再試行動作が含まれています。ただし、&lt;/span&gt;&lt;a href="https://github.com/jd/tenacity" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Tenacity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（Python 用）などの専用ライブラリを活用したり、カスタム ソリューションを構築したりすることもできます。詳しくは、こちらの&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/learn-how-to-handle-429-resource-exhaustion-errors-in-your-llms"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ブログ投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェント ワークフロー:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; エージェントを開発するために、&lt;/span&gt;&lt;a href="https://google.github.io/adk-docs/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;には &lt;/span&gt;&lt;a href="https://google.github.io/adk-docs/integrations/reflect-and-retry/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Reflect and Retry プラグイン&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;が用意されています。このプラグインは、429 エラーを自動的にインターセプトすることで、AI ワークフローに復元力を組み込みます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;インフラストラクチャとゲートウェイ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/apigee-samples/tree/main/llm-circuit-breaking" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Apigee によるサーキット ブレーキング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;も、復元力を高めるためのもう一つの堅牢なオプションです。これにより、トラフィックの分散を管理し、正常な障害処理を実装できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. グローバル モデル ルーティングの活用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI のインフラストラクチャは複数のリージョンに分散されています。デフォルトでは、特定のリージョン エンドポイントをターゲットにした場合、リクエストはそのリージョンから処理されます。これは、その単一リージョンの容量に基づいてアプリケーションの可用性が決まることを意味します。そして、グローバル エンドポイントが、可用性と復元力を高めるための効果的なツールとなります。グローバル エンドポイントは、1 つのリージョンに限定されるのではなく、可用性がより高い可能性のあるリージョン フリート全体にトラフィックをルーティングし、潜在的なエラー率を低減します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;3. コンテキスト キャッシュによるペイロードの削減&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI の負荷を軽減する効果的な方法として、繰り返しクエリの呼び出しを避けることができます。多くの本番環境アプリケーション、特に chatbot やサポートシステムでは、似たような質問が頻繁に寄せられます。それらの質問を再処理する代わりに、&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-context-caching?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;コンテキスト キャッシュ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を実装できます。コンテキスト キャッシュ保存を使用すると、Gemini は事前に計算されたキャッシュ トークンを再利用するため、API トラフィックとスループットを削減できます。これにより、費用を節約できるだけでなく、プロンプト内の繰り返しコンテンツのレイテンシも短縮されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;4. プロンプトの最適化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;各リクエストのトークン数を減らすと、TPM の使用量と費用が直接削減されます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Flash-Lite による要約: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini Pro などのモデルに長い会話履歴を送信する前に、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash-lite"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 2.5 Flash-Lite&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; などの軽量モデルを使用してコンテキストを要約します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェント メモリ最適化: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;エージェント ワークロードでは、Vertex AI &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/agent-builder/agent-engine/memory-bank/overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Engine Memory Bank&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を活用できます。メモリーの抽出と統合などの機能により、会話から意味のある事実を抽出できるため、エージェントは未加工のチャット履歴がなくてもコンテキスト アウェアな状態を維持できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;プロンプトの衛生:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; プロンプトを確認し、詳細すぎる JSON スキーマの説明（モデルがすでに精通している場合）を減らし、過剰な空白や冗長な書式設定を削除します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;5. トラフィックのシェイプ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;リクエストの急激なバーストは、429 エラーの主な原因です。平均トラフィック レートが低くても、急激に増加するとリソースに負荷がかかる可能性があります。目標は、トラフィックを平滑化し、長期間にわたってリクエストを分散することです。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;使ってみる&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ご紹介したパターンを実際に使用される場合は、&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/vertex-ai-samples/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; GitHub の Vertex AI サンプル&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を確認するか、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/overview?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud 初心者向けガイド&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/start"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI クイックスタート&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用して次のプロジェクトをすぐに開始するか、&lt;/span&gt;&lt;a href="https://google.github.io/adk-docs/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で次の AI エージェントの構築を開始してください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- Google Cloud シニア プロダクト マネージャー、Richard Liu&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- Cloud AI テクニカル エバンジェリスト、Pedro Melendez&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 23 Mar 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/ai-machine-learning/reduce-429-errors-on-vertex-ai/</guid><category>Developers &amp; Practitioners</category><category>AI &amp; Machine Learning</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Vertex AI で復元力の高い LLM アプリケーションを構築し、429 エラーを減らす</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/ai-machine-learning/reduce-429-errors-on-vertex-ai/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Richard Liu</name><title>Senior Product Manager, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Pedro Melendez</name><title>Cloud AI Technical Evangelist</title><department></department><company></company></author></item><item><title>Ollama、GKE の GPU 共有、vCluster を使って、費用対効果の高い AI を実現する</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/cost-effective-ai-with-ollama-gke-gpu-sharing-and-vcluster/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 7 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/cost-effective-ai-with-ollama-gke-gpu-sharing-and-vcluster?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;組織が AI ワークロードをスケールすると、主に 2 つの課題が浮上します。1 つは、使用率の低い GPU に費用がかさむということ、もう 1 つは、複数チームの分離環境を管理運用するのが複雑であるということです。経験則として、GPU 全体を 1 つの Pod に割り当てるのは非効率です。また一方で、チームごとに個別のクラスタを管理すると、運用上の負担が大きくなるという問題があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この投稿では、Google Kubernetes Engine（GKE）の &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus#gpu_time-sharing_or_nvidia_mps"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GPU タイム シェアリング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;と、マルチ テナンシー用の &lt;/span&gt;&lt;a href="https://www.vcluster.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;vCluster&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を組み合わせて、この両方の問題を解決する方法を紹介します。具体的には、分離した複数の仮想環境に &lt;/span&gt;&lt;a href="https://ollama.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Ollama&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; をデプロイしてオープンモデル（Mistral など）を提供し、これらの環境で 1 つの物理的な GPU インフラストラクチャを共有します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;アーキテクチャ: 共有ハードウェア上の仮想クラスタ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このアーキテクチャでは、GKE Autopilot を活用して物理インフラストラクチャを抽象化しています。ワークロードをデプロイすると、Autopilot が GPU やドライバなどの必要なハードウェアをオンデマンドでプロビジョニングしてくれるため、ノードの管理は不要です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これにより複数のチームがそれぞれ分離された環境内で、API、Ollama インスタンスや、場合によっては異なるモデルを使用しながら、これらをすべて費用対効果の高い同じ共有 GPU ノードで実行することが可能となります。たとえば、チーム A（法務調査など）とチーム B（カスタマー サポートなど）が、GPU リソースを共有しながら、別々の環境で作業できます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/cost-effective-ai-ollama-gke-vcluster-shar.max-1000x1000.png"
        
          alt="cost-effective-ai-ollama-gke-vcluster-shared-nodes"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;vCluster では、既存の Kubernetes クラスタ上に仮想 Kubernetes クラスタを作成できます。vCluster はさまざまなテナンシー モードをサポートしています。たとえば、この図に示されている共有ノードモデルでは、各仮想クラスタが独自の分離したコントロール プレーンを取得しながら、基盤となるワーカーノードを共有しています。個々の仮想クラスタには、そのクラスタへのフルアクセスを持つ管理者がアクセスでき、他のチームとの干渉は発生しません。このモデルでは、ホストクラスタ機能も適宜利用できるほか、各仮想クラスタ内に独自のコントローラや CRD をデプロイできます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;vCluster では、次のいずれかのテナンシー モードを使用できます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;共有ノード&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このモードでは、複数の仮想クラスタが同じ物理 Kubernetes ノードでワークロードを実行できます。この構成は、リソース使用率の最大化が最優先のシナリオに最適です。特に、社内の開発環境、CI / CD パイプラインや、コスト重視のユースケースに適しています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;プライベート ノード&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このモードでは、ホストクラスタのワーカーノードを共有せず、個々の vCluster にそれぞれワーカーノードを追加します。これらのプライベート ノードはその vCluster のワーカーノードとして機能し、同じホストクラスタ内の他の vCluster には共有されません。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;自動ノード&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ノードとリソースの要件に基づいて、ワーカーノードを自動的にプロビジョニングして追加するように vCluster を構成します。自動ノードを使用するには、vCluster Platform をインストールし、それに vCluster を接続する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;スタンドアロン&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: これは、コントロール プレーンとノードに関してアーキテクチャが異なるモードです。スタンドアロン モードでは、ホストクラスタは不要です。他の Kubernetes ディストリビューションと同様、vCluster はノードに直接デプロイされます。スタンドアロンの vCluster は、ベアメタル ノードや VM など、あらゆるタイプのノードで実行できます。コントロール プレーンやワーカーノードの共有ホストクラスタがないため、ワークロードを最も厳格に分離できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;デプロイ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;デプロイ手順に沿って進めるには、次のものがインストールされていることを確認してください。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/sdk/docs/install-sdk"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;gcloud CLI&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="http://vcluster.com/install" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;vcluster CLI&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://kubernetes.io/docs/reference/kubectl/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;kubectl&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://kubectx.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;kubectx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 1: GKE Autopilot クラスタを設定して作成する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE Standard とは異なり、ノード数を計算したり、ノードプールを手動で構成したりする必要はありません。自動的にクラスタが作成されて、認証情報が取得されます。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;環境変数を設定し、GKE Autopilot クラスタを作成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;export PROJECT_ID=YOUR_PROJECT_ID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;export REGION=YOUR_REGION_ID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# GKE Autopilot クラスタを作成する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud container clusters create-auto vcluster-gpu-sharing \&lt;/code&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;  --region=$REGION --project $PROJECT_ID&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;YOUR_PROJECT_ID&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;YOUR_REGION_ID&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; は、使用する Google Cloud プロジェクトとリージョンに置き換えます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ローカルの kubectl を構成するために、認証情報を取得します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud container clusters get-credentials vcluster-gpu-sharing \&lt;/code&gt;&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;  --region $REGION --project $PROJECT_ID&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 2: 仮想クラスタ（vCluster）を作成する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Autopilot クラスタを実行すると、テナントに対して分離環境を作成できるようになります。ここでは、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;demo1&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;demo2&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; の 2 つの vCluster を作成します。構成には &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;vcluster.yaml&lt;/code&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;マニフェスト ファイルが必要です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE Autopilot を使用する場合、最初の vCluster の作成には数分かかることがあります。これは、独自のコントロール プレーンの Pod が稼働するのを待機するためです。Autopilot はこの新しいワークロードに対して基盤となるノードを動的にプロビジョニングするため、インフラストラクチャが初期化されるまで少々遅延が発生します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Create the vcluster configuration file\r\ncat &amp;lt;&amp;lt;EOF &amp;gt; vcluster.yaml\r\n# Place your vCluster configuration here. \r\n# For GPU workloads on GKE Autopilot, this typically involves \r\n# enabling node synchronization so the vCluster can see the \r\n# underlying GPU nodes provided by Autopilot.\r\nsync:\r\n fromHost:\r\n   ingressClasses:\r\n     enabled: true\r\n   nodes:\r\n     enabled: true\r\n toHost:\r\n   ingresses:\r\n     enabled: true\r\nEOF\r\n\r\n# Create the first virtual cluster\r\nvcluster create demo1 -n demo1 -f vcluster.yaml\r\n\r\n# Create the second virtual cluster\r\nvcluster create demo2 -n demo2 -f vcluster.yaml&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652e2910&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;注&lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;: vCluster を別の vCluster 内に作成しようとしているというエラー警告が表示された場合は、[&lt;/span&gt;&lt;code style="font-style: italic; vertical-align: baseline;"&gt;no&lt;/code&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;] を選択して、正しいホスト コンテキストに切り替えてください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 3: Ollama を仮想クラスタにデプロイする&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、Ollama のデプロイ マニフェストを作成します。このマニフェストによって Ollama をデプロイし、Kubernetes Service を使用してポート 11434 で公開します。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Ollama の デプロイ マニフェストを作成します。このマニフェストによって Ollama をデプロイし、Kubernetes Service を使用してポート 11434 で公開します。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GPU タイム シェアリング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用するノードを選択します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# Ollama のデプロイ マニフェストを作成する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; ollama.yaml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;apiVersion: apps/v1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kind: Deployment&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;metadata:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; name: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; namespace: default&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;spec:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; replicas: 1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; selector:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;   matchLabels:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;     app: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; template:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;   metadata:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;     labels:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       app: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;   spec:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;     nodeSelector:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;    # GPU タイム シェアリングを使用するノードを選択する。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;    # 基盤の GPU を一定数のコンテナで共有することを&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;    # 許可するノードを選択する。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;    # Nvidia L4 GPU を搭載したノードを選択する。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       cloud.google.com/gke-gpu-sharing-strategy: "time-sharing"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       cloud.google.com/gke-max-shared-clients-per-gpu: "5"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       cloud.google.com/gke-accelerator: nvidia-l4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;     containers:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;     - name: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       image: ollama/ollama:latest&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       ports:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       - containerPort: 11434&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;       resources:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;         limits:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;           nvidia.com/gpu: 1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;---&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;apiVersion: v1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kind: Service&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;metadata:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; name: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; namespace: default&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;spec:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; selector:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;   app: ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; ports:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; - port: 11434&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;   targetPort: 11434&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; type: ClusterIP&lt;/code&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;EOF&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;vCluster がアクティブになったら、コンテキストを切り替えて demo1 内で作業します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# 仮想クラスタ demo1 に接続する&lt;/span&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;vcluster connect demo1 -n demo1&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;仮想環境に Ollama をデプロイします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# デプロイ マニフェストを適用する&lt;/span&gt;&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;kubectl apply -f ollama.yaml&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;仮想クラスタ内にいても、GPU をリクエストする Pod を作成すると、このリクエストはホストに同期されます。GKE Autopilot はこのリクエストを検出し、ワークロードを実行するノードに必要な GPU ハードウェアを自動的にアタッチします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 4: モデルの pull とテスト&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;サーバーが実行されたら、仮想クラスタのコンテキスト内で、モデルの pull とテストを実行します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# Pod 内で pull コマンドを実行する&lt;/span&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;kubectl exec -it &amp;lt;pod-name&amp;gt; -- ollama pull mistral&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;API を検証します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# Ollama サービスをポート転送する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kubectl port-forward svc/ollama 8080:11434&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# 新しいウィンドウでチャット リクエストを送信する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;curl -s http://localhost:8080/api/chat \&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt; -H "Content-Type: application/json" \&lt;/code&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt; -d '{ "model": "mistral", "stream": false, "messages": [ {"role": "user", "content": "Explain GKE Autopilot"} ] }' | jq -r '.message.content'&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 5: Ollama を vCluster demo2 にデプロイする&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;同じ手順を繰り返して、Ollama をデプロイし、モデルを 2 つ目の仮想クラスタに pull します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# 仮想クラスタに接続する\r\nvcluster connect demo2 -n demo2\r\n\u200b\r\n# デプロイ マニフェストを適用する\r\nkubectl apply -f ollama.yaml\r\n\u200b\r\n# Pod 内で pull コマンドを実行する\r\nkubectl exec -it &amp;lt;pod-name&amp;gt; -- ollama pull mistral\r\n\u200b\r\n# Ollama サービスをポート転送する\r\nkubectl port-forward svc/ollama 8080:11434\r\n\u200b\r\n# 新しいウィンドウでチャット リクエストを送信する\r\ncurl -s http://localhost:8080/api/chat \\\r\n-H &amp;quot;Content-Type: application/json&amp;quot; \\\r\n-d \&amp;#x27;{ &amp;quot;model&amp;quot;: &amp;quot;mistral&amp;quot;, &amp;quot;stream&amp;quot;: false, &amp;quot;messages&amp;quot;: [ {&amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;Explain GKE Autopilot&amp;quot;} ] }\&amp;#x27; | jq -r \&amp;#x27;.message.content\&amp;#x27;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652e2610&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;基盤となるインフラストラクチャを検証する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;それでは、ホストクラスタのコンテキストに戻って、何が起こっているかを確認しましょう。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;プロビジョニングされたノードの数と、Ollama Pod が実行されている場所を確認します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# 利用可能なコンテキストを一覧表示する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kubectx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# ホストクラスタのコンテキストに切り替える&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kubectx gke_$PROJECT_ID_$REGION_vcluster-gpu-sharing&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# ノードを一覧表示する&lt;/span&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;Kubectl nodes&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;2 つのノードが表示されるはずです。1 つは vCluster コンポーネントを実行しています。もう 1 つは、L4 GPU を使用して Ollama インスタンスを実行しています。出力は次のようになります（ノード名は異なります）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# kubectl get nodes の出力&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;$ kubectl get nodes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;NAME                                                  STATUS   ROLES    AGE    VERSION&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;gk3-vcluster-gpu-sharing-nap-1w88cyly-895203e4-xbqk   Ready    &amp;lt;none&amp;gt;   7h8m   v1.33.5-gke.2072000&lt;/code&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;gk3-vcluster-gpu-sharing-pool-2-0a984fed-7mff         Ready    &amp;lt;none&amp;gt;   4d     v1.33.5-gke.2072000&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Ollama Pod が実行されている場所を確認します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;# Ollama Pod を実行しているノードを確認する&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;kubectl get pods -n demo1 -o wide&lt;/code&gt;&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;code style="vertical-align: baseline;"&gt;kubectl get pods -n demo2 -o wide&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;両方の Ollama Pod が同じノードで実行されていることに注目してください。このノードは GKE Autopilot によってプロビジョニングされ、L4 GPU と GPU 共有を使用するように構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この例では、GKE Autopilot を使用することで、GPU ノードプールやタイム シェアリングを手動で構成せずに済んでいます。Autopilot によってリソースが動的に提供される一方で、vCluster によって、チーム A の法務調査データとチーム B のカスタマー サポートの bot が完全に分離されています。この実装方法により、AI ワークロードのスケーリングにおいて堅牢でメンテナンスの少ないプラットフォームを実現できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;シニア クラウド デベロッパー アドボケイト、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Abdel Sghiouar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;vCluster デベロッパーリレーションズ、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Saiyam Pathak&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 17 Mar 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/cost-effective-ai-with-ollama-gke-gpu-sharing-and-vcluster/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/cost-effective-ai-ollama-gke-vcluster-hero.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Ollama、GKE の GPU 共有、vCluster を使って、費用対効果の高い AI を実現する</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/original_images/cost-effective-ai-ollama-gke-vcluster-hero.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/cost-effective-ai-with-ollama-gke-gpu-sharing-and-vcluster/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Abdel Sghiouar</name><title>Senior Cloud Developer Advocate</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Saiyam Pathak</name><title>DevRel</title><department></department><company>vCluster</company></author></item><item><title>プロダクション レディな AI エージェントに関するデベロッパー ガイド</title><link>https://cloud.google.com/blog/ja/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 26 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この 1 年間で、デベロッパー コミュニティに変化が生じました。AI エージェントは、「興味深い研究コンセプト」から「チームが実際に構築しているもの」へと進化したのです。プロトタイプは機能しています。デモが示す可能性には目を見張るものがあります。ところが、ここで難題が持ち上がります。AI エージェントをどのようにリリースすればよいのでしょうか？&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この問いは多面的です。エージェントは従来のソフトウェアのようには動作しません。推論し、行動し、適応するという性質から、エージェントにはテスト、メモリ、オーケストレーション、セキュリティに対して異なるアプローチが求められます。決定的なコードで有効だったパターンをそのまま適用することはできません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;開発者がこれらの課題を解決できるよう、Google はエージェントのライフサイクル全体を網羅したガイド集を公開しました。これらのリソースは、Kaggle の &lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/ai-agents-intensive-recap/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;5 日間 AI エージェント集中講座&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で初めて公開されました。そこで非常に高い人気と有用性が確認されたことから、より多くのユーザーに向けて公開する運びとなりました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらのガイドでは、実用的なフレームワークとコードサンプルが提供されており、自身のプロジェクトに合わせて柔軟に適用できます。以下では、エージェントのアーキテクチャから本番環境へのデプロイまで、主要なコンセプトを順を追って説明します。それに基づき、どのテーマについてより深掘りすべきかを判断してください。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_ylYpswm.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="85i7q"&gt;&lt;b&gt;エージェントとは&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="6j6kl"&gt;エージェントの中核をなすものは、推論、行動、経時的な改善を行う自律的なエンティティです。エージェントの頭脳は大規模言語モデルです。これは、タスクを理解し、回答を生成し、コンテキストに基づいて意思決定を行う認知エンジンです。エージェントは静的なツールとは異なり、動作する中で適応します。思考、行動、観察という再帰的なループに基づいて機能します。各サイクルでエージェントは進歩し、その過程でアプローチを洗練させます。&lt;/p&gt;&lt;p data-block-key="18h6j"&gt;この中核の周囲にあるのがオーケストレーション レイヤであり、これは通信とデータフローを管理する神経系の役割を果たします。専門的なツールや外部サービスを調整する指揮者のようなものです。これには、即座に思い出すための短期記憶（セッションの状態）、過去のインタラクションを保持するための長期記憶（メモリサービス）、情報検索（RAG）、外部の世界でアクションを実行するためのモジュール（ツールの使用）などが含まれます。セキュリティ フレームワークにより、エージェントが安全に、意図された境界内で動作することが保証されます。このアーキテクチャの目的は、インテリジェントで有用かつ信頼できるアシスタントを作成することです。&lt;/p&gt;&lt;p data-block-key="cr1dd"&gt;これらの基本コンセプトの詳細については、&lt;a href="https://www.kaggle.com/whitepaper-introduction-to-agents"&gt;エージェントの概要&lt;/a&gt;に関するガイドをご覧ください。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_g9ipmBn.max-1000x1000.png"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="szm03"&gt;&lt;b&gt;ツールと相互運用性&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="1v29r"&gt;エージェントが真に有用であるためには、ツール、データソース、他のエージェントとやり取りできる必要があります。2 つの新しいプロトコルが、そうした接続に対する標準化されたアプローチを提供します。&lt;/p&gt;&lt;p data-block-key="bfshe"&gt;Anthropic の Model Context Protocol（MCP）により、エージェントは外部のデータソースやステートレス ツールに標準化された方法で接続できます。デベロッパーは、サービスごとにカスタム統合を構築する代わりに、MCP の標準化されたインターフェースを使用して開発を簡素化し、相互運用性を向上させることができます。&lt;/p&gt;&lt;p data-block-key="7f2l9"&gt;Google の Agent2Agent プロトコル（A2A）はさらに一歩踏み込み、基盤となるフレームワークにかかわらずエージェント間の直接通信を可能にします。A2A を使用するエージェントは、安全かつ構造化されたメッセージの交換を通じて、互いの能力を把握し、やり取りの方法を交渉し、連携してタスクを処理します。&lt;/p&gt;&lt;p data-block-key="87mj8"&gt;これらのプロトコルを組み合わせることで、ツール、データ、他のエージェントとの接続を通じてより広範なエコシステム内で動作するエージェントの基盤が構築されます。&lt;a href="https://www.kaggle.com/whitepaper-agent-tools-and-interoperability-with-mcp"&gt;ツールと MCP による相互運用性&lt;/a&gt;に関するガイドでは、実装例とともにこれら 2 つのプロトコルについて詳しく説明しています。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_q0z5p4C.max-1000x1000.png"
        
          alt="3"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="szm03"&gt;&lt;b&gt;コンテキスト エンジニアリング&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="c2rl4"&gt;LLM がエージェントの脳であるとすれば、コンテキスト エンジニアリングは、適切な情報を適切なタイミングで LLM に提供する手法です。これには、プロンプト設計、検索メカニズム、ツールの選択、会話履歴など、エージェントが各リクエストを理解して応答する方法を形作るすべてのものが含まれます。&lt;/p&gt;&lt;p data-block-key="23pck"&gt;コンテキスト エンジニアリングにより、汎用モデルがパーソナライズされたアシスタントに変わります。コンテキスト エンジニアリングは、どのメモリを取得するか、どのツールを提供するか、各インタラクションをどのように構成するかを決定します。効果的なコンテキスト エンジニアリングにより、複数のセッションをまたいで一貫性を保持する有用なエージェントが作成されます。コンテキスト エンジニアリングが実装されない場合、エージェントは記憶を忘却したり、同じことを繰り返したり、的外れな回答を返したりすることになります。&lt;/p&gt;&lt;p data-block-key="51acn"&gt;&lt;a href="https://www.kaggle.com/whitepaper-context-engineering-sessions-and-memory"&gt;コンテキスト エンジニアリング&lt;/a&gt; ガイドでは、コンテキスト エンジニアリングのフレームワークと実装のための実用的な手法について説明しています。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_un8EDXy.max-1000x1000.png"
        
          alt="4"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="szm03"&gt;&lt;b&gt;テストと評価&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="7nue8"&gt;自律エージェントには、品質保証に対する新しいアプローチが必要です。エージェントが独自の判断を下す場合、その成否は正しい出力を生成できるかという点だけでなく、プロセス全体にわたって正しい判断ができているかという点にもかかっています。&lt;/p&gt;&lt;p data-block-key="b05d4"&gt;エージェントを評価するにあたっては、最終的な回答の正しさだけでなく、エージェントが結果に至るまでに行う一連の意思決定と行動の軌跡に重点が置かれます。2 つのエージェントがまったく異なる経路で同じ結論に達する可能性があり、その経路を理解することが重要です。優れた評価では、ツールの選択、推論の質、エラー回復、エージェントが明確化のための質問をすべきときに質問したかどうかを調べます。&lt;/p&gt;&lt;p data-block-key="654p7"&gt;実用的な評価アプローチには、個々のコンポーネントの単体テスト、複数ステップの意思決定シーケンスの軌跡分析、サンドボックスからカナリア、本番環境への段階的な公開が含まれます。各ステージでは、より多くのユーザーに公開する前に、エージェントの動作のさまざまな側面を検証します。&lt;/p&gt;&lt;p data-block-key="af80"&gt;評価フレームワークとテスト方法の詳細については、&lt;a href="https://www.kaggle.com/whitepaper-agent-quality"&gt;エージェントの品質&lt;/a&gt;ガイドをご覧ください。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/5_5AmNNfV.max-1000x1000.png"
        
          alt="5"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="szm03"&gt;&lt;b&gt;エージェントの本番環境へのデプロイ&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="etksc"&gt;プロトタイプから本番環境に移行するには、エージェント固有のニーズに合わせて設計されたインフラストラクチャが必要です。状態を維持し、ツールを動的に使用し、自律的に動作するシステムを実現するには、従来型のデプロイ パターンに適応性を持たせることが求められます。&lt;/p&gt;&lt;p data-block-key="6772f"&gt;本番環境のエージェントには、インタラクション全体でコンテキストを維持するためのセッション管理、長期記憶のための永続的なメモリシステム、適切な認証と権限によるツール統合、エージェントの意思決定とアクションを追跡するためのリアルタイムのロギングが必要です。&lt;/p&gt;&lt;p data-block-key="68abv"&gt;ほとんどのチームは、内部テスト用のサンドボックス、限定的な実環境でのテスト用のカナリア、完全なロールアウト用の本番環境という段階でデプロイします。各ステージでパフォーマンスを検証し、アクセスを拡大する前に問題を検出します。&lt;/p&gt;&lt;p data-block-key="43lvt"&gt;&lt;a href="https://www.kaggle.com/whitepaper-prototype-to-production"&gt;プロトタイプから本番環境へ&lt;/a&gt;のガイドでは、プロダクション レディなエージェント インフラストラクチャを構築するためのアーキテクチャに関するガイダンスとコードサンプルを提供しています。&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;出発点&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;どこから始めるべきかは、お客様の取り組みの段階によって異なります。&lt;/span&gt;&lt;a href="https://www.kaggle.com/whitepaper-introduction-to-agents" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;エージェントの概要&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;ガイドでは基本的なコンセプトを説明し、&lt;/span&gt;&lt;a href="https://www.kaggle.com/whitepaper-agent-tools-and-interoperability-with-mcp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ツールと MCP による相互運用性&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;や&lt;/span&gt;&lt;a href="https://www.kaggle.com/whitepaper-context-engineering-sessions-and-memory" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;コンテキスト エンジニアリング&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;のガイドでは構築の実践的な課題を取り上げます。検証とリリースを行う準備ができた段階では、&lt;/span&gt;&lt;a href="https://www.kaggle.com/whitepaper-agent-quality" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;エージェントの品質&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;と&lt;/span&gt;&lt;a href="https://www.kaggle.com/whitepaper-prototype-to-production" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;プロトタイプから本番環境へ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;のガイドが役立ちます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントの分野は急速に進化していますが、一人で解決する必要はありません。現在の課題に合ったリソースを選んで、構築を始めましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;テクニカル ソリューション マネージャー&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Kanchana Patlolla&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Google、シニアスタッフ ML エンジニア兼生成 AI 集中講座創設者&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Anant Nawalgaria&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents/</guid><category>Data Analytics</category><category>Developers &amp; Practitioners</category><category>AI &amp; Machine Learning</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/production_ready_ai.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>プロダクション レディな AI エージェントに関するデベロッパー ガイド</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/production_ready_ai.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Kanchana Patlolla</name><title>Technical Solutions Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Anant Nawalgaria</name><title>Sr. Staff ML Engineer &amp; Founder of Gen AI Intensive, Google</title><department></department><company></company></author></item><item><title>RAG 対応生成 AI アプリケーションのプライベート ネットワーク接続の設計</title><link>https://cloud.google.com/blog/ja/products/networking/design-private-connectivity-for-rag-ai-apps/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 3 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/networking/design-private-connectivity-for-rag-ai-apps?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud は柔軟性に優れており、企業が AI ワークロード向けに安全で信頼性の高いアーキテクチャを構築することを可能にします。この投稿では、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/architecture/private-connectivity-rag-capable-gen-ai?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;検索拡張生成（RAG）対応生成 AI アプリケーションのプライベート接続&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;のリファレンス アーキテクチャについて説明します。このアーキテクチャは、システム全体で通信にプライベート IP アドレスを使用する必要があるようなシナリオで、通信がインターネットを通過してはならないような場合に適しています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG の効力&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;RAG は、大規模言語モデル（LLM）の出力を最適化するために使用されるパワフルな手法であり、LLM の出力を、元のトレーニング データ以外の特定の信頼できるナレッジベースにグラウンディングできます。アプリケーションから RAG を使って、ドキュメント、データソース、データベースから関連情報をリアルタイムで取得することができます。ここで取得したコンテキストは、ユーザーのクエリとともにモデルに提供されます。これにより、AI の回答を正確で検証可能なものにするとともに、業務内容との関連性を高めます。この仕組みによって、回答の質が向上し、ハルシネーションが減少します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このアプローチは、生成 AI においてモデルの既存の知識のみに依存することなく、指定された信頼できる情報源を使用できるため、モデル自体を再トレーニングやファインチューニングしなくて済むという点で利便性に優れています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;設計パターンの例&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;RAG アプリケーションのプライベート接続向けにネットワークを設定するということを念頭におきながら、このようなリージョン設計のパターンを見ていきましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このネットワークは、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;外部ネットワーク&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（オンプレミスおよび他のクラウド）と &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud 環境&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;で構成されています。Google Cloud 環境は、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ルーティング プロジェクト&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG 用の共有 VPC ホスト プロジェクト&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;、3 つの特化したサービス プロジェクト（&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;データ取り込み&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;サービング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;フロントエンド&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;）で構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この設計では、次のサービスを使用してエンドツーエンドのソリューションを提供します。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/interconnect/concepts/overview"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Interconnect&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; または &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/vpn/concepts/topologies#vpn-overview"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud VPN&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; オンプレミスまたは他のクラウドからルーティング VPC ネットワークに安全に接続する&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Network Connectivity Center&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; VPC スポークおよびハイブリッド スポークを介して、ルーティング VPC ネットワークと RAG VPC ネットワーク間の接続を管理するオーケストレーション フレームワーク&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/router/concepts/overview"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Router&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; ルーティング プロジェクト内で、外部ネットワークと Google Cloud 間の動的な BGP ルート交換を行う&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/vpc/docs/private-service-connect?hl=ja"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Connect&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; ルーティング VPC ネットワークにプライベート エンドポイントを提供し、パブリック インターネットを経由せずに Cloud Storage バケットにアクセスしてデータを取り込めるようにする&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/vpc/docs/shared-vpc"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;共有 VPC&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 複数のサービス プロジェクトで、共通の一元的な VPC ネットワークを使用できるようにするホスト プロジェクト アーキテクチャ&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/armor/docs/cloud-armor-overview"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Armor&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; とアプリケーション &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/load-balancing/docs/application-load-balancer"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;ロードバランサ&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; フロントエンド サービス プロジェクトに配置され、ユーザー インタラクションに対してセキュリティとトラフィック管理を提供する&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/security/vpc-service-controls"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;VPC Service Controls&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; すべてのリソースの周囲にマネージド セキュリティ境界を作成し、データ漏洩のリスクを軽減する&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1-rag-gen-ai.max-1000x1000.png"
        
          alt="1-rag-gen-ai"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;トラフィック フロー&lt;/strong&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG の挿入フロー&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;上の図の&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;緑色の点線&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;が &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG の挿入フロー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（データ エンジニアからベクトル ストレージへとデータが移動する仕組み）を表しています。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;外部ネットワークからのデータが、Cloud Interconnect または Cloud VPN 経由で渡されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ルーティング プロジェクト内の &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Private Service Connect エンドポイント&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;を使って Cloud Storage バケットにアクセスします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;データ取り込みサービス プロジェクト内の&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;データ取り込みサブシステム&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;が &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Storage バケット&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;からの元データを処理します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;AI モデルがチャンクからベクトルを作成し、データ取り込みサブシステムに返します。データ取り込みサブシステムはこれを受け、サービング サービス プロジェクトの &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG データストア&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に書き込みます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;推論フロー&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;上の図の&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;オレンジ色の点線&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;が&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;推論フロー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（お客様またはユーザーのリクエスト）を表しています。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;リクエストは、Cloud Interconnect または Cloud VPN 経由でルーティング VPC ネットワークに渡され、その後、VPC スポーク経由で &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG VPC ネットワーク&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に渡されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;リクエストは、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Armor&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; で保護された&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;アプリケーション ロードバランサ  &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に到達し、許可されると&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;フロントエンド サブシステム&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に渡されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;フロントエンド サブシステムはリクエストを&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;サービング サブシステム&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に転送します。サービング サブシステムは、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG データストア&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;のデータでプロンプトを拡張し、AI モデルを介して回答を生成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;上記によってグラウンディングされた回答が、リクエスト元に同じパスで返されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;管理とルーティング&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;上の図の&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;青い点線&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;は、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Network Connectivity Center のハイブリッド スポークと VPC スポーク&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;が、ルーティング ネットワークと RAG VPC ネットワーク間のコントロール プレーンとルート オーケストレーションを管理する様子を表しています。これにより、外部ネットワークから学習したルートが環境全体に適切に伝播されます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;IAM 権限、VPC Service Controls、デプロイに関する考慮事項などについて詳しくは、アーキテクチャ ドキュメント「&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/architecture/private-connectivity-rag-capable-gen-ai?hl=ja"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;RAG 対応生成 AI アプリケーションのプライベート接続&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;」をお読みください。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;次のステップ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;クロスクラウド ネットワークの詳細や、RAG を使用した生成 AI に関する以下のガイドをご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ドキュメント リスト: &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/architecture/rag-reference-architectures"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RAG を使用した生成 AI&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ドキュメント: &lt;/span&gt;&lt;a href="https://cloud.google.com/architecture/ccn-distributed-apps-design"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;分散型アプリケーション向けのクロスクラウド ネットワーク&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ブログ: &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/build-your-first-adk-agent-workforce?e=48754805&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;最初の ADK エージェント チームを構築する&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ご質問やご意見がございましたら、&lt;/span&gt;&lt;a href="https://www.linkedin.com/in/ammett/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Linkedin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; 経由で筆者までご連絡ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパーリレーションズ エンジニア、&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Ammett Williams&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 13 Mar 2026 03:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/networking/design-private-connectivity-for-rag-ai-apps/</guid><category>AI &amp; Machine Learning</category><category>Hybrid &amp; Multicloud</category><category>Developers &amp; Practitioners</category><category>Networking</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/0-rag-hero.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>RAG 対応生成 AI アプリケーションのプライベート ネットワーク接続の設計</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/0-rag-hero.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/networking/design-private-connectivity-for-rag-ai-apps/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ammett Williams</name><title>Developer Relations Engineer</title><department></department><company></company></author></item><item><title>エージェント型 chatbot に高速で信頼性の高い長期メモリを提供</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/improve-chatbot-memory-using-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 28 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/improve-chatbot-memory-using-google-cloud?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;会話エージェントを大規模展開する際は、データレイヤの設計が成否を左右することが少なくありません。数百万人規模のユーザーを支えるには、会話の継続性が欠かせません。つまり、応答性の高いチャットを維持しつつ、バックエンドのモデルが必要とするコンテキストも保ち続ける能力です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この記事では、Google Cloud のソリューションを用いて、AI の 2 つのデータ課題（リアルタイムチャットのコンテキスト更新を高速化すること、長期履歴の検索を効率化すること）をどう解決するかをご紹介します。また、Redis、Bigtable、BigQuery を組み合わせるポリグロットなアプローチにより、直近のやり取りから数か月前のアーカイブまで、エージェントが細部と文脈の連続性を保てるようにする方法も解説します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;短期、中期、長期の履歴に対応するポリグロット ストレージ アプローチ&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_Polyglot_Persistence_Layer.max-1000x1000.png"
        
          alt="1 - Polyglot Persistence Layer"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ポリグロット アプローチとは&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ポリグロット アプローチとは、単一のデータベースに集約するのではなく、用途に特化した複数のデータサービスを組み合わせ、データのライフサイクルに応じて使い分ける多層型のストレージ戦略です。これにより、たとえば、高速化のためのインメモリ キャッシュ、大規模データを扱うための NoSQL、非構造データを置くための Blob ストレージ、分析のためのデータウェアハウスといったように、それぞれの強みを活かしながら、データの「鮮度」や量に応じて効率的に処理できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;短期、中期、長期メモリに対する Google Cloud での定義例&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;会話の継続性を保つため、Google Cloud 上では次のように組み合わせて、このポリグロット アプローチを実装できます。すなわち、ミリ秒未満で「ホット」なコンテキストを取得する用途には Memorystore for Redis を、永続的な履歴を蓄積するペタバイト規模の記録基盤には Cloud Bigtable を、長期アーカイブや分析的な洞察には BigQuery を用います。また、画像や音声などの非構造マルチメディアは Cloud Storage で扱い、Pub/Sub と Dataflow による非同期パイプラインで連携させます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;1. 短期メモリ: Memorystore for Redis&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ユーザーは、新しいチャットを開始する場合でも、以前の会話を続ける場合でも、チャット履歴が瞬時に読み込まれることを期待しています。会話のコンテキストについては、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Memorystore for Redis&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; が主要なキャッシュとして機能します。フルマネージドのインメモリ データストアである Redis は、自然な会話の流れを維持するために必要なサブミリ秒レベルの低レイテンシを提供します。チャット セッションはメッセージが順次追加されていくリスト構造のため、履歴は &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Redis リスト&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;を使って保存します。ネイティブの RPUSH コマンドを使えば、アプリケーションは最新のメッセージだけを追加すればよく、Memcached のような単純なストアで発生しがちな「読み取り → 更新 → 書き込み」というネットワーク負荷の大きい処理を避けることができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;2. 中期メモリ: Cloud Bigtable&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;会話が時間とともに増えていくにつれ、エージェント型アプリケーションは、増え続けるチャット履歴をより大規模に、かつ長期的に保存できる設計を考える必要があります。そこで、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Bigtable&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; が、永続性を備えた中期ストアとして、また全チャット履歴の正式な記録として機能します。Bigtable は、高速で書き込みが集中するワークロード向けに設計されたペタバイト級の NoSQL データベースで、数百万件の同時チャットを取り込む用途に適しています。大量のデータを扱いつつも、ガベージ コレクション ポリシーを設定すれば、アクティブなクラスタを必要最小限に保てます。たとえば、高性能ティアには直近 60 日分だけ残すといった運用が可能です。検索を高速化するため、キーは user_id#session_id#reverse_timestamp というパターンで設計します。これにより、同一セッションのメッセージが近接して格納され、範囲スキャンで直近のメッセージを効率よく取り出せるため、履歴の再読み込みがスムーズになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;3. 長期メモリと分析: BigQuery&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;アーカイブと分析のため、データは &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;BigQuery&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; に移されます。BigQuery は、このシステムにおける長期メモリの役割を担います。Bigtable が稼働中のアプリケーション向け処理に最適化されているのに対し、BigQuery は大規模な複雑 SQL クエリを実行するために設計された Google のサーバーレス型データ ウェアハウスです。これにより、チームは単なるログ保存にとどまらず、そこから分析的なインサイトを引き出せるようになります。最終的には、この運用データがフィードバック ループとして機能し、ユーザー向けコンポーネントのパフォーマンスに影響を与えることなく、エージェントやユーザー体験の改善につながります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;4. アーティファクト ストレージ: Cloud Storage（GCS）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ユーザーが分析のためにアップロードしたものでも、生成モデルが生成したものでも、画像や音声などの非構造データ（マルチメディア ファイル）は、非構造アーティファクトの保管に適した &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Storage&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; に格納します。ここでは&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ポインタ戦略&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;を採用します。Redis や Bigtable のレコード側には、実体データそのものではなく、オブジェクトを指し示す &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;URI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（例: gs://bucket/file）を保持します。セキュリティ面では、アプリケーションが&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;署名付き URL&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を使ってファイルを配信し、バケットを公開することなく、クライアントに期限付きのアクセス権だけを付与します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;データの流れを最適化するハイブリッド同期 / 非同期戦略&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;以下のシーケンス図で示すとおり、このハイブリッド同期 / 非同期戦略では、前述のストレージ群を組み合わせることで、高速で整合性のある処理と耐久性のある永続化を両立させます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次の図は、ユーザーのメッセージと、それに対応するエージェントの応答が、アーキテクチャ内をどのように流れていくかを示しています。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_Sequence_Diagram.max-1000x1000.png"
        
          alt="2 - Sequence Diagram"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次の図は、ユーザーが特定のセッションのチャット履歴を取得する際に、データがアーキテクチャ全体をどのように流れるかを示しています。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_-_History_Seq_Diagram.max-1000x1000.png"
        
          alt="3 - History Seq Diagram"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;今すぐ構築を開始&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;堅牢な永続化レイヤを備えたエージェントを構築する準備はできていますか？&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェントをすばやく構築&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;a href="https://cloud.google.com/products/agent-builder"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI Agent Builder&lt;/span&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; を使って、エージェント型ワークフローのプロトタイピングを始めましょう。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;キャッシュを構成する&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: レイテンシと可用性の要件に合わせて、最適な &lt;/span&gt;&lt;a href="https://cloud.google.com/memorystore/docs/redis/redis-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Memorystore for Redis の構成&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を決定します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;堅牢な Bigtable スキーマを設計する&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: スキーマ設計の&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigtable/docs/schema-design"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ベスト プラクティス&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を確認しましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;分析へつなぐ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigtable/docs/change-streams-to-bigquery-quickstart"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Bigtable の Change Stream から BigQuery へのテンプレート&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を活用し、ライブチャット ログを実用的なビジネス インサイトへと変換します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;分析でデータを活用する:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/looker/docs/conversational-analytics-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Looker Conversational Analytics&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使って、ビジネス インテリジェンスに基づいたプロダクトの意思決定を行いましょう。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;AI ソリューション アクセラレーション アーキテクト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Aishwarya Prabhat&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;プリンシパル アーキテクト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Yun Pang&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/improve-chatbot-memory-using-google-cloud/</guid><category>Developers &amp; Practitioners</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>エージェント型 chatbot に高速で信頼性の高い長期メモリを提供</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/improve-chatbot-memory-using-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Aishwarya Prabhat</name><title>AI Solutions Acceleration Architect</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Yun Pang</name><title>Principal Architect</title><department></department><company></company></author></item><item><title>Java SDK「MCP ツールボックス」リリースのお知らせ</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/announcing-the-mcp-toolbox-java-sdk/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 4 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/announcing-the-mcp-toolbox-java-sdk?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エンジニアリング チームは、単純な chatbot から、ミッション クリティカルなデータベースと直接やり取りするエージェント システムの構築へと移行しています。しかし、このようなエンタープライズ エージェントを構築する際には、カスタムのグルーコード、脆弱な API、複雑なデータベース ロジックという統合の壁にぶつかることがよくあります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらのハードコードされたボトルネックをセキュアで統合されたコントロール プレーンに置き換えるために、このたび、&lt;/span&gt;&lt;a href="https://github.com/googleapis/mcp-toolbox-sdk-java" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;「データベース向け Model Context Protocol（MCP）ツールボックス」&lt;/span&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Java SDK&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; をリリース&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;しました。このリリースにより、世界で最も広く採用されているエンタープライズ エコシステムで、最高水準の型安全なエージェント オーケストレーションが実現します。Java の成熟したアーキテクチャは、このような厳しい要求に対応できるよう構築されており、本番環境でミッション クリティカルな AI エージェントを安全にスケールするために必要な高い同時実行性、厳格なトランザクションの整合性、堅牢な状態管理を提供します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;MCP: AI エージェント向けの USB Type-C&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Model Context Protocol（MCP）は、AI のユニバーサル トランスレータのようなものです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;MCP は、AI モデルが外部のツールやデータセットに接続する方法を標準化するために作成されており、カスタムの断片的な統合スクリプトをセキュアなユニバーサル プロトコルに置き換えます。エージェントがトランザクション SQL クエリの実行、数千ものポリシー ドキュメントの検索、REST API のトリガーなどを行うときに、MCP が単一の統合インターフェースを提供します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://googleapis.github.io/genai-toolbox/getting-started/introduction" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;データベース向け MCP ツールボックス&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用すると、このプロトコルの実装が簡単になります。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;データベース向け MCP ツールボックス&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://googleapis.github.io/genai-toolbox/getting-started/introduction" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;データベース向け MCP ツールボックス&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は、データベース用のオープンソース MCP サーバーです。AlloyDB、Cloud SQL、Cloud Spanner をはじめ、サードパーティを含む 42 種類のデータソースをネイティブにサポートしています。重要なのは、AI エージェントの自然言語の意図を特定のデータベース操作に直接、安全にマッピングする&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;カスタムツール&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;を定義できることです。これにより、接続プーリングや認証などの複雑な処理に対応して、ツールの開発をより簡単、迅速、セキュアに行うことができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Python、JavaScript、TypeScript、Go&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 向けの堅牢かつプロダクション レディな SDK はすでに提供していました。しかし、高い同時実行性、トランザクションの整合性、会話の状態管理が不可欠な Day 2（2 日目からの）本番環境ワークロードに関しては、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Java と Spring Boot&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; が依然として圧倒的な存在です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この新しい Java SDK を使用すると、好みの技術スタックから離れることなく、ステートフルで同時実行性の高いマルチエージェント システムをネイティブに構築できます。この SDK は、場合によってはエンタープライズ アーキテクトにとって最優先事項となる、最高水準の型安全なオーケストレーションを Java にもたらします。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;この Java SDK を使ってみる&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;「MCP ツールボックス」Java SDK は、企業チームがスムーズに利用できるように設計されています。今すぐエージェントの構築を開始できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;依存関係の追加&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;MCP ツールボックスは、&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;pom.xml&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; に次の依存関係を追加するだけで、Java または Spring Boot のプロジェクトに組み込むことができます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;&amp;lt;dependency&amp;gt;\r\n   &amp;lt;groupId&amp;gt;com.google.cloud.mcp&amp;lt;/groupId&amp;gt;\r\n   &amp;lt;artifactId&amp;gt;mcp-toolbox-sdk-java&amp;lt;/artifactId&amp;gt;\r\n   &amp;lt;version&amp;gt;0.2.0&amp;lt;/version&amp;gt;\r\n&amp;lt;/dependency&amp;gt;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d73d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これで準備は完了です。以下のエンタープライズ グレードのユースケース例でも同じ操作を行っています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;実際の例: 自律型の交通機関コンシェルジュ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;「MCP ツールボックス」Java SDK を &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;AlloyDB&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; と組み合わせて活用する例として、交通機関のユースケースを見てみましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/agents/cymbal-transit" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cymbal Transit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; は架空の都市間バス交通ネットワークです。利用者は、旅行を計画するのに、15 個ものプルダウン メニューをクリックしたくはありません。次のように質問できれば理想的です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;「明日の朝、ニューヨークからボストンまで移動する必要があります。ゴールデン レトリバーを連れて行くことはできますか？できる場合は、最も早い便を予約して。」&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI エージェントがこの質問に答えるには、非構造化データ（ペットに関するポリシー）と構造化データ（運行スケジュール、座席の空き状況）をシームレスに相互参照し、会話のコンテキストを記憶しながらトランザクション（予約）を実行する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このケースは、「MCP ツールボックス」Java SDK を使用して次のように構築します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;基盤となるデータベース（ネイティブ エンベディングを備えた AlloyDB スキーマ）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AlloyDB は、リレーショナル データと高次元の AI ベクトルを単一のクエリエンジンで処理するため、この目的に最適なエンジンです。AlloyDB はさらに、google_ml_integration &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/alloydb/docs/ai/configure-vertex-ai#verify-installed-extension"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;拡張機能&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を使用してエンベディングをネイティブに生成できるため、構築する Java アプリケーションとエンベディング API との間でテキストをやり取りする必要がありません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、こちらの&lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/quick-alloydb-setup" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;クイック設定ラボ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;に沿って、AlloyDB のクラスタとインスタンスを設定します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、以下の SQL ステートメントを使用してデータベース オブジェクトを設定します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- AI セマンティック検索とエンベディング生成に必要な拡張機能を有効にする\r\nCREATE EXTENSION IF NOT EXISTS vector;\r\nCREATE EXTENSION IF NOT EXISTS google_ml_integration;\r\n\u200b\r\n-- 表 1: 交通機関のポリシー（RAG 用の非構造化データ）\r\nCREATE TABLE transit_policies (\r\n   policy_id SERIAL PRIMARY KEY,\r\n   category VARCHAR(50),\r\n   policy_text TEXT,\r\n   policy_embedding vector(768)\r\n);\r\n\u200b\r\n-- 表 2: 都市間バスの運行スケジュール（構造化データ）\r\nCREATE TABLE bus_schedules (\r\n   trip_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\r\n   origin_city VARCHAR(100),\r\n   destination_city VARCHAR(100),\r\n   departure_time TIMESTAMP,\r\n   arrival_time TIMESTAMP,\r\n   available_seats INT DEFAULT 50,\r\n   ticket_price DECIMAL(6,2)\r\n);\r\n\u200b\r\n-- 表 3: 予約台帳（トランザクション アクション データ）\r\nCREATE TABLE bookings (\r\n   booking_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\r\n   trip_id UUID REFERENCES bus_schedules(trip_id),\r\n   passenger_id VARCHAR(100),\r\n   status VARCHAR(20) DEFAULT &amp;#x27;CONFIRMED&amp;#x27;,\r\n   booking_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP\r\n);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7bb0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;テーブルを定義し、ベクトル サポートを有効にしたことで、AlloyDB が構造化されたトランザクション データとセマンティック ナレッジベースの両方に対応する統合ブレインとして機能する準備が整いました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;レコードの取り込みと現実的なエンベディングの生成&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントのコンテキスト ウィンドウで推論に使用できる現実的なオプションを確保するには、堅牢なデータセットが必要です。AlloyDB で PostgreSQL の強力な generate_series を使用すると、翌日以降の現実的なバス旅行のデータ 200 件以上を即座にデータベースに供給できます。このデモ アプリケーションのモックデータの取り込みには、このアプローチを採用しました。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;-- 1. AlloyDB で非構造化ポリシーを挿入し、現実的なエンベディングをネイティブに生成する\r\nINSERT INTO transit_policies (category, policy_text, policy_embedding)\r\n...（完全なステートメントはリポジトリを参照）\r\n\u200b\r\n-- 2. generate_series を使用して、今後 7 日間の現実的なスケジュールを 200 件以上生成する\r\nINSERT INTO bus_schedules (origin_city, destination_city, departure_time, arrival_time, ticket_price, available_seats)\r\n...（完全なステートメントはリポジトリを参照）&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7760&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;完全なコードについては、&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/agents/cymbal-transit" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;リポジトリ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このようにして、現実的なスケジュールとネイティブに生成されたエンベディングがデータベースに動的に入力され、AI エージェントはデータが豊富でクエリ可能な環境に即座にアクセスできるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Spring Boot のステートフル エージェント アーキテクチャ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;会話型 UI の構築で最も難しいのは&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;セッション管理&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;です。ユーザーが「空いている時間は？」と尋ねた後、「午前 8 時の便を予約して」と言った場合、エージェントはコンテキストを覚えている必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;「MCP ツールボックス」Java SDK&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Spring Boot&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;LangChain4j&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; と併せて使用すると、HTTP セッションで会話の記憶をシームレスに維持し、エージェントの思考プロセスに注入できます。最新のフロントエンドと、このステートフル バックエンドを組み合わせることで、エンタープライズ アプリケーションは連続的でインテリジェントなワークスペースになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ユーザーの意図を解析するために大量の if / else ブロックを記述する代わりに、宣言型の AI インターフェースを定義し、それに MCP ツールをバインドするだけです。詳細なクエリをハードコードしたり、静的な条件コードのブロックを追加したりすることなく、オーケストレーションのロジックをコードに組み込むことがいかに簡単かを示します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;interface TransitAgent {\r\n   @SystemMessage({\r\n       &amp;quot;You are the Cymbal Transit Concierge.&amp;quot;,\r\n       &amp;quot;Use the \&amp;#x27;querySchedules\&amp;#x27; tool for finding schedules.&amp;quot;,\r\n       &amp;quot;Use \&amp;#x27;bookTicket\&amp;#x27; to execute transactions.&amp;quot;,\r\n       &amp;quot;Use \&amp;#x27;searchPolicies\&amp;#x27; to look up luggage and pet rules.&amp;quot;\r\n   })\r\n   String chat(@MemoryId String sessionId, @UserMessage String userMessage);\r\n}\r\n\u200b\r\n@Service\r\nclass TransitAgentTools {\r\n   // これらのメソッドは、データベース向け MCP ツールボックス サーバーを自動的に呼び出します。\r\n   @Tool(&amp;quot;Query specific schedules between an origin and destination city.&amp;quot;)\r\n   public String querySchedules(String origin, String destination) { ... }\r\n\u200b\r\n   @Tool(&amp;quot;Book a ticket for a passenger.&amp;quot;)\r\n   public String bookTicket(String tripId, String passengerName) { ... }\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7a60&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;LangChain4j により、LLM プロンプトのロジックが実際のツールの実行から明確に分離されるため、エージェントは目標を失うことなく、予測可能で、時間が経過しても非常に簡単にメンテナンスできる状態が維持されます。最新のフロントエンドと、このステートフルな Spring Boot バックエンドを組み合わせることで、エンタープライズ アプリケーションは、つながりのない一連のプロンプトではなく、連続的でインテリジェントなワークスペースになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;意図と SQL のマッピング: tools.yaml&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;データベース向け MCP ツールボックスの真の魅力は、これらのカスタムツールの定義方法にあります。Java アプリケーションは SQL に直接アクセスする必要がなく、LLM はテーブル スキーマに関してハルシネーションを起こす必要がありません。代わりに、MCP サーバーにクリーンな tools.yaml 構成を提供します。このファイルは、エージェントのツール呼び出しを AlloyDB のパラメータ化された SQL ステートメントにセキュアにマッピングします。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;tools:\r\n query-schedules:\r\n   kind: postgres-sql\r\n   source: alloydb\r\n   description: Find available bus schedules between cities.\r\n   parameters:\r\n     - name: origin\r\n       type: string\r\n     - name: destination\r\n       type: string\r\n   statement: |\r\n     SELECT CAST(trip_id AS TEXT) AS trip_id, departure_time, ticket_price\r\n     FROM bus_schedules\r\n     WHERE lower(origin_city) = lower($1) AND lower(destination_city) = lower($2)\r\n\u200b\r\n search-policies:\r\n   ... 完全な tools.yaml については、リポジトリを参照してください&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7280&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このシンプルな宣言型構成により、データベース スキーマを LLM に直接公開することなく、自然言語の意図と複雑な SQL クエリのギャップを埋めることができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;点と点をつなぐ: Java でのツールのリスト表示、呼び出し、実行&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;データベースとツールを構成したら、それらとのやり取りという手間のかかる作業は、「MCP ツールボックス」Java SDK が処理します。この SDK は、直感的で型安全な API を提供し、Spring Boot サービスからトランザクションをセキュアに検出、クエリ、実行できます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;// 1. クライアントの初期化\r\nMcpToolboxClient mcpClient = McpToolboxClient.builder()\r\n   .baseUrl(&amp;quot;https://toolbox-my-project-uc.a.run.app&amp;quot;)\r\n   .apiKey(myIdToken)\r\n   .build();\r\n\u200b\r\n// 2. 検出可能なツールのリスト表示\r\nmcpClient.listTools().thenAccept(tools -&amp;gt; {\r\n   System.out.println(&amp;quot;Successfully discovered &amp;quot; + tools.size() + &amp;quot; tools.&amp;quot;);\r\n});\r\n\u200b\r\n// 3. ツールの呼び出し（読み取り専用データ）\r\nString schedules = mcpClient.invokeTool(&amp;quot;query-schedules&amp;quot;, Map.of(\r\n   &amp;quot;origin&amp;quot;, &amp;quot;New York&amp;quot;,\r\n   &amp;quot;destination&amp;quot;, &amp;quot;Boston&amp;quot;\r\n)).join().content().get(0).text();\r\n\u200b\r\n// 4. トランザクション ツールの実行（バインドされた認証が必要）\r\nAuthTokenGetter toolAuthGetter = () -&amp;gt; CompletableFuture.completedFuture(myIdToken);\r\n\u200b\r\nString bookingConfirmation = mcpClient.loadTool(&amp;quot;book-ticket&amp;quot;, Map.of(&amp;quot;google_auth&amp;quot;, toolAuthGetter))\r\n   .thenCompose(tool -&amp;gt; {\r\n       // 認証されたユーザー コンテキストをセキュアにバインドする\r\n       tool.bindParam(&amp;quot;passenger_name&amp;quot;, &amp;quot;Jane Doe&amp;quot;);\r\n       // 可変トランザクションを実行する\r\n       return tool.execute(Map.of(&amp;quot;trip_id&amp;quot;, &amp;quot;123e4567-e89b-12d3-a456-426614174000&amp;quot;));\r\n   }).join().content().get(0).text()&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7550&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これで完了です。型安全な Java のコード数行で、Spring Boot アプリケーションがローカル メソッドかのようにリモートツールをセキュアに検出して実行します。上の &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bindParam&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; メソッドに注目してください。この強力な機能を使用すると、アプリケーション レベルのコンテキスト（認証されたユーザーの ID など）をデータベース トランザクションにセキュアに直接挿入し、LLM を完全にバイパスできます。詳しくは、「MCP ツールボックス」Java SDK の&lt;/span&gt;&lt;a href="https://github.com/googleapis/mcp-toolbox-sdk-java?tab=readme-ov-file#why-bind-parameters" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ドキュメント&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;アプリケーションのデフォルト認証情報（ADC）によるゼロ構成のセキュリティ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ハードコードされたシークレットや JSON キーの管理が不要であることに注目してください。Java アプリケーションは、Google のアプリケーションのデフォルト認証情報（ADC）を使用して、バックグラウンドで myIdToken を取得することで、環境から直接、セキュアな ID を自動的に継承します。gcloud CLI を使用してローカルで開発する場合でも、本番環境で実行する場合でも、アプリケーションはデフォルトでセキュアに保たれ、手動で認証情報を構成する必要がありません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;フリートを Cloud Run にデプロイ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;先ほど説明した「2 日目」のエンタープライズ要件を覚えているでしょうか。高い同時実行性、トランザクションの整合性を適切に処理し、ステートフルな会話を大規模に維持するには、アーキテクチャが堅牢である必要があります。データベース向け MCP ツールボックスと Spring Boot エージェントは完全に分離されているため、Google Cloud Run で個別にスケーリングして、これらの正確な需要に対応できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、オープンソースのデータベース向け MCP ツールボックスを独自のセキュアなサービスとしてデプロイします。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# ツールボックスの CLI をダウンロードする\r\nexport VERSION=0.27.0\r\ncurl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox\r\nchmod +x toolbox&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d73a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、ローカルのツールボックス サーバーを Cloud Run にデプロイします。公式ドキュメントの&lt;/span&gt;&lt;a href="https://googleapis.github.io/genai-toolbox/how-to/deploy_toolbox" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の手順に沿って操作します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ツールボックスは、稼働状態になると、データベースと外部の世界との間のセキュアでスケーラブルなブリッジとして機能します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、Java Spring Boot エージェントをデプロイし、動的に生成された MCP ツールボックスの URL と Vertex AI の設定を環境変数として挿入します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Cymbal Transit エージェント アプリは次の手順で設定します。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/agents/cymbal-transit" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;リポジトリ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;のクローンを作成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;次に、Java Spring Boot エージェントをデプロイし、動的に生成された MCP ツールボックスの URL と Vertex AI の設定を環境変数として挿入します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud run deploy cymbal-transit \\\r\n --source . \\\r\n --allow-unauthenticated \\\r\n --set-env-vars GCP_PROJECT_ID=my-project,GCP_REGION=us-central1,GEMINI_MODEL_NAME=gemini-2.5-flash,MCP_TOOLBOX_URL=https://toolbox-...&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643d7520&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;たった 1 つのコマンドで、ステートフルなマルチエージェントのエンタープライズ アプリケーションが Cloud Run にデプロイされ、ユーザーに代わってワークフローをセキュアにオーケストレートする準備が整いました。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;統合をハードコードする時代は終了&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ステートレスな chatbot から自律型のトランザクション エージェントへの移行は、この 10 年間の技術的変化を象徴するものです。しかし、エージェントの能力は、セキュアにやり取りできるシステムによって決まります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;「データベース向け MCP ツールボックス」Java SDK を使用することで、企業開発者はようやく、ネイティブでエレガントかつスケーラビリティの高い方法で、ビジネスを運営するミッション クリティカルな記録システムに対する読み取り / 書き込みアクセスを AI エージェントに付与できるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;独自のステートフルなエンタープライズ エージェントを構築する準備はできましたでしょうか。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;まず、&lt;/strong&gt;&lt;a href="https://github.com/googleapis/mcp-toolbox-sdk-java" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;「MCP ツールボックス」Java SDK の公式 GitHub リポジトリ&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧ください。また、デモ アプリケーション、&lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/agents/cymbal-transit" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cymbal Bus エージェントの GitHub リポジトリ&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で完全なソースコードを確認し、今すぐお試しください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;- Google &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;スタッフ デベロッパー アドボケイト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Abirami Sukumaran&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Google ソフトウェア エンジニア&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Anubhav Dhawan&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 10 Mar 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/announcing-the-mcp-toolbox-java-sdk/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/MCP_Toolbox_Java_SDK_Launch.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Java SDK「MCP ツールボックス」リリースのお知らせ</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/MCP_Toolbox_Java_SDK_Launch.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/announcing-the-mcp-toolbox-java-sdk/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Abirami Sukumaran</name><title>Staff Developer Advocate, Google</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Anubhav Dhawan</name><title>Software Engineer, Google</title><department></department><company></company></author></item><item><title>データ戦略 = AI 戦略シリーズ: Google Cloud で開発者を AI アーキテクトに進化させる</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/data-strategy-ai-strategy-series-transforming-developers-into-ai-architects-with-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 3 月 4 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/data-strategy-ai-strategy-series-transforming-developers-into-ai-architects-with-google-cloud?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェントの性能は、データによるグラウンディングの質に左右されます。&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;データが整理されていないと、エージェントは高い確信度で回答していても、実際にはハルシネーションを起こしている可能性があります。2026 年には、データ戦略と AI 戦略は実質的に同じものになります。どちらか一方だけでは成り立ちません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このシリーズ「データ戦略 = AI 戦略」では、この戦略のさまざまな側面を取り上げ、自律エージェントを構築しながら、より決定論的なワークフローを設計する方法をご紹介します。本投稿は、データと AI アーキテクチャの融合に焦点を当てたシリーズの第 1 回です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;業界は重要な転換点を迎えつつあります。2024 年と 2025 年は「API 時代」と定義され、開発者はアプリやエンドポイントを通じて LLM を統合する方法を学びました。2026 年には、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;エンタープライズ アーキテクチャ&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;への移行が求められます。本番環境に対応したアプリケーションを構築するには、プロンプトを書く段階から、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;インテリジェントなエンドツーエンドのスタック&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;を設計する段階へと移行する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;課題は、使用する AI モデルだけではありません。それを支えるインフラストラクチャも重要です。アプリケーションがエンタープライズ グレードであるためには、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;スピード&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;スケール&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;セキュリティ&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;という 3 つの重要な柱の要件を満たす必要があります。本記事では、AI の導入を目的としたエージェントの構築から、十分に戦略化されたコンテキストに基づくエージェントの設計へと移行するという観点から、これらの柱に焦点を当てます。具体的には、このブログとリンク先の Codelab において実践的な学習プログラムを提供し、Google のデータクラウドを活用してアーキテクチャを構築する方法を示します。このアプローチでは、PostgreSQL と完全互換のリレーショナル データベースを使用します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;戦略的転換: コンテキスト エンジンとしてのデータベース&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;最新の AI スタックでは、データベースはもはや単なるストレージ レイヤではなく、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;コンテキスト エンジン&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;としての役割を担うようになっています。Google の戦略は、AlloyDB for PostgreSQL や Cloud SQL など、PostgreSQL と完全互換のサービスを活用し、本番環境における AI の主なボトルネックであるレイテンシ、AI 機能、検索精度を解消することに重点を置いています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この学習プログラムでは、開発者からアーキテクトへの移行を支援するために、インフラストラクチャに伴う負担を減らし、高レベルのアーキテクチャ設計に集中できるようにすることを重視しています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;1. インフラストラクチャ税の解消&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これまで、ローカルでのプロトタイピングからクラウド規模のデプロイへ移行する際には、「&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;インフラストラクチャ税&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;」とも呼ばれる問題が大きな障壁となっていました。これは、クラスタ、インスタンス、VPC ネットワーク ピアリングの設定などに多くの時間を費やさなければならないことを指します。自動設定ユーティリティを導入することで、開発者はこうした構成上の障壁を回避できるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;その結果、焦点はインフラストラクチャの管理から、安全なデータフローや高スループットのベクトル パイプラインの設計へと移ります。最近開催されたインストラクター主導の Code Vipassana セッションでは、参加した開発者が、この変化により、各ラボで 1 時間以上の時間を節約できました。このアプローチにより、本番環境への移行を効果的に加速できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;2. スケーラビリティを前提とした設計: 100 万ベクトル、ループなし&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エンタープライズ アーキテクチャを構築するには、小規模なデモの段階を超える必要があります。そのため、ベクトル検索を高速化するために、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;エンベディングのバッチ処理&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;に重点を置いています。AlloyDB では、データベース レイヤ内でエンベディングを大規模に直接生成できます。この機能を活用することで、従来のループ処理に伴うレイテンシを解消し、大規模なデータセットに対してリアルタイム分析を行えるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;3. ソブリン インテリジェンスと行レベル セキュリティ（RLS）&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI におけるセキュリティは、単にファイアウォールを設ければよいというものではなく、データ ガバナンスまで含めて考える必要があります。そのため Google は、アクセスが許可された特定のデータのみにアクセスするように AI エージェントを制御する仕組みとして、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;行レベルのセキュリティ（RLS）&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;の活用を重視しています。この&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;プライベート Vault&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; アーキテクチャは、データの分離が不可欠な規制業種において特に重要です。たとえば、ユーザーがエージェントと対話する中で、他のユーザーに関する情報やベンチマーク情報まで知ることができてしまう状況を想像してみてください。データレベルのセキュリティをデータベースに組み込むことは、もはや任意ではありません。誰に何を知らせるべきかという判断を、エージェント任せにすることはできません。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;アーキテクチャ学習プログラム&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google は、エンタープライズ AI 開発の全体像を体系的に理解できるよう、一連のハンズオン形式の技術ラボを用意しました。各ラボは、インテリジェント スタックを構成する特定のレイヤに対応しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;多くのラボでは AlloyDB を使用します。ただし、このアーキテクチャ戦略の流れは Cloud SQL のエコシステムにも広がっています。そのため、この学習プログラムには Cloud SQL for PostgreSQL ユーザー向けの代替ラボもいくつか含まれています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;推奨される学習プログラムには、次のコア アーキテクチャ ラボが含まれています。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/quick-alloydb-setup" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AlloyDB クイックセットアップ ラボ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;このラボは、必要な VPC とネットワーク設定を備えた高性能な AlloyDB クラスタを数分でプロビジョニングする方法を紹介するアーキテクト向けの入門ラボです。ここでは、後続のすべての AI ロジックのための安全でスケーラブルな基盤を確立するための「&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デイゼロ&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;」オペレーションに焦点を当てます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/connect-to-alloydb-on-cloudrun" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;アプリを AlloyDB データに接続して Cloud Run にデプロイする&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（または &lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/connect-to-cloudsql-on-cloudrun" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud SQL に接続して Cloud Run にデプロイする&lt;/span&gt;&lt;/a&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;）&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;デプロイの段階に進み、このラボではサーバーレス アプリケーションのアーキテクチャを取り上げます。開発者は、セキュリティ向上のためにマネージド ID や接続文字列を活用しながら、Cloud Run サービスを AlloyDB（または Cloud SQL）に接続する方法を学びます。このアプローチにより、アプリケーション レイヤもデータレイヤと同様に堅牢な構成にすることができます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/gemini-3-flash-on-alloydb-sustainability-app" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;リアルタイム余剰エンジンを構築する: Gemini 3 Flash と AlloyDB&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（または &lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/gemini-3-on-cloudsql-sustainability-app" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 3 Flash と Cloud SQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;）&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;このラボでは、エンドツーエンドのデータドリブン AI アプリケーションを構築し、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;スピード&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;の柱に対応します。高効率な Gemini 3 Flash モデルを用いてストリーミング データを処理し、リアルタイムのインサイトを生成する方法をご紹介します。このアプローチにより、データベースとエンドユーザーの間に応答性の高いフィードバック ループが構築されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/embeddings-at-scale-with-alloydb" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;100 万ベクトル、ループなし: AlloyDB によるスケーリング&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;スケール&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;に焦点を当てたこのラボでは、ベクトル検索のプロセスについて詳しく説明します。アーキテクトは、データベース内でエンベディングのバッチ処理を直接実装する方法を学びます。このアプローチにより、アプリケーション レイヤのボトルネックを回避し、エンタープライズ グレードのパフォーマンスで数百万規模のベクトルの取り込みと検索を実現できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/zero-trust-agents-with-alloydb" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;プライベート Vault: RLS によるゼロトラスト インテリジェンス&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;アーキテクチャのパズルの最後のピースは、&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;セキュリティ&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;の強化に焦点を当てています。このラボでは、開発者向けに&lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;ゼロトラスト&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; エージェントの構築方法をご紹介します。PostgreSQL で RLS を実装することで、AI エージェントがユーザーごとのデータ境界を確実に尊重する仕組みを構築できます。このアプローチは、セキュリティを強化しながらコンプライアンスにも対応した AI システムを設計するための指針となります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;未来をデザインする&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;インフラストラクチャの負担を減らし、スピード、スケール、セキュリティという基本原則に注力することで、新世代の AI アーキテクトを育成することができます。この戦略的な転換により、現在構築されているアプリケーションが、将来の本番環境の要件にも対応できるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;今後開催されるインストラクター主導のハンズオン セッションに参加し、開発者からアーキテクトへのステップアップを始めたい方は、&lt;/span&gt;&lt;a href="https://codevipassana.dev/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Code Vipassana にご登録ください&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Google、スタッフ デベロッパー アドボケイト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Abirami Sukumaran&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 10 Mar 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/data-strategy-ai-strategy-series-transforming-developers-into-ai-architects-with-google-cloud/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/ai-strategy-transform-devs-ai-architects-her.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>データ戦略 = AI 戦略シリーズ: Google Cloud で開発者を AI アーキテクトに進化させる</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/ai-strategy-transform-devs-ai-architects-her.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/data-strategy-ai-strategy-series-transforming-developers-into-ai-architects-with-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Abirami Sukumaran</name><title>Staff Developer Advocate, Google</title><department></department><company></company></author></item><item><title>Gemini 3 Pro Image を使ってみる</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-unlocking-the-cloud-with-the-free-trial/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 19 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/getting-started-with-gemini-3-unlocking-the-cloud-with-the-free-trial?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;前回の投稿では、AI の世界に少し足を踏み入れてみました。&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-hello-world-with-gemini-3-flash?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini API キー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を取得し、最初の「Hello World」AI アプリを構築しました。さらに、Google AI Studio のバイブ コーディングを活用して&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-deploy-your-first-gemini-3-app-to-google-cloud-run?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ウェブアプリを作成し、Cloud Run にデプロイ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;しました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;しかし、Google Cloud プロジェクトを設定しないまま&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-deploy-your-first-gemini-3-app-to-google-cloud-run?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;パート 2&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; の [デプロイ] ボタンを押そうとすると、少し手間取ったかもしれません。Google Cloud プロジェクトを作成すれば、AI アプリのホスティングや大規模データセットの保存が可能になるほか、&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/products/ai-machine-learning/nano-banana-pro-available-for-enterprise?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Nano Banana Pro（Gemini 3 Pro Image）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をはじめとする Gemini Pro モデルの機能をフル活用できるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらは無料で始められるうえ、試しに使えるクレジットも提供されます。この投稿では、Google Cloud 無料トライアルへの具体的な登録方法と、実際にどのような特典が受けられるのかを詳しく解説します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud アカウントが必要な理由&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google AI Studio はプロトタイピングやテストに最適な環境であり、アプリケーションを Cloud Run に直接デプロイすることもできます。しかし、アプリケーションが成長していくと、拡張や運用管理のために、より幅広い Google Cloud のサービスが必要になります。具体的には、次のようなサービスです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ホスティング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 有効期限のない URL で AI アプリを公開したい場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ストレージ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ユーザーやアプリケーションのデータ、画像、ファイルを保存および検索できる場所が必要な場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;コンピューティング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: バックグラウンド処理を行うワーカーや仮想マシンが必要になる場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;グローバル スケール&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ソリューションを複数のリージョンにデプロイし、世界中のユーザーに高可用性と低レイテンシを確保したい場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud はこうしたニーズに応えます。&lt;/span&gt;&lt;a href="https://cloud.google.com/infrastructure"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google 検索や YouTube と同じインフラストラクチャ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご自身のプロジェクトにも活用できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;無料で利用できるもの&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;登録手続きに進む前に、まずは無料で利用できる内容を確認しておきましょう。Google Cloud の無料特典は、次の 2 つで構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;300 ドル分のクレジット（無料トライアル）&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - 新規のお客様には、91 日間利用できる 300 ドル分の無料クレジットが提供されます。このクレジットは、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/free/docs/free-cloud-features?_gl=1*1lu44ri*_up*MQ..&amp;amp;gclid=EAIaIQobChMI0b7CpuGNkgMVplqRBR1w5jvHEAAYASAAEgK-2fD_BwE&amp;amp;gclsrc=aw.ds#during-free-trial"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;さまざまな Google Cloud プロダクト&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;にご利用いただけます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/free/docs/free-cloud-features#free-tier"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud の無料枠&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; - こちらは開発者にとって心強い制度です。トライアル期間が終了した後も、多くのサービスで毎月更新される無料利用枠が用意されています。利用上限の範囲内であれば、料金は発生しません。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;無料枠の主な内容は次のとおりです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Run&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 1 か月あたり 200 万回の呼び出し（&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-deploy-your-first-gemini-3-app-to-google-cloud-run"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;パート 2&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; で構築したアプリに最適です）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Compute Engine&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 1 か月あたり非プリエンプティブル e2-micro VM インスタンス 1 台（特定の米国リージョンのみ）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Storage&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 1 か月あたり 5 GB-月分の Regional Storage（米国リージョンのみ）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;BigQuery&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 1 か月あたり 1 TiB のクエリ処理と 10 GiB のストレージ。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;このほかにも、多くの無料枠が用意されています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;注: 利用上限や対象リージョンは変更される場合があります。最新情報については、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/free/docs/free-cloud-features?_gl=1*1lu44ri*_up*MQ..&amp;amp;gclid=EAIaIQobChMI0b7CpuGNkgMVplqRBR1w5jvHEAAYASAAEgK-2fD_BwE&amp;amp;gclsrc=aw.ds#free-tier-usage-limits"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;無料枠の公式ドキュメント&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;を必ずご確認ください。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップごとの登録手順&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次の 2 つの条件をいずれも満たしている場合、無料トライアルをご利用いただけます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;これまでに Google Cloud、Google Maps Platform、または Firebase を有料で利用したことがない。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;これまで無料トライアルに登録したことがない。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;条件を満たしていることを確認できたら、次の手順に沿って進めていきましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 1 - 開始する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cloud.google.com/free"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;cloud.google.com/free&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; にアクセスします。[無料で利用開始] または [無料で開始] というボタンが表示されるはずです、&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;注: [無料で開始] ボタンが表示されない場合は、過去に Google Cloud アカウントを有効化している可能性があります。ただし、その場合でも無料枠は利用できます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-01.gif"
        
          alt="kickboard-part3-screencast-01"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 2 - ログインする&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google アカウント（Gmail アドレス）でログインします。Google AI Studio で使用しているものと同じアカウントを使用できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;注:「Google アカウント（ユーザー名@gmail.com）をすでにお持ちのようです。別のプロバイダのメールアドレスで新しいアカウントを作成するには、[キャンセル] をクリックしてください。」というメッセージが表示された場合は、[ログイン] をクリックして続行してください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 3 - 利用規約に同意する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;お住まいの国を選択します。これにより、使用する通貨や適用される利用規約が決まります。続行するには、利用規約に同意する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;注: スペシャル オファーなどに関するメールを定期的に受信することを希望する場合は、チェックボックスをオンにします。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-02.gif"
        
          alt="kickboard-part3-screencast-02"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 4 - 本人確認を行う&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;不安を覚えている方もいらっしゃるかもしれませんので、明確にしておきたいと思います。Google では&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;本人確認&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;と不正行為防止のために、クレジット カードなどのお支払い方法の登録を必須としています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;自動請求はありません:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://cloud.google.com/signup-faqs?hl=en#:~:text=will%20i%20be%20billed%20after%20the%20trial%20ends?"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;無料トライアルが終了しても、自動的に課金されることはありません&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;。トライアル終了後も引き続きリソースを利用するには、有料アカウントに手動でアップグレードする必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;無料クレジットが付与される前に、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/billing/docs/how-to/verify-bank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;銀行口座の確認&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の一環としてカードが使用される場合があります。確認方法は地域によって異なります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;続行するには、連絡先情報とお支払い方法を入力してください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 5: 構築を始める&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;確認が完了するとコンソールが表示され、画面上部のバナーおよび [請求先アカウント] セクションに、300 ドル分の無料トライアル クレジット残高が表示されます。通常は「My First Project」などのデフォルトのプロジェクトが用意されており、そこから作業を開始できます。必要に応じて、新しいプロジェクトを作成することも可能です。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-03.gif"
        
          alt="kickboard-part3-screencast-03"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;注: クレジット残高は、現地通貨で表示される場合があります。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;AI Studio に戻る&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;課金が有効なプロジェクトを作成できたので、Google AI Studio に戻りましょう。有料 API キーの入力を求められた場合は、このプロジェクトを使用して Nano Banana Pro を利用できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;新しいプロジェクトを Google AI Studio にインポートする&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-04-01.gif"
        
          alt="kickboard-part3-screencast-04-01"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;新しくインポートしたプロジェクトと連携する新しい API キーを作成する&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-04-02.gif"
        
          alt="kickboard-part3-screencast-04-02"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;新しい API キーで Nano Banana Pro を呼び出す&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/kickboard-part3-screencast-04-03.gif"
        
          alt="kickboard-part3-screencast-04-03"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;次のステップ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;300 ドル分のクレジットと強力なクラウド プラットフォームをご利用いただけるようになりました。では、実際にどのようなものをビルドできるのでしょうか。次回の投稿では、これらを利用して次世代の AI アプリケーションやエージェントをビルドする例をいくつかご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;それまでの間は、ぜひ Google の豊富な &lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/?category=cloud" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Codelab ライブラリ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をご覧いただき、次のアイデアの実現に取り組んでみてください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;リード デベロッパーリレーションズ エンジニア&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Remigiusz Samborski&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-unlocking-the-cloud-with-the-free-trial/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Kickboard_-_Blog_3_1.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Gemini 3 Pro Image を使ってみる</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Kickboard_-_Blog_3_1.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/getting-started-with-gemini-3-unlocking-the-cloud-with-the-free-trial/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Remigiusz Samborski</name><title>Lead Developer Relations Engineer</title><department></department><company></company></author></item><item><title>Conversational Analytics API を使用して BigQuery で会話型エージェントを構築する</title><link>https://cloud.google.com/blog/ja/products/data-analytics/build-data-agents-with-conversational-analytics-api/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 20 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/build-data-agents-with-conversational-analytics-api?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;データを BigQuery に取り込むことで情報は一元化できますが、真の課題はそのデータを利用できるようにすることです。技術的な障壁のために、知りたいことがある人（経営幹部からアナリストまで）が必要な回答を得られない、ということが少なくありません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini を搭載した &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/overview?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Conversational Analytics API&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使用すれば、複雑なシステムを使わなくてもインサイトが得られます。この API は、自然言語を理解し、BigQuery データをクエリして、テキスト、テーブル、グラフで回答を提供する、コンテキスト認識型エージェントの構築を支援するよう設計されています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;現在、API と連携できるソリューションであれば、どのようなものでも構築できます。たとえば、&lt;/span&gt;&lt;a href="https://discuss.google.dev/t/new-conversational-analytics-api-adk-demo/272389" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）と統合&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;してマルチエージェント システムを構築したり、以下のようなデータ戦略を実装したりすることができます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;運用担当者向けのセルフサービス トリアージ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; サポートチームやセールスチームなどに、データに関する質問に即座に回答するエージェントを提供します。「Why did signups drop last week?（先週、登録者数が減ったのはなぜ？）」といった質問をチケットで問い合わせなくても、すぐに回答を得ることができます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;SaaS プロダクトを差別化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 優れたチャット インターフェースをプラットフォームに直接埋め込むことで、プラットフォームを差別化できます。お客様は平易な英語を使用して、独自の使用状況データをクエリ、可視化できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;動的なレポート:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 静的な PDF を超えるレポート機能です。核となるレポート機能を自動化し、レポートをリアルタイムの会話バージョンに効果的に置き換え、関係者が微妙なニュアンスのフォローアップの質問をしてより詳細な調査ができるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この投稿では、Conversational Analytics API を使用して BigQuery で会話型エージェントを構築する方法をご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 1: エージェントを構成して作成する&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;データ分析エージェントをデプロイするには、最終的な作成呼び出しを行う前に、アクセス、コンテキスト、環境を構成する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ご紹介する例では Python SDK を使用していますが、Conversational Analytics API はユーザーの好みや環境に応じて&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/overview#client-libraries"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;他の多くの言語にも対応&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;クライアントを初期化し、BigQuery ソースを定義する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、API とのやり取りに必要なクライアント（DataAgentServiceClient）をインスタンス化します。このクライアントは、明示的な BigQueryTableReference オブジェクトと組み合わせて使用します。BigQueryTableReference オブジェクトは、エージェントが特定のテーブル（project_id、dataset_id、table_id で定義）にアクセスすることを承認します。こうした個々の参照は、bq フィールドの下の DatasourceReferences オブジェクトに集約されます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;from google.cloud import geminidataanalytics\r\n\r\n# Set project-specific variables (client, location, project IDs)\r\ndata_agent_client = geminidataanalytics.DataAgentServiceClient()\r\nlocation = &amp;quot;global&amp;quot;\r\nbilling_project = &amp;quot;your-gcp-project-id&amp;quot;\r\ndata_agent_id = &amp;quot;google_trends_analytics_agent&amp;quot;\r\n\r\n# Define the BigQuery table sources\r\nbq_top = geminidataanalytics.BigQueryTableReference(\r\n    project_id=&amp;quot;bigquery-public-data&amp;quot;, dataset_id=&amp;quot;google_trends&amp;quot;, table_id=&amp;quot;top_terms&amp;quot;\r\n)\r\nbq_rising = geminidataanalytics.BigQueryTableReference(\r\n    project_id=&amp;quot;bigquery-public-data&amp;quot;, dataset_id=&amp;quot;google_trends&amp;quot;, table_id=&amp;quot;top_rising_terms&amp;quot;\r\n)\r\ndatasource_references = geminidataanalytics.DatasourceReferences(\r\n    bq=geminidataanalytics.BigQueryTableReferences(table_references=[bq_top, bq_rising]))&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652b6040&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェント コンテキストを設定する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;system_instruction（エージェントの動作 / ロールを定義）と datasource_references（エージェントがアクセスできるデータを定義）をバンドルして、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/data-agent-authored-context-bq"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;コンテキスト オブジェクトを構築&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;します。完成したコンテキストは、最終オブジェクト DataAgent の DataAnalyticsAgent 構造体の中でネストされます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;文字列ベースのシステム指示を与えることもできますが、より堅牢なコンテキスト オブジェクトを使用してエージェントに指示を与えることをおすすめします。さらに、オブジェクトに追加のシステム指示を与えて、補足ガイダンスを提供できるようにすることもできます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Set the context using our system_instruction string\r\npublished_context = geminidataanalytics.Context(\r\n    system_instruction=system_instruction,\r\n    datasource_references=datasource_references\r\n    example_queries=example_queries\r\n)\r\n\r\ndata_agent = geminidataanalytics.DataAgent(\r\n    data_analytics_agent=geminidataanalytics.DataAnalyticsAgent(\r\n        published_context=published_context\r\n    ),\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652b63d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェントを作成する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;data_agent_client.create_data_agent を呼び出します。このリクエストには、親リソースパス（projects/{billing_project}/locations/{location}）、一意のdata_agent_id、デプロイを完了できるようにすべて構成された data_agent オブジェクトが含まれます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Create the agent\r\ndata_agent_client.create_data_agent(request=geminidataanalytics.CreateDataAgentRequest(\r\n    parent=f&amp;quot;projects/{billing_project}/locations/{location}&amp;quot;,\r\n    data_agent_id=data_agent_id,\r\n    data_agent=data_agent,\r\n))&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652b6a90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これで、エージェントが作成され、published_context によって定義されます。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 2: 会話を作成する（ステートフルとステートレス）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Conversational Analytics API は、以下の 2 つの方法で会話を処理できます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ステートレス:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 質問とエージェント コンテキストを送信します。会話履歴は自身のアプリケーションで管理し、新しいリクエストごとに送信する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ステートフル:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; サーバーで「会話」を作成します。API が履歴を管理します。これにより、ユーザーはフォローアップの質問をすることができます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここでは、ステートフルな会話を構成します。新しいエージェントに関連付けられた会話オブジェクトを作成します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;def setup_conversation(conversation_id: str):\r\n    data_chat_client = geminidataanalytics.DataChatServiceClient()\r\n    conversation = geminidataanalytics.Conversation(\r\n        agents=[data_chat_client.data_agent_path(\r\n            billing_project, location, data_agent_id)],\r\n    )\r\n    request = geminidataanalytics.CreateConversationRequest(\r\n        parent=f&amp;quot;projects/{billing_project}/locations/{location}&amp;quot;,\r\n        conversation_id=conversation_id,\r\n        conversation=conversation,\r\n    )\r\n    try:\r\n        # Check if it already exists\r\n        data_chat_client.get_conversation(name=data_chat_client.conversation_path(\r\n            billing_project, location, conversation_id))\r\n    except Exception:\r\n        response = data_chat_client.create_conversation(request=request)\r\n        print(&amp;quot;Conversation created successfully.&amp;quot;)\r\n\r\nconversation_id = &amp;quot;my_first_conversation&amp;quot;\r\nsetup_conversation(conversation_id=conversation_id)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652b6e50&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 3: ストリーミング チャットループを作成する&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;インタラクティブな分析を可能にするため、会話フローを管理する関数 stream_chat_response を実装します。Data Analytics Agent API は、レスポンスをストリームとして返すように設計されています。この処理は、エージェントの最新の進捗状況をリアルタイムで提供するために不可欠です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;一般的なレスポンス ストリームには、以下のような個別のコンポーネントが含まれます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;スキーマ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; テーブルの解像度の確認。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;データ（クエリ）:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 生成された SQL クエリ（デバッグと透明性の確保に適しています）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;データ（結果）:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 結果のデータ構造体（Pandas のような DataFrame など）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;グラフ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; データ可視化のための Vega-Lite JSON 仕様。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;テキスト:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 合成された自然言語での最終的な要約。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;関数を定義する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この関数は、ユーザーの質問を受け付けるように定義されています。内部では、DataChatServiceClient を初期化し、ストリーミング完了後にグラフをレンダリングする必要があるかどうかを追跡するための単純なフラグ（chart_generated_flag）を定義します。ユーザーの質問は、API リクエストに必要な Message オブジェクトにラップされます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;def stream_chat_response(question: str):\r\n    data_chat_client = geminidataanalytics.DataChatServiceClient()\r\n    chart_generated_flag = [False] # Flag to help with visualization\r\n    \r\n    # Format the user&amp;#x27;s question into an API-ready Message object\r\n    messages = [\r\n        geminidataanalytics.Message(\r\n            user_message=geminidataanalytics.UserMessage(text=question)\r\n        )\r\n    ]&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48652b6bb0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ストリームを処理する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ConversationReference は必須です。&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ステートフルな会話&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;に関連付け、先ほど作成した特定の data_agent にリンクします。親パス、メッセージ、参照を使ってリクエスト オブジェクトを完全に構築したら、data_chat_client.chat を呼び出します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、返されたストリームを反復処理します。ここでは、ユーティリティ関数 show_message を使用して、さまざまなレスポンス タイプ（テキスト、グラフ、データ）を解析し、ユーザーに合わせて適切にフォーマットしています。最後に、ストリーム内で chart_generated_flag が設定されていた場合は、後処理ユーティリティ（preview_in_browser）が可視化のレンダリングを処理します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Reference the stateful conversation and the created Data Agent\r\n    conversation_reference = geminidataanalytics.ConversationReference(\r\n        conversation=data_chat_client.conversation_path(\r\n            billing_project, location, conversation_id\r\n        ),\r\n        data_agent_context=geminidataanalytics.DataAgentContext(\r\n            data_agent=data_chat_client.data_agent_path(\r\n                billing_project, location, data_agent_id\r\n            ),\r\n        ),\r\n    )\r\n    \r\n    # Prepare the chat request\r\n    request = geminidataanalytics.ChatRequest(\r\n        parent=f&amp;quot;projects/{billing_project}/locations/{location}&amp;quot;,\r\n        messages=messages,\r\n        conversation_reference=conversation_reference,\r\n    )\r\n    \r\n    # Process the streaming response\r\n    stream = data_chat_client.chat(request=request)\r\n    for response in stream:\r\n        # \&amp;#x27;show_message\&amp;#x27; is a utility function that formats\r\n        # and prints the different response types (text, data, chart)\r\n        show_message(response, chart_generated_flag)\r\n\r\n    # If a chart was generated, \&amp;#x27;preview_in_browser\&amp;#x27;\r\n    # is a utility to save and serve it as HTML\r\n    if chart_generated_flag[0]:\r\n        preview_in_browser()&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4864334820&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 4: エージェントと会話する&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;質問する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、成果を見てみましょう。stream_chat_response 関数を使用して会話できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;コンテキストを確認する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、エージェントがそのコンテキストを理解しているかどうかを確認しましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;question = &amp;quot;Hey what data do you have access to?&amp;quot;\r\nstream_chat_response(question=question)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4864334b50&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントは、system_instruction で指定した説明を使用して、top_terms テーブルと top_rising_terms テーブルの概要を返します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;自然言語から SQL、そしてグラフへ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;今度は、複雑なクエリを見てみましょう。平易な英語でグラフをリクエストしていることに注目してください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;question = &amp;quot;What are the top 20 most popular search terms last week in NYC based on rank? Display each term and score as a column chart&amp;quot;\r\nstream_chat_response(question=question)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4864334100&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントは、このプロセスを以下のようにストリーミングします。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;生成された SQL クエリを表示します。このクエリは、top_terms テーブルにアクセスし、dma_name = 'New York NY' と直近の 1 週間でデータをフィルタします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;結果のデータをテーブルとして出力します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Vega グラフの仕様を生成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;preview_in_browser ユーティリティがこれを、縦棒グラフを表示する index.html ファイルとして提供します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ステートフルなフォローアップ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ここで、ステートフルな会話（ステップ 2）が力を発揮します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;question = &amp;quot;What was the percent gain in growth for these search terms from the week before?&amp;quot;\r\nstream_chat_response(question=question)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4864334940&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントは、「these search terms（これらの検索語句）」が質問 2 の結果を指していることを記憶しています。新しいクエリを生成し、今回は（join_instructions の指示に沿って）top_terms テーブルと top_rising_terms テーブルを INNER JOIN して、同じ語句リストの percent_gain を取得します。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ステップ 5: エージェントを管理する&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェントとメッセージのライフサイクル管理について詳しくは、Conversational Analytics API ドキュメントの、実行できるさまざまな API リクエスト（&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/build-agent-http#manage-data-agents-and-conversations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;HTTP&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; / &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/build-agent-sdk#manage-data-agents-and-conversations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;）に関するページをご確認ください。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/build-agent-http#manage-data-agents-and-conversations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;エージェントの管理&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;方法、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/build-agent-http#set-iam-policy-for-data-agent"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;SetIAM&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; API、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/build-agent-http#get-iam-policy-for-data-agent"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GetIAM&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; API 経由で新たにユーザーを招待して共同作業を行う方法などについても説明しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;上級者向けのヒント: データと人のギャップを埋める&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;明確なシステム指示とスキーマ説明を与えることで、単なる会話型エージェントではなく、該当分野のエキスパートとなるエージェントを構築できます。このインタラクティブなアプローチは、静的なダッシュボードを越え、真に利用できるデータ分析を実現します。&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;始める&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/conversational-analytics-api/overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Conversational Analytics API を今すぐ試す&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://codelabs.developers.google.com/ca-api-bigquery#0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Conversational Analytics API Codelab で学習する&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/python/docs/reference"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Python SDK のドキュメント&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を確認する&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパーリレーションズ エンジニア&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、David Tamaki Szajngarten&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパー アドボケイト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Wei Hsia&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 04 Mar 2026 01:10:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/data-analytics/build-data-agents-with-conversational-analytics-api/</guid><category>Developers &amp; Practitioners</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Conversational Analytics API を使用して BigQuery で会話型エージェントを構築する</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/data-analytics/build-data-agents-with-conversational-analytics-api/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>David Tamaki Szajngarten</name><title>Developer Relations Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Wei Hsia</name><title>Developer Advocate</title><department></department><company></company></author></item><item><title>Gemini CLI で Neo4j の拡張機能を使用する</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/using-the-neo4j-extension-in-gemini-cli/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 19 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/using-the-neo4j-extension-in-gemini-cli?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini CLI は、Gemini の推論機能をターミナルに直接統合します。Neo4j のようなグラフ データベースが、元データを実用的な知識に変える AI 基盤インフラストラクチャとして利用されるようになったため、Gemini CLI との統合は強力な新しいソリューションを提供します。Model Context Protocol（MCP）を活用することで、Neo4j の Gemini CLI 拡張機能は、Gemini の推論エンジンとナレッジグラフの構造化された「メモリ」の橋渡しをします。これにより、開発者はターミナルを離れることなく、クラウド インフラストラクチャのデプロイ、自然言語を使用した Cypher クエリの生成、高度な GraphRAG アプリケーションの構築を行うことができます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud で Neo4j を使用する理由&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Neo4j は、情報をノードとノード間の関係として表します。このネットワーク（グラフ表現）は、データ内のつながりから価値を引き出すのに役立ちます。顧客と製品に関する 360 度ビュー、ロジスティクスと最適化、不正行為の検出、製薬業界での創薬など、さまざまな業種で応用されています。本番環境での一部のユースケースは以下のとおりです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://neo4j.com/customer-stories/dun-bradstreet/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dun &amp;amp; Bradstreet は、Google Cloud 上で Neo4j&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、さまざまな企業間の所有権情報を管理しています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://neo4j.com/customer-stories/uber/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Uber は構成管理情報を&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; Google Cloud 上の Neo4j に保存しています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Neo4j の Gemini CLI 拡張機能&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Neo4j の &lt;/span&gt;&lt;a href="https://geminicli.com/extensions/?name=neo4j-contribmcp-neo4j" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI 拡張機能&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は、拡大を続ける &lt;/span&gt;&lt;a href="http://geminicli.com/extensions" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI 拡張機能エコシステム&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の一部です。Neo4j の Gemini CLI 拡張機能には、Gemini CLI 内に 4 つの &lt;/span&gt;&lt;a href="https://github.com/neo4j-contrib/mcp-neo4j" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Neo4j MCP サーバー&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;がパッケージ化されています。これによりユーザーは、Neo4j Aura のデプロイ、自然言語による Cypher クエリの記述、グラフの可視化、より大規模なエージェント フローでのナレッジグラフのメモリとしての使用ができるようになります。こうしてナレッジグラフと GraphRAG アプリケーションの構築が、これまで以上に簡単になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini CLI 拡張機能にバンドルされている 4 つの MCP サーバーは次のとおりです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;mcp-neo4j-cloud-aura-api&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Neo4j Aura クラウド サービス管理 API&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;mcp-neo4j-cypher&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - 自然言語から Cypher クエリへの変換&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;mcp-neo4j-data-modeling&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - インタラクティブなグラフデータ モデリングと可視化&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;mcp-neo4j-memory&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Neo4j に保存されたナレッジグラフのメモリ&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、この拡張機能の仕組みを見ていきましょう。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;I: Google Cloud Marketplace で Neo4j Aura をサブスクライブする&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Neo4j MCP サーバーを使用するには、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Neo4j Aura サブスクリプション&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;と &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;API キー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;が必要です。&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/neo4j-mp-public/neo4j-aura"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud Marketplace&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; にログインして、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Neo4j Aura&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; をサブスクライブします。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;サブスクライブしたら、&lt;/span&gt;&lt;a href="https://console.neo4j.io/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Neo4j Aura コンソール&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;に移動し、Marketplace で組織を選択してからテナントを選択し、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;テナント ID&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を保存します（後のステップで必要になります）。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Aura コンソールで、右上の&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;プロフィール アイコン&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;をクリックし、[&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;アカウント設定&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;] を選択して [&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;API キー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;] に移動します。そこから [&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;API キーを生成&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;] をクリックします。生成された &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;NEO4J_AURA_CLIENT_ID&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;NEO4J_AURA_CLIENT_SECRET&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; をコピーします。これらは &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;mcp-neo4j-cloud-aura-api&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; サーバーで使用されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Marketplace を通じてデプロイする方法を示す動画を&lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=susUjUoQpGQ&amp;amp;list=PLG3nTnYVz3nya8Me9-Xj9vEuLYIOk03ba&amp;amp;index=25" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;でご覧いただくこともできます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;II. 環境変数を構成する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;必要に応じて、こちらの手順に沿って操作してください。視覚的に学びたい方のために、&lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=CyK9djJXANc&amp;amp;list=PLG3nTnYVz3nya8Me9-Xj9vEuLYIOk03ba&amp;amp;index=27" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;に動画も用意されています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;まず、シェルで環境変数を設定します。これにより、MCP サーバーが Neo4j Aura に接続し、Aura API に対して認証できるようになります。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/neoj1.max-1000x1000.png"
        
          alt="neoj1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;III. Neo4j の Gemini CLI 拡張機能をインストールする&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次のコマンドで拡張機能をインストールします。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gemini extensions install https://github.com/neo4j-contrib/mcp-neo4j&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643975b0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;gemini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; コマンドで Gemini CLI を起動します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gemini&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48429b2580&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;/mcp desc&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; を実行して、Neo4j MCP サーバーのステータスが [&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Ready&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;] であることを確認します。緑色のインジケーターが、例えば以下のように表示されます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/neoj_blog_post.max-1000x1000.png"
        
          alt="neoj_blog_post"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Neo4j MCP サーバーの一部が赤色で表示される場合があります。これは、接続するデータベースがまだないためです。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;管理サーバー mcp-neo4j-cloud-aura-api の使用&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、MCP サーバーの 1 つを使用してみましょう。Aura Database Manager MCP サーバーを使用すると、新しいデータベースをデプロイできます。デプロイするには、Gemini CLI でプロンプトを入力します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AuraDB Pro インスタンスを作成するプロンプト:&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a new AuraDB Pro instance.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48587c9d30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini にフォローアップの質問をされる場合があります。たとえば、私のアカウントには Aura テナントが多数あるため、使用するテナントとインスタンスの名前を尋ねられました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;十分なコンテキストが揃うと、Gemini はインスタンスをプロビジョニングし、インスタンス ID、URL、データベース パスワードなどの詳細を返します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;出力は次のようになります。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/neoj_2.max-1000x1000.png"
        
          alt="neoj_2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらの値を、後で参照できる場所にコピーします。環境変数を設定する際に必要になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini CLI をいったん終了し、これらを環境変数として設定します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/neoj_3.max-1000x1000.png"
        
          alt="neoj_3"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;環境変数を設定したら、Gemini CLI を再度開きます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;/mcp desc&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; をもう一度実行すると、Neo4j MCP サーバーがすべて緑色で表示されます。これは、すべての環境変数が設定され、接続するデータベースが存在するためです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;コマンドを実行して、他のサーバーを試してみましょう。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Cypher サーバー mcp-neo4j-cypher の使用&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;グラフの保存には Neo4j が使用されます。グラフはノードとノード間の関係で構成されます。非常に簡単な例として、ノードを作成してみましょう。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a Customer node with customer_id = &amp;quot;Gemini&amp;quot;.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4865701cd0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;では、データベースに対してクエリを実行しましょう。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Return the count of Customer nodes with customer_id = &amp;quot;Gemini&amp;quot;.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48429b67f0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;それでは、実行したプロンプトによって Aura コンソールがどのように変化したかを見てみましょう。&lt;/span&gt;&lt;a href="https://console.neo4j.io/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Neo4j Aura コンソール&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を開き、インスタンスに移動します。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/instances.max-1000x1000.png"
        
          alt="instances"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="izuic"&gt;Gemini を使用してデプロイしたインスタンスが、Aura コンソールに表示されています。&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;次に、[&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;接続&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;]、[&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;クエリ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;] の順にクリックします。先ほど使用したパスワードを使用します。Gemini と MCP を使用して作成したノードを確認できます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/aura.max-1000x1000.png"
        
          alt="aura"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="izuic"&gt;Gemini を使用して作成したノードが、Aura コンソールに表示されています。&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このように、MCP と Gemini CLI のみを使用して、まったく新しい AuraDB Pro インスタンスを作成できました。次に、そのデータベース インスタンス内に保存されるノードを作成しました。自然言語を使用してすべてを自動的に行えるのは、非常に便利です。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;データ モデリング サーバー mcp-neo4j-data-modeling の使用&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;別の MCP サーバーを見てみましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;データ モデリング MCP サーバーは、グラフの構造を分析して理解するのに役立ちます。具体的には、データベースに存在するラベル、関係、数に関する分析情報をすばやく提供します。これにより、グラフモデルの設計、改良、可視化が容易になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini CLI のプロンプト:&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Using the data modeling server, list all labels and relationship types in my database,and include a count of nodes per label and relationships per type. Keep it concise.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48432aca00&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これ以外の操作をしない限り、データベースには 1 つのラベルを持つ 1 つのノードのみが存在しているはずです。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;メモリ MCP サーバー mcp-neo4j-memory を使用する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;もう 1 つの MCP サーバーを見てみましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;メモリ MCP サーバーは、Neo4j 内に事実とコンテキストを永続的に保存する長期的なナレッジストアとして機能します。これにより、エージェント フローと Gemini セッションで、以前に保存された情報の呼び出し、更新、削除ができるようになるため、さらにコンテキストに沿ったより深い対話が可能になります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;メモリに保存するためのプロンプト&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Use the neo4j-memory server to store this fact: &amp;quot;Customer Asha prefers the enterprise support tier.&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48432acb80&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;メモリから取得するためのプロンプト&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Use the neo4j-memory server to retrieve what support tier Asha prefers.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48432ac340&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;もちろん、これは単純化した例です。このようなナレッジグラフを使用すると、複雑な関係を、AI が簡単に取得できる方法で保存できます。これにより、企業で利用可能な知識に基づいて AI をグラウンディングできます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;クリーンアップ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;完了したら、このブログの手順説明の冒頭で使用したのと同じ MCP サーバーを使用して、AuraDB Pro インスタンスを削除できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Aura インスタンスを破棄するためのプロンプト:&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Using the Aura API server, delete the Aura instance &amp;quot;bentest&amp;quot; we just created. Confirm when deletion is complete.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48432ac190&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;必要に応じて、Aura コンソールで削除が実行されたことを確認できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Neo4j の拡張機能を使用すると、これまでになく簡単にデータをグラフとして表現できるようになります。これにより、データ内のつながりの価値を引き出すことができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google と Neo4j の連携について詳しくは、&lt;/span&gt;&lt;a href="https://neo4j.com/google" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://neo4j.com/google&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; をご覧ください。利用可能な Gemini CLI 拡張機能の完全なリストを確認するには、&lt;/span&gt;&lt;a href="http://geminicli.com/extensions" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;geminicli.com/extensions&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; にアクセスしてください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;皆様がどのようなものを構築されるかとても楽しみにしております。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパー アドボケイト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Jack Wotherspoon&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Neo4j、シニア ディレクター&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Ben Lackey 氏&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 02 Mar 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/using-the-neo4j-extension-in-gemini-cli/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Gemini_CLI_x_Neo4j.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Gemini CLI で Neo4j の拡張機能を使用する</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Gemini_CLI_x_Neo4j.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/using-the-neo4j-extension-in-gemini-cli/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Wotherspoon</name><title>Developer Advocate</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ben Lackey</name><title>Senior Director at Neo4j</title><department></department><company></company></author></item><item><title>モデル適応をマスターする: Google Cloud でのファインチューニング ガイド</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/mastering-model-adaptation-a-guide-to-fine-tuning-on-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 12 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/mastering-model-adaptation-a-guide-to-fine-tuning-on-google-cloud?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/your-first-ai-application-is-easier-than-you-think?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AI アプリケーションを構築&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;している場合、プロンプトをテストしたり、&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/build-your-first-adk-agent-workforce?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;エージェント&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を試してみたりするかもしれません。しかし、プロトタイプから本番環境に移行するにつれて、モデルの整合性が十分でないという、よくある壁にぶつかることがあります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini は&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/products/ai-machine-learning/what-google-cloud-announced-in-ai-this-month?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;非常に優れた&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;汎用基盤モデルですが、ブランドのスタイルガイドに沿った回答をより一貫して生成したい場合や、API がカスタムの非標準 JSON 形式で毎回フォーマットされるようにしたい場合もあるでしょう。多くの場合は、プロンプト エンジニアリングとコンテキスト内学習だけで必要な結果を得ることができます。しかし、より専門性の高い本番環境要件に移行するにつれて、モデルの能力をさらに引き出したいと考えるかもしれません。そこで&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ファインチューニング&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;の出番です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ファインチューニングでは、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini-use-supervised-tuning?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 2.5 Flash&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; などの汎用モデルや &lt;/span&gt;&lt;a href="https://huggingface.co/meta-llama" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Llama&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; などのオープンソース モデルを、特定のドメインに適応させることができます。独自の例を含むキュレートされたデータセットでモデルをトレーニングすることで、次のことが可能になります。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;整合性を確保する&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 特定の回答スタイルや非標準のデータ形式を毎回返すことができます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;効率を高める&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 一部のタスクでは、ファインチューニングされた、より小さく、安価で、レイテンシの低いモデルでも同様のパフォーマンスを実現できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;特化する&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: トレーニング データが少ない分野では、ファインチューニングによって精度が向上し、ハルシネーションが減少します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google は、&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/production-ready-ai-with-google-cloud-learning-path?e=48754805&amp;amp;hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;プロダクション レディな AI シリーズ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の一環として、Google Cloud における 2 つの異なるファインチューニング オプションをカバーする 2 つの新しいハンズオンラボをリリースします。1 つは &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; のフルマネージド エクスペリエンス、もう 1 つは &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine（GKE）&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;の自由にカスタマイズ可能なパスです。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;オプション 1: Vertex AI を使用したマネージドパス&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;多くのデベロッパーにとって、目標はインフラストラクチャのオーバーヘッドをできるだけ抑えながらモデルのパフォーマンスを向上させることです。すぐにモデル適応を実現できる「ボタン」があったら便利でしょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/vertex-ai"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; には、Gemini などのモデルをファインチューニングするためのフルマネージド サービスが用意されています。GPU のプロビジョニング、チェックポイントの管理、複雑なトレーニング ループの記述について心配する必要はありません。データを指定してパラメータを構成するだけで、残りの処理は Vertex AI が行います。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/vertex-stats.max-1000x1000.png"
        
          alt="vertex-stats"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;最初の新しい Codelab では、軽量で効率性の高いモデルである Gemini 2.5 Flash をファインチューニングする方法をご紹介します。Vertex AI SDK for Python を使用した教師ありファインチューニング（SFT）のワークフロー全体を知ることができます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;学習内容&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;データ準備:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Gemini で想定される JSONL 形式に元データを変換する方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ベースライン:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 改善を定量化するために、まずベースモデルを評価する方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;チューニング:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; わずか数行の Python でチューニング ジョブを起動する方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;評価:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; ROUGE などの自動指標を使用して、新しいチューニング済みモデルをベースモデルと比較する方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;ラボに移動&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48656fe4f0&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;オプション 2: GKE を使用したカスタムパス&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;本番環境の要件によっては、完全な制御が必要になることがあります。Llama、Mistral、Gemma などのオープンソース モデルを使用している場合、特定の重みを調整したり、カスタム トレーニング ライブラリを使用したり、特定のハードウェア構成で実行したりする必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Kubernetes Engine（GKE）は、そのために最適なプラットフォームです。Google のスケーラブルなインフラストラクチャのメリットを享受しながら、独自の GPU リソースと環境を管理し、AI ワークロードを柔軟にオーケストレートできます。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/gke-stats.max-1000x1000.png"
        
          alt="gke-stats"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;2 つ目のファインチューニング Codelab では、Kubernetes における MLOps の基本を学びます。LoRA（Low-Rank Adaptation）と呼ばれる手法を使用して Llama 2 をファインチューニングします。LoRA では、事前トレーニング済みモデルの重みが固定され、目的に合わせてチューニングされた、より小さいトレーニング可能なパラメータ レイヤが注入されるため、多くのモデルを効率的にファインチューニングできます。これにより、トレーニングが必要なパラメータの数が大幅に減り、より小さく、費用対効果の高いアクセラレータで巨大なモデルをファインチューニングできるようになります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;学習内容&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;インフラストラクチャ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; GPU ノードプール（特に NVIDIA L4 GPU を使用）で GKE クラスタをプロビジョニングする方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;効率性:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; LoRA を使用して、膨大な費用をかけなくても 70 億パラメータ モデルをファインチューニングできる方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;セキュリティ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/iam/docs/workload-identity-federation"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Workload Identity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、サービス アカウントキーを管理しなくても Cloud Storage に安全にアクセスできる方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;コンテナ化:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 再現可能な実行のために、PyTorch トレーニング コードを Docker コンテナにパッケージ化する方法。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;ラボに移動&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48656fe670&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;どのパスを選択すべきか？&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Vertex AI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; は、迅速なイテレーションが必要であり、マネージド サービスを希望し、Google の強力な Gemini モデルを基盤として構築する場合に選択できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;GKE を選択&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;できるのは、詳細なカスタマイズが必要な場合、オープンソース エコシステム（Hugging Face、Llama など）にコミットしている場合、またはトレーニングを既存の Kubernetes ベースのプラットフォームに緊密に統合する必要がある場合です。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;どちらのパスを選んでも同じ目的地、つまり汎用モデルでは決して実現できないレベルでビジネスを理解した、本番環境対応のモデルに到達できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;プロトタイプから本番環境へ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらのラボは、Google の公式な学習プログラムである「&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud でのプロダクション レディな AI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;」の一部です。有望なプロトタイプから堅牢な本番環境グレードの AI アプリケーションへの移行に役立つコンテンツについては、カリキュラム全体をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/blog/ja/topics/developers-practitioners/production-ready-ai-with-google-cloud-learning-path?e=48754805&amp;amp;hl=ja"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;学習プログラム全体を確認する&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ハッシュタグ &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;#ProductionReadyAI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; で成果を共有し、仲間とつながりましょう。ぜひご活用ください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;デベロッパー アドボケイト&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Drew Brown&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 20 Feb 2026 03:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/mastering-model-adaptation-a-guide-to-fine-tuning-on-google-cloud/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/finetuning-hero-image.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>モデル適応をマスターする: Google Cloud でのファインチューニング ガイド</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/finetuning-hero-image.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/mastering-model-adaptation-a-guide-to-fine-tuning-on-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Drew Brown</name><title>Developer Advocate</title><department></department><company></company></author></item><item><title>Gemini を使用してコードサンプルを大規模に生成する際の 7 つの技術的なポイント</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/7-technical-takeaways-from-using-gemini-to-generate-code-samples-at-scale/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 12 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/7-technical-takeaways-from-using-gemini-to-generate-code-samples-at-scale?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;生成 AI を使用したコードの作成はよく知られたタスクですが、別の課題として、生成 AI を利用してプロダクション レディな教育コンテンツを作成することが挙げられます。Google Cloud プロダクトの説明に利用できるリソースの幅を広げる作業に Gemini を活用し始めたとき、既存の汎用的な生成 AI 搭載アプリやツールだけでは不十分で、ユースケースに合わせた専用のシステムが必要であることに気づきました。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;解決しようとしていた問題&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud には 100 以上のプロダクトがあります。各プロダクトには、JavaScript、Python、Go、Java などの言語のクライアント ライブラリを使用して作成、操作、クエリできる独自のリソースセットがあります。Google のチームは、開発者がこれらのクライアント ライブラリを使用する方法を学ぶためのサンプルコードを用意しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;例として、@google-cloud/storage-control Node.js クライアント ライブラリを使用して Google Cloud Storage の「フォルダ」リソースを一覧表示する方法を示すサンプルがあります。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;const { StorageControlClient } = require(&amp;quot;@google-cloud/storage-control&amp;quot;).v2;\r\n...\r\nconst client = new StorageControlClient();\r\n...\r\n  const request = {\r\n...\r\n  };\r\n...\r\n    const [folders] = await client.listFolders(request);\r\n...\r\n    for (const folder of folders) {\r\n      console.log(`Folder name: ${folder.name}`);\r\n      console.log(`  Metageneration: ${folder.metageneration}`);\r\n    }\r\n...&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f486214d6d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;近年、Google は生成 AI を活用してこれらのサンプルを開発しています。これは驚くことではありません。しかし、2024 年後半に、より体系的なアプローチを取り始め、チームが高品質なサンプルを迅速に作成できるよう、専用のツールセットを開発しました。これらのツールは、Vertex AI の Gemini と &lt;/span&gt;&lt;a href="https://genkit.dev/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Genkit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;（生成 AI ツール開発用のオープンソース フレームワーク）を活用した、一連の決定論的な自動化と AI ワークフローで構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このブログ投稿では、まずサンプル生成システムのアーキテクチャの概要を説明し、次に開発プロセスから得られた &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;7 つの技術的なポイント&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;をご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;サンプル生成アーキテクチャ&lt;/strong&gt;&lt;/h4&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/samples-generation-architecture-diagram.max-1000x1000.png"
        
          alt="samples-generation-architecture-diagram"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このシステムは、次のサブシステムで構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;生成&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: このサブシステムは Gemini を使用して、サンプル ファイルと、単体テストや依存関係マニフェスト（package.json や requirements.txt など）といったその他の必要なアーティファクトを作成します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;検証&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 生成されたコードは、検証サブシステムによって「LLM-as-a-judge」と決定論的ツール（linter など）を組み合わせて評価され、クラウド スタイルや言語固有のベスト プラクティスなどのカテゴリでコードにスコアが付けられます。そのフィードバックは生成システムに送り返され、サンプルが改良されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;デリバリー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 生成されたサンプル（および単体テストなどの関連するアーティファクト）は、人間によるレビューとテストを経て、GitHub リポジトリ、&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/docs/samples"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;サンプル ブラウザ&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、その他の &lt;/span&gt;&lt;a href="http://docs.cloud.google.com/"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;docs.cloud.google.com&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; ページに公開されます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;このようなアーキテクチャを踏まえ、開発プロセスから得られた&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;7 つの技術的なポイント&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;をご紹介します。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;7 つの技術的なポイント&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;これらの知見は、基本的なプロンプト エンジニアリングを超えて、プロダクション レディな生成 AI システムを構築およびスケーリングするための実用的なロードマップとなります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 1: 分解する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;私たちが当初 Gemini にもたらしていた問題は、問題が大きすぎることでした。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;各サンプル ファイルは 50～100 行程度です。システムの初期バージョンでは、1 回のプロンプトで Gemini がファイル コンテンツの大部分を生成することを想定していました。しかし、特に私たちのユースケースではコードの各行が非常に細かくなるため、Gemini（2.5）ではこの問題が大きすぎることがわかりました。Gemini が指示から逸脱するケースは数多くありました。下の画像で、左側のコードには Gemini が生成したコード（具体的には約 20 行のコード）が含まれており、右側のコードには、私たちが実際に臨んでいたコード行が含まれています。2 つのコードチャンクの間には、不要なコメントや不要な process.exit() 呼び出しなど、多くの差分（つまり違い）があることがわかります。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/generated-code-versus-desired.max-1000x1000.png"
        
          alt="generated-code-versus-desired"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;問題をより小さなサブ問題に分ける必要があることは明らかでした。分解が必要だったのです。私たちの場合、サンプル ファイルを複数のパーツに分割しました。サンプル ファイルは、次の要素で構成されています。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;スニペット&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: 開発者にとって役立つ、サンプル ファイルの教育的パーツ&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;CLI ロジック&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: ユーザーがコマンドライン インターフェースを使用してサンプル ファイルを呼び出すことを可能にする&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;...\r\n// The snippet\r\nasync function getSecret(projectId, secretId) {\r\n  const name = `projects/${projectId}/secrets/${secretId}`;\r\n  try {\r\n    const [secret] = await client.getSecret({\r\n...\r\n// The CLI logic\r\nUsage:\r\n node secretmanager-service-client-secret-get-async.js example-project-id example-secret-id\r\n`);\r\n    process.exitCode = 1;\r\n  });\r\n  main(process.argv.slice(2));\r\n...&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48656bedf0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;サンプルを意味のあるパーツに分割し、各パーツに個別の生成プロンプトを割り当てることで、LLM のハルシネーションと指示からの逸脱を大幅に減らすことができました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;重要なポイント 2: 決定論を採用する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;発生した問題が決定論的に簡単に解決できる場合は、決定論的に解決します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;発生した特定の問題を解決しようとするとき、最初に Gemini を思い浮かべてしまうという、視野狭窄のような状態に陥りやすい時期もありました。LLM の導入ではなく、自動化の導入というより大きな目標を忘れてしまうこともありました。発生した問題の多くを解決する、既存の確実な決定論的方法があることを忘れがちでした。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;現在でも、ファイルに Apache ライセンス ヘッダーを追加する、依存関係マニフェスト（package.json ファイルなど）を生成する、LLM で生成されたコードの lint 関連の問題を自動修正する、lint 関連のフィードバックを生成して Gemini に送り返すなど、システムが決定論的に行うことはたくさんあります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 3: プロンプトを具体的に記述する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;プロンプトは具体的に記述し、暗黙の前提を明示します。もちろん、これはプロンプト エンジニアリングの基本です。しかし、その重要性は過言ではありません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;具体的に記述することは特に重要でした。なぜなら、開発者が記述する他のほとんどの種類のコードとは異なり、サンプルコードには次のような特長があるからです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;多くのオーディエンスがおり、その多くはプログラミング初心者である&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;教育目的で存在している。主なオーディエンスは、コードが実行されるマシンではなく人間です。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;異なるプロダクト間で一貫している必要がある。どのサンプルも同じ開発者が書いたようにする必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;そのため、ユーザーが読む可能性のあるすべての行を計画的に作成する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プロンプトで数十もの異なるルールを明示する必要がありました。たとえば、私たちがワンショットの例として作成したサンプルでは「projectId」パラメータのデフォルト値を設定していないのに、Gemini は設定しました。Gemini にそうしないよう明示的に指示する必要がありました。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;async function createGlossary(\r\n  projectId = &amp;#x27;example-project-id&amp;#x27;, // We don&amp;#x27;t want Gemini to set a default value for projectId.\r\n  location = &amp;#x27;us-central1&amp;#x27;,\r\n  glossaryName = &amp;#x27;example-glossary-name&amp;#x27;,\r\n) {&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f4862ebe640&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;プロンプトを具体的に記述することで、次のことも可能になりました。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;検証システムのフィードバックに埋め込まれていた指示の一部をシフトレフトする必要がありました。つまり、最初の世代のプロンプトの初期バージョンでは、モデルが検証システムからのフィードバックを通じて後で学習する重要な指示がモデルに与えられていませんでした。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;人間が生成するサンプルの種類に関する専門知識を深める必要がありました。つまり、チームとしてこれまで体系的に回答したことのないサンプルに関する質問に答える必要があったのです。サンプルについて 100 以上の異なる設計上の決定事項について合意に達しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 4: 評価者を評価する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;一般的に、評価システムは生成システムよりも信頼できますが、評価システムも慎重に評価する必要があります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;生成評価モデルがうまく機能するのは、人間と同じように、LLM は一般的に、評価対象のコンテンツを作成するよりも、コンテンツを評価する方が得意だからです。しかし、評価システム（または検証システム）の信頼性を高めるために、（LLM-as-a-judge LLM の評価プロンプトから得られた）いくつかの質問に対する Gemini の回答と、手作業で作成したデータセットを比較しました。私たちは、LLM-as-a-judge の質問の一部について、不完全なサンプルとそれに関連する正解を手作業で作成しました。下の図では、4 つの不完全なサンプルで 5 つの質問が評価されています。黄色（薄い色）の正方形は、Gemini が正しく回答できなかった質問を表しています。LLM が確実には回答できない「危うい」質問を特定できました。このプロセスにより、これらの「危うい」質問を破棄し、評価プロンプト全体を改良することができました。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/evaluating-llm-answers.max-1000x1000.png"
        
          alt="evaluating-llm-answers"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 5: 他の側面もスケーリングする&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;システムの LLM 以外の側面もスケーリングできるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;chat bot やコードの自動補完とは異なり、私たちのユースケースでは Gemini からの即時のフィードバックは必要ありません。単一のサンプル、検証フィードバック、および単体テストなどの関連するアーティファクトの生成が完了するまで、1 分ほど待つ余裕がありました。さらに、Gemini は、生成した数百ものサンプルの中でも、ユースケースの費用を低く抑えてくれました。そのため、Google のシステムの LLM 関連の側面はうまくスケーリングできました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;しかし、プロセスの最終工程は同じようにはうまくいきませんでした。サンプルを公開する準備には、サンプルあたり約 5～15 分かかりました。各サンプルの人間によるレビューとエンドツーエンドのテストが含まれるため、このプロセスが最大のボトルネックとなりました。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 6: 最終的な出力をエンドツーエンドでテストする&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;コードが機能しない場合は、公開できません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;そのため、公開するサンプルをエンドツーエンドでテストすることが重要でした。これは、おそらく教訓というよりは、チームとしてたどり着いた哲学的なコンセンサスです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;私たちが公開するコードは、ユーザーが実行することを想定して設計されています。ユーザーと同じような状況で自分たちが実行できるのでなければ、ユーザーにとって役に立つことが実証されたサンプルを提供することはできません。当初から、手書きのサンプルは、公開前に手動またはプログラムでエンドツーエンド テストを行っています。サンプルの作成方法を変えても、サンプルの品質が低下してはなりません。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/discover/how-test-driven-development-amplifies-ai-success"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;DORA&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; は、この「信頼するが検証はする」アプローチを「成熟した AI 導入」の兆候として説明しています。厳格なエンドツーエンド テストは、私たちのためだけでなく、サンプルを利用する開発者の信頼を維持するために不可欠です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ポイント 7: 優れたエンジニアリングを行う&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;確立されたエンジニアリングのベスト プラクティスを適用すれば、他のすべては後からついてきます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;よく考えてみると、上述したポイントの多くは、LLM を大規模に使用してコンテンツやコードを生成する分野に特有のものではありません。これらのシステムを構築する際に下した、プラスの影響をもたらすエンジニアリング上の決定の多くは、LLM とはまったく関係がなく、上記のポイントでも言及されていません。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;高品質な教育用コードサンプルを大規模に生成する過程で、成功の鍵は強力な LLM だけではないことがわかりました。Gemini と Genkit が必要な生成能力を提供してくれましたが、真のブレークスルーは、専門的なエンドツーエンドのシステムを構築したことによってもたらされました。問題を分解すること、決定論を採用すること、エンドツーエンドのテスト、パイプライン全体のスケールなど、ここで説明した 7 つのポイントは、LLM と確立されたエンジニアリング プラクティスを組み合わせた、信頼性が高くスケーラブルな生成システムを構築する方法を示しています。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- シニア デベロッパー リレーションズ エンジニア、Nim Jayawardena&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- スタッフ デベロッパー リレーションズ エンジニア、Adam Ross&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 20 Feb 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/7-technical-takeaways-from-using-gemini-to-generate-code-samples-at-scale/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/header-alt-text-2436x1200.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Gemini を使用してコードサンプルを大規模に生成する際の 7 つの技術的なポイント</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/header-alt-text-2436x1200.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/7-technical-takeaways-from-using-gemini-to-generate-code-samples-at-scale/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Nim Jayawardena</name><title>Senior Developer Relations Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Adam Ross</name><title>Staff Developer Relations Engineer</title><department></department><company></company></author></item><item><title>Antigravity と Gemini CLI の比較</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/choosing-antigravity-or-gemini-cli/</link><description>&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;注&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7f48643e15b0&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 5 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/choosing-antigravity-or-gemini-cli?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;要約&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://antigravity.google/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: エージェントの管理機能と IDE のエクスペリエンスを最大限に利用したい場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://geminicli.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: ターミナルでの CLI や、ヘッドレスでの実行が必要な場合。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;比較早見表&lt;/strong&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;機能&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Antigravity IDE&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini CLI&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;対象ユーザー&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;アプリケーションの構築やタスクの実行にエージェントを活用することを検討しているユーザー（&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;職種は問わない&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;）。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ターミナルで作業することを好む&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;技術者&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;インストール&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;簡単に操作できるグラフィカル ユーザー インターフェースを使用&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。事前のインストール作業なし。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;npm install -g @google/gemini-cli&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; による&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;クイック インストール&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（Node.js が必要）。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;複数のエージェントのオーケストレーション&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Agent Manager&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（複数のエージェントを実行するためのミッション コントロール ダッシュボード）を利用。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;tmux&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; または個別のターミナル ウィンドウによる&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;多重化&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;により、複数のエージェントを実行可能。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;仕様駆動開発&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;独自&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。豊富なチュートリアルを用意。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Conductor 拡張機能を使用して&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;構成可能&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;拡張性&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://open-vsx.org/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Open VSX 拡張機能&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、MCP、Agent Skills。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://geminicli.com/extensions/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI 拡張機能&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、MCP、Agent Skills。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;インターフェースの特長&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yiHKlPuZ73c?si=jPM2cPJFWyDPZon_" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;統合ブラウザ&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;により、アプリケーションの表示、視覚的なフィードバックの提供、エージェントとのスムーズな連携が可能。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;ネイティブ デバッグ&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;機能を使用して、スタック トレースの検知と修正が可能。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/headless.md" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;ヘッドレス モード&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;は、インタラクティブな UI なしで実行できるため、出力のパイプ処理、CI / CD 統合、自動化スクリプトに最適。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;gh&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; や &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; などの&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ローカルツールを直接呼び出し可能&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;判断に迷う場合&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;どちらを選ぶべきかまだ決められない場合でもご安心ください。どちらも優れた選択肢であることは間違いありません。Antigravity は、どなたでも気軽に使い始めることができます。Gemini CLI は、&lt;/span&gt;&lt;a href="https://github.com/google-gemini/gemini-cli" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub で 10 万個近くのスター&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;を獲得しており、デベロッパー コミュニティにおいて高い支持を得ています。どちらも充実した無料枠を用意していますので、ぜひ両方をお試しいただき、お好みのものをお選びください。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- Google Cloud、デベロッパー アドボケイト、&lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt; Luke Schlangen&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 18 Feb 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/choosing-antigravity-or-gemini-cli/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/antigravity-or-gemini-cli.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Antigravity と Gemini CLI の比較</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/antigravity-or-gemini-cli.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/choosing-antigravity-or-gemini-cli/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Luke Schlangen</name><title>Developer Advocate, Google Cloud</title><department></department><company></company></author></item><item><title>AI エージェントを大規模に構築する新たな道筋、Gemini Enterprise Agent Ready（GEAR）プログラムが利用可能に</title><link>https://cloud.google.com/blog/ja/products/ai-machine-learning/gear-program-now-available/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 11 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/gear-program-now-available?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;現在の世の中はエージェント型で満ちています。エージェントとは、複雑なワークフローを実行するために、ユーザーに代わって推論、計画し、行動できるソフトウェアのことです。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;この状況に対応するため、Google は Gemini Enterprise Agent Ready（GEAR）学習プログラムをすべてのユーザーに公開することにしました。&lt;/span&gt;&lt;a href="http://developers.google.com/program" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Developer Program&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; 内の新しい専門パスウェイとして、GEAR は開発者やプロフェッショナルが Google AI を使用してエンタープライズ グレードのエージェントを構築、デプロイできるようにします。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GEAR は、ユーザーが次の時代を築いていけるよう、以下のようなお手伝いをします。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;試験運用からプロダクション レディなアーキテクチャへの移行&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エンタープライズ グレードのエージェントを構築するには、適切なツール、計画、インフラストラクチャが必要です。ですが、これらのスキルを習得するには、費用を気にすることなく自由に試せる環境が必要となります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;そのため、GEAR メンバーには、&lt;/span&gt;&lt;a href="https://www.skills.google/subscriptions" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Skills&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; で使用できる 35 の学習クレジットが毎月提供されます。この特典は繰り返し利用でき、サンドボックス環境でラボやテストを無料で実行できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;メンバーはこれらのクレジットを使用して、コードをすぐにリリースできるよう設計されたエンドツーエンドの学習プログラムにアクセスできます。現在利用可能な学習プログラムは以下のとおりです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://www.skills.google/paths/3546" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;エージェントの概要&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; エージェントの構造、動作、Gemini Enterprise ワークフローへの統合、より広範な Google Cloud エコシステム内での位置付けを理解します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://www.skills.google/paths/3545" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）を使用したエージェントの開発&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; オープンソースの ADK について詳しく学びます。推論ループを使用して、予測可能で信頼性の高い結果を提供するエージェントを構築し、プロンプトの入力から実際のエンジニアリングに移行します。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;習熟した技術を業界で認められた認定資格に変える&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GEAR では、これらの学習プログラムの進捗に合わせて、身に付けた技術を具体的な認定資格に変えることができます。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;バッジの獲得:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Google Skills でエージェントに焦点を当てたラボを修了すると、Google デベロッパー プロフィールに修了バッジが表示されます。さらに、専門知識を認証する公式の中級および上級スキルバッジも獲得できます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;認定資格の取得:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;「&lt;/span&gt;&lt;a href="https://developers.google.com/program/gear/getcertified/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;認定資格を取得する&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;」では、スキルの認定を目指すお客様向けに、インストラクター主導のトレーニングや技術メンターシップを提供しています。Google Cloud のお客様を対象とするこのコホートベースのプログラムには、AI コース、ハンズオンラボ、スキルバッジが組み込まれています。そのいずれも、業界で認められた認定資格の取得に向けて準備できるよう設計されています。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;使ってみる&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;エージェント型 AI への移行は大きなチャンスですが、今までとは違うスキルセットが求められます。GEAR は、次の時代を築くためのツール、クレジット、ガイダンスを提供します。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Developer Program のプロフィールを作成するかログインして GEAR バッジを申請すると、GEAR の特典を利用できます。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;今すぐ、&lt;/span&gt;&lt;a href="https://developers.google.com/program/gear/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;developers.google.com/program/GEAR&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; で最初の学習プログラムを始めましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;プロダクト マーケティング担当バイス プレジデント&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Peder Ulander&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;グローバル ソリューションおよびインダストリー担当バイス プレジデント&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;、Carrie Tharp&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 16 Feb 2026 02:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/products/ai-machine-learning/gear-program-now-available/</guid><category>Developers &amp; Practitioners</category><category>AI &amp; Machine Learning</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/GEAR_Website_Graphics_1920x1080-2.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>AI エージェントを大規模に構築する新たな道筋、Gemini Enterprise Agent Ready（GEAR）プログラムが利用可能に</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/GEAR_Website_Graphics_1920x1080-2.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/products/ai-machine-learning/gear-program-now-available/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Peder Ulander</name><title>Vice President, Product Marketing</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Carrie Tharp</name><title>Vice President, Global Solutions &amp; Industries</title><department></department><company></company></author></item><item><title>Agent Factory のハイライト: Gemini 3 で AI 従業員を構築</title><link>https://cloud.google.com/blog/ja/topics/developers-practitioners/agent-factory-recap-build-an-ai-workforce-with-gemini-3/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;※この投稿は米国時間 2026 年 2 月 6 日に、Google Cloud blog に&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/agent-factory-recap-build-an-ai-workforce-with-gemini-3?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;投稿&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;されたものの抄訳です。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLIivdWyY5sqLXR1eSkiM5bE6pFlXC-OSs" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Factory&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; の今回のエピソードは、Smitha Kolan と Vlad Kolesnikov が、フルスタック エンジニアの Brandon Hancock を迎えてお送りします。Brandon は、8 万人以上のデベロッパーに AI のコンセプトを教えている YouTube チャンネル &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;AI with Brandon&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; のクリエイターでもあります。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;今回の収録は、新しいフラッグシップ モデルの &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/start/get-started-with-gemini-3?hl=ja"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 3&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、コーディング環境 &lt;/span&gt;&lt;a href="https://antigravity.google/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://geminicli.com/docs/changelogs/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; のアップデートなど、Google がいくつかの重要な最新情報を発表した数時間後という特別なタイミングで行われました。このエピソードでは、ライブデモを通じてこれらの新しいツールについて詳しく説明しています。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=hj0nTLbhIEY"
      data-glue-modal-trigger="uni-modal-hj0nTLbhIEY-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        &lt;img src="//img.youtube.com/vi/hj0nTLbhIEY/maxresdefault.jpg"
             alt="A video podcast discussing Gemini 3, Antigravity, and Gemini CLI, which includes demos of the new features of these products."/&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-hj0nTLbhIEY-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="hj0nTLbhIEY"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=hj0nTLbhIEY"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini 3 と Gemini CLI&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/start/get-started-with-gemini-3?hl=ja"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 3&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; は、Google の最新のフラッグシップ モデルです。高度な推論と複雑なエージェント運用を目的に設計されており、オーケストレーションに最適です。&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/docs/codeassist/gemini-cli?hl=ja"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; は、ターミナルから Gemini モデルと直接やり取りできるコマンドライン インターフェースであり、デベロッパー向けの機能です。入力と出力のパイプ処理をサポートしているため、複雑なインフラストラクチャなしで、プロンプトを連鎖して軽量な「AI 従業員」を構築できる強力なツールです。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini 3 Pro で個人ポートフォリオを構築する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=78s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;01:18&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Smitha は、&lt;/span&gt;&lt;a href="https://aistudio.google.com/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google AI Studio&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; と &lt;/span&gt;&lt;a href="https://blog.google/products-and-platforms/products/gemini/gemini-3/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 3 Pro&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して、わずか数分でゼロから個人用ウェブサイトを構築するデモを披露しました。この目的は、LinkedIn プロフィールを変換してポートフォリオ サイトにデプロイすることでした。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;入力データ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; LinkedIn プロフィールの PDF エクスポートと個人の顔写真のほかに、Nano Banana（画像生成ツール）で生成したインスピレーション画像をアップロードしました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;マルチモーダル プロンプト:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; コンテンツに PDF を使用することと、Nano Banana の画像をスタイルの指針にするように Gemini 3 に指示しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;反復的な改良:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 最初の出力にプレースホルダ画像が含まれていたため、Smitha は AI Studio のアノテーション機能を使用して該当箇所をハイライトし、アップロードした写真を使用して修正するように Gemini に指示しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;デプロイ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 最終結果は、ワンクリックで Cloud Run に直接デプロイされました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini CLI で「AI 従業員」を作成する&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=474s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;07:54&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Brandon は、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini CLI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; を使用して「AI 従業員」を構築する方法を紹介しました。デモでは、潜在顧客を見つけるために設計された市場調査エージェントに焦点を当てています。このエージェントは、Brandon が関わる救急医療サービス分野のスタートアップを対象にしたものです。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;標準作業手順書（SOP）:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Brandon は、プロンプトをマークダウン ファイルに保存された SOP として扱っています。Gemini 3 Pro を使用して大まかな指示を書き、より高速で安価な Gemini 2.5 Flash を使用して「働き蜂（作業担当者）」のタスクを実行しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;並列実行:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Gemini CLI を呼び出して複数のエージェントを並列実行する Python スクリプトを実演しました。これにより、潜在顧客を複数の都市（例: マイアミ）で同時に検索することが可能になりました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;裏技:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Brandon は、Python スクリプトを Gemini に渡すことで、モデルがパラメータを理解し、ワークフロー自体を開始できる仕組みを説明し、自動化を効果的に自動化できることを紹介しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;「Anya the Capybara」動画エージェント&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=1095s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;18:15&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vlad は、&lt;/span&gt;&lt;a href="https://google.github.io/adk-docs/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit（ADK）&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で構築したエージェントを実演しました。このエージェントは、技術ドキュメントを魅力的な教育動画に変換するもので、AI キャラクターの「Anya the Capybara」がナビゲートします。&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;エージェント アーキテクチャ:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; このシステムは、2 つのサブエージェントを管理するルート オーケストレーター エージェントを使用しています。これらのサブエージェントは、&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;スクリプト シーケンサー&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;（技術的なテキストを自然なスクリプトに変換し、8 秒単位のセグメントに分割する）と&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;動画生成ツール&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;です。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;一貫性:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; キャラクターの一貫性を保つため、Vlad は Nano Banana を使用して Capybara の 4 つの特定のビューを生成しました。エージェントはチャンクごとにランダムにビューを選択し、動画をダイナミックに保ちます。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Antigravity の活用:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Vlad は、新しい Antigravity の機能を使用してエージェントのコードをリファクタリングしたことを明らかにしています。プロンプトとサブエージェントの変更を Antigravity に指示するだけで、コーディング作業がツールで自動的に処理されました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;動画の結合:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; 最後に、Gemini CLI を使用して FFmpeg コマンドを記述し、生成された 92 個の動画チャンクを 11 分間の 1 本の動画に結合しました。&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;動画生成エージェントのコードは&lt;/span&gt;&lt;a href="https://github.com/vladkol/video-avatars-agent" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;こちら&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;で確認できます。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;AI ファーストの考え方&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=621s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;10:21&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;デモの合間には、これらのツールを構築する際の理念について話し合いました。Brandon は、AI 時代における生産性向上へのアプローチについて語りました。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;AI 従業員のコンセプト&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=950s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;15:50&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Brandon は、あらゆる面で「AI ファースト」を目指すという目標を説明しました。彼は、エージェントを単なるスクリプトとして考えるのではなく、自身が高度な戦略に集中できるようにしてくれる従業員と捉えており、「標準業務手順書」（マークダウン ファイル）のフォルダを作成することで、市場調査やメールの下書きなどのタスクを Gemini に割り当てることができると説明しました。また、現在は参入障壁が非常に低くなっているため、コーディングの経験がなくても、Gemini モデルの「従業員」を立ち上げて、反復作業を大規模に処理できると指摘しています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;「ゴーストライター」ワークフロー&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;タイムスタンプ: &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY&amp;amp;t=950s" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;15:50&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Brandon は、市場調査の例のほかに Gemini CLI を「ゴーストライター」として使用する方法についても触れました。MCP（Model Context Protocol）サーバーを Gmail に接続することで、AI に過去の文体を学習させ、メールの返信の下書きを作成できることを紹介しました。重要なのは、AI がタスクを開始する前に「自分が誰であるか」を認識できるように、適切なコンテキストを提供することだと、Brandon は強調しています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;まとめ&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;本エピソードでは、開発サイクルが急速に進化してることを浮き彫りにしました。推論に Gemini 3 Pro、迅速な実行に Gemini CLI、コードのリファクタリングに Antigravity といったツールを使用することで、あらゆるものを自動化することが現実となる時代が到来しています。個人のウェブサイトを構築する場合でも、市場調査エージェントのフリートを構築する場合でも、アイデアから実行に至るまでの障壁はかつてないほど低くなっています。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;構築してみる&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini CLI を使用してご自身の「AI 従業員」を構築することに挑戦してみませんか。繰り返し行っている簡単なタスクから始め、マークダウンで標準作業手順書を作成し、Gemini にそのタスクを任せられるかどうか試してみましょう。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=hj0nTLbhIEY" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;エピソード全体&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;をチェックして、コードが動作する様子をご覧ください。&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;関連情報&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google AI Studio と Gemini 3 → &lt;/span&gt;&lt;a href="https://goo.gle/487Fnde" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://goo.gle/487Fnde&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Antigravity → &lt;/span&gt;&lt;a href="https://goo.gle/49z1sE9" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://goo.gle/49z1sE9&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Video Avatars Agent リポジトリ → &lt;/span&gt;&lt;a href="https://goo.gle/4oP8Vnd" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://goo.gle/4oP8Vnd&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;担当者のソーシャル メディア&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Smitha Kolan → &lt;/span&gt;&lt;a href="https://www.youtube.com/@SmithaKolan" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://www.linkedin.com/in/smithakolan/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://x.com/smithakolan" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;X&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Vlad Kolesnikov → &lt;/span&gt;&lt;a href="https://www.linkedin.com/in/vkolesnikov/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Linkedin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;、&lt;/span&gt;&lt;a href="https://x.com/vladkol" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;X&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Brandon Hancock → &lt;/span&gt;&lt;a href="https://www.youtube.com/@aiwithbrandon" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;- &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;シニア デベロッパーリレーションズ&lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt; Smitha Kolan&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 16 Feb 2026 01:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/ja/topics/developers-practitioners/agent-factory-recap-build-an-ai-workforce-with-gemini-3/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/build-anything-gemini-3-antigravity.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Agent Factory のハイライト: Gemini 3 で AI 従業員を構築</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/build-anything-gemini-3-antigravity.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/ja/topics/developers-practitioners/agent-factory-recap-build-an-ai-workforce-with-gemini-3/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Smitha Kolan</name><title>Senior Developer Relations</title><department></department><company></company></author></item></channel></rss>