始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create the BigQuery resources
/ 25
Create the Pub/Sub Topic and Subscription
/ 25
Grant Pub/Sub IAM Permissions
/ 25
Verify the results in BigQuery
/ 25
あなたは Cymbal Gaming のデータ エンジニアとして、開発チームとともに新しい e スポーツゲーム「Galactic Grand Prix」の開発に携わっています。このゲームでは、異なるチームに属する 2 人のプレーヤーの対戦に基づいてリアルタイムのデータが生成されます。たとえば、1 つのイベントで 2 人のプレーヤーが競い合い、勝者が決まると勝者とチームにポイントが与えられます。あなたは、このストリーミング データを Pub/Sub を使用して処理し、結果を BigQuery のテーブルに保存するソリューションを構築するよう依頼されました。これらのテーブルから、ダッシュボードのバックエンド データ構造として機能するリーダーボード ビューを BigQuery で作成するよう指示されています。
BigQuery が Pub/Sub サブスクリプションに直接接続できること、このタイプのユースケースに使用できることはすでに学びました。また、新しいクエリの記述に行き詰まったときに Gemini に相談してサポートを受けられるなど、Gemini がさまざまな場面で役立つことも学びました。問題の解決に役立つ提案もしてくれます。これらの機能を使用すれば、もっと自立して取り組めるようになり、おそらくは効率も向上するはずです。しかし、何から始めればよいかわかりません。
このラボの開始時に提供される環境には、事前に構築されたリソースがありません。
ラボを終えるまでに、次のアーキテクチャを構築して複数のタスクを実行します。
次の表で、ラボのアーキテクチャに含まれる各タスクについて詳しく説明します。
| タスクの番号 | 詳細 |
|---|---|
| 1. | Cloud Shell で環境変数を構成する。 |
| 2. |
BigQuery リソースを作成する: Cloud Shell コマンドを使用して、BigQuery データセットとテーブルを作成する。 |
| 3. |
Pub/Sub トピックとサブスクリプションを作成する: Pub/Sub コンソールを使用してトピックとサブスクリプションを作成し、サブスクリプションを変更して BigQuery データセットとテーブルに書き込めるようにする。 |
| 4. |
Pub/Sub IAM 権限を付与する: IAM コンソールを使用して、Compute サービス アカウントに権限を付与する。 |
| 5. |
リポジトリから Python ファイルを取得する: リポジトリから Python ファイルを取得し、プロジェクト用に構成する。 |
| 6. |
合成データを生成する: プロジェクト用に構成された Python ファイルを使用して esports-simulation.py ファイルを実行する。これにより、Python を使ってゲームイベントの Pub/Sub メッセージが継続的に生成される。 |
| 7. |
BigQuery で結果を確認する: Pub/Sub トピックに送信したデータがキャプチャされ、BigQuery テーブルに保存されている。このテーブルに対してクエリを実行し、ビューを使用してゲームの結果を分析する。 |
このラボでは、次の方法について学びます。
最後に、このラボで学んだ内容を振り返る時間を用意しています。ラボジャーナルの質問に答えながら、自分のユースケースにストリーミング データを使ってどのように対処できるか検討してみましょう。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
このタスクでは、Cloud Shell で環境変数を構成します。
[Cloud Shell をアクティブにする] をクリックして Cloud Shell を開きます。
このラボで Cloud Shell を初めて使用するため、使用を承認する必要があります。これを行うには、ポップアップ ウィンドウで [続行]、[承認] の順にクリックします。
次のコマンドを実行します。
以下のコマンドを実行して、変数が保存されていることを確認します。
これらの変数はラボで後ほど使用します。
このタスクでは、Pub/Sub から未加工のストリーミング イベントを受信するデータセットと BigQuery テーブルを作成します。
このタスクでは、テーブルとビューのコンテナとして機能する BigQuery データセットを作成します。
Google Cloud コンソールの最上部にある検索バーを使用して、「BigQuery」を検索して移動します。「ようこそ...」というポップアップ ウィンドウが表示されます。
[完了] をクリックします。
左側の [エクスプローラ] ペインで、プロジェクト ID(
プロジェクト ID の右にあるその他アイコン(⋮)をクリックしてオプション メニューを開き、[データセットを作成] を選択します。
[データセットの作成] パネルで、次の設定を構成します。
データセット ID: esports_analytics
データのロケーション: プルダウン メニューからロケーションを選択します。このラボでは、[US(米国の複数のリージョン)] が適切な選択肢です。
その他の設定はデフォルト値のままにして、[データセットを作成] をクリックします。[エクスプローラ] ペインのプロジェクト ID の下に、新しい esports_analytics データセットが表示されます。これで、データセットが正常に作成されたことを確認できます。
[エクスプローラ] ペインでプロジェクトを開き、esports_analytics データセットを選択します。
データセット名の横にあるその他アイコン(⋮)をクリックし、[テーブルを作成] を選択します。
次の設定でテーブルを構成します。
raw_events
[テーブルを作成] をクリックします。
これにより、esports_analytics データセットに raw_events テーブルが作成されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、ストリーミング ゲームデータを受信するための Pub/Sub トピックとサブスクリプションを作成し、IAM 権限を追加して、サブスクリプションを変更し、アプリケーションがそのトピックからメッセージを受信して BigQuery の raw_events テーブルに転送できるようにします。
esports_events_topic」と入力します。デフォルトのサブスクリプションを追加] オプションが表示されます。このオプションは有効のままにします。トピックとサブスクリプションが作成されます。
サブスクリプションのリストで、[esports_events_topic-sub] をクリックします。
[編集] をクリックします。[サブスクリプションの編集] ページにサブスクリプション オプションが表示されます。
[配信タイプ] で [BigQuery への書き込み] を選択します。その他のオプションが表示されます。
データセット オプションで [esports_analytics] を選択します。
テーブル名に「raw_events」と入力します。以下のようなエラーが表示されます。
つまり、Pub/Sub サービス アカウントに、raw events テーブルへの書き込み権限を付与する必要があります。その作業を今から行います。
esports_analytics データセットを見つけ、その横にあるその他アイコン(⋮)をクリックして、[共有]、[権限を管理] の順に選択します。データセットの権限] パネルで、[プリンシパルを追加] をクリックします。新しいプリンシパル] フィールドに貼り付け、Tab キーを使用して完了します。これで、BigQuery サブスクリプションは、受信したメッセージを raw_events テーブルに直接書き込む権限を持つようになりました。
Pub/Sub のブラウザタブに戻ります。
[スキーマ構成] で [テーブル スキーマを使用する] を選択します。
残りのオプションはデフォルトのままにします。
[更新] をクリックします。
これでサブスクリプション構成が保存されました。サブスクリプションが適切に構成されたことにより、Pub/Sub はすべてのメッセージ(ストリーミング e スポーツデータ)を BigQuery の raw_events テーブルに転送することができます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ソリューションがスムーズに実行されるようにするには、Compute サービス アカウントに Pub/Sub トピックへのメッセージをパブリッシュする権限を付与する必要があります。
これにより、Python スクリプトまたはアプリケーションから Pub/Sub トピックにメッセージを送信できるようになります。
Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。現在権限が構成されているプリンシパルのリストが表示されます。
メールアドレスが
このプリンシパルのロールを編集: [プリンシパルを編集] をクリックします。プリンシパルの [アクセス権の編集] パネルが開きます。編集者のロールがすでに含まれています。
[+ 別のロールを追加] をクリックします。
[ロールを選択] フィールドで、「Pub/Sub パブリッシャー」ロールを検索して選択します。
[保存] をクリックします。
これで、ロールが Compute プリンシパルに割り当てられました。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、Cloud Shell で wget を使用して、一般公開の Cloud Storage バケットから Python ファイルを取得します。ファイルを取得したら、Cloud Shell エディタでファイルを開き、Gemini の Code Assist 機能を使用してファイルの詳細を確認します。最後に、Cloud Shell エディタを使用して、プロジェクトの詳細をファイルに落とし込んで構成します。
Cloud Shell に戻ります。
次のコマンドを実行して、ホーム ディレクトリに戻ります。
esports ディレクトリを作成し、そのディレクトリに移動します。
wget コマンドを使用して、次の Python ファイルを取得します。
ファイルがダウンロードされたことを示す確認メッセージがターミナルに表示されます。
Cloud Shell で [エディタを開く] ボタンをクリックします。Cloud Shell エディタが開きます。[Gemini Code Assist] ペインも表示されます。
チュートリアルのタブを閉じます。
[エクスプローラ] ペインで、esports フォルダを開きます。Python ファイルが表示されます。
esports-simulation.py ファイルを開きます。
[Gemini Code Assist] ペインの下部には、プロンプトを入力する場所があり、「Gemini に相談」と表示されています。次のプロンプトを入力します。
Code Assist がコードの内容を詳しく説明してくれます。大まかに言うと、e スポーツの試合イベントをシミュレートし、それらを Google Cloud Pub/Sub トピックにパブリッシュするという流れです。
また、Code Assist がコード改善のためにいくつか提案をしていることがわかります。これらの提案は受け入れないでください。
10 行目付近にある PROJECT_ID 変数を自分の Project_ID に設定します。他のファイルと同様に、この行を以下のコードに置き換えてください。
ファイルを保存します。
このタスクでは、Python ファイルを実行して合成データを生成し、パイプラインを実行します。
Cloud Shell ターミナルに戻ります。
ホーム ディレクトリにいることを確認します。
esports ディレクトリに移動します。
pip を使用して、Pub/Sub の Python ライブラリをはじめとする依存関係をインストールします。
シミュレータを実行します。このスクリプトは継続的に実行され、イベントが Pub/Sub トピックに送信されます。
ターミナルに、イベントがパブリッシュされていることを示す出力が表示されます。
このタスクでは、Pub/Sub サブスクリプションからの新しいメッセージで raw_events テーブルが更新されていることを確認します。まず、raw_events テーブルに対してクエリを実行します。次に、2 つのビューを作成し、それらのビューに対してクエリを実行して、プレーヤーとチームのリーダーボードを表示します。また「振り返りの時間」セクションでは、リーダーボードをより見やすくするために Looker をどのように活用できるかについて検討します。
BigQuery に戻ります。
[エクスプローラ] パネルで、raw_events テーブルを見つけて選択します。
[クエリ] をクリックします。テンプレート クエリが用意されています。
次のクエリを参考にして、raw_events テーブルのすべてのレコードを選択するようにクエリを変更します。
クエリを実行します。レコードが表示された場合は、Pub/Sub がシミュレーションからの最新のメッセージ(e スポーツのゲームデータ)でテーブルを更新していることを意味します。
[エクスプローラ] でプロジェクトを開き、esports_analytics データセットを選択します。
プラスボタンをクリックして、新しいクエリを作成します。
[クエリ] タブに次のクエリを入力します。
このクエリは、プレーヤーのリーダーボードとチームのリーダーボードの 2 つのビューを作成します。プレーヤーとチームの最新のスコアを検索してランク付けします。
プラスボタンをクリックして、新しいクエリを作成します。
[クエリ] タブに次のクエリを入力します。
クエリを実行すると、プレーヤーのリーダーボードが表示され、プレーヤーの合計勝利数に基づいて 1 位から 12 位までランク付けされます。
プラスボタンをクリックして、新しいクエリを作成します。
[クエリ] タブに次のクエリを入力します。
クエリを実行すると、チームは合計勝利数に基づいて 1 位から 4 位までランク付けされます。
BigQuery で得られた結果について考えてみましょう。このラボでは、BigQuery の SQL クエリに基づくリーダーボードのみを使用しました。これらのリーダーボードのダッシュボードを Looker で構築する方法を検討し、ラボジャーナルを使用して次の質問に答えてください。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Python スクリプトを使用してゲームデータをシミュレートしました。また、Cloud Assist を使用して、これらのスクリプトのコードの説明を読んで理解しました。最後に、Pub/Sub トピックとサブスクリプション、BigQuery データセット、テーブル、ビューなど、e スポーツのストリーミング データをサポートする Google Cloud リソースを生成し、このデータをストリーミングして、上位にランク付けされているプレーヤーとチームのレポートを生成しました。Google Cloud を日々使いこなす中で、Gemini を使用してデータ エンジニアリングのワークフローに関する知識やスキルを深めていきましょう。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 8 月 6 日
ラボの最終テスト日: 2025 年 8 月 6 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください