VB 6アプリを.NETプラットフォームへ移行する方法

Visual Basic Interop Forms Toolkitにより、開発者はVisual Basic 6アプリケーションを少しずつ.NETに移行できるようになるだろう。ただし、そのプロセスはシームレスではなく、デバッギングも複雑だ。

» 2006年11月29日 07時00分 公開
[Greg DeMichillie,Directions on Microsoft]
Directions on Microsoft 日本語版

 Visual Studio(VS)2005用の新しいアドオン「Visual Basic Interop Forms Toolkit」により、開発者はC#またはVisual Basic .NET(VB.NET)で作成したフォームをVisual Basic(VB)6から扱えるようになる。基本的には、開発者はこのツールキットにより、VB 6アプリケーションを少しずつ.NETに移行していきやすくなるはずだ。アプリケーションのフォームを個々に.NET Frameworkベースの新しいバージョンで置き換えていけば良いからだ。ただし、そのためのプロセスはシームレスにはほど遠く、開発者は.NETフォームとVB 6アプリケーションの両方でカスタムコードを記述しなければならず、デバッギングも複雑だ。

ハイブリッドアプリケーションをサポート

 Interop Forms Toolkitの目的は、VB 6アプリケーションに含まれる個々のフォーム(VBでは、インタフェースウィンドウのことをフォームと呼ぶ)を、.NET Frameworkを使って書かれた新しいバージョンで置き換えることにより、開発者がVB 6アプリケーションを少しずつ.NETに移行できるようにすることだ。つまり、アプリケーションをゼロから書き直すよりも、部品ごとにアプリケーションを移行できるようにしよう、という考え方だ。新しく置き換えられた部品は、例えば、改良版のフォームレイアウトやWebサービスのサポートなど、.NET Frameworkならではの機能も幾つか、活用できることになるだろう。

 このツールキットは、.NET FrameworkによるCOM相互運用性のサポートを土台としているが、VBフォームに特有のニーズに合わせてカスタマイズされている。

 このツールキットを用いるには、開発者はVS 2005を使って、C#またはVB.NET、いずれかのプログラミング言語でフォームを作成する。フォームが完成したら、開発者はこのツールキットで提供されるVSアドインを使って、そのフォーム用のCOMラッパーを作成する。このラッパーをVB 6で使用すれば、VB 6アプリケーションで.NETフォームを作成したり、実行したりできる。

 だが、VBフォームは自己完結的な存在ではなく、しばしば、アプリケーション内のほかのフォームやアプリケーション自身ともやり取りする。Interop Forms Toolkitには、以下のように、そうした統合を支援するための幾つかのコンポーネントが含まれる。

  • フォームを表示したり、閉じたりといったイベントをアプリケーションに転送するEvent Messenger。
  • フォームとそれを含むアプリケーションとでステート情報(ユーザーの名前など、各種のネットワーク信用証明情報)を共有できるようにするためのコンポーネント。

プラグ&プレイではなく、変更もサポートされない

 このツールキットは、開発者がハイブリッドアプリケーションを作成するのに役立つのだろうが、そのプロセスは自動化されておらず、以下に示すように、幾つかの制限もある。

カスタムコードが必要

 このツールキットはVB 6と.NETの橋渡し役にはなるものの、開発者はVB 6アプリケーションと.NETフォームの両方でカスタムコードを記述しなければならない。例えば、VB 6アプリケーションでイベントを発射させるためのコードと、純然たる.NETアプリケーションでイベントを発射させるために使用されるコードは、同じではない。

フォームの相互関係が独特

 例えば、複数文書インタフェース(MDI)アプリケーションがサポートされず、VB 6フォームを1つ前面に持ってくると、すべてのVB 6フォームが前面に出てしまう。

デバッギングが複雑

 開発者はVB 6コードから.NETコードに自動的には進めず、VSとVB 6の両方の開発環境をスタートさせ、VSのAttach to Process機能を使って、VSデバッガをVB 6に接続しなければならない。さらに、VB 6は統合開発環境、デバッガ、およびデバッグされるアプリケーションの保持に同一のOSプロセスを使用するため、VSデバッガのブレークポイントで停止すれば、VB 6の開発環境全体が停止することになる。そのため、アプリケーションを停止した状態でVB 6コードを調べるのは非常に難しい。

追加の導入ステップが必要

 .NETフォームを、そのフォームが使用するそのほかすべての.NETコンポーネントとともに、システムにインストールしなければならない。

 なお、Interop Forms ToolkitはMicrosoftの基本戦略に何ら変更をもたらすものではない。同社は開発者に対し、VB 6からVSおよび.NET Frameworkへ移行するよう望んでいる。実際、MicrosoftはInterop Forms Toolkitの開発を自社では行わずに、VB製品チームと長年提携関係にあるClarity Consultingに依頼している。

 つまり、重要なアプリケーションをVB 6で動作させている企業は、「もはやメインストリームサポート期間の終了したツールをあとどのくらい使い続けたいか」「ゼロからの書き直しよりも漸増的な移行のほうがアプローチとして適切か」という2点について、依然として、決断を迫られているということだ。

Copyright(C) 2007, Redmond Communications Inc. and Mediaselect Inc. All right reserved. No part of this magazine may be reproduced, stored in a retrieval system, or transmitted in any form or by any means without prior written permission. ISSN 1077-4394. Redmond Communications Inc. is an independent publisher and is in no way affiliated with or endorsed by Microsoft Corporation. Directions on Microsoft reviews and analyzes industry news based on information obtained from sources generally available to the public and from industry contacts. While we consider these sources to be reliable, we cannot guarantee their accuracy. Readers assume full responsibility for any use made of the information contained herein. Throughout this magazine, trademark names are used. Rather than place a trademark symbol at every occurrence, we hereby state that we are using the names only in an editorial fashion with no intention of infringement of the trademark.

注目のテーマ