マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

VB6の保守関連情報。

Microsoftのサポート

リンク

内容

現段階で延長フェーズのサポートも切れており、
プレミア・サポート等を使用しても、VB前提の開発上の問題は取り扱ってもらえない。
ただし、ランタイム・サポートはされているのでこの範囲のサポートを受けることは可能。

  • VB6 IDE
    2008/4/8で延長サポートも切れている。
  • VB6ランタイム
    ランタイム・サポート対象OSでは以下がサポートされる。
  • OS に同梱されているファイル
    主要なランタイム・ファイルはOSに同梱されており、 OSのライフサイクルを通してサポートされる。
    TriEdit?.dll(DHTML Editing Componentと関連付けられるモジュール)
    はWindows Vista以降のバージョンには同梱されていない。
  • アプリケーションと共に配布する拡張ファイル
    コントロールやライブラリ、ツールの拡張リストは
    ダウンロードセンターから入手して再頒布する必要がある。
  • サポート対象外のランタイム ファイル
    • 再頒布可能なランタイム ファイルとして同梱されていないファイルもある
      (古い VB4 または VB5 アプリケーションをサポートする目的でIDE メディアの
      \Tools フォルダに格納されていたファイルや、サードパーティのコントロールなど)。
    • これらのファイルが Vistaで動作することは、
      アプリケーションの互換性と動作のテストを行った際に確認されているが、
      これはサポートとサービスに関するなんらかの保証を表すものではない。
  • 64 ビット Windows
    WOW64エミュレーション環境でのみランタイム・サポートされる。
  • VBA
    • VBAのサポートにはOfficeのサポート ポリシーが適用される。
    • VBAを使用してVB6ランタイムを呼び出したり、ホストしたりすることもある。
    • そのような場合は、サポート対象のVBA環境内で、OSに含まれているサポート対象の
      VB6ランタイム ファイルと拡張ファイルを使用すれば、それらのファイルはサポートされる。
  • VBS
    • VBScriptには、このVB6のサポートに関する声明は適用されない。
    • VBScriptは現在Windows Vista、Windows Server 2008、
      およびWindows7に同梱されているため、これらのOSの
      サポート ライフサイクルに応じたサポートの制限を受ける。

セルフ・サポート

  • 開発環境の更新がVB6 SP6のstableな状態で無くなっており、
    インターネット上に多くの情報を確認できるということを考えると、
    (VBAなどの現時点でも開発がサポートされるコードと言語仕様が同じであることも大きい)
  • 今後のセルフサポート可能と考えるが、新技術や移行対応、また、
    COM+などの一般的ではない範囲の保守については一定の問題があると考える。

Webサービス

SOAP Toolkitなどのツールも存在するが、2001年以降更新されておらずサポートも切れているため

最新の環境(SOAPの新規格)上では問題が発生する可能性がある。

また、Microsoft SOAP Toolkit 3.0は現在も保守され続けているが、
フリーウェアであるため問題が発生した場合も、サポートされない。

代替案としてはWeb参照などはできないが、MSXMLを使用するのが良い。

MSXML2.XMLHTTP:

VB6やVBAでHTTP処理する際に使用できるコンポーネント。
AjaxのXMLHttpRequest?実装の元となったIEの実装

MSXMLはWSDLを読み込むWeb参照ができないので、素組での実装が必要になる。
また、MTOM(Streaming)などのクライアント機能を実装可能かの調査が必要になる。

端末側(マクロ実行環境)にMSINET.OCXを配置できず、
MSXML2.XMLHTTPを使用するといった事例もあるもよう。

Windows 8以降での使用方法。

IE上からホストされるActiveX

IE9から(VBCOMの)ActiveXを呼び出す処理で問題が発生した事例がある。
VB6ラインタイムの問題、IE9のサンドボックス化、Webアクセス、また、
その際のサーバ証明書の確認などに起因すると思われる問題が多発した。

自己署名に対する警告や、失効確認時のプロキシ認証等の
ダイアログが表示されるため、以下に起因する問題と思われたが、

  • インターネット ・ エクスプ ローラー ・ 9 VB6 ActiveX コントロールによって
    起動されるモーダル ダイアログ ボックスを閉じると、web ページが応答を停止します。
    http://support.microsoft.com/kb/2534409/ja

ここに記載されている「セキュリティ更新プログラム」を適用しても現象は改善しなかった。

以下の情報よりレジストリを直接更新することでKB2534409の現象が
回避できることは確認したが、サポートされない方法であるとのこと。

MTS、COM+(Enterprise Service)

  • Windows NT 4.0 Service Pack 4におけるMTS(1998)
  • Microsoft Windows 2000におけるCOM+(2000)

上記は、.NET登場(2002)間近にリリースされた製品で、
まだ、Microsoft系開発ツールを用いたサーバサイド開発が
一般的では無かった時期の技術であり、開発に採用された実績が少なく、
技術者(スキルセットを満たす人材)を集め難い等の問題を持っている。

