Visual Studio 2017 RC 皆さんの生産性を高める機能たち

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。【元記事】 Productivity in Visual Studio 2017 RC 2016/11/28

 

Visual Studio が多くの開発者に選ばれる理由は、強力ながら自然に使いこなせる生産性機能によって、「究極の集中力」を得られるからではないでしょうか。Visual Studio 2017 RC では、開発者の皆様がツールの使い勝手を気にすることなく、プログラムの中身に集中していただけるように、この機能の強化に力を入れています。今すぐダウンロードして、日々の開発作業を快適にする機能を実際にお確かめください。

Visual Studio 2017 RC では、ほとんどの開発者が時間を費やす、コード編集、ナビゲーション、デバッグの 3 つに重点を置いて機能強化を行いました。今回はその 3 つの点に関する各機能を詳しくご紹介します。

コード編集

IntelliSense フィルタリング

IntelliSense は、カテゴリごとに一連の値を絞り込むことで、新しい API をすばやく参照できるフィルタリング機能です。この機能を使用すると、必要な変数を多くの型の中から探し出す必要がなくなります。下のスクリーンショットは、フィルターを使用して、C++ コード ファイルの IntelliSense の結果に変数と定数のみを表示している例です。

すべてのフィルターには便利なキーボード ショートカットが用意されています。たとえば、C# コードの入力では、Alt + P キーでプロパティに絞り込んだ表示を、Alt + M キーで拡張メソッドの除外をすばやく行うことが可能です。フィルター バーの上にマウス ポインターを合わせるだけで、状況に応じたすべてのショートカットを確認できます。

一致箇所の強調表示

結果をすばやく得るためにキャメル ケース マッチング (一綴りにした複合語の各大文字を入力して補完) などを行う場合、アイテムがどの部分で一致しているのか判断しづらいことがあります。C#、VB、JavaScript、TypeScript の IntelliSense では、下図のように一致箇所を太字で表示することで、項目が一致する理由がわかるようになりました。一致箇所の強調表示は拡張ポイントであり、あらゆるで言語サポート可能なため、対応言語は今後さらに追加される予定です。

