特集:Visual Studio 2010(ベータ2)で効率的な開発を!

現場開発者から見たVisual Studio 2010

WINGSプロジェクト りばてぃ(著) 山田 祥寛(監修)
2010/01/19
Page1 Page2 Page3

開発者へのお奨め機能

 ここでは一部、VS 2008からあるものも含まれるが、開発&デバッグ作業で便利だと思う機能をいくつか紹介していこう。

新しいIntelliSense

 IntelliSense(インテリセンス)はいまやIDEにとってなくてはならない機能となっている。登場当初はその存在だけで重宝されたものだが、より良い機能へと要望が尽きない機能でもあるだろう。VB用の環境では[よく使われる機能]というタブが用意されて一部のメンバがフィルタリングされるのが良い例だろう。

 VS 2010では少しおもむきを変えた「あいまい検索」とでも呼べるような機能が備わる予定である。言葉では分かりにくいので図6を見ていただきたい。

図6 IntelliSenseのあいまい検索

 図はIntelliSenseでrepShoppingCartという名前のRepeaterコントロールに対するメンバ候補一覧を表示しているところである。「id」という入力に対して、「id」を“含む”メンバ候補一覧が表示されていることを確認していただけるだろうか。これがVS 2010の新しいIntelliSense機能だ。

 従来のIntelliSenseは自動補完機能としては非常に便利だったが、メンバを検索するという点では少し不便であった。メンバの先頭の文字が分からなければ、効率よく補完対象を見付け出すことができなかったからだ。“あたり”を付けて入力してみたり、上から順番に探してみたりといったことをした諸氏も多いと思う。

 VS 2010では、キーワードさえ分かれば、それが先頭から始まる文字でなくても候補一覧に表示される。これなら従来よりも、より速く目的のメンバを見付け出し、補完機能を使っていけるはずだ。

実行履歴のトレース

 VSで開発作業を行う際、そのほとんどはデバッグに費やされているのではないだろうか。デバッグして見付かった問題の修正を含めて考えると、ますますそうなるだろう。

 よくあるパターンでは、何かしらのイベント・ハンドラの実行を確認する場合に、イベント・ハンドラの先頭付近にブレークポイントを設定し、開始時点での状態を確認する。次にステップ実行を行い、変数などの状態の変化を確認していく。変更前の状態に問題があったことを疑う場合、その確証を得るために再度、始めから実行を開始する。このような感じではないだろうか。

 このような手間を省くために、特定の条件はあるものの、さまざまなイベントに基づいて、そのイベント発生時点の変数の状態や呼び出し履歴などを保存しておくのがVS 2010(Ultimate Editionのみ)に搭載されるIntelliTraceという機能だ。次の図7は実際にデバッグ実行中のIntelliTraceの画面だ。

図7 IntelliTrace情報の参照

 右側に[IntelliTrace]ウィンドウがあり、保存されたイベントの一覧が表示されている。ここではbutton1がクリックされたときや、例外が発生したときなどに保存されていることが分かる。それぞれのイベントを選択すると、そのときのコードの場所や変数の状態、呼び出し履歴などを確認できる。これで過去の状態にさかのぼって内容を確認することができ、非常に便利である。

ブレークポイントに条件設定

 プログラムのデバッグを行う際、ブレークポイントを利用して特定の行まで実行したり、ステップ実行したりといった作業は極めて頻度の多い作業ではないだろうか。このブレークポイントも、ちょっとした使い方を覚えるだけで特にループ文内に設定する際に劇的な改善を行うことができる。この機能はずいぶん以前からあるものであるが、筆者の回りではこれを知らずに苦労していることも見受けられるため、あえて紹介しておこう。

 具体的には、通常どおりブレークポイントを設定したのち、ブレークポイント部分でコンテキスト・メニューを表示する。ここで図8のように[条件]を選択しよう。

図8 ブレークポイントの条件設定

 すると、ブレークポイントの条件ダイアログが表示される。ここで[条件]のテキストボックス内に条件式(if文の中身のような式)を記述し、その条件を満たす場合にブレイクする場合は[true の場合]を、条件の値から変更された場合にブレイクする場合は[変更された場合]に設定しておこう。

