![]() |
Visual Basic 2005 ここが便利!第1回 “My”はクラスの海からVBプログラマを救う!?株式会社ピーデー 川俣 晶2005/02/26 |
Page1
Page2
|
|
クラスの海でおぼれるな!
筆者は知らなかったのだが、Visual Basic 6.0プログラマがVisual Basic .NETの世界にステップアップする際の障害の1つは、.NET Frameworkが提供する膨大なクラスの中から必要な機能を探し出せないことなのだそうだ。
その気持ちは、よく分かる。これは、まったくVBプログラマ固有の問題ではない。かつて、.NET Frameworkというものが生まれたころ、筆者はC#をプログラミング言語として使いながら同じ問題に直面した。その結果、膨大なクラスやメソッドの海で何度もおぼれかけ、ずいぶん無駄な回り道や恥ずかしい無知もさらしたものである。それを考えれば、VBプログラマが、同じ理由でVisual Basic .NETに尻込みしてしまうというのもよく分かることである。
しかし、これは避けて通ればよいという問題でもない。クラスが多いということは、裏を返せば、それだけ標準で提供される機能が多いということである。それらを使いこなせれば、より短い時間で、より高度なプログラムを開発できる。それは、開発者にとっては大きなメリットとして認識されるべきものであり、それだからこそ、クラス・ライブラリは大きく成長を続けるものだともいえる。
つまり、こういうことだ。クラスが多いことは開発者に大きな力を与えるが、どこに何があるか分からなければ、クラスの海に入っていってもおぼれてしまうだけだと。これが(この場で筆者が命名したものではあるが)「クラスの海」問題である。
では、クラスの海で溺死しないためには、どうすればよいのだろうか。
かつての筆者のお勧めは、用事がなくてもクラス・ライブラリのリファレンス・マニュアルを大ざっぱに眺め、どのあたりの名前空間の、どのあたりのクラスに、どのような機能(プロパティやメソッド)があるのかという「土地勘」を養っておく、という対策であった。しかし、これは最先端を走るアクティブなC#プログラマには「お勧め」たり得ても、石橋をたたいてなお渡らないような慎重なVBプログラマへの「お勧め」としては十分ではない。クラスの海を前にたじろいでいるVBプログラマであれば、大ざっぱに眺めることすら避けたい選択だろう。
では、ほかに何かクラスの海でおぼれないためのうまい対策はないだろうか。Visual Basic 2005で導入される新機能の1つ、“My”機能は、まさにそれだといえるだろう。
よく使う機能へのショートカットを提供する“My”
Visual Basic 2005で導入される“My”機能は、主に2つの機能を持っている。そのうちの1つは、クラス・ライブラリの中でよく使う機能へのショートカットを提供することである。
「クラスの海」問題の相反する2つの主張は、実は真っ向から衝突しているわけではない。クラスが多い方が良いということと、クラスが多いとおぼれかねないという危ぐの回避は、ある条件を付け加えるとうまく両立可能なのである。
付け加える条件とは、「クラスの使用頻度は同じではない」ということである。大半のプログラマにとって、大半のクラスは、一生のうち1回も使わないで終わる、といっても過言ではないだろう。それでもクラスが増えるのは、それを必要としている誰かがいるからである。しかし、それは恐らく「あなた」ではない。ならば答えは簡単である。そのようなクラスのことなど、最初から考えの外に置けばよいのである。そういうクラスは、本当に必要になってからあらためて探せばよい。
では、「あなた」を含め、多くのプログラマが利用する頻度の高いクラスや機能だけを集中的に扱う機能があるのだろうか。それが、Visual Basic 2005の“My”機能である。“My”機能とは、クラス・ライブラリの中でよく使う機能へのショートカットである。ショートカットとは、いい換えれば、より短く分かりやすい別名である。
さっそく実例を見てみよう。例えば、カレント・ディレクトリを.NET Frameworkクラス・ライブラリを用いて取得する場合は、
System.IO.Directory.GetCurrentDirectory()
というメソッドを呼び出す。しかし、このメソッド名を一発で即座に調べ出すのはけっこう骨が折れる。まず、System.IO名前空間がファイルに関する機能を扱っていることを知らなければならない。さらに、この名前空間には、ディレクトリに関するクラスが複数あり、Directoryクラスが目的のメソッドを持っていることを確認するには手間取るかもしれない。もちろん、VBプログラマなら「なぜCurDir関数を使わないの?」と思うかもしれないが、それはここで解説する趣旨から外れるので、取りあえず忘れておくことにしよう。
さて、“My”機能を用いると、これは
My.Application.CurrentDirectory
と(プロパティとして)記述できる。System.IO.Directory.GetCurrentDirectory()が、短く分かりやすくなったわけである。
以下に、この2つを使ってみたサンプル・コードを示す。
|
|
Visual Basic 2005でカレント・ディレクトリを表示するサンプル・コード |
IntelliSenseで使う“My”機能
サンプル・コード上で見比べると両者は大差ないように見えるかもしれない。しかし、そうではない。Visual StudioのIntelliSense(インテリセンス)を使って記述すると、両者は比較にならないほどの使い勝手の差をもたらす。
IntelliSenseでMy.Application.CurrentDirectoryと記述する場合、実は、その正確な名前を知っている必要はない。まず、“My”は常に同じキーワードが使われるので、悩む対象にはならない。Myと打ってからピリオドを打つと、それに続く候補が出てくるが、Application、Computer、Userなど、わずか数種類である。カレント・ディレクトリは、実行しているアプリケーション固有の状態だということさえ推測できれば、Applicationというキーワードを選択できる。さらにピリオドを打つと、10種類程度の候補が出てきて、その中にCurrentDirectoryという名前がある。候補はさほど多くないので、CurrentDirectoryという名前をすぐに発見して選択できるだろう。資料を調べつつSystem.IO.Directory.GetCurrentDirectory()と入力することと比較すれば、けた違いの短時間で入力を完了することができる。
このように、“My”機能は、単によく使う機能により短い名前を与えるだけでなく、よく使う機能に候補を絞り込むことで、IntelliSenseによって目的の機能をいともたやすく発見できるという効能も持つ、非常に利便性の高い機能である。
“My”からアクセスできる代表的なプロパティやオブジェクトを以下の図に示しておく。
![]() |
“My”からアクセスできるプロパティやオブジェクト(抜粋) |
より詳細な一覧は、MSDNで公開されているMy Referenceで参照できる。ただしこれはVisual Basic 2005のベータ版についてのもので、製品版では変更される可能性がある。 |
![]() |
INDEX | ||
Visual Basic 2005 ここが便利! | ||
第1回 “My”はクラスの海からVBプログラマを救う!? | ||
![]() |
1.クラスの海でおぼれるな! | |
2.INIファイル要らず、“My”機能の超便利! | ||
![]() |
![]() |
「Visual Basic 2005 ここが便利!」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |
- - PR -