こんにちは。フューチャーアーキテクト 製造・エネルギーサービス事業部の柴田です😌 見真の心で本質を探求しています!
今回の内容
- GoogleによるBigQueryツールセットでAIエージェントとの連携が超簡単化
- 具体的な実装コードと解説もあります
- AI-Readyなデータ基盤設計が今後ますます重要になると感じました
従来のAIエージェント設計における課題
AIエージェントの開発において、エージェントが外部データソースと連携するためにカスタムツール(関数、APIなど)を作成することは不可欠です。しかし、BigQueryで構築した大規模データ基盤を扱う場合、この開発には大きな工数と十分なテストが必要となり、目的であるAIエージェント開発とは別のところにも目を向けざるをえませんでした。
従来のツール設計と維持における主な課題は以下の通りです。
-
時間とコストのかかるカスタム開発
アプリケーション開発者は、BigQueryへのアクセスに必要なすべてのツールを独自に作成し、維持管理することを余儀なくされていました。柔軟なクエリを作成すると意図しない結果になることも多く、バランスが非常に難しいです。そして固く作るとあまりエージェントみが出なくなって面白くなくなります。 -
高いリスクと責任
認証と認可: BigQueryへのアクセスには、認証とエラー処理の実装が不可欠です。これらのセキュリティに関する要件を独自にツールに実装することは、セキュリティ上のリスクを伴いました。
これにより、インフラストラクチャやツールの構築とデバッグに多くの時間が割かれ、ユーザーにとって真の価値を生み出すエージェントの開発や、ユーザー体験の設計がおろそかになりがちでした。
自分も大体adk webで動いたら満足してしまい、その先のアプリケーション開発まで手が回らないことが多くあります。。。
GoogleによるBigQueryファーストパーティツールセットの登場
Googleが発表したBigQueryファーストパーティツールセットは、これらの課題を根本的に解決してくれました。
このツールセットはデータへのアクセスと操作に必要な複雑な処理を抽象化し、安全で信頼性の高い橋渡し役として機能します。実際に使ってみましたが、驚くほど簡単にBigQueryのデータセットと連携することができたので、この感動を乗せて手順を紹介したいと思います。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_DqbGaPE.max-1800x1800.png
このようにMCPサーバーがセマンティックな仲介役となり、AIエージェントとBigQueryの円滑な連携をサポートします。
Google Cloudの準備
サービスアカウント
今回はサービスアカウントで認証を行います。
IAM > サービスアカウントでサービスアカウントキーのjsonファイルを作成しましょう。ロールは以下を追加します。
- BigQuery Data Editor (roles/bigquery.dataEditor)
- BigQuery Job User(roles/bigquery.jobUser)
テーブルの準備
BigQueryにデータセットを作成しましょう。ちなみにPublicデータセットであれば、サービスアカウント含めて特に準備が不要なので、まずはこれで確認してもいいかもしれません。
エージェントの実装
こちらのサイトで紹介されているものを整理しました。シンプルなエージェントにBiqQueryツールセットを追加しています。また、BigQueryの認証方法を指定できます(今回はサービスアカウントキーを使用する)。
BigQueryとADK&MCP: 新しいファーストパーティツールセットでエージェント開発を加速
import os
import google.auth
from google.adk import Agent
from google.adk.auth.auth_credential import (
AuthCredentialTypes,
)
from google.adk.tools.bigquery import BigQueryCredentialsConfig
from google.adk.tools.bigquery import BigQueryToolset
from google.adk.tools.bigquery.config import BigQueryToolConfig
from google.adk.tools.bigquery.config import WriteMode
CREDENTIALS_TYPE = AuthCredentialTypes.SERVICE_ACCOUNT
# 書き込みモードは、エージェントの BigQuery へのアクセス制御を定義します。
# ALLOWED: ツールは完全な書き込み機能を持ちます。
# BLOCKED: デフォルト モード。ツールが事実上、読み取り専用になります。
# PROTECTED: 指定された BigQuery セッションの一時データへの書き込みのみを許可します。
tool_config = BigQueryToolConfig(write_mode=WriteMode.ALLOWED)
if CREDENTIALS_TYPE == AuthCredentialTypes.OAUTH2:
# インタラクティブな OAuth のためのツールを初期化します。
credentials_config = BigQueryCredentialsConfig(
client_id=os.getenv("OAUTH_CLIENT_ID"),
client_secret=os.getenv("OAUTH_CLIENT_SECRET"),
)
elif CREDENTIALS_TYPE == AuthCredentialTypes.SERVICE_ACCOUNT:
# サービスアカウントキーの認証情報を使用するようにツールを初期化します。
creds, _ = google.auth.load_credentials_from_file(
"<サービスアカウントキーのパス>"
)
credentials_config = BigQueryCredentialsConfig(credentials=creds)
else:
# アプリケーションのデフォルト認証情報を使用するようにツールを初期化します。
application_default_credentials, _ = google.auth.default()
credentials_config = BigQueryCredentialsConfig(
credentials=application_default_credentials
)
# https://google.github.io/adk-docs/tools/built-in-tools/#bigquery
bigquery_toolset = BigQueryToolset(
credentials_config=credentials_config,
tool_filter=[
"list_dataset_ids",
"get_dataset_info",
"list_table_ids",
"get_table_info",
"execute_sql",
],
)
root_agent = Agent(
model="gemini-2.5-flash",
name="bigquery_agent",
description=(
"Agent that answers questions about BigQuery data by executing SQL queries"
),
instruction=""" You are a data analysis agent with access to several BigQuery tools. Make use of those tools to answer the user's questions.
""",
tools=[bigquery_toolset],
)
見ての通り、シンプルなroot_agentの定義の他には3パターンの認証処理と、BigQueryツールセット(BigQueryToolset())が定義されています。
BigQueryToolset()に注目すると、認証情報の他に使用するツールを指定しています。ツールセットでは以下のツールが提供されています。BigQueryToolset()のtool_filterで使用するツールを指定することができるため、使わないツールは予め除外しておくことを推奨します(最小ツールの原則と命名)。
以下が利用できるツールの一覧です。
| カテゴリ | ツール名 | 機能の目的 |
|---|---|---|
| メタデータ取得 | list_dataset_ids | GCPプロジェクト内のデータセットIDの一覧を取得します |
| get_dataset_info | 特定のデータセットのメタデータ(詳細情報)を取得します | |
| list_table_ids | 特定のデータセット内のテーブルIDの一覧を取得します | |
| get_table_info | 特定のテーブルのメタデータ(スキーマ、列情報など)を取得します | |
| データ操作 | execute_sql | BigQueryで任意のSQLクエリを実行し、結果を取得します |
| 高度な分析 | forecast | BigQuery AIの時系列予測(AI.FORECAST関数)を実行します |
| ask_data_insights | 自然言語の質問に基づき、BigQueryデータに関する分析情報を提供します |
動作確認
adk webコマンドでエージェントを起動しましょう。感動です。。。圧倒的にスムーズにAIと会話できています。今まではここまで来るために非常に多くの労力を割く必要がありましたが、あの苦労はどこに?というくらい簡単にBigQueryと連携できてしまいました。
エージェントの連携図を確認すると、指定したツールのみがエージェントと連携していることが分かります。
最後に
感動を忘れないうちに記事にしました。これからもアップデートが楽しみです。
テーブルのDescriptionやメタデータの拡充などが今後ますます重要になってくるかと思います。データ基盤もAI活用を前提とした、AI-Readyな設計が必要となってきます!
Google CloudにはGemini Enterprise, データキャンバス, Looker Studio 会話分析(プレビュー)など、さまざまな方法でコンテキスによるBigQuery連携が可能です。用途に応じてこれらの方法も使い分けて、より効率的なAI活用ライフを過ごしたいですね。


