Visual Studio “15” Preview 5 を発表

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。【元記事】 Announcing Visual Studio “15” Preview 5 2016/10/5

 

このたび Visual Studio "15" Preview 5 をリリースしました。今回のプレビューでは、特にパフォーマンスの向上に焦点を当てて取り組みを行いました。向上した点については、今後の記事でも詳しくご紹介していく予定です。また、生産性の面でもいくつか改良を加えています。

では、こちらでインストーラーを起動させながら、残りの内容をお読みください。リリース ノートはこちらでご覧いただけます。

パフォーマンスとメモリ効率が大幅アップ

まず以下のビデオをご覧ください。以前のバージョンの画面と隣り合わせで表示しているので、パフォーマンスがどのように向上したかひと目でわかるようになっています。ここでは、Visual Studio を起動して .NET コンパイラ プラットフォームの “Roslyn” を使用するソリューション (英語) を読み込むときのパフォーマンスを比べています。Visual Studio 2015 では 60 秒かかりましたが、Visual Studio ‘15’ では 30 秒で終了しました。

この読み込みの高速化は、プロジェクトの読み込みの軽量化と拡張機能の読み込みのオンデマンド化という 2 つの点を改良したことによって実現しました。Preview 5 では主に以下の点でパフォーマンスが強化されています。

    • プロジェクトの読み込みを軽量化して、読み込み時間を短縮: 100 種類など多くのプロジェクトが含まれるようなソリューションでは、すべてのファイルやプロジェクトが同時に使用されることはありません。VS "15" では、すべてのプロジェクトが読み込まれるまで待たずに編集やデバッグを開始できます。この機能を使用するには、Preview 5 の管理対象プロジェクトで [Tools]、[Options]、[Projects and Solutions] の順に選択し、[Lightweight Solution Load] を [True] にします。
    • 拡張機能の読み込みをオンデマンド化して、起動時間を短縮: このアイデアはとてもシンプルで、単に拡張機能の読み込みを VS 起動時ではなく、必要なときに実行しようというものです。Preview 5 では、まず Python と Xamarin の拡張機能の読み込みをオンデマンド化しました。今後は Visual Studio に同梱されるマイクロソフト製とサードパーティ製のどちらの拡張機能もこのモデルに移行します。起動やソリューションの読み込み、キー入力のパフォーマンスに影響を与える拡張機能に関する情報は、[Help]、[Manage Visual Studio Performance] の順に選択してご確認ください。また、拡張機能の開発者の皆様向けに、読み込みのオンデマンド化に関するガイドを公開する予定です。
    • サブシステムを VS のメイン プロセスから分離: Git Source Control などのメモリ消費量が多いタスクや、JavaScript や TypeScript の言語サービスのプロセスを分離しました。32 ビットの処理ではメモリが 4 GB に制限されますが、プロセスの分離によりメイン プロセスがこの制限を回避できるようになるため、Visual Studio のメイン プロセスで実行されるコードの速度低下や Visual Studio の応答速度低下やクラッシュが防止されます。今後のリリースではさらにコンポーネントのプロセスの分離を進める予定です。
    • C++ のプロジェクト読み込み、コード編集、デバッグを高速化: C++ プロジェクトの読み込みが高速化されました。そのようすはこちらのビデオでご覧いただけます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択し、[Enable Faster Project Load] をオンにします。また、リンカーや PDB の読み込みライブラリが改良され、差分ビルドが作成されるようになりました。さらに、デバッガーの起動が高速化され、デバッグ作業中のメモリ消費量が大幅に減少しました。
    • Git 使用中や XAML コードのデバッグ / 編集中の速度が向上: libgit2 から git.exe に切り替えたことにより、ソース管理操作が高速化しました。また、初期化コストや IntelliTrace および [Diagnostic Tools] ウィンドウ関連のその他のコストが最適化され、XAML ファイル編集時の遅延が発生しにくくなりました。

この取り組みはまだ始まったばかりで、今後もさらなるパフォーマンスの高速化、応答性の向上、メモリ使用量の削減を目指して改良を進めていきます。今回の改良の技術的な詳細については、近日中に Visual Studio ブログの記事でお伝えしますのでどうぞお楽しみに。

マイクロソフトでは、問題を予測しつつ最高のパフォーマンスを実現するためにこれらの変更を厳格にテストしていますが、実際に運用されているコードを完全に再現できるわけではありません。そのため、皆様のご協力が必要です! Preview 5 をインストールして、皆様の大規模なソリューションで実際に使用していただき、その感想やご意見を IDE の問題報告ツール (英語) を使ってお寄せください。

生産性の向上

Visual Studio “15” では、生産性の向上を目的とした機能も多数組み込まれました。

コードの編集