フィルタリングや一致箇所の強調表示の機能を使用したくない場合は、使用言語の IntelliSense 設定で簡単に無効化できます。[Tools]、[Options]、[Text Editor] から使用している言語を選択します。たとえば、[Tools]、[Options]、[Text Editor]、[C#]、[IntelliSense] の順に選択すると、C# 言語での機能を制御できます。

IntelliSense の動作の改良

IntelliSense の精度向上のため、今回のリリースでは各言語で大幅に機能が強化されています。その例をご紹介します。

  • C# と VB に追加された「スマート プリセレクション」機能では、予測されるターゲット型が判定され、IntelliSense のリストでその型に一致する項目が事前に選択されます。これにより、入力が速くなり、どんな型が必要かをユーザーが考える手間が省けます。この機能は特別なキーボード操作をしなくても適用されます。C# と VB の新しい生産性機能の概要は、こちらのビデオ (英語) をご覧ください。
  • XAML の IntelliSense では、名前空間の入力補完、不明な名前空間に関する電球マークのクイック修正、不要な名前空間の並べ替えや削除、名前空間プレフィックスの名前の変更のリファクタリングなどが可能になりました。さらに、XAML の IntelliSense が強化され、x:Bind でイベント、パス、関数をバインドする作業をすばやく正確に行えるようになりました。また、関連情報のみが表示されるようフィルタリング機能が向上し、キャメル ケース マッチング機能にも対応しました (例: 「RTB」と入力すると「RichTextBox」のように補完されます)。こちらのビデオ (英語) で実際の動作を確認できます。
  • C++ には、IntelliSense の結果にフィルターを適用したリストを表示する、予測 IntelliSense 機能 (英語) が実験的に追加されました。これにより、関係ない一致を含む長いリストをすべてスクロールする必要がなくなります。具体的には、必要性に基づく確立に応じて、予想される型の項目のみが一覧表示されます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択します。この機能の詳しいしくみは、Visual C++ Team Blog のこちらの記事 (英語) をご覧ください。
  • JavaScript 言語サービスは、IntelliSense の改良に併せて全体的に刷新されました。これまでは、入力時に JavaScript エンジンがコードを連続的に実行して、実行時のような入力候補一覧とシグネチャのヘルプを提供していました。これは動的な JavaScript コードには適していますが、編集エクスペリエンスの一貫性が損なわれる場合もあります。新しい言語サービスでは、TypeScript のスタティック分析によって、より詳細な IntelliSense、ES6/ES7 への完全対応、より一貫した編集エクスペリエンスなどが実現します。詳細については、Bowden Kelly によるブログ記事「Visual Studio 2017 RC で JavaScript 開発がより生産的に」をご覧ください。

.editorconfig によるコーディング規則のサポート

コードベースで一貫してコーディング基準を維持すれば、チームの生産性にとってプラスになる、ということは開発者の皆様ならご存知だと思います。これができれば、コードをチーム メンバーのだれが書いても読みやすくなりますが、コーディング基準を徹底するのはたいへんな作業です。マイクロソフトではプロジェクトで書式の統一を実現するために、オープン ソースの EditorConfig (英語) 規則ファイル形式を新たに組み込みでサポートします。これにより、コードベースをどこに移動しても同じ書式ルールを定義できるようになります。つまり、チェックインされるコードが、個々の開発者ではなくコードベースの規則や設定に従うことになります。また、書式が異なる一部の古いコードを変更したくない場合などには、コードベースの部分ごとに異なる規則を定義することも可能です。この形式は、他のさまざまなエディターや IDE でも標準として認められています。これを利用するには、エディター設定ファイル (.editorconfig) をプロジェクトに追加します。詳細については、こちらの (英語) ドキュメントを参照してください。

C# と Visual Basic のコード分析

C# と Visual Basic には、さらに一歩進んだコーディング規則のサポートが備わっています。マイクロソフトでは、ライブ コード分析の範囲をコーディング スタイルの適用まで拡大しました。これにより開発リポジトリまたはチーム全体でコーディング スタイルと命名規則の一貫性を保つことができます。さらに、新しいリファクタリング機能やコード修正機能によってコーディングの生産性向上に継続的に取り組んでいます。RC で追加された機能の中で特に優れているのは、一致するファイルへの型の移動、ファイル名と型名の同期、補間文字列への変換です。詳細については、Kasey Uhlenhuth による、C# と Visual Basic の生産性向上に関する記事 (英語) をご覧ください。

ライブ編集エクスペリエンス

開発作業のできるだけ早い段階でコード品質を高めることは非常に重要であり、問題の発見は早ければ早いほど良いとされます。Visual Studio 2017 RC では、テストを始める段階でなく、コードの編集時にテストに必要なデータを用意できるため、安心してコーディングを進めることができます。.NET Framework の C# および VB ユーザー向け新機能であるライブ ユニット テストを利用すれば、コードを作成している間に単体テストに成功しているかどうか即時判定できます。詳細については、Joe Morris によるライブ ユニット テストに関するブログ記事をご覧ください。

ナビゲーション

開発者にとって多くの時間を費やす作業の 1 つが、大量の既存コード本体の扱いです。コードをすばやく簡単にナビゲーションできる機能があれば、非常に便利で生産性も飛躍的にアップします。バグの調査でも、リファクタリングの影響確認でも、さらには単なる不慣れなコードベースの解読でも、すばやく確実なナビゲーション ツールでコード位置を把握できるだけで大幅に効率が上がります。今回追加された便利なナビゲーション機能をいくつかご紹介します。

GoTo

GoTo (Ctrl + , または Ctrl + T) は高速かつ包括的な検索機能で、コード内のファイル、型、メソッドなどのシンボルをすばやく見つけることができます。あらゆる種類の項目にワン ストップで移動できるため、特に大規模なコード ベースで開発を行っている場合に役立ちます。

新しい GoTo 機能では、候補の絞り込みが簡単で、1 種類の項目のみを探すこともできます。これを行うには、キーボード ショートカット (ショートカットについては [Edit] から [GoTo] メニューを参照してください)、[Go To] パネルでフィルター アイコンをクリック、さらには下の例のような簡潔なクエリ構文を使用するなどの方法があります。検索語句の前に「t」が付与されていますが、これは検索対象を型のみに絞り込むように指示するものです。項目の種類がわかれば、検索途中でも簡単にフィルターを変更することができます。

検索リスト内を移動していくと、選択した場所のプレビューが一時的なウィンドウに表示されます。下図のように、結果がすばやく切り替わるため、いくつものウィンドウを開くことなく必要な項目を探すことができます。

GoTo はカスタマイズも可能です。ツール バーの歯車アイコンをクリックして、プレビューの動作などを変更できます。

すべての参照の検索

すべての参照の検索 (Shift + F12) では、検索結果内での高度なグループ化、フィルタリング、並べ替え、検索機能が追加され、非常に複雑なコードベース内でもすばやく動くようになりました。C# などの一部の言語では、エディターで表示されるのと同じように結果に色が付けられます。C++ の場合、どの参照が読み取りで、どの参照が書き込みかがわかります。これらの機能によって、参照内容を明確に理解できるため、迷うことなく必要なコード行に移動できます。

下の例では、適切なコードをすばやく見つける方法を表示しています。ここでは、BaseViewModel クラスの参照元を調べています。パスを含むグループが選択されているため、この依存関係がある場所の詳しい構造を確認できます。つまり、ViewModel が 6 つ、そのクラスを参照しているヘルパー クラスが 1 つ存在することがすぐにわかり、マウス ポインターを合わせることで、正確にどのコードがそのヘルパーからの参照を行っているかがわかります。

[Group By] ドロップダウンからは便利なプリセットのグループ化を利用できますが、[すべての参照の検索] の結果内で右クリックして [Grouping] コンテキスト メニューを選択すれば、独自のグループ化を作成することも可能です。また、参照の検索結果セットを複数表示することも可能で、リファクタリング前に参照リストでのコード チェック中に、別の参照を調査する必要が出てきた場合などに最適です。[Keep Results] をクリックして結果を固定しておけば、次に見つけた参照は新しいウィンドウで開きます。

構造ビジュアライザー

コードを読むときに、コード構造内の位置を明確に把握することが重要です。そこで、Productivity Power Tools 拡張機能でも人気のある構造ビジュアライザーが Visual Studio に追加されることになりました。この機能を使用すると、コード上に構造を表すガイド ライン (別名インデント ガイド) が表示されるため、画面をスクロールしなくても作業中のコード ブロックをいつでも簡単に視覚化して把握できます。ガイド ラインにマウス ポインターを合わせるとヒントが表示され、ブロックの開始部分とその親を確認できます。特にブロックが画面に入りきらない長さの場合に便利です。また、このガイドはコードのインデント レベルが適切かどうかを確認する際にも役に立ちます。

Visual Studio 2017 RC の構造ビジュアライザーは、XAML、C#、VB の各ファイルと、下の Ruby ファイルのスクリーンショットのように、TextMate 文法でサポートされるすべての言語で機能します。今後さらにサポート言語が追加される予定です。一部の言語 (C# や VB など) では、該当のコードと同様、ヒントにも色が付けられます。

ガイド ラインを表示したくない場合は、[Tools]、[Options]、[Text Editor]、[General]、[Show structure guide lines] の順に選択して簡単に無効化できます。また、[Fonts and Colors] で [Text Editor] の表示アイテムから [Block Structure Adornments] を選択すると、ガイド ラインの色を変更できます。

デバッグ

Run to Click (クリックで実行)

今回から、ブレークポイントを設定しなくても、目的の行まで簡単にスキップできるようになりました。デバッガーで停止中にマウス ポインターが置かれているコード行の横のアイコンをクリックします。次にそのコード パスが実行されると該当する行でコードが停止します。

新しい例外ヘルパー

新しい例外ヘルパーでは、コンパクトな非モーダル ダイアログで以下のような例外情報を即座に確認し、重要な情報にすばやくアクセスできるようになりました。

  • null の項目: C# の NullReferenceException や C++ のアクセス違反を診断するときに、null の項目を例外ヘルパー内ですばやく確認できます。null 値が原因となってあるコードが中断した際に、例外ヘルパーのメッセージに太字で表示される変数を調べることで、実際に null となっている項目を確認します。
  • 内部例外: 中断の原因に内部例外がある場合は、例外ヘルパーでその詳細をすぐに確認し、矢印を使用して内部例外のツリー構造を確認できます。
  • 特定のモジュールからの例外を無視: 例外ヘルパーの [Exception Settings] セクションでは、チェック ボックスをオンにして、その種類の例外を現在のモジュールからスローされても無視できるようになりました。これを行うと、次にそのコード パスをデバッグしたときに、その例外で中断することはなくなります。なお、この状態は [Debug] から [Exception Settings] ウィンドウを開いてリセットできます。

[Attach to Process] フィルターと再アタッチ

[Attach to Process] ダイアログで検索することで、デバッガーをアタッチしたいプロセスをすばやく見つけることができます。一度プロセスにアタッチした後は、デバッグの停止またはデタッチを行っても、[Debug] メニューの新しい [Reattach to Process…] (Shift + Alt + P) コマンドを使用して再アタッチできます。この機能は、類似プロセスを繰り返しデバッグする際に時間を節約でき、毎回 [Attach to Process…] ダイアログを開く手間を省くことができます。

キーボード ショートカット

Visual Studio のパワー ユーザーの多くは、生産性を上げるため、キーボード ショートカットを使用しています。便利なショートカットをまとめたガイドは、こちら (英語) からダウンロードできます。今回ご紹介した多くの新機能にも対応しています。

フィードバックのお願い

Visual Studio 2017 を日々の開発作業の生産性向上に役立てていただけると幸いです。すべての新機能について詳しく知りたい場合は、visualstudio.com の概要ページリリース ノートをご覧ください。

また、Visual Studio 2017 Release Candidate を今すぐお試しいただき、新機能に関するフィードバックをお寄せください。問題などがありましたら、IDE またはインストーラーの右上隅にある [Report a Problem] (英語) ツールよりご報告ください。フィードバックへの対応は、開発者コミュニティのポータル (英語) でご確認いただけます。製品に関する提案は UserVoice (英語) までお寄せください。よろしくお願いいたします。

Mark Wilson-Thomas (Visual Studio IDE チーム、シニア プログラム マネージャー)@MarkPavWTMark は Visual Studio IDE チームのプログラム マネージャーとして、およそ 10 年にわたって開発者向けツールを作成してきました。現在は、Visual Studio エディターを担当しています。それ以前は、Office、SQL、WPF、Silverlight 向けのツールに取り組んでいました。