Visual Basic 2005でVB 6プログラマーの時代がやってくる

―― VB 2005+コンポーネント開発なら、OOPを強く意識しなくてもアプリケーションを開発可能 ――

グレープシティ株式会社
ツール事業部 PowerTools製品部 部長
鎌田 明 氏 (写真右)

グレープシティ株式会社
ツール事業部 テクニカルエバンジェリスト
八巻 雄哉 氏 (写真左)

聞き手:Insider.NET編集部 遠藤 孝信/一色 政彦
2006/05/20
Page1 Page2


Keyman Interview:文化オリエント 鎌田氏

 Insider.NETフォーラムの創設間もない2001年2月。当時の現行バージョンだったVisual Basic 6.0(以下VB 6)から、新しいVisual Basic .NETへの移行がどう進むのか、障害となるものは何か、などの疑問への回答を得るために、業務アプリケーション用コンポーネント・ベンダの代表的な存在であり、VB 6業務アプリケーション開発に詳しい文化オリエント(当時。現在は「グレープシティ株式会社」に名称変更)の鎌田明氏にインタビュー(インタビュー記事)を行った。

  あれから5年。.NETの普及を肌で感じるようになった一方で、VB 6から.NETへの移行は必ずしも順調ではないとも聞く。実際のところはどうなのか? 5年前のインタビューを振り返りながら、再度鎌田明氏、およびグレープシティのテクニカル・エバンジェリストである八巻雄哉氏に加わっていただき、VBの現在と未来について伺った。

(聞き手:Insider.NET編集部 遠藤孝信/一色政彦)

.NETへの移行は加速中。しかしVB 6からの本格移行はこれから

― 5年前のインタビュー(2001年2月)の段階では、.NETはまだ開発途中のベータ版でした。その後5年の間に、Visual Studio .NET(2002年2月、以下VS 2002)、Visual Studio .NET 2003(2003年5月、以下VS 2003)、Visual Studio 2005(2006年2月、以下VS 2005)と、開発環境のVisual Studioも3つのバージョンが提供されました。VB 6から.NETへの移行は、想定どおり進んでいますか。

 

鎌田:結論からいえば、5年前に想像していたほど移行は急ではありませんでした。5年前の想定では、3年後(2004年ごろ)までには、VB 6向けのActiveXコンポーネントと、.NET向けコンポーネントの売り上げ比率は1対9程度になると考えていましたが、現時点での売り上げ比率は3対7と、いまなお30%はActiveXコンポーネントになっています。

― ActiveXコンポーネントと、.NETコンポーネントの売り上げ比率が逆転したのはいつごろですか?

 

鎌田:2年ほど前だと思います。それ以前から.NETへの移行は徐々に進んでいましたが、特にそのころから加速してきた感じがします。

― 徐々に加速しながら、VB 6プログラマーが、.NETに移行してきたという感じでしょうか。

 

八巻:私も最初は、VB 6対応製品をお持ちのユーザーが、少しずつ.NET対応製品に移行するのかと思っていたのですが、展示会などでお客さまに直接聞いてみると、どうもそうでもありません。どうやら最初のうちは、JavaやC++言語のユーザーが新しい.NETの世界にまず飛び込んできて、その後VB 6プログラマーが移行しつつあるという感じがします。

鎌田:当社のテクニカル・サポートにお問い合わせいただいたユーザーの使用言語を過去3年にわたり調査した結果があります(図「グレープシティのテクニカル・サポートにおけるユーザーの使用言語」)。2003年から2005年までの変化に注目すると、VB 6は21%減少し、VB.NET(VS 2002、VS 2003、VS 2005のすべてのVBバージョン。以下“VB.NET”と表記した場合は同様)は16%増加しています。一方C#は7%増、JavaとVC++ 6はそれぞれ1.5%減、1.0%減です。VB 6の減少分すべてがVB.NETの増加につながっているわけではありませんが、この差分の5%に加え、JavaとVC++ 6の減少分(2.5%)がC#に移行したと考えると、おおよそつじつまが合います。

 
グレープシティのテクニカル・サポートにおけるユーザーの使用言語

― まだまだVB 6プログラマーの多くは.NETに移行していないということですね。

 

鎌田:先に述べたとおり、現在でも販売額の30%がActiveXコンポーネントですから、多くのVB 6プログラマーがいることは間違いないでしょう。しかし移行は着実に進んでいますし、これは新しいVS 2005でさらに加速すると期待しています。

― 移行しない理由は何でしょうか。

 

鎌田:業務アプリケーションでは、昔もいまも変わらない普遍的な部分が多いというのが1つの理由だと思います。実際、エンドユーザーから見ればVB 6で作ろうと、VB.NETで作ろうと、簡単には違いは分かりません。

八巻:.NETが登場した最初のころは、よくお客さまから「.NETで作るとどんなよいことがあるのか?」と聞かれました。これには簡単には答えられませんでした。特にエンドユーザーの方々にメリットを説明するのは難しいです。

