Connect(); 2018 年特別号

Volume 33 Number 13

Visual Studio - Visual Studio 2019 の新機能

著者 Mads Kristensen; 2018 年特別号

Visual Studio 2019 では、開発者の生産性の最適化とチーム コラボレーションを目的とした魅力的な機能強化と新機能とが導入されています。Visual Studio の使用経験の有無に関わらず、開発ライフサイクルのあらゆる側面を改善する機能から恩恵を受けることができます。これは、リポジトリ ワークフローからの複製を中心としたよりスムーズなプロジェクト作成から、コードの保守容易性および品質の向上にまで及びます。チームおよびオープン ソース コラボレーション ワークフローも改善されます。

Visual Studio チームの目標の 1 つは Visual Studio 2019 へのアップグレードをできるだけシームレスかつシンプルにすることでした。そのため、ステップアップ時のソリューション ファイルとプロジェクト ファイルの形式に破壊的変更がないことと、既存のコードが想定どおりに開くことを確認できるはずです。

良いニュースはほかにもあります。Visual Studio 2019 での拡張性 API の変更は比較的小規模です。これは、Visual Studio 2017 で使用している拡張機能を最小限の労力で Visual Studio 2019 をサポートするように更新できることを意味します。多くの拡張機能は既に更新済みで、プレビュー リリースで利用できます。更新済みの拡張機能には、Productivity Power Tools、Web Essentials、VsVim、およびその他の現在 Visual Studio Marketplace で重宝されているさまざまな拡張機能が含まれます。

特にお客様の関心が高い領域はパフォーマンスと信頼性の 2 つです。Microsoft では、多年にわたり新しいバージョンの Visual Studio のプレビュー ビルドを出荷し、さらに、四半期ごとに最新の更新プログラムをリリースしています。これらのプレビューで事前に新しい機能を確認できるため、プレビュー ビットで作業して、Visual Studio 製品チームにフィードバックを提供することができます。また、新しい機能が個人や組織に与える影響を検討するのにも役立ちます。さらに、これらのプレビューによって、さまざまなユーザー シナリオの問題点に関する貴重なフィードバックだけでなく、最高品質の製品を提供するために機能をどのように調整できるかに関する分析情報も得られます。

それでは、Visual Studio 2019 のプレビューで発見が期待できるものを詳しく見てみましょう。

コード起動の簡易化

Visual Studio 2019 を開いたときに最初に気付くことは、図 1 に示すように、スタート ウィンドウが新しくなっていることです。このウィンドウには、コードを複製またはチェックアウトする、プロジェクトまたはソリューションを開く、ローカル フォルダーを開く、あるいは新しいプロジェクトを作成するためのオプションが表示されます。Visual Studio の使用経験やコーディング経験の有無に関係なく、これらの機能によって、これまでよりも対象が絞られ迅速にコードにアクセスできます。

新しいスタート ウィンドウ
図 1 新しいスタート ウィンドウ

Microsoft では、規模に関係なく、ソリューションやプロジェクトの読み込みにかかる時間の短縮に注力してきました。ソリューションの読み込みが速くなることに加え、バックグラウンドでの動作も増えるため、初期化中の拡張 UI の遅延やハングが回避されます。

スタート ウィンドウでソース管理から直接複製またはチェックアウトすることでプロジェクトを開始できるようなったことは注目に値します。この機能をスタート ウィンドウの中央に配置することにより、本来あるべきシンプルさがもたらされます。

Visual Studio で新しいプロジェクトを作成すると、再設計されたプロジェクト作成ダイアログが開きます。従来のプロジェクト ダイアログに関するフィードバックが数多く寄せられていたため、事前に、強力な検索機能とフィルタリング機能を提供するようにエクスペリエンスを最適化することができました。これにより、新しいプロジェクトに適したテンプレートの特定が容易になります。同じダイアログがスタート ウィンドウと Visual Studio の両方で使用されます。

以前のバージョンの Visual Studio では、同梱されたテンプレートが何百個もあったうえ、コミュニティによってダウンロード可能にされたテンプレートが何千個もあったために、アプリに適切なテンプレートを探すのが困難でした。新しいダイアログでは、よく使用されるテンプレートが先に配置されるので特定が容易です。テンプレートを簡単に参照して、言語、プラットフォーム、およびプロジェクト タイプに基づいてすばやく絞り込むことができます。

