とりゅふの森

GCPデータエンジニアとして生きる

VSCodeの拡張機能「Visual-BigQuery」を公開しました

f:id:true-fly:20211127232727p:plain

かねてより自作していたVisual Studio Code(VSCode)の拡張機能をマーケットプレイスに公開しました!

marketplace.visualstudio.com

「Visual-BigQuery」という名前で、BigQuery SQLのシンタックスハイライト、オートコンプリートなどの言語サポート機能を作りました。

元々は開発の勉強用と、実際にSQL書いたときにかゆいところに手が届く機能がほしいと思って作った機能なのですが、ある程度形になったのでプレビューで公開しています。

今回はこの拡張機能を公開するにあたって、

  • 拡張機能の概要
  • 開発で苦労した点
  • 今後の展望

などを綴っていこうかなと思います。

過去のVSCode拡張機能開発に関する記事はこちらから!

www.true-fly.com

www.true-fly.com

www.true-fly.com

拡張機能「Visual-BigQuery」の概要

そもそも今回の拡張機能がどんな機能かというと、だいたい以下のGifの通りです。

f:id:true-fly:20211127222752g:plain:w480

  • BigQuery SQLのキーワード、関数などのシンタックスハイライト
  • BigQuery SQLのキーワード、関数、よく使う構文のオートコンプリート
  • 関数をマウスオーバーしたときにドキュメントを表示
  • CURRENT_DATE() などのtimezoneを指定するときに'Asia/Tokyo'をデフォルトで設定(プロパティで変更可能)

などの機能を作りました。
timezoneを毎回手動で入力するのが面倒なので、デフォルトで'Asia/Tokyo'を設定するのが、地味なこだわりです。

ソースはGitHubに公開しています。

github.com

開発で苦労した点

そもそもJavaScript、TypeScriptが得意でない

今回の拡張機能は、TypeScriptである程度コードも書いているのですが、この拡張機能開発で生まれて始めてTypeScriptを書きました。

つまり拡張機能開発の勉強と並行して、TypeScriptの勉強も必要でした。

少しだけですが。
JavaScriptはある程度業務でも書いたことはあるのですが、言語独自の仕様に苦手意識があります。

しかし、TypeScriptはJavaと同じような感覚で書けたので、今後はTypeScriptと仲良くしていきたいと思いました。縛られるのが好きなタイプです。

参考となるドキュメントが見当たらない

拡張機能の作り方を調べようにも、拡張機能そのものを紹介している記事ばかりが検索にヒットされ、拡張機能開発をしている人の記事を探すのがそもそも大変でした。

ひたすら公式のAPIリファレンスとにらめっこしたり、自分が使っている拡張機能のソースコードをGitHubで参照して、参考にできそうな部分を探しては真似をしています。

code.visualstudio.com

JSONでコードスニペットを書くには限界だった

以前以下の記事で、TextMateスニペットをJSONで定義して、コードスニペット(オートコンプリート)を実装する方法を紹介していました。
当初はこのVisual-BigQueryも同じようにJSONで定義していたのですが、

JSONはコメントが書けない、改行を含むテキストの扱いに不便といったデメリットがあったため、同じ設定ファイルの形式でも、改行やコメントをしやすい、YAMLファイルの利用に切り替えました。

なのでTypeScriptでYAMLを読み込みしてオートコンプリートするようにしています。

www.true-fly.com

今後の展望

Visual-BigQueryについて

今回はシンタックスハイライトと、簡単なオートコンプリート機能だけでしたが、今後つけていきたい機能としては、

  • 構文チェック
  • オートフォーマット
  • SQLのドライラン

などです。
チーム内でSQLを書くときに、コーディングスタイルを統一したいなあと思うことが多々あったのですが、BigQueryの場合はWebUIのフォーマット機能がイマイチで、他に良い機能もないので困っていました。もし拡張機能でフォーマッタを自作できればこの悩みも解決しそうです。

その他の拡張機能開発について

今回はBigQuery SQLを題材に作成してみましたが、得たナレッジを活かし、他のGCPプロダクトと絡めた、ちょっとした機能を作っていけると楽しいなと感じました。

まとめ

以上、今回はVSCodeの拡張機能公開のふりかえり記事でした。BigQuery SQLをVSCodeで書く人がいらっしゃいましたら、ぜひ下記マーケットプレイスか、VSCodeで拡張機能検索してインストールしてお試しいただければと思います。

marketplace.visualstudio.com

拡張機能開発