Visual Basic 6.0ユーザーはVisual Basic 2005に移行せよ(2/4 ページ)

» 2005年09月09日 20時07分 公開
[下村恭(ハンズシステム),ITmedia]

VB 6と比較したVB 2005

 ところで、正式製品名の変化にお気付きだろうか。現行のバージョンはVisual Basic .NET 2003だが、これに対して新製品はVisual Basic 2005となっている。製品名から「.NET」が消えたのだ。VB .NETが定着し、これからはわざわざ.NETと言わなくてもVB .NETがVBなんだぞ、という風にも考えられるが、VB 6の特徴であった“お手軽に必要な機能を実装できる”という部分が2005になって復活したからだ、という風にも思える。つまり、本来のVBに戻ったのだ、と。

 では、VB 2005で本家VBのように戻った部分とはどのようなところなのか。まず、IDEの機能として挙げられるのが、先にも書いたエディット・コンティニューだ。この機能の復活を願っていたVB .NETユーザーは少なくないはずだ。

 また、目だって本家VBっぽくなった部分がフォーム関連の記述方法だ。例えば、Form1にあるボタンのクリックでForm2を表示させる場合、今のVB .NETでは、

Private Sub Button1_Click( _
            ByVal sender As System.Object, _
            ByVal e As System.EventArgs _
        ) Handles Button1.Click
    Dim frm2 As New Form2()
    frm2.Show()
End Sub

というように、まずForm2というクラスのfrm2というインスタンスを宣言したうえで、Newでインスタンスを生成してからfrm2のShowメソッドを呼び出す、という手順を踏まなければならなかったが、VB 2005からは、

Private Sub Button1_Click( _
            ByVal sender As System.Object, _
            ByVal e As System.EventArgs _
        ) Handles Button1.Click
    Form2.Show()
End Sub

という記述が可能になった。つまり、インスタンスを生成する必要がなく、直接、Form2というクラス名からShowメソッドの呼び出しが可能となったのだ。もちろんプロパティへのアクセスも同様に可能。まさにVB 6と同じ記述方法だ。

 ただしこの点については賛否が分かれるだろう。オブジェクト指向という考え方からするとおかしな話で、インスタンス化されていないオブジェクトが使えてしまうことに違和感を覚える方も少なくないだろう。そういう方は、今のVB .NETの記述方法を取ることをお勧めする。そのほうが正しい記述方法と言える。だが、多少乱暴な言い方になるが、VBが持つ「とりあえず機能を実現させよう」という文化から見れば、オブジェクト指向だろうが何だろうが動けばよいのだ。コーディング方法がどうであれ、CLR上のマネージコードとしてきちんと動作するわけだし、バックグラウンドでインスタンス化されていることは間違いない。コーディング量が多くなれば、ミスが入り込む余地も多くなるわけで、そういう意味では、コーディングの簡略化の一環としてみることもできる。

 コーディングの簡略化という点では、VB 2005から登場するMyオブジェクトを忘れてはいけない。VB 6では、暗黙に用意されたグローバルな変数があり、プログラム自身の情報などの情報に簡単にアクセスできるようになっていた。対して、VB .NETではクラスライブラリの奥深い階層に埋もれてしまい、情報を取り出すだけでも、Systemの中のなんとかの中の……と、面倒なコーディングを強いられるようになっていた。これが、Myから簡単にアクセスできるようになった。特にインスタンス化する必要もなく、VB 6のグローバル変数のように扱えるため、扱いやすくなっている。さらに、Myで使用できるのはプロパティだけでなく、さまざまなメソッドも用意されているため、VB 6からVB .NETを通して面倒なコーディングが必要だった機能も、簡単に実装できるようになっている。

 また、VB 2005ではクラス定義ファイルを複数に分けられるパーシャルという機能が言語仕様として盛り込まれた。この機能を使うと、IDEが自動生成したソースコード部分と、プログラマーがコーディングした部分を別のファイルに保存することができる。実際、VB 2005でWindowsアプリのプロジェクトを作成し、フォームのデザインをすると、例えばForm1.vbというファイルとForm1.Designer.vbという2つのファイル(正確には、リソースが保存されるForm1.resxを含めると3つ)ができあがる。この2つのファイルは同じForm1というクラスを定義するためのファイルだ。フォーム上の部品などUI部分の初期化コードといった、フォームデザイナが自動生成した部分がForm1.Designer.vbに、ボタンをクリックしたときなどの、プログラマーがコーディングするイベント部分がForm1.vbに保存されるように分かれている。

 VB .NETではエディタ上で折りたたまれて隠されてはいたが、同じソースファイル内に自動生成部分とコーディング部分が同居しており、何かの拍子に自動生成部分を壊してしまうとか、自動生成によってプログラマーの変更点をつぶされてしまうといったことがあった。VB 2005では、そのような事故は起きないうえ、VB 6のように自動生成部分が隠蔽されるため、より全体が見通しやすくなっているといえる。

Visual Basic 2005に移行すべき理由

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