VisualBasic6.0に関するリスクは主に2つ存needtec.sakura.ne.jp/doc/VisualBasic6system.pdf ·...

Preview:

Citation preview

VisualBasic6.0に関するリスクは主に2つ存在する

•サポートに関するリスク

•開発要員に関するリスク

VB6ランタイムはWindows8まで保障されているが一部のランタイムは非サポート • Grid32.ocx ,graph32.ocxなどが非サポートになっている。

IDE(統合開発環境)が非サポート • Windows8でも動作するという実験結果はあるが、

非サポートである。

http://msdn.microsoft.com/ja-jp/vstudio/ms788708.aspx

サードパーティーが提供するOCX、DLLのリスク • VB6.0の開発環境が非サポートになっている状況でサードパーティーが、サポートしつづけるかは疑問である

64ビットプロセスはサポートしない • 64ビットマシンであっても32ビットのプロセスとして動作するので、メモリをいくらつんでも最大4Gバイトまでしか有効にならない。

VisualBasic6.0が実装できる要員をしづらくなる。

ソフトウェア産業の実態把握に関する調査 IPA独立法人 情報処理推進機構 2012/4/27

http://www.ipa.go.jp/files/000004628.pdf

VB6.0は COBOL 0.4%以下の その他になる

新規案件ではVisualBasic6.0は採用されにくい。

これは新規に業界に入った人間がVisualBasic6.0を扱う機会が少なくなっていくことをあらわす。

すなわち将来、安価な労働力を確保するのが困難になると考えられる

リスクを把握した上で使い続ける .NETに置き換える 新規機能のみ.NETに置き換える

OSのバージョンアップやWindows Updateを行なわない前提であるならば、正しい選択 • インターネットにつながない、または、他の

Officeなどのアプリケーションを使用しない閉じた環境であれば、OSのバージョンアップやWindowsUpdateなどのセキュリティを考慮しないでよい。

例:工場の機械を動かす制御システム

注意: 更新をしないつもりであっても、和暦を使っている場合は、OSに対してアップデートやパッチを当てる可能性が出てくる。

技術的には正しい選択だが、コストの問題が発生する。

コンバートツールは存在するが、最終的には人間が確認する必要がある。

テストは全部やり直す必要がある

現状はそのままとして、新規に追加する場所や変更が発生する箇所を.NETで実装する。

これにより、将来のどこかのタイミングで必ず発生する移行作業の作業量を軽減する。

新しい機能を.NETを使用して作成する。 • .NETで新しい画面や、機能を作成する。

COMでラッパーしてVB6.0のネーティブコードから使用する。COMなので、そのルールないでのデータの受け渡しは可能 • 文字列や数字、それらを組み合わせたクラスなど

.NETフレームワークとCOMの相互運用を行うためのツール

http://www.microsoft.com/en-us/download/details.aspx?id=3264

インストール後、管理者としてVisualStudioを起動する。

新規プロジェクトで下記のテンプレートを選択する

VB.NETでCOMのコントロールやインターフェイスを実装できるようになる。

VB6から使用したい機能をCOM参照可能なクラスのCOM参照可能なパブリックプロシージャとして実装する

ビルド時にCOMの相互運用として登録される。

VisualStudioのない環境ではRegasmを使用する。

Regasm AssemblyName.dll /tlb: FileName.tlb /codebase

http://support.microsoft.com/kb/817248/ja

参照設定で作成したDLLを選択する

VB6側でオブジェクトを作成して使用する。

VS2008側のSolutionにテストプロジェクトを追加してCOMを参照してそこで単体テストを行う

.NETフレームワークのバージョンは一致させること!

テストコードとCOMが同じソリューションだとデバッグしやすい。

VisualStudio2008でVB6.0で作成したプロセスにアタッチすることで、.NETで作成したCOMのデバッグが行える。

Interop Forms Toolkit 2.1インストール時にHelp Fileのショートカットがプログラムファイルに作成できない場合がある。(インストールは正常にできる)

.NETフレームワークをCOMを使用時に読み込むので、VB6のみの時より起動時間がかかる可能性がある。

COM+.NETの相互運用のインターフェイスでオーバーヘッドがあると思われるので、VB6側のループの中でCOMのプロパティを実行するなどは避けた方が良い。

Windows Vista、Windows Server 2008、Windows 7、および Windows 8 に対する Visual Basic 6.0 のサポートに関する声明

http://msdn.microsoft.com/ja-jp/vstudio/ms788708.aspx Visual Basic 6.0 から Visual Basic .NET または Visual Basic

2005 アセンブリを呼び出す方法 http://support.microsoft.com/kb/817248/ja COM 相互運用 (Visual Basic) http://msdn.microsoft.com/ja-jp/library/6bw51z5z.aspx

Recommended