プロジェクト作成ダイアログを開くと、フォーカスが直接検索ボックスに入り、入力に伴ってリアルタイムでテンプレート一覧が絞り込まれます。これまでもプロジェクト作成ダイアログには検索ボックスが表示されていましたが、Visual Studio 2019 の検索ボックスのように自然で、迅速で、便利なものとして感じることはありませんでした。

ほかにも、プロジェクト作成ダイアログには、最近使用したテンプレートの一覧やその他の機能強化など、さまざまな更新が施されています。

UI の単純化

生産性を向上させるために、Visual Studio には、UI とエクスペリエンスを改善して肝心なこと、つまりコードを書くことに集中できるようにするためのいくつかの更新が含まれています。Visual Studio を開くとすぐに、以前のバージョンからのいくつかの変更に気付くでしょう。最も目につく変更点の 1 つは、アイコン、ツールバー、およびツール ウィンドウの境界が丸くなった青のテーマです。これは、Visual Studio 2012 で導入されて以来、青のテーマに対する初の大幅な更新であり、インターフェイスの最新化です。淡色テーマと濃色テーマの両方にも同様の更新が予定されています。

もう 1 つの目につく変更点は、トップレベル メニューです。エディター内のコード領域を広げるためにタイトル バーに移動されました。この変更により、IDE のナビゲート方法を変えずに、使用可能な領域が最適化されます。

今後の更新プログラムで、プロジェクトとコード ドキュメントを中心として UI を簡略化するように設計された細かい変更が追加される予定です。

検索の改善

これまでクイック起動と呼ばれていた検索機能は、完全に書き直され、速度と精度が向上しています。スペル ミスがあっても機能する、より寛容な検索エクスペリエンスも提供されます。

探しているものがコマンドなのか、設定値なのか、インストール可能なコンポーネントなのか、その他の有益な何かなのかに関係なく、新しい検索機能では、IDE 内で探しているものをこれまでより簡単に見つけることができます。図 2 に示すように、コマンドの検索結果の横にキーボード ショートカットが表示されるため、いつでも使用したいときに簡単に思い出すことができます。

新しい検索機能
図 2 新しい検索機能

新しい検索は、クエリの入力に合わせて結果を動的に表示することにより、操作を効率化します。また、あいまい検索アルゴリズムを使用することにより、スペル ミスやより自然な言語に対応します。さらに、より関連性の高い情報 (キーボードをよく使う開発者向けのショートカットなど) が結果に表示されるように更新されています。

初期状態で、メニュー、コマンド、オプション、およびインストール可能なコンポーネントを検索できます。Visual Studio チームは、検索の精度を高め、他の検索プロバイダーを取り込んで一元的な検索エクスペリエンスを提供できるように尽力しています。また、検索機能がタイトル バーに移動されていることに気付くと思います。この場所は、見つけやすい目立つ場所であると同時に、使用しないときに邪魔にならない場所でもあります。

AI 支援 IntelliCode

IntelliCode は、開発者の生産性を向上させる AI 支援機能のセットで、コンテキスト IntelliSense、コード書式設定、スタイル ルール推論などが含まれます。今後の更新プログラムで、プル要求の集中的レビューなどの改善が行われます。IntelliCode は、Visual Studio 2017 と Visual Studio 2019 の両方のオプション拡張機能ですが、いくつかの重要な更新プログラムがリリースされています。aka.ms/vsintellicode で最新の IntelliCode 拡張機能をダウンロードすることができます。IntelliCode とその機能強化の詳細については、aka.ms/vsicblog で Visual Studio ブログの投稿を参照してください。

過去の IntelliCode レコメンデーションは、何千ものオープン ソース GitHub リポジトリからのパターンの学習に基づいています。しかし、そのリポジトリのセットに含まれていないコードを使用している場合はどうなるでしょうか。おそらく、内部ユーティリティや基本クラス ライブラリ、またはオープン ソース コードではあまり使用されないドメイン固有のライブラリを使用していると思いますが、それらに関する IntelliCode レコメンデーションも参照したいはずです。C# を使用している場合は、IntelliCode にコードからパターンを学習させることができるため、オープン ソース ドメインに含まれないコードに関するレコメンデーションを入手できます。

