SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

Visual Studio Codeのinsider向けリリースをゲットする方法

この記事はVisual Studio / Visual Studio Code Advent Calendar 2015の22日目の記事です。

最近何かと話題のVSCodeですが、そんなVSCodeが好きでたまらない人向けな、VSCodeの自動更新に関する小ネタです。

VSCodeでは、自動更新に関する設定をいじることで、以下のようなことができます。

  • insidersチャンネル新しいバージョンの更新を一足先に受け取る
  • 自動更新をオフにして、現在使ってるバージョンのままにする

VSCodeの更新について

VSCodeは、およそ1か月に1度の頻度でアップデートが行われています。
新しいバージョンの配布が始まると、こんな風にエディタ上に通知が来て更新できるのは、VSCodeを使ってる方々にはご存じの通りかと思います。
f:id:minami_SC:20151222231259p:plain

insidersチャンネルでの先行リリース

VSCodeにはinsider向けに一足先に更新を配布するための手段が提供されています。
この設定をしていると、VSCodeのstable版が一般に配布されるよりちょこっと(数日~1週間程度?)速く、次のバージョンの更新を受け取ることができます。
ちょうど、Windows10のinsider programなんかと同じような感じですね。

先月のConnect();でVSCode 0.10.1がリリースされ、0.10.2→0.10.3とバグフィックスがリリースされました。
そして今月の19日には0.10.5がリリースされています。
この間0.10.3と0.10.5の間に、0.10.5での更新内容を一足先に試してみるための0.10.4というバージョンがあり、12/14頃からinsider向けにリリースされていました。
f:id:minami_SC:20151222231405p:plain:w300

こんな風に配布されるinsider向けの先行リリースですが、今回の0.10.5のアップデートから設定方法が簡単になり、ユーザーのsettings.jsonを編集するだけで設定できるようになりました。
また、リリースノートやFAQページでもinsiderチャネルの更新の受け取り方が明記されました。

insiderチャネルの設定をする

VSCode 0.10.5以降でのinsiderチャネルの設定方法

設定方法は、次のFAQページに書かれているとおりです。
https://code.visualstudio.com/Docs/supporting/FAQ#_how-can-i-test-prerelease-versions-of-vs-code

FileメニューのPreferences→User Settingsを開き、以下のようなプロパティ設定を追記します。
f:id:minami_SC:20151222231414p:plain:w250

settings.json

{
    // Configure the update channel to receive updates from. Requires a restart after change.
    "update.channel": "insiders"
}

こうしておくと、insider向けリリースの配布が開始されたときに、通常の更新と同じような通知がVSCodeのエディタ上に表示されるようになります。

0.10.5より前のバージョンでの設定方法

ちなみに、0.10.5より前のバージョンでは、若干異なった方法でinsiderチャネルの設定をしていました。
今後は使うことはないでしょうが一応、過去の経緯のメモということで。

以下のパスにある、storage.jsonというファイルを編集します。

  • Windows環境
    • %APPDATA%/Code
    • C:\Users\[ユーザー名]\AppData\Roaming\Code・・・←こんな感じのパス
  • Mac環境
    • ~/Library/"Application Support"/Code

このstorage.jsonの中の、updateChannelのプロパティをinsidersにすることで、insiderチャネルの設定ができます。

