読者です 読者をやめる 読者になる 読者になる

★ The Tsuchinoko News 2 (つちのこ通信2) ★

重要な話から、どうでもいいことまで。ほとんど役に立たないことを書き連ねています。

【PC】VB6 から VB2010 への移行(その1)コンバーターによるアップグレード

筆者は、ケースバイケースで様々なプログラミング言語を使って仕事をしているが(Microsoft社がQuick C,Quick BASICを出していた頃、提唱なのかアドバイスなのかわからないが MIXed LAGUAGEとか言ってたような気がするが、その名残で(笑))Visual Basic の Ver6 から .NET(どっとねっと)は、なかなか進まずにいた。

これは、ひとえに .NET が、それまでの VBの資産を継承したアップグレードではなく、今までのものを完全に捨てて、.NET Freamwork なる JavaVMに対抗するかのような新仕様に移行したことによる。

ただ言語が移行しても、それまでのプログラムという資産は残るわけで、一気に移行というのはなかなかしずらいものがあり、実際、VB6のデベロッパーの多くは、VB6を切り捨てずにいた(切り捨てられなかった)。
新しいOSとして Vista が誕生しても、そのへっぽこぶりが目に余り、Windows XP があいかわらず主力OSの座に鎮座し続けたことも大きいようにも思う。なにしろ大規模に変更する必要が生じないのだから(笑)

f:id:tsuchinoko118:20140921054400p:plain
あなたのワークライフバランス、大丈夫?ワークライフバランス診断 BSC for Android

筆者も ようやく重い腰をあげて本格的に .NET を導入したのは Windows 7 が出現し、SP1も出て安定感も増した頃、新しいパソコンを購入すると、もう XP が入手できないようになってからのことだ。

いずれは移行しなくてはならないと思いつつも、そのままダラダラと放置しつづけて、約10年。ユーザーさんの環境も、少しづつ XP から Windows 7 に変化していく。プログラムも、動かないわけではないが、変えていかねばならない。変えるということは VB6 から .NET へ。 Windows 7 が登場したときの .NET は VB2008 か VB2010 ということになる。その間の 2005や2003などは、すっとばしてしまい、一気に VB2010 へ。

なのだが、この不景気。全部を移行する費用はなかなか捻出できないため少しづつ移行ということになり、小さなプログラム。プロセスから移行することに。


できることなら、楽をしたいと、わがままな筆者は、自動コンバーターによるアップグレードを試みてみたのだった。マイクロソフトによれば、可能だ!と言っているのだから(笑)


VB2010 には VB6 のコンバーターは搭載されていないので、一度 VB2008 でプロジェクトを開く。すると、自動コンバートが始まる。
これで出来上がった VB2008 のプロジェクトを VB2010 で開けば、また自動コンバートされるので・・・ と 2回コンバートを行う。

すると VB6 のプログラムが VB2010 へ・・・


結果は、ほぼ全滅(笑)

画面の描画に便利だった Shape コントールは廃止、Imageも Picture に統合。このあたりを VB6のPowerPack か何かよくわからないクラスライブラリに置き換わるし、 基本的な関数呼び出しなども当然ながらうまく変換できる。多数のわけのわからないコメントをつけてくれて、なぜ、このような変換になったのかまで書いてくれている。

しかし、印刷は全滅。
方法論が全く違うのだった。

API の呼び出しなどは、なんとなく変換できているように見えて、実際に動作させてみると動かないことも多い。

VB2010 は構造化できるのに、VB6の構造化できなくて仕方なく書いたエラー処理などは、そのまんま。



微妙に VB6 の面影を残しつつも、完全なコンバートはできず、コメントなどを参考に手直ししろと書いてあるものの、根本的に構造が違うので、「手直し」よりも、


はっきり言って、新しく書き直した方が、早い(笑)

実際、手直しでやってみたけれども、

「さあ直すぞ!」
「まずこの範囲全部消そう」

から始まるようになってしまったのだった。


なんともマクロソフトなオチだった。