アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Visual Studio 2008快適活用ガイド 第1回
 
@IT Special

 

PR

@IT Special 記事企画
Visual Studio 2008 快適活用ガイド
― 開発生産性を高め、技術の幅を広める開発環境の活用方法 ―

第1回 開発効率が高まるデバッグ・テクニック

 日々のソフトウェア開発業務の中で、あなたはどのくらいの時間をデバッグ作業に費やしているだろうか。1日の作業時間の内訳を計測してみると、意外に「プログラム・コードを書いている時間と同じくらい、もしくはそれ以上に長い」という方も少なくないのではないだろうか。

 もちろん、安直にデバッグに依存するのではなく、前段階のコード作成を慎重に行うことが基本である。しかし実際にコードを実行しながら、必要なところで実行を停止し(ブレークし)、変数の内容などを確認できるデバッグは、効率よく、かつ確実にコードの正当性を確認するために不可欠の作業だ。デバッグ作業は、開発作業中の随所で必要になる。なかには「デバッグに費やす時間は、開発作業全体の50%に及ぶ」と主張するプログラマもいるようだが、あながち、過ぎた誇張表現でもないだろう。

 だとすれば、逆にデバッグ作業を効率化できれば、開発期間を劇的に短縮できるのではないか。開発作業で大きなウェイトを占めるデバッグ作業の効率化は、開発生産性を飛躍的に高める大きなポイントになる。

 デバッグ作業の効率は、統合開発環境の入力生産性や使い勝手に大きく左右される。テキスト・エディタを使ったシンプルなプログラミングが好きなプログラマもいるだろうが、そうしたプログラマでさえ、ことデバッグ作業については、統合開発環境の支援を望むはずだ。かつては、コマンドラインで操作するデバッガを使ったり、コード中にAssert文(=警告メッセージの表示)などを挿入して、実行の途中経過を確認したりと、開発環境の支援をほとんど期待できない不幸な時代もあったが、これらは遠い昔のことだ。デバッグ作業を効率化するには、やはりVisual Studio 2008(以降、VS 2008)などの統合開発環境は欠かせない。

 もちろん大半のデベロッパーは、日ごろからVS 2008などの統合開発環境を使ってデバッグを行っていると思う。だが、本当にVS 2008のデバッグ機能を使いこなして効率的なデバッグ作業が実現できているだろうか。

 VS 2008の機能を駆使すれば、従来からさらにデバッグ作業を効率化できる可能性がある。今回は、役立つにもかかわらず、あまり存在を知られていないVS 2008のデバッグ機能を2つ紹介しよう。

 ちなみに、一度でもVS 2008に触れたことがあれば、すでにお気付きだろうが、以前のVisual Studio 2005と比べ、開発環境自体のパフォーマンスが飛躍的に向上している。IDEの起動スピードだけとっても圧倒的に速くなっている。開発環境の性能は、それが毎日積み重なっていけば、最終的に開発生産性を高める結果につながるだろう。この「大幅な性能向上」という1点だけでも、VS 2008にバージョンアップする価値があると主張するプログラマも少なくないようだ。VS 2008では、以前のVS 2005と同じ.NET Framework 2.0ベースの開発も可能なので、Visual Studio 2005で開発しているプロジェクトであれば、シームレスにVS 2008に移行できるのも魅力だ。現在VS 2005を利用しているなら、少なくとも互換性や機能、性能面でVS 2008に乗り換えない積極的な理由はない。

 それではVS 2008デバッグ機能の解説に入ろう(ちなみに以下の2つの機能はVisual Studio 2005から存在する機能である)。

 

  便利機能1:長いコードの一部をさっとデバッグするには?  

 

 テキストボックスとボタンしか貼り付けられていないようなデモ用のアプリケーションならともかく、ある程度の規模のシステムともなれば、「ある1つの機能(メソッド)をデバッグで検証したい」と思っても、「その機能に到達するまでに、何度もボタンを押したり、何らかのデータを入力したりしなければならない」ということはよくある。たった1つのメソッドを検証したいだけなのに、これでは手間がかかりすぎる。

 こんなときには、「オブジェクト・テスト・ベンチ機能」が便利だ。この機能は特定のクラスの特定のメソッドを即座にデバッグするためのものだ。メソッドを書き終えた時点で(そのコードがコンパイルで問題が出ない状態であれば)、IDEの[クラス ビュー]から実行できる。

 まずメニュー・バーから[表示]−[クラス ビュー]を実行して[クラス ビュー]ウィンドウを表示する。そして、次の画面のように、デバッグしたいクラスを右クリックして、表示されるコンテキスト・メニューから[インスタンスの作成]−[<クラスのコンストラクタ名>](この例では[SampleClass (int)])を選択する。

