4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

驚くほど簡単に繋がるBigQueryとAIエージェント

Last updated at Posted at 2025-12-01

こんにちは。フューチャーアーキテクト 製造・エネルギーサービス事業部の柴田です😌 見真の心で本質を探求しています!

今回の内容

  • GoogleによるBigQueryツールセットでAIエージェントとの連携が超簡単化
  • 具体的な実装コードと解説もあります
  • AI-Readyなデータ基盤設計が今後ますます重要になると感じました

従来のAIエージェント設計における課題

AIエージェントの開発において、エージェントが外部データソースと連携するためにカスタムツール(関数、APIなど)を作成することは不可欠です。しかし、BigQueryで構築した大規模データ基盤を扱う場合、この開発には大きな工数と十分なテストが必要となり、目的であるAIエージェント開発とは別のところにも目を向けざるをえませんでした。

従来のツール設計と維持における主な課題は以下の通りです。

  1. 時間とコストのかかるカスタム開発
    アプリケーション開発者は、BigQueryへのアクセスに必要なすべてのツールを独自に作成し、維持管理することを余儀なくされていました。柔軟なクエリを作成すると意図しない結果になることも多く、バランスが非常に難しいです。そして固く作るとあまりエージェントみが出なくなって面白くなくなります。

  2. 高いリスクと責任
    認証と認可: BigQueryへのアクセスには、認証とエラー処理の実装が不可欠です。これらのセキュリティに関する要件を独自にツールに実装することは、セキュリティ上のリスクを伴いました。

これにより、インフラストラクチャやツールの構築とデバッグに多くの時間が割かれ、ユーザーにとって真の価値を生み出すエージェントの開発や、ユーザー体験の設計がおろそかになりがちでした。
自分も大体adk webで動いたら満足してしまい、その先のアプリケーション開発まで手が回らないことが多くあります。。。

GoogleによるBigQueryファーストパーティツールセットの登場

Googleが発表したBigQueryファーストパーティツールセットは、これらの課題を根本的に解決してくれました。
このツールセットはデータへのアクセスと操作に必要な複雑な処理を抽象化し、安全で信頼性の高い橋渡し役として機能します。実際に使ってみましたが、驚くほど簡単にBigQueryのデータセットと連携することができたので、この感動を乗せて手順を紹介したいと思います。

image.png
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と連携できてしまいました。

データセット一覧の取得
スクリーンショット 2025-11-16 0.49.22.png

テーブルのデータ取得
image.png

エージェントの連携図を確認すると、指定したツールのみがエージェントと連携していることが分かります。

最後に

感動を忘れないうちに記事にしました。これからもアップデートが楽しみです。
テーブルのDescriptionやメタデータの拡充などが今後ますます重要になってくるかと思います。データ基盤もAI活用を前提とした、AI-Readyな設計が必要となってきます!

Google CloudにはGemini Enterprise, データキャンバス, Looker Studio 会話分析(プレビュー)など、さまざまな方法でコンテキスによるBigQuery連携が可能です。用途に応じてこれらの方法も使い分けて、より効率的なAI活用ライフを過ごしたいですね。

参考資料

BigQueryとADK&MCP: 新しいファーストパーティ ツールセットでエージェント開発を加速

Built-In-Tools #BigQuery

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?