生産性を飛躍的に向上させるVisual BasicとVisual C#の新機能Microsoft Tech・ED 2005 Yokohama

Tech・Ed2005では、Visual Basic 2005およびVisual C# 2005の新しい言語仕様について、いくつかのセッションで解説が行われている。ここでは、そこから主な変更点をピックアップして見ていこう。

» 2005年08月04日 00時44分 公開
[下村恭(ハンズシステム),ITmedia]

 今年のTech・Edで大きく取り上げられているトピックの1つは、やはりVisual Studio 2005(VS 2005)だ。VS 2005はその対象ユーザーを、システム設計を行うアーキテクトから実装を行う開発者、さらに運用を行うITプロまで広げ、「チーム」として使用するツールと変化していることはすでに知られている。もちろん、.NET Framework 2.0に本格対応した開発ツールでもある。

 基調講演に続いて始まった2日目のセッションでは、VS 2005で追加された新機能についての解説が行われた。ここでは、おもにVisual Basic 2005とVisual C# 2005の変更点について、.NET Framework 2.0対応の部分、それに開発者にとって有益な点について見てみたい。

.NET Framework 2.0に対応

 .NET Framework 2.0対応とは、つまり.NET言語としての変更点であり、CLRがバージョンアップされることに伴う変更とも言える。そのため、影響はVBとVC#双方に及ぶこととなる。例えば、ジェネリック、パーシャルといったものが該当する。

 ジェネリックとは、C++で言うところのテンプレートによく似た機能だ。クラスを定義する時点ではデータの型を指定せずに、クラスを利用する時点で型を指定できる。おもに、リスト(制御構造を伴うインスタンスの集合)や配列などを扱う際に使われる。開発者がジェネリックを使ってクラスを定義することは稀だが、新しくなった.NETクラスライブラリには、ジェネリックを使用したクラスがあるので、その使い方は知っておく必要があるだろう。

ジェネリックとは、おもにオブジェクトの集合を扱うといった場合に利用するクラスを定義する際、値の型の指定そのものを引数として扱えるようにする仕組みのこと。コンパイル時に型チェックできるだけでなく、キャストやボクシングなどのオーバーヘッドも解消される

 またパーシャルとは、クラス定義を複数のファイルに分割できる仕様。この恩恵を最も受けられるのが、デザイナーが自動作成したGUIなどの部分と、開発者がコーディングした部分が分離できるという点だろう。

効率と品質を高めるための新機能

 このほかのVBとVC#共通の変更点としては、コーディング時に有用な機能として、Officeなどでおなじみのスマートタグを使ったエラーの詳細表示機能や、使用頻度の高いコードをひとまとまりとして再利用できるコードスニペット、一旦コーディングした後での変数の名前の変更などを一括一貫して行うリファクタリングなどがある。特にコードスニペットは、何度も同じようなコードを書かなければならないという生産性の問題に貢献するだけでなく、いわゆる「枯れた」コードを再利用するといった点でコードの品質向上にも寄与する。

データベースアクセスなどのように使い回すコードは、コードスニペットというコードの塊で用意されている。その数は500以上が登録されている。もちろん、独自のコードをスニペットとして登録することも、チーム内で共有することも可能だ

 またリファクタリング機能は、ソースコード上に散らばった多くの変数名などを手動で書き換えるという手間を省くだけでなく、修正などのうっかりミスを減らし、コードの品質向上にも貢献する。リファクタリング機能は、VBとVC#で差があり、VB 2005のデフォルト状態ではできることが限られている。セッションではマイクロソフトのパートナーが作成したフリーのリファクタリングツールであるRefactor! for Visual Basic 2005 Beta 2が紹介されデモが行われた。これを利用することで、VBでもVC#と同様のリファクタリングが可能となる。

すでにある程度記述し終わった状態で、インスタンス名やメソッド名を変更したいといったことはよくある。このような時、ソースコード上に散らばってしまった名前を一括して修正できると便利だ。この機能を実現するのがリファクタリング機能である

 デバッグ時の機能として、デバッグ実行中にコードを編集してそのまま実行を続けるエディットコンティニュー、各種データを分かりやすく表示するビジュアライザ、テストコードの(半)自動生成などの機能がある。また、文法上は問題がなくコンパイルも通るが、実行すると問題がありそうなコードについて、コーディング中に指摘してくれるといった機能も追加されている。特に、エディットコンティニューは、VB 6.0にあってVB 2002/2003でなくなっていた機能であるため、VB6ユーザーにとっては待たれていた機能だろう。

 それぞれの言語特有の変更点もある。例えばVC#では、デリゲートインスタンスの生成時に埋め込みでメソッドを記述できる匿名メソッドや、Nullを代入できる値型のNullable Typeなどだ。

 VB特有の変更点としてはMyオブジェクトの追加が特徴的だ。Myにはいくつかの下層クラスがあり、それぞれのクラスのプロパティやメソッドなどを利用することで、VB 2002/2003で複雑だった機能の実現を簡単に実装できる。例えばアプリケーションのパスを取得するとか、ログを書き出す際に利用するMy.Applicationや、ネットワークの状態を取得するなど、コンピュータの属性に簡単にアクセスできるMy.Computer、アプリケーションの状態を保存、取得する際に使用できるMy.Settingなどがある。

VB 2005で新たに用意されたMyを利用すると、VB6の時代には簡単にできたがVB.NETになってから利用が複雑になってしまった機能に、簡単にアクセスできるようになる。

 ほかにも、今までVC#にあってVBになかった、UsingやContinue、演算子のオーバーロード、符号なしデータ型、XMLドキュメントコメントなどの機能が新たにVB 2005で追加されている。

 今回のバージョンアップでは、双方の製品ともに生産性の向上が主眼に置かれている。コードの品質を確保しつつ開発効率を向上させるための機能が数多く盛り込まれているのが分かる。セッション中、しばしば聞かれたキーワードが「ベストプラクティス」だ。すでに検討され実績のある設計やコードをお手本として、そのまま再利用していこうというものだ。もちろん、こうした動きや機能は、開発者だけでなく、システム開発に携わるすべての人にとって有益なものだろう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