カルテ

VisualBasic6.0 から Visual Studio 2017 VB.netへのマイグレーション

きっかけ

受注出荷管理

受注出荷管理

長年、地元のソフト会社に開発を依頼したシステムを使用してきた。システムはVisualBasic6.0でできており、なかなか別言語での作り変えの決断が出来なかった。開発当初はWindowsXPであったが、Windows10~等64BitOSが主流となり、現行システムでは処理能力が低くまた原因が不明な異常終了が頻発し日々の業務に差し障るようになった。当初は大手メーカーの出来合いのパッケージソフトを改造するつもりであったがカストマイズ箇所が多くなり、それに比例して開発費も想定より高額となった。また、自社側がパッケージソフトに処理を合わせなければならず社員の再教育、データ移行の費用も想定以上の金額になった。
よって、多面的に検討した結果、自社のソフト資産を有効活用しつつ、.NETで作り直すことにした。

結果

受注書作成

受注書作成

サーバ及びデータベースソフトも一新し、ソフトウェアの制約を受けない環境となった。処理スピードの向上し、大変満足している。自社のシステムは細かいことまで対応できる様、日々開発してきた経緯があり、そのノウハウを新システムで使えるのは正直ありがたい。汎用パッケージではこうはいかなかったと思う。

旧システム

開発言語:VisualBasic6.0、GrapeCity ActiveX ActiveReport 2.0(帳票コンポーネント)、GrapeCity ActiveX VS-FlexGrid 8.0(グリッドコンポーネント)
データベース:SQLServer2008

新システム

開発言語:Visual Studio 2017 VB.net、GrapeCity ActiveReports for .NET 12.0J、GrapeCity FlexGrid for Windows Forms(GrapeCity ComponentOne for WinForms 2019Jv1)
データベース:SQLServer2014

作業内容

1. 機能数確認

ソースからフォーム数、レポート数を確認し、機能一覧作成。

2. 移行対象機能の決定

機能一覧を元にユーザーに移行対象と不要な機能を分けていただく。

3. 見積

4. 移行手順書、移行チェックシート作成

移行作業手順も多く、手作業でソースの書き換えも必要になる事や、複数名で作業をする為、移行手順書と確認用のチェックシートを作成。

5. 移行作業

移行手順書を元にソースを修正。

・ツールを使ってプロジェクト単位にアップグレード
VB6.0⇒VB2008⇒VB2017
・コンパイルエラー解消
・マルチバイトのメンバ名修正
・参照設定の変更 .net frameworkを利用するように修正
・ライブラリ、コンポーネントを.Net用に修正
ActiveX ActiveReport2.0 ⇒ ActiveReports for .NET
ActiveX VS-FlexGrid 8.0 ⇒ FlexGrid for WinForms
DAO ⇒ ADO.NET
ADO ⇒ ADO.NET
・DoEventsはasync/awaitで非同期処理に修正
・エラー処理をtry~catchに修正
・Win32 API修正
・モジュール(bas)の廃止、クラス化
・未使用フォーム(frm)、モジュール(bas)、クラス(cls)の削除など修正箇所は多岐にわたります。

6. 動作確認

確認用のチェックシートを元にプロジェクトファイルの確認と実行プログラムの動作確認。

7. 機能カスタマイズ

必要に応じて、要望のあった箇所のプログラム修正。

8. 納品、受入テスト、本稼働

苦労した点

・VB6.0からVS2017に直接移行できない為、VB6.0⇒VS2008⇒VS2017と2段階の移行作業が必要だった事。
・サードパーティー製のコンポーネントはVisualStudioのアップグレードツールには対応していないので、書き換え可能かコンポーネントのマニュアルを確認し、各メソッドを書き換えが大変だった。
・マイグレーションと同時に機能カスタマイズも行ったので、問題が発生した際、既存の不具合かカスタマイズの修正が原因か特定する事から始める必要があり、テストフェーズ以降の修正が苦労した。
・潜在的なバグも多く、移行とともにバグ修正も同時に行った。