このチュートリアルでは、ホストされている Gemini モデルとともに AI.GENERATE 関数を使用して、テキスト、音声、動画からテキストを生成する方法について説明します。このアプローチでは、独自のモデルを作成して維持する必要がなくなります。
目標
- ニュース記事を要約します。
- ニュース記事から、要約と全体的な感情を含む構造化された出力を生成します。
- 動画の文字起こしを日本語で作成し、英語に翻訳します。
- 音声コンテンツから要約とトピックのリストを生成します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform model.
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
詳細については、BigQuery の料金と Agent Platform の料金をご覧ください。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
BigQuery API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。新しいプロジェクトでは、BigQuery API が自動的に有効になります。
必要なロール
AI.GENERATE 関数を使用するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
BigQuery データセットとテーブルを作成、使用する: プロジェクトに対する BigQuery データ編集者 (
roles/bigquery.dataEditor)。 -
BigQuery 接続を作成、委任、使用する: プロジェクトに対する BigQuery 接続管理者 (
roles/bigquery.connectionsAdmin)。 -
接続のサービス アカウントに権限を付与する: Gemini Enterprise Agent Platform エンドポイントを含むプロジェクトに対する Project IAM 管理者 (
roles/resourcemanager.projectIamAdmin)。 -
BigQuery ジョブを作成する: プロジェクトに対する BigQuery ジョブユーザー (
roles/bigquery.jobUser)。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、AI.GENERATE 関数の使用に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
AI.GENERATE 関数を使用するには、次の権限が必要です。
-
データセットを作成する:
bigquery.datasets.create -
接続を作成、委任、使用する:
bigquery.connections.* -
サービス アカウントの権限を設定します。
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
テーブルデータをクエリする:
bigquery.tables.getData
データセットを作成する
リソースを格納する BigQuery データセットを作成します。
コンソール
Google Cloud コンソールで、[BigQuery] ページに移動します。
左側のペインで、 エクスプローラをクリックします。
![ハイライト表示された [エクスプローラ] ペインのボタン。](https://docs.cloud.google.com/static/bigquery/images/explorer-tab.png?hl=ja)
左側のペインが表示されていない場合は、 [左ペインを開く] をクリックしてペインを開きます。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
「アクションを表示」> [データセットを作成] をクリックします。
[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に、データセットの名前を入力します。
[ロケーション タイプ] で、[リージョン] または [マルチリージョン] を選択します。
- [リージョン] を選択した場合は、[リージョン] リストからロケーションを選択します。
- [マルチリージョン] を選択した場合は、[マルチリージョン] リストから [US] または [ヨーロッパ] を選択します。
[データセットを作成] をクリックします。
bq
接続を作成する
トレーニング データセットを作成したら、BigQuery と外部ソースをリンクする接続を確立します。Cloud リソース接続を作成し、接続のサービス アカウントを取得します。前の手順で作成したデータセットと同じロケーションに接続を作成します。
次のオプションのいずれかを選択します。コンソール
[BigQuery] ページに移動します。
左側のペインで、 [エクスプローラ] をクリックします。

左側のペインが表示されていない場合は、 [左ペインを開く] をクリックしてペインを開きます。
[エクスプローラ] ペインで、プロジェクト名を開き、[接続] をクリックします。
[接続] ページで、[接続を作成] をクリックします。
[接続タイプ] で、[Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)] を選択します。
[接続 ID] フィールドに接続の名前を入力します。
[ロケーション タイプ] で、接続のロケーションを選択します。この接続は、データセットなどの他のリソースと同じロケーションに配置する必要があります。
[接続を作成] をクリックします。
[接続へ移動] をクリックします。
[接続情報] ペインで、以降の手順で使用するサービス アカウント ID をコピーします。
SQL
CREATE CONNECTION ステートメントを使用します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE CONNECTION [IF NOT EXISTS] `CONNECTION_NAME` OPTIONS ( connection_type = "CLOUD_RESOURCE", friendly_name = "FRIENDLY_NAME", description = "DESCRIPTION" );
次のように置き換えます。
-
CONNECTION_NAME: 接続の名前(PROJECT_ID.LOCATION.CONNECTION_ID、LOCATION.CONNECTION_ID、CONNECTION_IDのいずれかの形式)。プロジェクトまたはロケーションが省略されている場合、ステートメントが実行されるプロジェクトとロケーションから推定されます。 -
FRIENDLY_NAME(省略可): 接続のわかりやすい名前。 -
DESCRIPTION(省略可): 接続の説明。
-
[ 実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
コマンドライン環境で接続を作成します。
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_idパラメータは、デフォルト プロジェクトをオーバーライドします。次のように置き換えます。
REGION: 接続のリージョンPROJECT_ID: 実際の Google Cloud プロジェクト IDCONNECTION_ID: 接続の ID
接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。
トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
後の手順で使用するため、サービス アカウント ID を取得してコピーします。
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
出力は次のようになります。
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Terraform
google_bigquery_connection リソースを使用します。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。
次の例では、US リージョンに my_cloud_resource_connection という名前の Cloud リソース接続を作成します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名の拡張子は
.tfにする必要があります(例:main.tf)。このチュートリアルでは、このファイルをmain.tfとします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tfにサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgradeオプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
サービス アカウントにアクセス権を付与する
接続のサービス アカウントに Agent Platform ユーザーと Storage オブジェクト閲覧者のロールを付与します。ロールを付与する手順は次のとおりです。
[IAM と管理] ページに移動します。
[追加] をクリックします。
[プリンシパルを追加] ダイアログが開きます。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを選択] フィールドで、[Vertex AI] を選択し、[Agent Platform ユーザー] を選択します。
[別のロールを追加] をクリックします。
[ロールを選択] フィールドで、[Cloud Storage] を選択し、続いて [Storage オブジェクト閲覧者] を選択します。
[保存] をクリックします。
テキストを要約してデフォルトの形式で出力する
ニュース記事を要約するには、記事のテキストをプロンプトとして AI.GENERATE 関数を呼び出します。デフォルトでは、出力には生成された要約テキスト、完全なレスポンス、関数が正常に返された場合は空のステータスが含まれます。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のクエリを実行します。
WITH bbc_news AS ( SELECT body FROM `bigquery-public-data.bbc_news.fulltext` LIMIT 5 ) SELECT AI.GENERATE(body, endpoint => 'gemini-2.5-pro') AS news FROM bbc_news;
出力は次のようになります。
+---------------------------------------------+------------------------------------+---------------+ | news.result | news.full_response | news.status | +---------------------------------------------+------------------------------------+---------------+ | This article presents a debate about the | {"candidates":[{"avg_logprobs": | | | "digital divide" between rich and poor | -0.31465074559841777, content": | | | nations. Here's a breakdown of the key... | {"parts":[{"text":"This article... | | +---------------------------------------------+------------------------------------+---------------+ | This article discusses how advanced | {"candidates":[{"avg_logprobs": | | | mapping technology is aiding humanitarian | -0.21313422900091983,"content": | | | efforts in Darfur, Sudan. Here's a... | {"parts":[{"text":"This article... | | +---------------------------------------------+------------------------------------+---------------+ | ... | ... | ... | +---------------------------------------------+------------------------------------+---------------+
テキストを要約して構造化された結果を出力する
AI.GENERATE 関数を使用してテキストを生成し、AI.GENERATE 関数の output_schema 引数を使用して出力の形式を指定するには、次の手順に沿って操作します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のクエリを実行します。
WITH bbc_news AS ( SELECT body FROM `bigquery-public-data`.bbc_news.fulltext LIMIT 5 ) SELECT news.good_sentiment, news.summary FROM bbc_news, UNNEST(ARRAY[AI.GENERATE(body, endpoint => 'gemini-2.5-pro', output_schema => 'summary STRING, good_sentiment BOOL')]) AS news;
出力は次のようになります。
+----------------+--------------------------------------------+ | good_sentiment | summary | +----------------+--------------------------------------------+ | true | A World Bank report suggests the digital | | | divide is rapidly closing due to increased | | | access to technology in developing... | +----------------+--------------------------------------------+ | false | A massive earthquake and subsequent | | | waves have devastated southern Asia, with | | | Sri Lanka, India, Indonesia, and... | +----------------+--------------------------------------------+ | ... | ... | +----------------+--------------------------------------------+
動画コンテンツの文字起こしと翻訳を行う
外部オブジェクト テーブルを使用すると、Cloud Storage に保存されているマルチメディア ファイルを処理できます。次の手順では、動画ファイルのオブジェクト テーブルを作成し、日本語の動画コンテンツを文字起こしして、テキストを英語に翻訳する方法について説明します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のクエリを実行してオブジェクト テーブルを作成します。
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.video` WITH CONNECTION `us.test_connection` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/generative-ai/video/*']);
クエリエディタで、次のクエリを実行して
pixel8.mp4ファイルの文字起こしと翻訳を行います。SELECT AI.GENERATE( (OBJ.GET_ACCESS_URL(ref, 'r'), 'Transcribe the video in Japanese and then translate to English.'), endpoint => 'gemini-2.5-pro', output_schema => 'japanese_transcript STRING, english_translation STRING' ).* EXCEPT (full_response, status) FROM `bqml_tutorial.video` WHERE REGEXP_CONTAINS(uri, 'pixel8.mp4');
出力は次のようになります。
+--------------------------------------------+--------------------------------+ | english_translation | japanese_transcript | +--------------------------------------------+--------------------------------+ | My name is Saeka Shimada. I'm a | 島田 さえか です 。 東京 で フ | | photographer in Tokyo. Tokyo has many | ォトグラファー を し て い ま | | faces. The city at night is totally... | す 。 東京 に は いろんな 顔 が | +--------------------------------------------+--------------------------------+
音声ファイルの内容を分析する
公開音声コンテンツのオブジェクト テーブルを作成し、音声ファイルの内容を分析するには、次の手順に沿って操作します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のクエリを実行してオブジェクト テーブルを作成します。
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.audio` WITH CONNECTION `us.test_connection` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/generative-ai/audio/*']);
クエリエディタで、次のクエリを実行して音声ファイルを分析します。
SELECT AI.GENERATE( (OBJ.GET_ACCESS_URL(ref, 'r'), 'Summarize the content of this audio file.'), endpoint => 'gemini-2.5-pro', output_schema => 'topic ARRAY<STRING>, summary STRING' ).* EXCEPT (full_response, status), uri FROM `bqml_tutorial.audio`;
結果は次のようになります。
+--------------------------------------------+-----------------------------------------------------------+ | summary | topic | uri | +--------------------------------------------+-----------------------------------------------------------+ | The audio contains a distinctive 'beep' | beep sound | gs://cloud-samples-data/generativ... | | sound, followed by the characteristic | | | | sound of a large vehicle or bus backing.. | | | +--------------------------------------------+--------------------+--------------------------------------+ | | vehicle backing up | | | +--------------------+ | | | bus | | | +--------------------+ | | | alarm | | +--------------------------------------------+--------------------+--------------------------------------+ | The speaker introduces themselves | Introduction | gs://cloud-samples-data/generativ... | | as Gemini and expresses their excitement | | | | and readiness to dive into something.. | | | +--------------------------------------------+--------------------+--------------------------------------+ | | Readiness | | | +--------------------+ | | | Excitement | | | +--------------------+ | | | Collaboration | | +--------------------------------------------+--------------------+--------------------------------------+ | ... | ... | ... | +--------------------------------------------+--------------------+--------------------------------------+
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- Google Cloud コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
リソースを個別に削除する
プロジェクトを再利用する場合は、チュートリアル用に作成したリソースを削除します。
コンソール
BigQuery ページに移動します。
bqml_tutorialデータセットを削除します。データセットを削除すると、リモートモデルも削除されます。[エクスプローラ] ペインでプロジェクトを開き、[データセット] をクリックします。
[データセット] リストで、
bqml_tutorialデータセットをクリックします。詳細ペインで、 [削除] をクリックします。
[データセットの削除] ダイアログで、[削除] をクリックします。
接続を削除します。
[エクスプローラ] ペインで、プロジェクトを開き、[接続] をクリックします。
[接続 ID] リストで、作成した接続をクリックします。
詳細ペインで、 [削除] をクリックします。
[接続を削除しますか?] ダイアログ ボックスに「
delete」と入力して削除を確定します。[削除] をクリックします。
gcloud
bqml_tutorialデータセットとリモートモデルを削除します。bq rm --dataset --recursive bqml_tutorial接続を削除します。
bq rm --connection PROJECT_ID.LOCATION.CONNECTION_ID次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- LOCATION: 接続のロケーション
- CONNECTION_ID: 接続 ID
次のステップ
- BigQuery の生成 AI の詳細を確認する。
- テキスト生成関数の選択の詳細を確認する。