[クラス ビュー]ウィンドウにおけるクラス・インスタンスの作成

 すると、次のような[インスタンスの作成]ダイアログが表示される。ここでは、クラスのインスタンスの名前(この例では「sampleClass1」)と、クラスのコンストラクタのパラメータの値(この例では「5」)を指定する。インスタンスの名前は自由に決めてよい。

[インスタンスの作成]ダイアログにおけるインスタンス名とパラメータ値の指定
コンテキスト・メニューから[インスタンスの作成]−[<クラスのコンストラクタ名>]を選択すると表示されるダイアログ。
  クラス・インスタンスの名前(この例では「sampleClass1」)を指定する。
  クラス・コンストラクタのパラメータの値(この例では「5」)を指定する。

 [インスタンスの作成]ダイアログの[OK]ボタンをクリックして、クラスのインスタンスの作成が完了すると、[オブジェクト テスト ベンチ]ウィンドウが開き、クラス・インスタンスを示すボックスが表示される。そこで次の画面のように、そのボックスを右クリックしてコンテキスト・メニューを表示し、そこから[メソッドの呼び出し]−[<メソッド名>](この例では「Calculate (int)」)を選択する。

[オブジェクト テスト ベンチ]ウィンドウにおけるメソッドの呼び出し

 これにより、次のような[メソッドの呼び出し]ダイアログが表示される。ここでは、メソッドのパラメータの値(この例では「2」)を指定する。

[メソッドの呼び出し]ダイアログにおけるパラメータ値の指定
コンテキスト・メニューから[メソッドの呼び出し]−[<メソッド名>]を選択すると表示されるダイアログ。
  メソッド・パラメータの値(この例では「2」)を指定する。

 [メソッドの呼び出し]ダイアログの[OK]ボタンをクリックして、メソッドの呼び出しが実行されると、次の[メソッド呼び出しの結果]ダイアログが表示される。

[メソッド呼び出しの結果]ダイアログによるメソッドの戻り値の表示
[戻り値]の欄に、メソッドの実行結果が表示される。[OK]ボタンを押すとダイアログは閉じられ、処理は終了する。[再試行]ボタンを押すと、[メソッドの呼び出し]ダイアログに戻る。[戻り値の保存]にチェックを入れて、[OK]ボタンや[再試行]ボタンを押すと、その実行結果の値が[オブジェクト テスト ベンチ]ウィンドウ内でインスタンスとして表示される。

 このダイアログを見ると分かるように、メソッドの実行結果は「2005」となる。このようにして、プログラム全体を実行することなく、特定のクラスの特定のメソッドのみをデバッグすることができる。

 なお、[メソッド呼び出しの結果]ダイアログの[戻り値の保存]にチェックを入れて[OK]ボタンや[再試行]ボタンを押せば、次の画面のように、メソッドの戻り値の値を[オブジェクト テスト ベンチ]ウィンドウ内でインスタンスとして表示できる。このインスタンスは前述の[メソッドの呼び出し]ダイアログでのパラメータの値として使用したり、このインスタンスからさらにメソッドを呼び出したりできる。

[オブジェクト テスト ベンチ]ウィンドウにおけるメソッド戻り値のインスタンス表示

 以上で説明したオブジェクト・テスト・ベンチ機能では、もちろん、デバッグの実行を指定した行で停止させる「ブレークポイントの設定」や、変数の内容を参照できる[ウォッチ]/[ローカル]ウィンドウなど、すべてのデバッグ機能が利用可能である。ソフトウェアの規模が大きくなればなるほど、オブジェクト・テスト・ベンチ機能は役立つのではないだろうか。

 

  便利機能2:調べたい場所にピンポイントでデバッグをブレークさせるには?  

 

 先ほどは、最短経路で目的の機能(メソッド)をデバッグする方法を紹介したが、例えばそのメソッド内部をデバッグしていく際に、1000回ループするfor文のコードがあり、その999回目のときの値を調べたいときに、手動で999回ステップ実行したり、999回ブレークしたりするのはあまりに時間の無駄である。

 このようなときには、ブレークポイントの条件指定が便利だ。この機能は、特定の条件のときになって初めてデバッグをブレーク(=停止)させるためのものだ。先ほどの例なら999回になって初めてデバッグをブレークさせることができる。この条件は、VS 2008のコード・エディタから指定する。

 まずコード・エディタの左端にある余白部分をクリックして目的の行でブレークポイントを設定する。ブレークポイントが設定された行では赤丸 が表示される。その赤丸 を次の画面のように右クリックして、表示されるコンテキスト・メニューから[条件]を選択する。

