図1 |
そこでここではニューVBの機能について,特に既存(Visual Basic 6.0)のプロジェクトがどうVB7に移行できるのか,という点に注目してレビューしてみよう。
Visual Studio.NETを起動すると,最初に現れるのは図1[拡大表示]の画面だ。ここではどんな言語を選択するかではなく,「既存のプロジェクトを開く」のか「新しいプロジェクトを開く」のかなどを指定する。つまり言語を選択するのではなく,「何をしたいのか」が作業のきっかけになる。ちなみに今回のベータでは,米Microsoftへの障害報告用のメニューも用意されている。
「新しいプロジェクト」を選択すると現れるのが図2[図を表示]だ。ここではじめてVB,C#,VC++と言語別のプロジェクトのフォルダが見えるようになる。
図5 |
既存VBプロジェクトを選択すると現れるのが,今回のベータ1の目玉のひとつ「Visual Basic Upgrade Wizard」(図5[拡大表示])。既存のVBのプログラムを,.NET対応に移行するためのツールである。これは7月に公開されたTechnical Previewにはなかった機能で,この機能の完成度が,VBプログラマにとって一番の関心どころだろう。図6[図を表示]はNextボタンを選択すると出てくる画面で,プロジェクトのタイプなどを設定する。ここではデフォルトのまま次へ行く。すると次の段階では,.NETのプロジェクトをどこのフォルダに保存するかだ(図7[図を表示])。VB.NETというフォルダ名がデフォルトで指定されているので,そのまま次へ行く。新規フォルダの有無についてダイアログが出るので,作成を選ぶと,いよいよ移行作業がスタートする(図8[図を表示])。そして問題がなければ作業は終了だ(図9[図を表示])。すると,VB7の開発画面右上にある「ソリューション・エクスプローラ」に移行したプロジェクトの関係ファイルが表示される(図10)。VB7では複数のプロジェクトを「ソリューション」という単位でまとめるのだ。
図10 |
すると現れたのが図13[拡大表示]だ!この画面をVB6のコード・エディタとよ~く見比べてほしい。拡大してみよう(図14[図を表示])。VB6で記述したアプリケーションのコード(Command1ボタンをクリックしたときのイベントハンドラ)は,コードの下のほうに記述されているのがわかる。しかし,コードの半分以上はForm1(フォーム)のクラスの定義だ。
興味深いのはエディタの左端にある,+や-のマーク。直感的に予想できると思うが,このマークをクリックすることで,なんとコードを「おりたためる」のだ(図15[拡大表示])。見たくなければコード全体をたたむこともできる(図16[図を表示])。これはかなり便利な機能だ。
ところで,たった5行のコードがこれだけの分量になってしまったと驚いてしまうのはまだ早い。エディタ中央部の「Windows Form Designer generated codeの部分の+マークをクリックしてみる。すると,このフォームについてのもっと詳細なコードが現れるのである(図17[図を表示])。VB7では従来のフォームを,Win Formという新しいクラス仕様で定義する。このコードはその部分だ。従来,拡張子.frmのファイルに書かれていたプロパティなどの定義が,コード・エディタで読めるようになったと思ってもいい。ここでの注目はコメント文だ。Upgrade Wizardが自動的に挿入したコメント文があることがわかる。
図13 |
このほか目に付くのは,コードの冒頭だ。オリジナルのコードでは,変数宣言を強制していない。つまりOption Explicitコードを挿入していない。これを移行すると,Option Explicit Offというコードが追加されるのだ。その前の行のOption Strict Offは,暗黙の型宣言を行うかどうか指定するもので,ここではOff(暗黙の型宣言を行う。StrictではないのでOff)になっている。
図15 |
ではこの移行プロジェクトは,はたして動作するのか。さっそく実行してみる。実行は「コンパイル」ではなく,「ビルド」だ。このとき,ソリューション・ファイル(拡張子.sln)の作成が必要になる(図19[図を表示])。すると,確かに動作はした(図20[図を表示])。しかし画面を見てわかるように,メッセージボックスのタイトルバーには「エラー」と表示されてしまった。従来ならプロジェクト名が表示されたはずだ。これはちょっといただけない。
このように,きわめて簡単なプログラムであれば,Upgrade Wizardで移行できることがわかった。
ではもう少し複雑なプログラムだったらどうだろう。図21[図を表示]は,日経ソフトウエア1998年8月号の連載で紹介したVB6ベースのルーレットのアプリケーション(http://software.nikkeibp.co.jp/software/download/down98.htmlからダウンロード可能)を移行したものだ。このアプリケーションでは,コントロール配列やタイマー,ピクチャボックスなど,VBプログラムでは日常的に使うアイテムが使われている。興味深いのは,タイマー(Timer1)など画面表示機能のないコントロールは,フォーム画面に現れず,画面下部にその存在だけが表示されている点だ。
図18 |
このようにUpgrade Wizardは,型の変更のようなきわめて単純な項目は自動的にアップグレードできるが,プログラムの細部までは無理なことがわかる。今回はベータ1なので,正式出荷までにどこまでブラッシュアップできるかわからないが,機能の向上を期待したい。