C#、VB、C++ の各言語で IntelliSense filtering を使用できるようになりました。これにより、複雑な API を探す場合、候補の型 (メソッド、プロパティ、イベントなど) のみに絞ることが可能です。C# と Visual Basic では、入力位置で求められる「ターゲットとなる型」が決定され、その型に適合するアイテムがリストから事前に選択されます。これにより入力フローが高速化され、また、特定の場所で必要とされる型を探すのに無駄な時間がかかることがなくなります。

C++ では IntelliSense の結果にフィルターを適用する Predictive IntelliSense という試験機能が実装されており、これにより候補リストが短くなるため、目的のアイテムを探すときにリストをスクロールする必要がなくなります。この機能を使うと、過去の使用履歴から型が予想され、その型のアイテムのみが表示されます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択し、該当する項目を選択します。

XAML では、プロパティやイベントをバインドする際に補完リストを表示する x:Bind に IntelliSense の補完機能が追加されました。名前空間の補完では、既存の名前空間を参照する場合にプレフィックスが自動補完されます。また、XAML の IntelliSense で、適合しない型とプロパティがフィルターにより除外されるようになりました。最も一致する項目が選択されるため、関連性がある結果のみが表示されるので型のリストが短くなり、目的のアイテムを探すときにリストをスクロールする必要がなくなります。

JavaScript では、IntelliSense が利用する言語サービスが完全に刷新されました。これまでは入力時に JavaScript エンジンが継続的にコードを実行し、ランタイムのように補完リストやシグネチャのヘルプを提示していました。これは動的な JavaScript コードの場合は効果的ですが、編集エクスペリエンスの一貫性が損なわれることもありました。新しい言語サービスでは TypeScript による静的分析が使用され、IntelliSense の内容が詳しくなっているほか、ES6 と ES7 が完全にサポートされ、編集エクスペリエンスの一貫性も向上しています。

修正とリファクタリングの迅速化

コードベースを読みやすい状態で維持して開発ワークフローを活性化できるように、C# と Visual Basic でクイック操作とリファクタリング機能が拡充されました。Move Type to Matching File では、型を同名の新規ファイルに移動します。また、Sync File and Type Name では、ファイル名に適合するように型名を変更したり、逆に型名に適合するようにファイル名を変更できます。最後に、Convert to Interpolated String では C# 6.0 や VB14 の機能を使用して `string.Format` 式を補間文字列に変換できます。

コードのナビゲーション

大規模なコードベースでの作業は困難がつきものです。これを緩和するために、新たに複数のナビゲーション機能を追加しました。Go To: (Ctrl + , または Ctrl + T) を使用すると、ファイルや型、メソッド、その他の種類のオブジェクトをコード内ですばやく検索できます。

また、Find All References (Shift+F12) を使用すると、複雑なコードベースでも簡単に目的のものを検索できます。この機能では、結果に対して詳細なグループ化やフィルターの適用、並び替え、検索が可能で、一部の言語ではテキストの色付けにも対応しており、参照を明確に把握できます。

デバッグ

Preview 5 では、Run to Click という試験機能が新たに実装されました。この機能を使用すると、実行をスキップ、停止する行に一時的なブレークポイントを設定する必要がなくなります。デバッガーでコード実行が停止された場合、マウスオーバーすると行の隣にアイコンが表示されます。これをクリックするだけで、該当する行でコードを実行、停止することができます。この機能を有効化するには、[Debug]、[Options] の順に選択し、[Enable Run to Click] をオンにします。

新しい例外ヘルパーでは、値が null になっている変数などの有用性が高い情報がモーダル ダイアログではないダイアログ ボックスでコンパクトに表示されるため、内部で発生した例外にすばやくアクセスできます。

ぜひお試しください

今回のリリースの新機能と既知の問題については、Visual Studio "15" Preview 5 のリリース ノートを参照してください。

次に、Preview 5 の注意点を 2 つお伝えします。まず、今回はプレビュー版でサポート対象外であるため、重要な業務に使用しているコンピューターにはインストールしないでください。また、Preview 5 は前バージョンの Visual Studio と共存インストールできますが、セットアップを開始する前に旧バージョンの Visual Studio “15” Preview をすべて削除することをお勧めします。その他の一般的な問題については、Preview 5 についてよく寄せられる質問を参照してください。

マイクロソフトでは皆様のフィードバックをお待ちしています。問題点がありましたら、インストーラーまたは Visual Studio IDE 本体の [Report a Problem] オプションからご報告をお願いいたします。また、開発者コミュニティ ポータル (英語) に寄せられたフィードバックもご覧ください。ご提案は UserVoice (英語) までお寄せください。

最後に、近日開催される開発者向けイベント Connect(); 2016 (英語) に関する記事を Mitra Azizirad が執筆していますので、こちら (英語) もご一読いただければ幸いです。

John Montgomery (Visual Studio 担当プログラム マネージメント ディレクター)@JohnMontJohn Montgomery は Visual Studio、C++、C#、VB、JavaScript、.NET の製品設計とユーザー サポートを担当しています。マイクロソフトには 17 年前に入社して以来、開発者向けテクノロジの開発に従事しています。