更新された IntelliCode 拡張機能のインストール後に Visual Studio を開くと、コードのトレーニングに関する通知が表示され、最新の IntelliCode ページに誘導されます。この新しいページは、[表示] | [その他のウィンドウ (Other Windows)] | [IntelliCode] でも確認できます。トレーニングが完了すると上位クラスの使い方が理解できるため、C# ファイルを開いてコードを入力し始めれば、新しいレコメンデーションを試せます。トレーニング済みのモデルはセキュリティで保護されるため、このモデルにアクセスできるのは、自分、およびモデルの共有リンクを提供した相手のみです。モデルと、モデルがコードに関して学習した内容は公開されません。

多くの開発者から、お気に入りの言語の IntelliCode レコメンデーションが欲しいという要望が寄せられています。この更新プログラムでは、AI 支援 IntelliSense レコメンデーションを取得可能な言語が 4 つ増えました。C++ と XAML が Visual Studio 拡張機能に追加され、TypeScript/JavaScript と Java が Visual Studio Code に追加されました。

CodeLens の解放

CodeLens は Visual Studio Enterprise にしかない機能でしたが、次回の Visual Studio 2019 のプレビューで変更され、2019 年に Community Edition でも使用できるようになる予定です。CodeLens には、型とメソッドの参照数、メソッドを対象とした単体テストに関する情報、および Application Insights から直接入手されたデータが表示されます。

加えて、CodeLens は完全に拡張可能になっているため、サードパーティ拡張機能に独自のエクスペリエンスを追加できます。CodeLens を使用すれば、ソース コードを表示しながら、型に関する重要な情報を簡単に見つけることができます。ソース管理履歴と IntelliTrace に対するレンズは、引き続き Enterprise 専用機能です。

コードのクリーンアップ

コード内のエラー、警告、または提案を見逃すことがよくあります。これは、ビューからスクロール アウトしていたり、エラー一覧ウィンドウが表示されなかったりしたためです。多くの場合、このような問題は、次回のプロジェクトのビルドまで認識されません。加えて、.editorconfig ファイルまたはコード アナライザーからのコード スタイル ルールに基づく警告や提案は、気付かれなかったり、コード変更をソース管理にコミットする前のコード レビューの時間まで認識されなかったりすることがあります。

コード ファイルにエラー、警告、および提案が含まれているかどうかを示すインジケーターが常に表示されていれば、このような状況を回避することができます。警告や提案に対処するために提供されたコード修正が一度にコード ファイル全体 (またはプロジェクト) に適用されれば、さらに状況は良くなります。

これが、Visual Studio 2019 のエディターの右下にドキュメント正常性インジケーター アイコンが追加された理由です (今後の更新で場所が変更される可能性があります)。このアイコンは、色 (赤、黄、緑) で、コード ファイルまたはドキュメントの正常性レベルを示します。図 3 に、この外観を示します。

ドキュメント正常性インジケーター
図 3 ドキュメント正常性インジケーター

インジケーター アイコンを右クリックすると、ドキュメント内の問題に対処するためのショートカットが表示され、ドキュメント全体のクリーンアップ プロセスが実行されます。クリーンアップにより、コードの書式設定が行われ、現在の設定、.editorconfig ファイル、または Roslyn アナライザーによって提案されたコード修正が適用されます。

クリーンアップは、よりメンテナンスしやすいコードを短時間で作成できるように支援し、コード レビューに入る前に、問題に早期に対処するように設計されているため、大幅な生産性の向上につながります。この機能は、今後の更新で UI に組み込まれる予定ですが、Visual Studio チームは、この早期 UI をプレビュー 1 で出荷することを決定しました。これは、ユーザーの生産性を最大化し、この機能をより良くするためのフィードバックを受け取れるようにするためです。

デバッガーの更新

