Visual Studio Code 1.7.1がリリースされました
2016年11月3日に「Visual Studio Code 1.7.1」がリリースされました。Visual Studio Code 1.7リリース取り消し
「Visual Studio Code 1.7」は不具合によりリリースが取り消されています。もし現在「Visual Studio Code 1.7」をインストールしているなら、「Visual Studio Code 1.7.1」へアップデートしてください。
2016年11月2日にリリースした「Visual Studio Code 1.7」を「Visual Studio Code 1.6.1」へロールバックした。(リリース取り消し)
もしすでに「Visual Studio Code 1.7」へアップデートしているなら、「Visual Studio Code 1.6.1」へ戻す案内が表示される。
今朝問題を回避する修正を行い、新しいリリースを行った。
「Visual Studio Code 1.7.1」へアップデートして欲しい。
現在利用している「Visual Studio Code」が不明なら、「ヘルプ」メニューを開き「バージョン情報」をクリックすればバージョンを確認できる。
原因はAutomatic Type Acquisitionの実装
「Visual Studio Code 1.7」では、「Automatic Type Acquisition(ATA)」機能を実装した。「ATA」の目的は、JavaScriptのインテリセンスの動作改善である。
「Visual Studio Code」は、JavaScriptのインテリセンスを提供するため、「TypeScript言語サービス」を使用している。
「TypeScript言語サービス」は、宣言ファイル(タイピングファイル)と呼ばれる特別なファイルを使用する。
このファイルは@types scope下でnpm上に公開している。
過去においてユーザーは、インテリセンスを有効にするため、手動でこれらのファイルをインストールする必要があった。
この状況を改善するため、TypeScriptチームと共同してATAを開発するに至った。
ATAが有効になっている「TypeScript言語サービス」では、package.jsonファイルを監視し、必要なすべての宣言ファイルを自動的にインストールする。
この機能をインサイダービルドで有効にし2週間経過したあと、この機能はユーザーにとって役に立つ機能であると感じたため、「Visual Studio Code 1.7」で「ATA」の機能の導入を決定した。
なにが起きたのか
1.2016年11月2日 〜1:57 PM PST
「Visual Studio Code 1.7」のリリースを行い、チューリッヒのチームは寝た。そしてRedmondのチームは「Visual Studio Code 1.8」に向けて作業を開始した。
2.2016年11月2日 〜4:12 PM PST
@typesスコープ以下の存在しないパッケージに対してクライアントから大量のアクセスが発生しているとnpmから連絡がきた。ピーク時には全トラフィックのおよそ10%を占めるアクセスがあり、npmのサービスを困惑させた。
npmチームは即座に意図的ではないDDoS対策を行い負荷を軽減し、「Visual Studio Code 1.7」から来るアクセスが原因であると突き止めた。
問題は、存在しないパッケージに対する大量のアクセスであり、 以下のアルゴリズムが原因となっていた。
1.モジュールチェック
「TypeScript言語サービス」はpackage.jsonのモジュールの一覧から、アプリケーションキャッシュにモジュールが存在するかをチェックする。2.モジュールの要求作成
モジュールがアプリケーションキャッシュに存在しない場合、TypeScript言語サーバーは@types/{module}に対する要求を作成する。3.アプリケーションキャッシュに追加
存在しているモジュールはアプリケーションキャッシュに追加される。4.モジュールの要求
新しい宣言ファイルが@typesスコープ以下に追加されることを見込んで、存在していないモジュールの要求をプロジェクトやフォルダーを開いたタイミングで行う。結果、npmが404を返す原因となる。
@typesスコープ以下存在しないモジュールの数だけ要求を行うため、大量の404を生成する結果となりnpmのサービスに影響を与えた。
3.2016年11月2日 〜5:45 PM PST
リリースした「Visual Studio Code 1.7」を取り下げ、ユーザーに「Visual Studio Code 1.6.1」へ戻すように促した。Visual Studio Code 1.7.1での対応
「Visual Studio Code 1.7.1」では、「ATA」を無効にしてリリースを行っている。
それ以外の新機能や改善は「Visual Studio Code 1.7」から変わらず有効である。
数日間かけて「ATA」の修正を行い、今後アップデートを提供する予定だ。
Visual Studio Code 1.7.1の変更点とリリースノート
変更点とリリースノートは、以下を参考にしてください。変更点をいくつか紹介します。
1.エディターを水平に分割可能に
エディターを水平に分割できるようになりました。これでエディターを縦もしくは横に分割できます。
水平分割
垂直分割
分割方向を切り替えるには
以下のいずれかの方法で、分割方向を切り替えられます。- 「表示」メニューを開き、「Toggle Editor Group Layout」をクリックする
- コマンドパレットから「Toggle Vertical/Horizontal Editor Group Layout」を選択する
- 「Shift + Alt + 1」キーを押す
- 「開いているエディター」からレイアウト切り替えボタンをクリックする
2.印刷可能な新しいショートカットリファレンス
印刷可能な新しいキーボードショートカットリファレンス(PDF)が利用可能になりました。「ヘルプ」メニューを開き「Keyboard Shortcuts Reference」をクリックすれば、リファレンスが表示されます。
3.HTML内のCSSの自動補完に対応
HTML内のCSSの自動補完に対応しました。4.ブレークポイントのブレーク条件にヒットカウントを追加
ブレークポイントのブレーク条件にヒットカウントを指定できるようになりました。5.SublimeとAtomのキーマップが利用可能に
SublimeとAtomのキーマップが利用可能になりました。6.拡張機能の無効化
拡張機能を無効化、もしくは、特定のワークスペースで無効化できるようになりました。7.拡張パックに対応
複数の関連性のある拡張機能をまとめてインストールする拡張パックに対応しました。8.クイックオープンで複数のファイルを開けるようになった
クイックオープンで複数のファイルを開けるようになりました。インストールとアップデート
「Visual Studio Code 1.7.1」のインストールは、以下を参考にしてください。以前のバージョンからのアップグレード方法も、インストール手順と同じです。