かねてより自作していたVisual Studio Code(VSCode)の拡張機能をマーケットプレイスに公開しました!
元々は開発の勉強用と、実際にSQL書いたときにかゆいところに手が届く機能がほしいと思って作った機能なのですが、ある程度形になったのでプレビューで公開しています。
今回はこの拡張機能を公開するにあたって、
- 拡張機能の概要
- 開発で苦労した点
- 今後の展望
などを綴っていこうかなと思います。
過去のVSCode拡張機能開発に関する記事はこちらから!
拡張機能「Visual-BigQuery」の概要
そもそも今回の拡張機能がどんな機能かというと、だいたい以下のGifの通りです。
- BigQuery SQLのキーワード、関数などのシンタックスハイライト
- BigQuery SQLのキーワード、関数、よく使う構文のオートコンプリート
- 関数をマウスオーバーしたときにドキュメントを表示
CURRENT_DATE()
などのtimezoneを指定するときに'Asia/Tokyo'
をデフォルトで設定(プロパティで変更可能)
などの機能を作りました。
timezoneを毎回手動で入力するのが面倒なので、デフォルトで'Asia/Tokyo'
を設定するのが、地味なこだわりです。
ソースはGitHubに公開しています。
開発で苦労した点
そもそもJavaScript、TypeScriptが得意でない
今回の拡張機能は、TypeScriptである程度コードも書いているのですが、この拡張機能開発で生まれて始めてTypeScriptを書きました。
少しだけですが。
JavaScriptはある程度業務でも書いたことはあるのですが、言語独自の仕様に苦手意識があります。
しかし、TypeScriptはJavaと同じような感覚で書けたので、今後はTypeScriptと仲良くしていきたいと思いました。縛られるのが好きなタイプです。
参考となるドキュメントが見当たらない
拡張機能の作り方を調べようにも、拡張機能そのものを紹介している記事ばかりが検索にヒットされ、拡張機能開発をしている人の記事を探すのがそもそも大変でした。
JSONでコードスニペットを書くには限界だった
以前以下の記事で、TextMateスニペットをJSONで定義して、コードスニペット(オートコンプリート)を実装する方法を紹介していました。
当初はこのVisual-BigQueryも同じようにJSONで定義していたのですが、
なのでTypeScriptでYAMLを読み込みしてオートコンプリートするようにしています。
今後の展望
Visual-BigQueryについて
今回はシンタックスハイライトと、簡単なオートコンプリート機能だけでしたが、今後つけていきたい機能としては、
- 構文チェック
- オートフォーマット
- SQLのドライラン
などです。
チーム内でSQLを書くときに、コーディングスタイルを統一したいなあと思うことが多々あったのですが、BigQueryの場合はWebUIのフォーマット機能がイマイチで、他に良い機能もないので困っていました。もし拡張機能でフォーマッタを自作できればこの悩みも解決しそうです。
その他の拡張機能開発について
今回はBigQuery SQLを題材に作成してみましたが、得たナレッジを活かし、他のGCPプロダクトと絡めた、ちょっとした機能を作っていけると楽しいなと感じました。
まとめ
以上、今回はVSCodeの拡張機能公開のふりかえり記事でした。BigQuery SQLをVSCodeで書く人がいらっしゃいましたら、ぜひ下記マーケットプレイスか、VSCodeで拡張機能検索してインストールしてお試しいただければと思います。
拡張機能開発