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