コード・エディタにおけるブレークポイントの条件の指定

 すると、次のような[ブレークポイントの条件]ダイアログが表示される。ここでは、ブレークする条件(この例では「i==999」)を指定し、さらにその条件が真になったときにデバッグをブレークさせるための[true の場合]オプションを選択する。

 ちなみに、条件に指定できる「==」は左右の値が等価であるかをチェックする演算子で、ほかにも「>」「<」「>=」「<=」などの演算子が利用できる。複数の条件を指定したいときには、「|」演算子で条件を区切ればよい。

[ブレークポイントの条件]ダイアログにおける条件の指定
ブレークポイントを示す赤丸 を右クリックすると表示されるコンテキスト・メニューから[条件]を選択したときに表示されるダイアログ。当然ながら[条件]にはチェックを入れておく必要がある。
  [条件]を指定する。
  [条件]が[true の場合]にデバッグがブレークするオプション。
  [条件]欄で指定された変数の値が[変更された場合]に、デバッグがブレークするオプション。

 [ブレークポイントの条件]ダイアログの[OK]ボタンをクリックしてダイアログを閉じると、コード・エディタ上の赤丸の中に白い「+」 が表示される。これでブレークポイントの条件指定は完了だ。

 後は(先ほどのオブジェクト・テスト・ベンチ機能などを使って)実際にデバッグを実行してみる。すると次の画面のように、指定した条件でデバッグがブレークするだろう。

指定した条件でデバッグがブレークしたところ

 デバッグ・ブレークポイントの条件指定をうまく活用すれば、無駄なデバッグ作業を省けるので、時間の節約になる。

 

  そのほかの便利なデバッグ機能について  

 

 以上、デバッグ作業で非常に役立つにもかかわらず、あまり知られていないデバッグ機能を紹介した。紙面の都合で少ししか紹介できなかったが、このほかにもさまざまな効率性を高めるデバッグ機能がVS 2008には搭載されている。

 例えばJavaScriptのデバッグ機能は、前バージョンの2005と比べ格段にパワーアップしており、VS 2008をJavaScriptコードの開発&デバッグ環境として使うだけでも、開発生産性に対する大きな効果が期待できる(参考:「特集:Visual Studio 2008&ASP.NET 3.5」)。

 またVS 2008(無償版であるExpress Editionsは除く)では、.NET Framework内部のコードもデバッグ実行できるようになっている。これまで「.NET Framework内部の動作内容が分かれば、バグの修正の助けになるのに……」と考えたことのあるデベロッパーは少なくないだろうが、この機能がその要望に答えてくれるだろう。うまく利用すれば、バグの原因究明などの作業スピードが早まるのが期待できる(参考:「Visual Studio 2008で見る.NET Frameworkのソースコード」。なお、パフォーマンスを改善するQFE:修正パッチが提供されているが、そのQFEの日本語版は、執筆時点ではまだ提供されていない)。

 ぜひVS 2008のこれらの機能を上手に活用してデバッグ作業を可能な限り短縮し、ソフトウェア開発の効率性を高めてほしい。




「本物の実力を備えた、真のプロフェッショナル」を目指す意欲的なデベロッパーに向け、開発環境「Visual Studio 2008」のさまざまな活用方法を紹介。
インデックス
第2回 チーム開発を円滑に進めて作業効率を高める
第3回 利用者に優しいユーザー・インターフェイス
 

提供:マイクロソフト株式会社
企画:アイティメディア 営業局
制作:デジタル・アドバンテージ
掲載内容有効期限:2008年5月31日
 



Visual Studio 2008 情報
Visual Studio 2008 情報
開発ツールの最新版、Visual Studio 2008 に関するページです。
Visual Studio Team System 2008 情報
より高品質なソフトウェア開発を支援する Visual Studio Team System の最新版に関するページです。
Visual Studio 2008 プレスリリース
Visual Studio 2008 開発完了についてのプレスリリースです。
Visual Studio 2008 基本情報
Visual Studio 2008 の基本的な情報をまとめたページです。
Visual Studio 2008 の入手方法
Visual Studio 2008 の入手方法についてまとめたページです。

Visual Studio 2008 オンラインショップ情報
Visual Studio 2008 をご購入いただけるオンラインショップ、および各オンラインショップで行っているキャンペーン情報を紹介します。

Visual Studio 2008 関連情報
.NET Framework Developer Center
.NET Framework に関する技術情報や入手方法はこちらから。
MSDN サブスクリプション
Windows 環境におけるソフトウェア開発を包括的にサポートするサービスに関するページです。
Expression Studio
様々なアプリケーションにおいて、リッチなユーザエクスペリエンスを実現するためのツールに関するページです。



 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