• ベストアンサー

VB6で開発されたアプリをVB2008に移植するには?

こんにちわ。よろしくお願いします。 早速ですが十年くらい前にVisual Basic(以下VB)6で開発されたアプリ(Windows用スタンドアロン。OLEコントロールやDBコントロールも使用)を無謀にも一足飛びにVB2008に移植する事になりました。 そこで質問なのですが… 1.VB2008のExpress Editionで可能でしょうか?   もし無理ならどのEditionなら可能でしょうか? 2.多分、言語仕様もかなり違いがあると思うのですが、最も大きな違いや注意点があればお教え下さい。   特に経験談・苦労談などをお聞かせくだされば有難いです。 3.VB6からVB2008への移植に関して特に有用と思われる書籍やWEBサイトがあればお教え下さい。 以上、独自のノウハウとして「秘中の秘」な事もあろうかと思いますが、「ヒントのヒ」だけでも教えて頂ければ幸いです。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

通りすがりと申します。  vb6とvb.netは、開発思想も含めまったく別ものです。  vb6は、構造化設計、vb.netはオブジェクト指向  やろうと思えば、同じモジュールでもできると思いますが、コードは全て書き換えなければなりません。  あと、Express Editionで可能かどうかは、開発しているvb6での開発時に有償ソフトを使用していた場合、Expressでは対応していない可能性があります。  このようなソフトを使用する場合、有償のIDEを買わないと使用できないです。  詳しくは、その製品サポートセンターへ問い合わせてください。  あと、vb6だけでなく、それ以外に使用している環境も合わせて調査したほうがよいです。  (たとえば、excelを使用している、dbの種類、XMLを操作している..など)  これらも、接続方法、使用するライブラリ、相性などあります。    dbについてもバージョンを上げるだけで、新たに見直さなければならないところも出てきます。  たとえば、以前使用していたdbが内部でdmlを処理する時、シングルタスクで動作していたと  過程します。バージョンアップ後、マルチタスクで動作するように改善されているとします。  これだけでも、実行結果が異なる可能性があります。    

donbei_bp
質問者

お礼

通りすがり様 より具体的なご助言ありがとうございます。 以前、同アプリをVB4からVB6に載せ替えた時も、(主に各機能をOLEコンポーネント化する為)ほとんど全てののコードを書き換えた記憶があり、今回も当初から覚悟の上です。 > vb6は、構造化設計、vb.netはオブジェクト指向 当時はVB6でも「(『クラスの継承が出来ない』など不完全ながらも)機能別にOLEコンポーネント化する事でオブジェクト指向プログラミングが可能」との事でしたので、自分では曲がりなりにもオブジェクト指向でプログラミングした「つもり」でいました。(^^;) > Express Editionで可能かどうかは、開発しているvb6での開発時に有償ソフトを… なるほど… (開発予算の関係もあり^^;)有償ソフトは一切使用していませんので、Express Editionでもいけそうですね。助かりました。 DBは「VB6に付属したADOを使用してAccessデータベースに接続」しています。 そのADOの内部でどういう処理をしているかまでは知る術もありませんが、「.NETでもAccess データベースに接続する事さえ出来れば問題ないのではないか…」というのは楽観的過ぎるでしょうか? もし実行結果が変だったら、一番にその辺を疑う事にします。 いずれにせよ、「基本思想の異なるまったく別の言語で書き換える」という気構え・覚悟が必要なようですね。頑張ってみます! いろいろと教えて頂き、ありがとうございました。

その他の回答 (3)

回答No.4

通りすがりです。 前回回答に少し、説明不足がありましたので追記します。  expressには、複数のメンバーによる開発環境がありません。  また、便利ツール(VSSとかVisioなど)および開発に必要とされるツール(例ユーザーコントロ  ール)も必要最低限のものしかありません。なお、有償版においてもLAN環境で複数の開発メンバ  ーでシステム構築、WAN環境で複数のメンバーでシステム構築などの条件においてeditionが変わ  ってきます。このあたりは、開発ツールをそろえるコストと、それがなかった場合に発生する開発  コストを見積もり比較してどちらが低コストに抑えるかは、見積もり上つらいところですね。  また、開発において何か不具合があった場合の問い合わせ先についてもexpressだと不安要素も  あるかと思います。  具体的には、使用したクラス(標準クラス)に不具合を発見したがこの現象の回避策について  の検討、および改修されるのはいつごろかそれによって、どのように対処すべきかなどです。  このような場合には、開発元に問い合わせるしかないと思いますがexpressだとこのような  サポートは受けれないデメリットがあります。  これらも、調査の一部としてご検討しては如何でしょうか。  

donbei_bp
質問者

お礼

通りすがり様 補足のご説明ありがとうございます。 実は元々ははMS-DOS上の他言語で開発されたアプリでして、今となっては極小規模で、VB6でのソースも(フォーム情報も含めて)せいぜい数十MB程度です。 従ってソース管理ツールも(あればそれなりに便利かも知れませんが)特には必要ありませんし、今回の作業も私だけで担当します。 マイクロソフトへの問い合わせに関しても… 幸いVBの利用者が多いせいか情報も豊富ですし、前回VB6上で書き直した時も、特にマイクロソフトに問い合わせなければならい事は皆無でしたし、恐らく今回も乗り切れると思います。。 ただ「ユーザーコントロール」が限定されているというのは少々気がかりです。 それでも「最低でもVB6程度のモノはあるのではないか」という気もしますが…。 「論より証拠」。とりあえず、Express Editionをインストールして確認ししてみたいと思います。 いろいろと、親身にアドバイスして頂き、ありがとうございました。

回答No.2

.NET Framework の理解は当然として、現システムの中でも OLE 関係は VB 2008 または VB 2008 用のコンポーネントで実現可能かを調査するのを忘れずに。

donbei_bp
質問者

お礼

AKARI0418様 再度のご回答ありがとうございます。 なるほど… VB6の頃のOLEはもあくまで「単一Windows内での動作」が大前提でしたからね…。 そこがネットワーク連携をも視野に入れた「,NET」以降のOLEとは根本的に異なるところ…という事ですね!? その辺を肝に銘じて取り組んでいきたいと思います。 貴重なご助言、ありがとうございました。

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

現行アプリから仕様を抽出し、 必要な機能を洗い出します。 そこから、VB.NET用に再設計します。 まったく違う言語、環境への移植と思って取り組むことが、 一番の近道だと考えます。 言語のバージョン違いと思って、移行できるようなレベルではありません。

donbei_bp
質問者

お礼

AKARI0418様 早速のご回答ありがとうございます。 うーん、なるほど! 道は厳しそうですねー…益々気が重くなってきました。(--;) まずは仕様書とソースを一通り見直し、次にVB.NETの概要をを学習・把握し、新バージョンの仕様を見直し、作成に取りかかる…という事になりそうですね。 その中でも肝はやはり「.NET Framework」の理解でしょうか?