Visual Studio "15" の新しい JavaScript 言語サービス "Salsa" をプレビュー リリース

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。【元記事】 Previewing Salsa – the New JavaScript Language Service in Visual Studio "15" 2016/4/8

 

Visual Studio “15” Preview (英語) で、新しい JavaScript 言語サービス (コードネーム “Salsa”) を使用できるようになりました。言語サービスとは、特定の言語について構文の強調表示、入力候補一覧、シグネチャ ヘルプ、その他のツール機能を IDE から使用できるようにするものです。Salsa では、既存の JavaScript 言語サービスよりも機能が大きく改善され、モジュール サポートの強化、ES6/ES7 の構文の完全なサポート、JSX のサポートなどが実施されました。

 

新しい言語サービスを導入した理由

これまで Visual Studio で JavaScript を編集する際は、言語サービスの実行モデルが使用されていました。実行モデルは基本的に、入力されたコードを JavaScript エンジンが常時実行し、入力候補一覧、シグネチャ ヘルプ、その他のツール機能で "ランタイムのような" 正確性を提供するものです。実行エンジンは言語の動的な要素の処理には適していますが、同時に非常に複雑で不整合が生じるという欠点もあります。たとえば、入れ子状のループや HTTP 要求など、実行が長時間に及ぶコードでは、実行エンジンがタイムアウトします。このような場合、言語サービスでは IntelliSense を提供することができませんでした。

Salsa では、TypeScript の型の推定と同じ静的分析が使用されています。新しい言語サービスが静的分析を基盤とすることにより、さまざまなメリットが期待されます。まず、静的分析ではランタイムのベイルアウトがなくなり、Visual Studio のすべてのセットアップで一貫した JavaScript エクスペリエンスが実現されます。次に、JavaScript の編集エクスペリエンスでは既存の TypeScript 定義を活用して高度な IntelliSense が提供されます。さらに、JavaScript では現在 TypeScript で使用可能な ES2015 および ES2016 以降の機能のサポートが継承されます。最後に、コード ベースを統合することで俊敏性が向上し、新機能を頻繁に追加できるようになります。

 

Visual Studio “15” Preview で Salsa を有効化する

Salsa はプレビュー段階にあるため既定では有効化されていませんが、ぜひお試しのうえご意見をお聞かせください。Visual Studio “15” Preview (英語) で Salsa を有効化するには、下記のコード スニペットを salsa.reg という名前のローカル ファイルとして保存し、実行してレジストリを更新してから Visual Studio を再起動します (同様に、下記の値を 00000001 から 00000000 に変更するといつでも無効化できます)。

 Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\15.0\TypeScriptLanguageService]
"UseTypeScriptExperimental"=dword:00000001

 

Salsa の新機能

ES6 commonjs モジュール

Salsa は ES6 および commonjs モジュールの書式を理解し (いずれも UserVoice で特に多かったご要望 (英語) です)、モジュール間で IntelliSense を提供することができます。

以下のような math-util.js ファイルが存在するとします。

 /**
* Returns square of a number.
* @param {number} x Number to square.
*/
export function square(x) {
return x * x;
}

 
他のファイルのインポートが解決され、IntelliSense が提供されます。

clip_image002

 

JSX のサポート

Salsa には、JSX 要素の色付けや入力候補など、JSX 構文の高度なサポートが追加されています。これにより、React などの JSX を使用する最新のフレームワークで作業する場合に優れた編集エクスペリエンスが実現されます。

clip_image004

 

TypeScript 定義の型

新しい言語サービスの中核部分は TypeScript でも使用されているため、一般的な JavaScript ライブラリやフレームワーク用にコミュニティが作成したリッチな型情報を Visual Studio での JavaScript の編集にも使用することができます。この型情報は TypeScript 定義ファイル (.d.ts ファイル) に保存され、Salsa が使用することで JavaScript の高度な IntelliSense が提供されます。

clip_image006

既定では、Salsa 言語サービスは使用中の JavaScript ライブラリを検出して、該当するライブラリの .d.ts ファイルを自動的にダウンロードして参照します。この機能の詳細については、GitHub の Wiki (英語) を参照してください。

 

機能の追加予定

マイクロソフトが重点的に取り組んでいる Salsa の機能の 1 つに、言語サービスによる型の自動取得の強化 (英語) があります。現在プレビューの一部として提供されている JavaScript 言語サービスでは、.d.ts ファイルの DefinitelyTyped の検索をサードパーティ製のライブラリに依存していますが、このエクスペリエンスが最適ではないことを承知しています。サードパーティへの依存性を排除し、エンドツーエンドのエクスペリエンスをスムーズにするために、型取得機能を言語サービスに直接組み込む作業を進めています。また、JSDoc の仕様のサポート範囲 (英語) を拡大し、@constructor および @typedef を追加する作業にも取り組んでいます。現在作業中の項目の一覧 (英語) は GitHub でご確認いただけます。

 

主な変更点

Salsa は完全に新しい言語サービスであるため、機能面でいくつかの変更が生じています。まず、新しい言語サービスのコメントは VSDoc 形式ではなく JSDoc 形式になりました。JSDoc 形式のコメントは作成が容易で、広く一般に理解されるようになっています。また、従来の言語サービスでは、特定のサードパーティの JavaScript ライブラリ向けにカスタムの拡張機能を開発できる拡張モデルがサポートされていました。Salsa ではこういった拡張機能のサポートが廃止され、TypeScript 定義ファイルがサポートされています。これによりコミュニティの共同作業が促進され、最新の状態を維持することが容易になります。

 

フィードバックのお願い

Salsa の使用に関する詳細情報、機能の説明、特定の動作の詳細については、Wiki ページ「Visual Studio "15" Preview での Salsa の使用 (英語)」をご確認ください。

Salsa の最終目標は、信頼性が高く快適な JavaScript の編集エクスペリエンスを提供することですが、依然として改良が必要な点は多く残っています。ぜひ Visual Studio “15” Preview をダウンロード (英語) して Salsa をご利用いただき、GitHub の Salsa Feedback イシュー (英語) までコメントをお寄せください。

 

clip_image008 Bowden Kelly (VS クライアント、プログラム マネージャー)@bowdenk7Bowden Kelly は、Visual Studio における開発者の生産性向上を目指して JavaScript の編集エクスペリエンスの強化に取り組んでいます。趣味はサッカーをすることやプログラミングの基礎を教えることで、トライアスロンにも挑戦したいと思っています。