図9 条件式の設定

 図9の例では、textBox1.Textの値が「aaa」になったときにブレイクするような設定にしている。もちろん&&演算子(Visual BasicではAndAlso)や、||演算子(Visual BasicではOrElse)で条件式を連結させることもでき、複雑なブレイク条件にすることもできる。ほかにも何回通過したとき(ヒット・カウント)や特定のコンピュータやプロセスの場合にのみ(フィルタ)といった設定もできるので、自分なりに設定してみてほしい。

デバッグしながらコード修正

 プログラムのデバッグ作業は、デバッグして問題点を見付け、その個所を修正してビルドし、またデバッグを行う。ほとんどがこれの繰り返しだ。しかし、デバッグ個所にたどり着くまでにはそれ相応の時間を要し、これがまた面倒でもある。

 以前からある機能だが、この作業を劇的に改善するには、エディット・コンティニューという機能が利用できる。VB6開発の経験者にはおなじみの機能だが、VSの利用を.NETの開発から始めている場合にはぜひ覚えてほしい。

 エディット・コンティニューはほとんどの場合、ブレークポイントなどで実行が中断している際に、直接コードを編集し、実行ポイントを少し手前の行に移動させることで行うことができる。

図10 実行ポイントの移動

 図では少し分かりにくいが、黄色背景で判定しているのが現在実行中の行であり、左側の黄色の「⇒」矢印をマウスでドラッグすることで実行ポイントを移動できる。移動後のポイントから再度ステップ実行を行えば、修正後のプログラムが実行されて結果を確認できるといった具合だ。

 先に「ほとんどの場合」としたが、Webアプリケーション・プロジェクトの場合にはあらかじめプロジェクトのプロパティでエディット・コンティニューを利用するための設定が必要だ。具体的にはプロジェクトのプロパティで[Web]タブを開き、[サーバー]カテゴリ内の[エディット コンティニュを有効にする]にチェックを付けておく必要がある。

図11 Webアプリケーション・プロジェクトのエディット・コンティニューの設定

 なお、Releaseビルドなどでビルド時にコードの最適化を行っている場合や、Webアプリケーション・プロジェクトでVisual Studio開発サーバではなくIISでホストしている場合、またVS 2010ではIntelliTraceで情報取得モードを「IntelliTraceイベントと呼び出し情報」にしている場合には、エディット・コンティニューが利用できないので気を付けよう。

複数プロジェクトの同時起動

 俗にいうスマート・クライアント・アプリケーションを開発する場合など、一度に複数のアプリケーションを起動して同時にデバッグ実行したいと思う場合がある。

 通常は別々にアプリケーションを起動し、後からそのプロセスにアタッチするという手順を踏んでいることも多いのではないだろうか。しかし、VSにはもともとプロジェクトのスタートアップを決定するための仕組みが用意されている。

 この設定は、ソリューションのプロパティから行える。プロパティを開き、左側の[共通プロパティ]−[スタートアップ プロジェクト]を選択し、右側のラジオボタンで[マルチ スタートアップ プロジェクト]を選択しよう。

図12 プロジェクトのスタートアップの設定

 続いて、プロジェクトの一覧から起動したいプロジェクトを選び、アクションとして[開始]または[デバッグなしで開始]を選択する。省略されているが、開始の場合はデバッグ実行ということになる。ここで複数のプロジェクトを選択しておけばデバッグ実行時に複数アプリケーションを同時に起動し、VSによるプロセスへのアタッチも自動的に行われる。細かい設定ではあるが、デバッグ時の面倒を改善するには効果を発揮してくれるはずだ。

 なお、[ソリューション エクスプローラー]でプロジェクトのコンテキスト・メニューから[スタートアップ プロジェクトに設定]を選んでしまうと、この設定は解除(正確にはシングル・スタートアップ・プロジェクトに設定)されるので注意が必要だ。

 本稿では、VSに用意されている便利な機能のすべてを紹介できているわけではないが、自分なりの使い方をしようと思うとあんな機能がほしい、このかゆいところに手が届かない、ということもあるのではないだろうか。VSには以前からもVS自身を拡張するためのいくつかの機能が用意されており、VS 2010ではそれらに加えて新しい方法も提供される予定となっている。次のページではその方法を紹介する。


 INDEX
  特集:Visual Studio 2010(ベータ2)で効率的な開発を! 
  現場開発者から見たVisual Studio 2010
    1..NET 2.0/3.0./3.5/4とVisual Studio 2010の関係
  2.開発者へお勧めのVisual Studio 2010の機能
    3.なければ作ろう、Visual Studio 2010の拡張機能


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH