Microsoft .NET Framework に対応したRADツール “Visual Basic .NET”
Windowsアプリケーション開発ツールのスタンダードであるVisual Basicの最新バージョンが4月19日に発売される(「Visual Studio .NET」は3月22日発売)。それが「Visual Basic .NET」である。新バージョンではWindowsアプリケーションばかりでなく、Webアプリケーションの開発にも本格的に対応している。ここでは、気になるVisual Basic 6.0との違いを中心にその機能を紹介しよう。
Windows&Webアプリケーションに対応した
新たな標準開発ツールVisual Basic .NET
Windows用アプリケーションの開発環境として最も広く利用されているのが、Visual Basicであるといってよいだろう。日曜プログラマのちょっとした小物から、各種ユーティリティ、業務用アプリケーションにいたるまで、ありとあらゆるWindowsアプリケーションがVisual Basicで作られている。グラフィカルな開発環境としては、Borland Delphiも利用されてはいるが、標準的なRAD(Rapid Application Development:生産性の高いアプリケーション開発環境)ツールとしてのVisual Basicの地位はいまだ揺るぎない。むろん、本格的なWindowsアプリケーション開発においてはVisual C++などにその役割を譲るが、新人プログラマに対する教育やデバッグの容易さなどを考えると、Visual Basicはとても重宝されているだろう。
そんなVisual Basicが.NET Frameworkに対応し大きくその姿を変えた。その名も「Visual Basic .NET(画面1)」。Visual Basic 6.0の後継となるVisual Basicの新バージョンである。Microsoftが提唱する.NET Frameworkは、Windowsばかりでなくインターネット上の分散アプリケーションのプラットフォームでもあり、その開発ツールであるVisual Studio .NETは、これまでのWindowsアプリケーション開発環境からWindows&Webアプリケーションの開発環境へと姿を変えた。
Visua BasicのライバルDelphiやLinux用ビジュアル開発ツールのBorland KylixはすでにWebアプリケーション開発に対応しているので、Visual Basicプログラマには待ちに待った、Delphi/Kylixプログラマには気になるバージョンアップである。また、Webアプリケーションのビジュアル開発環境としては、IBM WebSphere Studioなども発売されている。Visual Basic .NETの登場は、まさに満を持したものといえるだろう。
画面1 インターネット接続を前提にしたHTMLで作成されているスタート画面。プロジェクトを読み込むとタグ付きWebブラウザのように画面を切り替えられる
.NET Framework対応のための大幅な言語仕様の変更
結果的に、下位バージョンとの互換性を失う
Windowsアプリケーションの開発ツールとして見た場合、Visual Basic .NETの機能はVisual Basic 6.0と同等以上である。Visual Basic 6.0でできてVisual Basic .NETにできないことはないといっていい。しかし、Visual Basic 4.0など旧バージョンのコードをほとんどそのままコンパイル・実行することができたVisual Basic 6.0とは異なり、Visual Basic .NETでは6.0のコードがそのままではコンパイル・実行できない場合がある。
これは言語仕様が大幅に変更されたためである。Visual Basic 1.0から6.0までは上位互換が保たれてきたが、Visual Basic .NETはVisual Basic 6.0の上位互換言語とは言い難い。Visual Basic 6.0からVisual Basic .NETへの移行を考えている場合はこの点に注意して欲しい。
Visual C# .NETやVisual C++ .NETとの協調性を考えた言語仕様の変更
言語仕様の変更は、Visual Studio .NETのその他のコンポーネント、Visual C# .NETやVisual C++ .NETとの協調性を考えたためとMicrosoftは説明している。変数の型や配列の要素番号の扱いなどがVisual C++に揃えられ、オブジェクト指向 ではなかったGoToやGoSubステートメントは廃止されている。主な仕様変更は以下の通りだ。これだけを見ても、かなり大幅な仕様変更であることがおわかりだと思う。
仕様の変更
仕様 変更前 変更後
Integer型 16ビット 32ビット。16ビット整数はShort型
Long型 32ビット 64ビット
Date型 4バイト浮動小数点数 8バイト整数
And/Or/Xor/Not ビット演算と論理演算に使用可能 論理演算のみに使用可能
Dim A(0 To 10) のような配列宣言使用可能 使用不可
Dimで宣言しないReDim 使用可能 使用不可
Dim I, J As Integer の指定IはVariant型、JはInterger型 I/JともInterger型
配列A(n)の要素番号 1から開始。オプションで0からも開始可能 0からのみ開始
プロシージャコール 括弧()を入れても入れなくてもよい 括弧()が必要。Callステートメントは省略可
Whileループ While...Wend While...End While
引数のデフォルト 参照渡し 値渡しに変更。関数・プロシージャ側での変更不可
仕様の廃止・統合
仕様 変更内容
Variant型 廃止。Object型に統合
DefInt/DefStrステートメントなど 廃止
Eqv/Imp演算子 廃止
Typeステートメント 廃止。構造体はStructureステートメントで宣言する
GoSubステートメント 廃止
表 Visual Basic .NETでの主な仕様変更
Visual Basic 6.0アップグレードウィザード
むろん、Visual Basic 6.0からの移行は当然考慮されていて、Visual Basic 6.0で作成したプロジェクトを読み込むとアップグレードウィザードが起動し、もとのプロジェクトを残したまま新規にプロジェクトを作成してくれる。その上で、コードを自動的に変換し、変換できなかった箇所や互換性のない部分について指摘してくれる。単純なコードであればアップグレードウィザードでVisual Basic .NETコードに変換できるかもしれないが、複雑な内容である場合にはコードをいちから書き直さなければならない場合もあるだろう。
Visual Basic 6.0のコードを使いたい場合は、無理にVisual Basic .NETに移行せず、Visual Basic 6.0を使い続けた方が無難だろう。これらの共存は問題ない。また、コードではなく、COMコンポーネントであればVisual Basic 6.0で作成したものをVisual Basic .NETでも使うことができる。ただし、Visual Basic 6.0では今後登場する新しいOSや技術への対応は無理なため、あくまで現在の資産を継承するという形に用途が限定される。
WindowsフォームとWebフォーム
フォームの扱いも大きく変更された。Visual Basic .NETではWindowsフォーム(画面2)とWebフォーム(画面3)がサポートされている。VBフォームに対応するのはWindowsフォームであるが、フォントの扱いや描画関係のプロパティやメソッドなどが大きく異なっており互換性は低い。ほとんどの場合、フォームは作り直す必要があるだろう。
画面2 Windowsフォームによる画面デザイン。Visual Basic 6.0のVBフォームと操作性はほぼ同じだ
画面3 Webフォームによる画面デザイン。ASP.NETアプリケーションでは、Windowsフォームと同じように画面設計ができる。HTMLやASPの場合は当然のことだが任意の位置への配置はできない