Visual Studio 2019 の目的は、手間を減らして、日常業務の生産性を向上させることです。この手間の削減を支援する新しい機能の 1 つがさまざまなウォッチ ウィンドウ内の検索機能 (ローカル、自動、およびデバッグ中の監視) です。これまではウォッチ ウィンドウで大量の値の中から文字列を探していたことでしょう。それが Visual Studio で検索できるようになったのです。

図 4 は、ウォッチ名、値、および型の列から "pork" を検索している様子を示しています。検索すると、検索の深さに基づいてウィンドウ全体が検索され、一致したテキストが強調表示されます。見つかったすべての一致をナビゲートするには、[次を検索] (F3) コマンドを使用します。ウォッチの検索に伴う課題の 1 つは、表示されるデータが再帰的になったり、親チェーンが深くなりすぎたりすることです。このような制限を回避するために、既定で、3 レベルの深さまでしか検索されません。何も見つからなかった場合は、[詳細検索] ボタンを使用して、次の 2 レベルを検索できます。既定の検索深さは、[ツール] | [オプション] で変更することもできます。

ウォッチ ウィンドウ内の検索
図 4 ウォッチ ウィンドウ内の検索

これによって初めて、任意の種類の配列を検索して、探しているまさにそのアイテムを簡単に見つけることができるようになりました。これまでの欠点は、配列内のアイテムを目視で探さなければ、必要なものを見つけることができなかったことです。今は、検索文字列を入力するだけの簡単さです。

このリリースでは、パフォーマンスを向上させるための改良が数多くなされています。ウォッチ ウィンドウと、[ローカル] や [呼び出し履歴] などのその他のデバッグ ツール ウィンドウはすべて、非同期で読み込むことができるように再設計されました。現在は、Visual Studio の UI スレッドで動作していたプロセスの多くが非ブロッキング バックグラウンド スレッドで動作します。その結果、明らかにパフォーマンスが向上し、デバッグ中の UI の遅延やハングが減少しました。

デバッグ作業もやりやすくなっています。デバッガーの応答性の改善だけでなく、Visual Studio 2017 で開始された作業を継承し、メモリを消費するコンポーネントとワークロードを別のプロセスに移動しています。Visual Studio 2019 では、C++ デバッガーのコンポーネントが別のプロセスで動作します。これは、大量のメモリを消費するプログラムをメモリが不足している Visual Studio を使用せずにデバッグできることを意味します。また、ステップ デバッグでのコードのステップスルーが高速かつ滑らかになるため、全体として最適なデバッグ エクスペリエンスが得られます。

今後のリリースでは、新しい機能とパフォーマンスの向上の両面でさまざまなデバッガーの強化が予定されています。

まとめ

この記事で説明した機能に加えて、開発者の相互作用を一変させるような強力なチーム コラボレーション機能が追加されています。この話題については、Julie Lerman の記事『Remote Collaboration with Visual Studio Live Share』を参照してください。

この記事で説明した機能は、Visual Studio 2019 プレビュー 1 で使用可能な機能のほんの一例にすぎません。このほかにも、.NET Core 3 プレビュー ツール、モバイル開発機能、クロスプラットフォーム C++ 機能、Azure 機能など、数多くの修正、調整、および追加機能が用意されています。

Visual Studio 2019 プレビューは、この記事の執筆時点ではまだ機能が揃っていませんが、製品の最終バージョンがリリースされるのは時間の問題です。まだの人は、visualstudio.com にアクセスして、プレビューをダウンロードし、自分でこれらの新機能を試してみることをお勧めします。


Mads Kristensenは、Visual Studio Extensibility チームのシニア プログラム マネージャーです。彼は、拡張機能の制作に情熱を注いでおり、長年にわたって、何百万件ものダウンロードを誇る有名な拡張機能を制作してきました。

この記事のレビューに協力してくれたマイクロソフト技術スタッフの Gordon Hogenson と Rajen Kishna に心より感謝いたします。
Rajen Kishna は、Visual Studio のシニア プロダクト マーケティング マネージャーです。

Gordon Hogenson は、Microsoft の Developer Relations チームに所属しているコンテンツ開発者です。彼は、主に docs.microsoft.com 上の Visual Studio と Azure のコンテンツを制作しています。


この記事について MSDN マガジン フォーラムで議論する