はじめに
VB6(Visual Basic 6.0)のサポート終了を目前に、VB6開発者が今すべきことの一つに.NETプログラミングが含まれることと思います。
本連載では、.NETプログラミングをC#で始めるための具体的な方法をVB6のコードとC#のコードを比較しながら、できる限りわかりやすく解説します。
VB6サポート終了とは?
VB6というプログラミング言語は、技術の習得が容易であったり、生産性が高いなどの理由から多くのプログラマに利用されてきました。このことは、VB6を提供しているマイクロソフトのサポート期間が長期間であったことからも明らかと言えるでしょう。
さて、このVB6のサポート期間ですが、2008年4月8日をもって終了となることをご存じでしょうか?
マイクロソフトのVB6ライフサイクルガイドラインによれば、メインストリームサポートと呼ばれるものは、2005年3月31日に既に終了しており、現在は延長サポートフェーズに属しています。この延長サポートフェーズが2008年4月8日で終了し、翌9日からは非サポートフェーズ、つまりサポートされない状態になるのです。
ただし、サポートが終了するのはVB6 IDE(統合開発環境)で、主要なVB6ランタイムファイルはこの対象ではありません。Windows Vistaには、主要なVisual Basic 6.0ランタイムが同梱されていますが、これらはOS(オペレーティングシステム)の一部として扱われるため、Windows Vistaのライフサイクルを通してサポートが続くということです。
これらの詳細については、以下の URL が参考になるでしょう。
つまり、今後はVB6で開発されたソフトウェアの動作環境は継続されながらも、そのソフトウェアの開発に必要な製品のサポートが終了するという状態になります。
今何をすべきなのか?
次に、ライフサイクルが終了した製品で開発されたソフトウェアが今後数年間動作し続けることによって、一体どのような問題が生じるのかを考えてみましょう。
お客様は、ソフトウェアを使い続けるため、何らかのトラブルが発生したり新しい機能を要求してきます。しかし、我々はサポートされていない開発環境を使って、それらのサービスを提供するしかありません。
このことが、どれだけ危険でなことであるのかは言及するまでもないでしょう。
以上を踏まえて、我々は今何をすべきなのでしょうか? 私なりの回答を以下に列挙してみます。
- VB6の開発環境を温存する
- VB6以外の開発環境を整える
- VB6で開発したソフトウェアの今後を決める
開発環境の温存は、新しい開発環境を整えてVB6のソフトウェア資産を移行するための準備期間を確保するために必要です。そして多くの人は、新しい開発環境として最新のVisual Studioを選択し、.NETプログラミングによる開発にシフトすることになるはずです。
このことは決して不幸なことではなく、むしろVB6プログラマが.NETプログラミングを開始する最後のチャンスであり、VB6で開発したすべてのソフトウェア資産を.NETに置き換えるきっかけとなる素晴らしい出来事だと私は思っています。
VB6は素晴らしいプログラミング言語でした。しかし、既に過去のテクノロジーであることも事実なのです。
どうせ始めるならC#で!
私はVB4~6をメインの開発言語として使ってきましたが、Visual Studio 2005の発売をきっかけにC#への移行を決意しました。このため、この項は私の経験から感じたことを重視して記述させていただきます。従って、私の私感が若干混じっていることをご承知おきください。
VB6開発者の皆さんにとって、.NETプログラミングを始めるならVB.NETを選択することが自然だと思うことでしょう。また、VB6で開発したプロジェクトファイルをVB.NETで開くと、「Visual Basic アップグレード ウィザード」が起動し、画面の指示に従うことで簡単にVB.NETに変換されたソースコードを得ることができます。さらに、変換されたコードを見ると、全体的にVB6で見慣れた構文をたくさん目にすることができます。
これによって、VB6の開発者はVB.NETに親近感を覚えるとともに、実際の移行が思ったよりも困難ではないと錯覚します。
しかし、変換されたコードが完全に動作せずにデバッグを開始する、あるいは機能を変更するなどの理由で、上記によって変換されたコードを局所的に見た時に、恐らくVB.NETがVB6とは似て非なる言語であることを知って愕然とすることでしょう。
非なる理由はいくつかありますが、主にVB.NETがオブジェクト指向に基づいてプログラミングできるように設計されているという点においての違いが目立ちます。ソースコード中には、オブジェクト指向プログラミングのために拡張されたキーワードが見受けられたり、見慣れたステートメントも各種オブジェクトに相応したメソッドとして提供されているなどの違いが随所に目立ちます。
そして何より、.NET Frameworkという巨大なクラスライブラリーから提供される便利なクラス名の数々が最初からソースコード中にひしめき合っている様は、それを初めて見る開発者にとって脅威以外の何物でもありません。
これは私の私感も混じっているかもしれませんが、VB6とVB.NETよりも、VB.NETとC#のほうが比べ物にならないくらいに近しい関係にあります。
そして、どうせ似て非なる言語であるなら、同じVBというキーワードだけでVB.NETの習得を選択するよりも、まったく異なる言語と認め、折角新しい言語を覚えるこの機会にC#を習得するという選択肢を私はお勧めします。また、仮にVB.NETも習得したいとお考えなら、C#を習得してからVB.NETを習得する方法を私はお勧めします。
今後の予定
VB6で開発したソフトウェアが既にあると仮定し、そのソフトウェアを実際にC#に移行しながら、各場面で必要な内容を解説していく予定です。これによってVB6の知識を生かしながらC#の基本的な知識を無理なく自然に身につけることができることと思います。
そして、本連載を読み終えた方が「.NETプログラミングは脅威ではなく楽しいものだったんだ!」と言ってもらえることを目標していきたいと思います。