前回はVisual Studio Code 0.10(以下、VS Code)に追加されたエクステンションを使ってみた。今回はエクステンションを自分で作成しながら、その基本を見ていこう。今回もWindowsとMacで動作を確認している。
VS Codeのエクステンション作成には以下を使用するのがよい。
yoとgenerator-codeをインストールするには、Node.jsとnpmが必要なので、これらもPCにインストールされていて、パスが通っている必要があるので、エクステンションを作成してみたいという方は準備しておこう。
Node.js/npmがインストールされていれば、yoとgenerator-codeは以下のコマンドラインでインストールできる。
$ npm install -g yo
$ npm install -g generator-code
インストールできたら「yo code」コマンドを実行し、いくつかの事項を入力するだけで、エクステンションのひな型を作成できる。以下では、generator-codeが作成してくれるひな型を見ながら、エクステンション作成の基本を見ていく。
「yo code」コマンドの実行画面を以下に示す。
$ yo code
_-----_
| | .--------------------------.
|--(o)--| | Welcome to the Visual |
`---------´ | Studio Code Extension |
( _´U`_ ) | generator! |
/___A___\ '--------------------------'
| ~ |
__'.___.'__
´ ` |° ´ Y `
? What type of extension do you want to create? (Use arrow keys)
> New Extension (TypeScript)
New Extension (JavaScript)
New Color Theme
New Language Support
New Code Snippets
この画面を見ると分かる通り、generator-codeではエクステンション(使用する言語はTypeScript/JavaScriptを選べる)、カラーテーマ、言語サポート、スニペットを作成できる(厳密にはテーマとスニペットについてはエクステンションには分類されない)。言語サポートを新規に作成すると、特定の言語のコードをその構文に従ってハイライト表示できるようになるが、ここでは言語サポートについては触れずに、シンプルなエクステンション(TypeScript)を作成してみよう。これには「yo code」コマンドが表示したプロンプトの一番上にある「New Extension (TypeScript)」を選択する。
すると、以下の事項の入力を要求されるので、適宜入力していこう。
筆者が試したところでは、エクステンションの識別子については入力を要求される環境(Windows)とされない環境(OS X)があった*1。また、発行者の名前として利用できる文字にも環境によって差があるようだ(発行者に「Insider.NET」を入力した場合、OS Xでは受け入れられたが、Windowsではダメだった)。
*1 「Yo Code - Extension Generator」ページによると、エクステンションの識別子はカレントディレクトリに作成するエクステンション用のディレクトリ名に使われるとのことだ。大文字小文字を区別しないWindowsのファイルシステムに固有の何らかの事情があるのかもしれない。というのは、エクステンションの名前を全て小文字化したものがデフォルトの識別子となるからだ。これについては次ページのコラム「Windows版のVS Codeで作成したpackage.jsonファイル」も参照してほしい。
ここではそれぞれ以下を指定してエクステンションのひな型を作成した。
これにより、カレントディレクトリの下の「HelloVSCExt」ディレクトリまたは「hellovscext」ディレクトリにひな型が生成されるとともに、「npm install」による初期構成が自動的に行われる。
次に作成したフォルダーをVS Codeで開いて、デバッグ実行するだけで、取りあえずエクステンションの動作を確認できる。まだ何もしていないが、取りあえず実行してみよう。
エクステンションをデバッグ実行するには、ウィンドウ左端にあるビューバーで[Debug]アイコンをクリックし、[DEBUG]サイドバーを表示したら、[Start]ボタンをクリックする(今回はVS Codeのカラーテーマを「Light」に変更している。見やすい)。
これにより、エクステンション開発モードで新規にVS Codeが起動される。エクステンションが実行されるのは、新規に起動されたVS Codeの方だ。環境によっては「cannot connect to runtime process (timeout after 3000ms)」などとメッセージが表示され、VS Codeの新規起動がうまくいかない場合もあるが、その場合は[Start]ボタンを再度クリックしてみよう。
新規に起動したVS Codeでコマンドパレットを表示して(Windows/Linuxでは[Ctrl]+[Shift]+[P]キー、OS Xでは[Command]+[Shift]+[P]キー)、「hello」などと入力する。コマンドパレットで「Hello World」が選択されたところで[Enter]キーを押せば、先ほど作成したエクステンションで定義されているコマンドが実行され、メッセージがウィンドウ上部に表示される。
これは非常にシンプルなサンプルだが、generator-codeを使うことでエクステンションを極めて簡単に作成できることが分かる。新規に起動したVS Codeのウィンドウを閉じてデバッグ実行を終了しておこう。
次に、このエクステンションのコードや構成について見てみる。VS Codeのエクステンションのキモとなる部分はこのひな型に含まれている。まずはエクステンションプロジェクト全体の構成を見ておこう。
Copyright© 1999-2015 Digital Advantage Corp. All Rights Reserved.
@IT編集部では現在、編集スタッフを募集しています。編集経験は不問。 ITに関する経験のある方、ご応募お待ちしています。