ミドル・ツール類

また、ミドル・ツール類のサポート問題もある。

サードパティ製ミドル

UIコンポーネントなどのVB6向けの種々のActiveXコンポーネント製品が出荷されてきたが、
環境移行時は、これらが、各プラットフォームでサポートされるかの調査が重要になる。

環境移行

VB6アプリケーションの環境移行では移行性評価(互換性テスト)が重要になる。

  • Windows Vista、Windows Server 2008、および
    Windows 7における Visual Basic 6.0 のサポートについて
    http://msdn.microsoft.com/ja-jp/vbasic/cc707268

    Windows Vista 、Windows Server 2008 および Windows 7
    でも引き続き Visual Basic 6.0 を使用する予定がある開発者は、
    それぞれ対象の Windows をインストールし、アプリケーションの受け入れテスト
    をしてアプリケーションの互換性テストに着手することをお勧めする。

VB6アプリケーションの環境移行の注意点は、
環境移行ではあるものの、サポートされないVB開発環境を使用する
必要があるため場合によっては手詰まりになる可能性がある事である。

このため、見積もり前に準委任契約等で
移行性評価(互換性テスト)を実施することが推奨される。

参考情報

.NETへの移行提案

テクノロジ・カットでの提案だけでは弱い。

利用者のメリット

.NETでの機能強化がユーザの利便性に繋がる所は
全般的に利用者のメリットに繋がると言えます。

  • 並列処理対応
    • 非同期呼び出しなど。
  • 最新アーキテクチャへの対応
    • Web
    • クラウド
  • リッチな画面を作りやすいUIサブシステム。
    • 国際化対応(支援機能)
    • WPF/Silverlight、HTML5
    • Video、Media系
    • タッチ操作
  • また、そういうVB6時代になかったサードパーティUIコンポーネントが手に入る。

開発側のメリット

開発側のメリットは

  • サポートがある。
  • 開発支援機能の強化。
  • 開発要員を確保しやすい。

などです。

具体的には、

  • Microsoftのサポートを受けられる。
  • 各種開発支援機能が利用できる。
    • Unicode対応
    • 国際化対応
    • Webサービス
    • .etc
  • 開発者(保守要員)がいなくなる可能性
    • COBOLと違って保守要員を抱えていないケースが多く開発者を確保しにくくなる。
    • オフショアが実用的になったころVB6新規開発は少なくなっていたので、人が集まるか?

仮想化塩漬け

VB6保守の提案パスとしては、仮想化技術を使用し、
古い環境内に塩漬けにする方式も考えられる。

これにより環境移行にかかる諸費用を抑えることができる。

概要

  • 以下から選択できる。
    • OSレイヤで仮想化する
    • APレイヤで仮想化する
  • 仮想化方式毎のトレードオフ
    • 互換性順 (高 > 低)
      VDI ≒ MED-V ≒ XP Mode >>>>>>>>>>>>>>>>>>>>>>>>>>> ThinApp? > App-V
      • 左辺がOSレイヤ、右辺がAPレイヤ
      • 当然、OSレイヤで仮想化する方が互換性は高い。
  • 価格順(高 > 安)
    VDI >>>>>>>> MED-V > App-V >>> ThinApp? > XP Mode
    • APレイヤよりOSレイヤの仮想化の方が高価
    • XP ModeはOSレイヤの仮想化だが、7に付属のため無償
  • (管理者から見た)便利さ順(便利 > 不便)
    VDI >>>> App-V > MED-V >> ThinApp? >>>>>>>>>>>>>> XP Mode
  • 事例から最終候補はVDIになる可能性が高いと考えられる。以下その理由。
    • APレイヤの仮想化ではOSのレイヤ越えられない(互換性が低い)。
    • 対象クライアント数が多いと管理の難しいXP Modeは困難。
    • MED-Vはクライアント要件(VT&大容量メモリ)の敷居が高い。
  • なお、VB6の塩漬けだけと考えると高価になるが、
    情シスの管理工数削減やセキュリティ向上の効果も狙えるので、
    そちらに誘導することで受注につながる可能性がある。

注意点

  • OS含め仮想化しても、古いOSを動かせるかどうかの問題も出ます。
  • P2V・仮想環境のプラットフォーム、ミドル、ツールも、ゲストOSに合わせてた古いものが必要。
    (最新のP2V・仮想環境の製品は、古すぎるゲストOSに対応しない)
  • 古さによっては、P2V・仮想環境の製品、ゲストOSの古い環境が入手できない場合もあります。

参考資料

VC++化

VC++でのCOM呼び出し(IDispatch )の書き方が解ると楽。
Office オートメーションのコードを移植する場合にも活用できる。

動向

Windows8

Windows8でもVB6ランタイムがサポートされるもよう。

Windows10

やっぱり、Windows10でも動く模様。


Tags: :移行


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-11 (火) 15:00:22 (6d)