Blade FormatterのVSCode Extensionを作る
VSCode Extensionの作り方を軽く学ぶついでに
とりあえずVSCode ExtensionのHello Worldをベースに色々試して動作感を確認する
blade-formatteはCLIから実行出来るがnpmベースなのでVSCodeでも再利用出来そうだなと思い
他のnpmライブラリも色々再利用出来そう
Hello Worldコマンド経由でSubscription登録は出来たがインストール時に自動でbladeファイルと関連付けしてSubscriptionを登録するにはどうする?
何かHookはありそう
他のExtensionを見てAPIの使用方法を学ぶ
試した感じVSCode ExtensionはNode.jsのNative Module(oniguruma)などを使っている場合各プラットフォーム向けに再ビルドする必用があり面倒っぽい
ただHackでVSCode本体に内蔵されているmoduleをLoadするという方法があるので必用なNative Bindingがあり自前でそれぞれのPlatformごとにロードの切り替えを書くのが厳しい場合(ほとんどの場合厳しいと思うが)、VSCode Built-inのModuleを使える
動的にモジュールをロードしFormatterをInitializeするときに欲しいNative ModuleライブラリををVSCode ExtensionでInstanciationすればライブラリ側でロードを切り替える必用はない
とりあえずvscode-onigurumaでVSCode Extension側でInstanciationして解決した
一旦フォーマット出来ることを確認出来た
利用元のblade-formatterでVSCode Extensionに対応するための修正もそこそこ必用だったので
Yarnでvsceを vsce package --yarn でパッケージングしたら実際にパッケージをインストールした時必用なnode_modules moduleがnot foundになったり挙動があやしい
npmに切り替えたらうまくいった npm install vsce package
Windowsにpackagingしたvsixファイルでinstallしても動作したので問題はなさそう
VSCodeのAPIにある程度習熟しないとExtensionを作るのは難しそうなのとVSCodeの進化は早いのでExtension開発はけっこう泥沼というか献身的でないと続かなそう
VSCodeというプラットフォーム自体への貢献となりがちなのでスキルセットに加えるに適切か少し迷う
気に入ったプラットフォームに貢献するのは悪くないがプラットフォームは良くも悪くも営利企業が運営している場合コントロールは不可能
GitHub並にほぼパブリックコモンズと化したプラットフォームに貢献するのは良いと思うがVSCode MarketplaceはAzure DevOpsに登録が必用だったり少し運営がMicrosoftに寄り過ぎではないかと感じるところもある
Publicなプラットフォームを目指すならMicrosoftアカウントの登録必須はどうかなと思う
2020-07-21現在 19664 個のExtensionがMarketplaceに登録してある
量的規模ではもうキャズムを超えた感はあるがこのプラットフォームに貢献したいかと言われると50:50みたいなところはある
VSCodeは確かに良いプロダクトだけど本体の更新にExtensionがしばしば追いつかなく安定しないこともあるのでIntelliJのようなカチっとしたプロダクトでバージョンを固定する方が会社で開発するには向いてるところはある
WebViewベースのElectronという仕組みを選んだことでplatform agnosticを実現したがその分トレードオフも受け入れないといけない