― エンドユーザーから見てソフトウェア機能が変わらないのなら、アプリケーションを開発する方としては使い慣れたVB 6の方が手っ取り早い、ということですか。

 

鎌田:VB 6で開発したクライアント/サーバ型アプリケーション(以下C/Sアプリケーション)をWebアプリケーション化するという話をよく聞きます。その際苦労する点を聞くと、「Enterキーで次の入力項目に移動させたい」「ファンクション・キーを使って操作させたい」など、従来の使い勝手をどうやってWebでも実現するか、というものが多いのです。

 これらはWebアプリケーションで実現するには大変な手間がかかるのですが、エンドユーザーは従来どおりのインターフェイスを求めています。つまりテクノロジーが変わっても、業務アプリケーションのニーズはあまり変わらないということだと思います。

八巻:そうですね。VB.NETの開発効率は間違いなく高い。けれど初期の学習コストはかかりますから、VB 6を長年使い慣れたプログラマーにとっては、結果的にVB 6で作った方が効率的ということでしょう。

VB.NET移行の最大のハードルは“OOP”だったのか?

― 5年前のインタビューで、鎌田さんは、VB 6からVB.NETへの移行ハードルは「オブジェクト指向プログラミング(Object Oriented Programming:OOP)」だとおっしゃいました。5年たってみて、この仮説は正しかったと思いますか。

 

鎌田:間違いではなかったと思いますが、少々過大に取り上げられすぎたかなとも思います。VB.NETでも、フォームにコントロールを貼り付けて、イベント処理を記述するという点ではVB 6と同じです。

 オブジェクト指向プログラミングを知っていた方が効率的な開発が可能だと思いますが、「OOPを知らなければ始まらない」という先入観につながってしまっているとすれば、それは行き過ぎです。

八巻:弊社のサポートに届く声を聞いていても、「.NETはOOPが前提で難しい」という先入観ばかりが先行してしまっているように感じます。特に、すでにあるコンポーネントを使うだけなら、独自のクラスを作成しないで済みますから、VB.NET環境でもVB 6的なアプローチでアプリケーション開発ができると思います。

― Insider.NETでアンケートをとっても、「.NETプログラミング最大の難所はOOP」という結果が出ています。本当にOOPを意識しないで使えるのでしょうか。

 

八巻:私の場合、.NETを始めて最初に困ったのは、砂時計カーソルが出せなかったこと、次に困ったのは「vbRed」という定数で色を変えられなかったことでした。どちらもつまらないことですし、分かってしまえば何ということはないのですが、こういうちょっとしたつまずきから抜け出せないで挫折する人が少なくないように思います。

 考えようによっては、「OOPが分からない」というのもつまらないつまずきの1つといえるでしょう。第1段階の小さなつまずきを1つ2つ超えたら、後はVB 6で培ったことが変わらず使えると思えるようになるでしょう。まぁ最初は、つまずいて転んでみるのも悪くないですよ。自転車だってさんざん転んで乗れるようになるわけですから(笑)。

― 「OOPを知っていた方が効率的」というお話がありましたが、これはどういう意味ですか。

 

鎌田:社内で数人のプログラマーにプログラミングの課題を出したことがあります。課題というのは、Enterキーで次の入力項目に移動するようなアプリケーションを、VB 6とVB.NETの両方で作るというものです。これを実現する方法はいくつもあります。

 VB 6では、KeyDownイベントで、TabキーをSendKeysステートメントで送るか、コントロールのSetFocus関数を呼び出すかすることで、入力フォーカスを移動できます。VB.NETでもこの方法はそのまま使えます(具体的にはSendKeysクラスのSendメソッドや、コントロールのFocusメソッドが使える)。しかしVB.NETではこれらに加え、フォームやコントロールのProcessDialogKeyメソッドのオーバーライド、拡張プロバイダ(=プロパティをほかのコントロールに追加する機能)でコンポーネントを作って実現する方法などでも可能です。

 結果、VB 6プログラマーは、VB 6とVB.NETのどちらの場合でもSendKeysステートメント(SendKeysクラスのSendメソッド)などを使う同じ方法を取りました。しかし、VB.NETプログラマーは、VB 6ではSendKeyステートメントを使い、VB.NETでは(OOPの知識が必要となる)ProcessDialogKeyメソッドのオーバーライドを使うというように、それぞれのコンテキストに合わせた方法を採用しました。つまり、OOPを身に付けている.NETプログラマーの方が、実装方法を柔軟に選択できるということです。

― オブジェクトとかメソッドを知らないと、オーバーライドという発想は出てきませんね。

 

鎌田:そうですね。VB 6プログラマーはこの課題後、「ああ、.NETにはそういう実現手法もあるのか」と驚いていました。どちらが正しいということではありませんが。

 
 

 INDEX
  VB研 Interview
  Visual Basic 2005でVB 6プログラマーの時代がやってくる
  1. .NETへの移行は加速中。しかしVB 6からの本格移行はこれから
    2.Visual Studio 2005で世界はどう変わるのか?


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH