📑

BigQueryクエリをVSCodeから実行できる公式拡張が出たらしい

2024/12/22に公開

...とのことです。試してみましょう。

この記事のまとめ

  • まだPreviewだがVSCodeのGoogle Cloud拡張内にBigQuery向け機能が追加された
  • まだBigQueryの機能自体はかなり少ない、完全にBig Query Studioの代替となる訳では現状無い
  • 認証は自分のGoogleアカウントにOauth2で入る
  • 現状の機能はほぼJupyter拡張頼り、Cloud Codeはあくまでipynbのテンプレート作成機能のみ
  • 今後に期待したい

発端

ソースはBigQueryの2024/12/16リリースノートでした。

https://cloud.google.com/bigquery/docs/release-notes#December_16_2024

December 16, 2024

...
You can now use the Google Cloud Code extension for VS Code to work with BigQuery datasets and notebooks in your VS Code environment. This feature is in preview.

少し調べてみると、BigQuery拡張の開発自体を行っていた形跡はGitHubにありますが、package.json以外の最終コミット・最終リリースは2018年で、 2024年9月にアーカイブ化されているようです。
https://github.com/google/vscode-bigquery

ドキュメントを読んでみる

https://cloud.google.com/bigquery/docs/vs-code-extension

書いてある内容は以下のような内容です。(正確な内容は元のドキュメントをご確認ください)

  • BigQueryの機能自体は、別のVSCode拡張機能であるMicrosoft製のJupyter拡張に依存する
  • 認証はブラウザでログインして実施
  • プロジェクト・リージョンはVSCodeのコンフィグで設定する
  • ipynbが編集できる
    • Jupyter Notebookのカーネル自体はローカルにインストールが必要(BigQuery処理以外の動作はローカルということ?)
  • VSCode内からデータセットやテーブルの一覧が見れる
    • テーブルをクリックすると、テーブルの詳細情報・スキーマ・プレビューが見れる
  • 拡張機能は無料だが、使用したBigQueryやDataproc、GCSの使用量は課金される。

気になるのは以下のようなポイントでしょうか?

  • サービスアカウントの認証を利用できるのか
  • ipynb以外の対話的な実行環境はあるのか

試してみる

導入

では実際に試していきます。
VSCodeの拡張画面からGoogleCloudTools.cloudcodeをインストールします。
興味深いことに最終リリースはなぜか2024-12-11で上のリリースノートと一致しません…

Google Cloud拡張のトップページ
Google Cloud拡張のChange Log

何か画面が出てきましたが、どうやら設定画面ではなくチュートリアルのようです。
Google Cloud拡張の操作Tutorial

サイドバーには2つタブが追加されました。Gemini Code AssistCloud Codeですね。
Cloud Codeタブの中にはBigQuery関連のセクションがあることが確認できます。
(別にGemini Code Assistは入れてくれと頼んでないのですが...)

Gemini Code Assistタブ
Cloud Codeタブ

自分の環境ではgcloud/ADCはインストール・セットアップ済みであり、Jupterの拡張も導入済みのため、導入は以上で完了です。

コンフィグを調整する

Ctrl+Shift+PからOpen Settings (UI)で設定を開き、Extensionsから今回導入された拡張機能を確認していきます。

まずはGemini Code Assistを見ていきます。
何かしれっと有効化されているような気もしますが、projectを指定していないから起動はしない…んですかね?
この後拡張機能の無効化も試みましたが、Google Cloud Code側が依存ExtensionとしてGeminiを指定しているようで、Gemini Code Assistのみを無効化することはできませんでした…
とりあえず設定から適当にEnabledのチェックを外しておきます。
コンフィグ画面(Gemini Code Assist)

続いてGoogle Cloud Codeを見ていきます。
コンフィグ画面(Google Cloud Code)

重要そうなコンフィグを以下にピックアップしておきます。

タイトル 内容
Auto Dependencies Automatically install and update required Cloud Code dependencies such as the Cloud SDK, Skaffold, minikube, and Kubectl.
Beta: Bigquery Region BigQuery dataset explorer region.
Project The Google Cloud project used by Cloud Code for viewing and interacting with project resources
Update Adc On Login Append a --update-adc flag to gcloud auth login. Read about this flag.

認証系のコンフィグは無さそうです。

実際に動かしてみる

初期設定

画面下部のCloud Code - Sign inのボタンから認証を実行します。
また、コンフィグのProjectに検証に使うprojectのidを設定しておきます。

設定後にCloud Code - Sign inを確認すると、プロジェクト名が確認できましたので、疎通は無事とれていそうです。
ただし、BigQuery Datasetsには何も表示されず、Error通知も出てきてしまいました。
プロジェクトのオーナー権限を持っているのでIAMの問題とは思えないのですが...
設定後の画面

...と思っていたのですがBigQueryのRegionを変えてみたり、画面をリロードしたりするうちに直りました。

プレビュー機能

各プレビュー機能は以下の通りです。

データセットの詳細
テーブルの詳細(メタデータ)
テーブルの詳細(スキーマ)
テーブルの詳細(プレビュー)

特にこれ以上できる機能は無さそうです。

Jupyter Notebook機能

pipenv install jupyter bigframesからpipenv環境を作成します。
続いて、Cloud CodeタブのBigQuery NotebooksセクションからNew Notebookボタンをクリックし、Jupyter Notebookのテンプレートを作成します。
つまりはこのbigframesを利用したテンプレートを、適当なプロジェクト名・リージョンで生成できるというところがこの拡張の機能というところでしょうか?

New Notebookボタン

右上からJupyterのカーネルとして先ほど作成したvenvを選択します。
適当にデータセットを選び、実行してみると以下の通りです。
まあ妥当な結果ですね。
実行結果

実行ログを見る限りもローカルのJupyterで実行されていそうです。
まあでもこの結果表示とかはJupyter拡張機能のおかげな訳で、果たしてCloud Code拡張を使う意味があるのかはかなり疑問です。

まとめ

以下、まとめです。

  • まだBigQueryの機能自体はかなり少ない、完全にBig Query Studioの代替となる訳では現状無い
  • Cloud Codeの範囲でService Accountなどを認証として利用する機能は見つけられなかった
  • 現状の機能はほぼJupyter拡張頼り、Cloud Codeはあくまでipynbのテンプレート作成機能のみ
  • 今後に期待したい

Discussion