Visual Basic 2005 ここが便利!IDE編

第8回 複雑なオブジェクトもマウスを置くだけで中身が見える! デバッガのデータヒント

株式会社ピーデー 川俣 晶
2005/09/14

Visual Studio 2005や.NET Framework 2.0の登場とともに、プログラミング言語であるVisual Basic .NETも「Visual Basic 2005」へとバージョン・アップする。この新しいVisual Basicには、言語仕様の面でも統合開発環境の面でも、プログラミングを楽にする新機能が満載だ。本連載ではその中でも特に注目すべき便利な機能を1つずつピックアップしながら紹介していく。

Back Issue
1
“My”はクラスの海からVBプログラマを救う!?
2 型指定されたコレクションを実現するジェネリック
3 自動生成コードを分離、ソースをすっきりパーシャル・クラス
4 Background Workerで夢のマルチスレッドがついに!
5 Usingステートメントで簡単、確実にファイルをクローズ
6 演算子のオーバーロードで独自の型も‘+’で足し算!

7

どう書くんだっけ? を「コード・スニペット」で一発挿入!

 デバッグ中にプログラムの実行を一時停止し、変数の値などを調べることはよくある。開発環境には、それを支援するためのさまざまな機能が追加されてきた。ローカル変数を一覧表示する「ローカル変数の表示機能」、指定した式の値を常に表示する「ウォッチ機能」、特定の式の値を即座に表示する「クイックウォッチ機能」などである。

データヒント機能による変数の確認

 これらの機能の中で、特によく使われる機能の1つがクイックウォッチではないかと思う。特定の分類に関係なく、いくつもの変数の現在の値を順次確認していくには便利な機能だからである。しかし、クイックウォッチを使う機会は、確実に減っている。なぜなら、デバッグ中に変数の上にマウスポインタを置くだけで、変数の値が表示される「データヒント機能」(英語版のVisual Studioでは「DataTips」と呼ばれる)が利用可能になったからだ。

 実際に、これをVisual Studio .NET 2003で試してみよう。特に意味のある機能を持ったプログラムではないが、簡単なサンプル・コードを作成してブレークポイントで止めてみた。そして、整数型(Integer)の変数sampleIntegerの上にマウスポインタを置いてみよう。

データヒントによる値の表示(Visual Studio .NET 2003)
プログラムの実行を一時停止させ、マウスポインタを変数上に置くだけで変数の内容をツールチップにより確認できる。

 この画面ではマウスポインタがキャプチャされていないのでやや分かりにくいが、このとおり「sampleInteger = 123」というツールチップが表示され、容易に変数の値を確認することができた。それに要した手間はマウスポインタの移動だけで、ボタン操作は必要とされていない。とても手軽で便利である。いくつもの変数の値を順次確認していく場合には、この手軽さはありがたい。

 しかし、この便利な機能も、整数などの単純型であれば機能するのだが複雑な型ではうまく機能しない。例えば、Sample1クラスのインスタンスを持つ変数sampleObjectの上にマウスポインタを置いても、型のフルネームが表示されるだけで、そのメンバの値は分からない。

データヒントで変数の内容が確認できない例(Visual Studio .NET 2003)
複雑な型の変数に対しては、その型のフルネームが表示されるだけで、メンバの値までは分からない。

強化されたVisual Basic 2005のデータヒント

 しかし、この制約はVisual Basic 2005で過去のものになった。同じプログラムをVisual Basic 2005 Express Beta 2で試した例を紹介しよう。

 整数型の変数の値が、変数名の上にマウスポインタを乗せると分かるのはもちろん……。

データヒントによる値の表示(Visual Basic 2005)
Visual Basic 2005でも、当然ながら整数型などの単純な型に対してはその値が表示される。

 以下のように、オブジェクトも内容の値が分かるようになっている。

オブジェクトのメンバの値まで見られるVisual Basic 2005のデータヒント
オブジェクトの内容が階層構造として表示され、階層をたどっていくことにより複雑な型でもその内容を確認できる。

 オブジェクトの中にオブジェクトがあるような階層構造がある場合、+記号の上にマウスポインタを乗せると下の階層がさらに表示される仕様になっている。

 この場合、sampleObjectの中には変数iと、オブジェクトsが存在し、オブジェクトsはさらに文字列の配列nameと、整数の配列valueを持っている。マウスポインタを、sampleObject、s、nameの順に移動させた結果として、配列の内容まですべて見えていることに注目しよう。まさに、クイックウォッチを不要とするような素晴らしい機能性である。

 そして、すべてを一気に表示するのではなく、指定した階層だけを展開して表示する機能性にも注目しよう。これにより、巨大で複雑なオブジェクトの内容を参照する場合でも、画面が値で埋め尽くされることはなく、必要な値だけをチェックすることができるのである。

 Visual StudioあるいはVisual Basicのバージョン・アップといえば、とかく大きな機能の拡張ばかりが取り上げられるが、このような日常の使い勝手に直結する機能の強化も怠っていないところが隠れたポイントといえるだろう。End of Article

 
インデックス・ページヘ  「Visual Basic 2005 ここが便利!」


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