{
    "updateChannel": "insiders",
    "lastKnownKeybindings": {
        "workbench.action.files.newUntitledFile": "Ctrl+N",
        "workbench.action.files.openFile": "Ctrl+O",
        // 以下略
        //   :

0.10.5からは上に書いたユーザーのsetting.jsonで設定ができるようになったので、この設定方法はもう使わなくてよくなりそうですね。

insiderチャネルの設定方法の変化について

この自動更新の設定は、GitHubリポジトリを見てみると、以下のようなコードで実装されています。
コミットログなども追ってみると、何となく実装の概要はつかめるかと思います。
vscode/update-manager.ts at ed139191d6d17eeca9e9034f49f733e52bbdd8e6 · Microsoft/vscode · GitHub
allow to set the update channel from settings · Microsoft/vscode@ed13919 · GitHub

現時点の実装では、以下のように設定値を参照するようです。

  1. まずUserSettingsのsettings.jsonを参照
  2. そこにupdate.channelの記述がなければ、storage.jsonの内容を確認
  3. どちらもなければデフォルト値(stable)とする。

で、この部分のコードにコメントが書かれてますが、storage.jsonを使った設定方法は、いくつか先のバージョンで削除するつもりのようです。
ですので、既にstorage.jsonでinsiderチャネルの設定をしていた方は、今のうちにsettings.jsonでの設定に変えておいたほうが良いかと思います。

こうやって、修正点や変更内容についての実装をコードを見て確認できるのは、OSSならではの楽しさですね!!

元のstableのバージョンに戻す場合

上記の方法で一度insider channelの新しいバージョンにした後、「やっぱ元のバージョンに戻したい!!」ってなった時には、settings.jsonupdate.channelプロパティを以下のように戻すことで、元のstableバージョンの更新が降ってくるようになります。

{
    // Configure the update channel to receive updates from. Requires a restart after change.
    "update.channel": "stable"
}

普段のバージョンアップ時と同じような通知が出てくるので、指示に従いアップデートしてVSCodeを再起動すると以前のstable版がダウンロードされて元のバージョンに戻すことができます。

※補足
今までのstorage.jsonを使ったinsiderチャネルの変更をしてた頃は、stableに戻すことで最後のstable版に戻せることは確認しています。
settings.jsonで設定するように変わってからは、まだinsiderチャネルでのリリースがないので、この辺の動作は実際に動かして確認できていません。が、まぁおそらく大丈夫でしょう。

自動更新をオフにする

今度は逆に自動更新をオフにする方法。

ここのドキュメントによると、先ほど書いたstorage.jsonupdateChannelプロパティをnoneとすることで、自動更新を無効にできるようです。

storage.json

{
    "updateChannel": "none",
    "lastKnownKeybindings": {
        "workbench.action.files.newUntitledFile": "Ctrl+N",
        "workbench.action.files.openFile": "Ctrl+O",
        // 以下略
        //   :

注意点
このstorage.jsonを編集するときは、すべてのVSCodeのインスタンスを終了しておく必要があります。
VSCode終了時に各種設定をこのファイルに書き込んでいるようで、VSCodeを起動したままこのファイルを編集すると、VSCode終了のタイミングでファイルの内容を上書きされてしまいます。

なので、このjsonファイルの編集はVSCode以外のエディタで編集してください。

自動更新オフの使いどころ

現在使ってるバージョンのまま使い続けたい場合や、新しいバージョンが出ても、不具合報告などがある程度出て落ち着くころまで様子見をしておきたい、という時に使えそうです。
ちなみにVSCode 0.10.5では、JIS配列のキーボードを使ったOS X環境ではアプリ起動時にクラッシュする、という不具合報告なども出てます。
慎重派な方は、普段はこの設定をしておいて、少し様子を見てからstableに設定を戻してアップデートする、という使い方もアリかもしれません。

自動更新オフの設定方法の補足

現時点でのドキュメントでは、上記のようなstorage.jsonを用いた設定方法が記載されています。
しかし、VSCodeの実装を見てみる限り、UserSettingsのsettings.json"update.channel": "none"と書けばオフにできるのでは、と思います。

この辺はドキュメントの修正がまだされてないだけなのかな?

最後に

ここに書いた方法は、VSCode0.10.5の時点での設定方法です。
この手の各種設定方法は、今後のバージョンアップに伴い変わる可能性もありますのでご注意を。。。

また、insiderチャネルでの更新は、stableとしてリリースする前の状態のモジュールなので、それなりのリスクはあるかもしれません。
やってみる場合には、VSCode関係の設定ファイル類を一通りバックアップして何かあってもいい状態にしておき、不具合を踏む覚悟とともに挑んでみることをお勧めします。