特集
VB6アプリのWindows Vista対応(後編)

Vista上で動作するVB6アプリの作り方

codeseek 衣川 朋宏
2008/02/05
Page1 Page2 Page3

ヘルプ(.hlpファイル)の問題

 Vista上では、デフォルトでは従来(VB6)の.hlpファイルは利用できない。.hlpファイルをVista上で開こうとすると、以下のようなエラー情報が表示されてしまう。

VB6のヘルプ(.hlpファイル)を表示させようとしたときのエラー表示

 Vistaで.hlpファイルを表示するためには、次のリンクからVista用のプログラムをダウンロードし、インストールする必要がある。

 より詳しくは、「Vistaで従来の.hlpヘルプ・ファイルを利用する」を参照されたい。

4. VB6の今後

 以上、ここまでVB6アプリのVista対応手法について見てきたわけであるが、残念ながら問題はこれから先も続く。例えばWindows Server 2008対応についてである。

 Windows Server 2008では、Webページ作成技術「ASP(Active Server Pages)」の内部で動いてきたVB6コンポーネントが問題になる可能性が大きい。例えば、本稿で述べてきたようなUACの問題、日本語の問題に加え、IIS7への対応が必要になる。

 さらに、本稿執筆時点では、Windows Server 2008上でのVB6ランタイムのサポートに関する公式アナウンスはまだなされていない(非公式ながら、MSDN Blogにおいて「基本的に、Windows Server 2008 上での Visual Basic 6.0 アプリケーションを実行させるためのランタイムの対応については、Windows Vista における対応と同等になる予定です。」というコメントがある)。

 同じように64bitへの対応も不明である。

 このような状況下でいつまでもVB6アプリを使い続けるのがよいとはいえない。だが一方で、全体を一度に移行させるには、リソース面/リスク面などさまざまな問題があるのが現実である。

 そこで最後に、VB6アプリの.NETへの移行の方法を簡単ではあるが、ご紹介したい。

移行方法1:ロジックを分離して移行させる

 これは、問題のあるロジックを分離し、.NETでライブラリを作成する方法である。

 作成した.NETのライブラリはVB6からCOMコンポーネントとして参照できるように設定する必要がある。下の画面は、Visual Studio 2005のCOM相互運用の設定画面である。

Visual Studio 2005でのCOM相互運用の設定
  [COM 相互運用機能の登録]にチェックを入れる。

 ここでの[COM 相互運用機能の登録]にチェックを入れることにより、.NETのライブラリがCOMコンポーネントとして参照可能となる。つまり、ほかのCOMコンポーネントとまったく同じ使用方法で、VB6から.NETのライブラリを呼び出すことが可能である。

 仮に、移行元のVB6アプリにおいて、フォームとビジネス・ロジックがきれいに分離されていた場合には、VB6アプリにはまったく手を加えることなく、ビジネス・ロジックをすべて.NETに移行させることが可能である。しかし、フォーム内にビジネス・ロジックが混在している場合、当該部分を分離させて移行するのは、非常に困難となってしまうだろう。

 うまくすべてのロジックを.NETに移行させることができたとすると、残りはVB6は画面表示のみとなり、最後に画面を.NETで作成し直せば移行は完了となる。

移行方法2:一部の画面を移行させる

 問題点が画面そのものにあり、ライブラリとして切り出せない場合もある。これに対する対応は難しいが、まったく手段がないわけではない。

 マイクロソフトより、「Interop Forms Toolkit 2.0」というツールがリリースされている。次のリンクからダウンロード可能だ。

 これを使用すれば、VB6アプリ内で、.NETで作成されたフォームを使用することができる。また、移行させるだけではなく、システム修正の際に、修正対象や追加となった画面を.NETで作成していくというアプローチも可能となる。

 残念ながら、Interop Forms Toolkitに関する日本語の情報は極めて少ないが、有用な解決策の1つである。

 また、.NETになって大きく変わってしまったフォーム上の描画系の構文、および印刷系の構文は、「Microsoft Visual Basic 2005 Power Packs 2.0」にてサポートされるので、これを使用するのも、フォームの移行を行ううえで有用と思われる。

 このようにして、全体のうちの一部分から徐々に移行していき、最終的な目標として全体の移行を完了させるというアプローチも有効である。

5. まとめ

 Vistaに対応させるために、チェックすべき項目は多い。今回の特集で説明しきれなかった項目もあり、それらは「MSDN Developer Center : Windows Vista および Windows Server 2008 アプリケーション互換性解説書」にて解説されている。これらのチェックを行ったうえで、必要ならば修正を行い、テスト、配布を行うという手順となる。

 しかしながら、「仕様書はどこだ」「ソースはどこだ」という、お決まりの管理上の問題にぶつかる可能性はある。Vista上での互換性確保のために各種リソースを使用するよりも、あえてまずはVB6から.NETへ移行して、最終的に.NETへのリプレイスを目指すことでVistaへの対応も完了させるというシナリオの方が結果として安上がりなケースも考えられる。

 さらに、今後の動向により、Vistaのサービスパックの状況によっては、更なる対応が必要となる可能性も考えられる(例:Windows XP SP2の場合)。

 以上の内容を踏まえたうえで、VB6で対応作業を行うのか、あるいは.NETに移行するのかを検討する必要がある。End of Article

 

 INDEX
  [特集]
  VB6アプリのWindows Vista対応(前編)
  VB6アプリをVistaで動かすための基礎知識
    1.VB6のサポート期限の問題
    2.VistaへのVB6アプリの導入
 
  VB6アプリのWindows Vista対応(後編)
  Vista上で動作するVB6アプリの作り方
    1.Vista上でのVB6アプリの運用・修正編(UAC関連)
    2.Vista上でのVB6アプリの運用・修正編(フォント関連)
  3.VB6の今後


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH