Visual Basicの未来
2001年4月30日執筆
今回は「Visual Basicの未来」と題して、Visual Basicを使うことが有利なのか不利なのか、他のツールと比較してどういった点で問題があってどういった点で優れているのか、私の考えを説明したいと思います。
説明法としてはVisual Basicと関係のあるツールをひとつずつあげていって比較するという方法をとります。
1.VBの優れた点・問題点
私などは普段「こんな機能がほしいなぁ」と思うことがあると、VBでちょこちょこっと作ってしまったりします。そんな人は案外多いのではないでしょうか。これこそがVBの最も優れた特徴です。つまり、「早い」「簡単」というわけです。世間ではこのようにすばやく作れる開発ツールをRADといったりします。
VBの優れた特徴を思いつくままに挙げてみます。
VBびいきの私としてはまだまだ思いつくのですがとりあえずこのくらいにしておきましょう。普段VBを使っているとこういったことは当たり前のように感じてしまいますが改めて考えてみるとどれも偉大なことですね。
こんなVBですが、いくつか問題点があります。列挙してみましょう。
これはもうしょうがないこととVBプログラマーの方々は承知していると思います。では、他のVB以外のツールではどうなのでしょうか?これらの欠点を克服し、さらにVBより優秀なツールは存在するのでしょうか?
2.JAVA
現在、VBの最も有力な対抗馬の1つがこのJAVA(ジャヴァ)です。JAVAはプログラミング言語で、文法はC++言語ににています。というのもC++を元に作られたのですから当然でしょう。
JAVAの最大の利点はなんといっても「どんなOS上でも作動する」ことです。このため、Windows、Mac、Linuxはもちろん携帯電話やザウルスなどでもJAVAを使ってプログラムできます。これはVBプログラマから見ると実にうらやましいことです。
また、このようにOSを選ばない性質(とその来歴)により、JAVAはインターネット界では主流となっています。インターネットでプログラミングするといえばJAVAは避けて通れません。無理してVBだけでプログラムすることもできますが制約がかかってきます。
JAVAに関しては今言ったような利点ばかりが宣伝されているので「VBよりJAVAの方がいいんじゃん?」などと思ってしまいそうですが欠点もあります。JAVAが動作するためにはJVM(Java Virtual Machine)という一種のランタイムがインストールされていなければならないのです。JVMはJAVAで作成されたプログラムを逐一コンパイルして実行していくエンジンのようなものです。JAVAプログラムはこのJVMのおかげであらゆるOSで動かすことができるのですが、そのせいで実行速度は遅くなります。(公平の観点から付け加えますが、そうであってもVBとどちらが遅いかは不明です)。
さらに、VBと違って、JAVAにはまともな開発環境がまだ提供されていません。現在JAVAプログラマーの多くはテキストファイルにコポコポとプログラムして、DOSを呼び出して、JAVAC myprogram.java のようにコマンドを入力することによりコンパイルしているのです。ですから、フォームにボタンを配置するのも大変です。VBのようにマウスで操作する環境が整っていないのですから。
とはいってもここ数ヶ月の動きではようやくJAVAにもVBにような統合開発環境(IDE)が整ってきたかと思わせるものもあります。Borland社(旧:Inprise社)のJBuilder4はVBのように操作できるし、Sun社のForteも同様です。重要なのはどちらも最下級エディションが無料で利用できる点でJAVAプログラマの裾野を確実に広げています。
しかし、どちらも完成度はVBにくらべるといまいちで「使いやすい」といえるレベルではありません。テキストファイルにプログラムして手動でコンパイルするよりははるかにましといった程度です。
とまぁ長々とJAVAの悪口を書いてしまいましたが私はJAVA否定論者ではありません。実際私もJBuilder4やForteを使っています。VBびいきの私がなぜJAVAを使っているかというと敵情視察という意味もあるのですが、「JAVAはVBにできないことができる」というのが大きいです。
それは先ほども書いたWEBプログラミングの領域と携帯電話(iモード)です。実際JavaAppletが簡単に作れるJBuilder4はすばらしいし、JavaScriptはほとんどのブラウザで動作するので安心して使用できます。(VBScriptはIEでしか動作しない)。
以上でJAVA対VBは終了して結論。
総合的にはVBの方が優れている。
基本的には無料!
WEBプログラミングや非Windows上でのプログラムにはJAVAを使う。
JAVAは真新しいので取りざたされているが欠点を見逃してはならない。
3.Delphi
Delphi(デルファイ)は昔からVBの最も有力な対抗馬として騒がれていながらいまだにVBの王座を覆せないでいる開発ツールです。VBと違ってツールの名前と言語の名前が一致していなくて、Delphi上ではPASCAL(パスカル)という上品な言語を使ってプログラムします。
機能面では多くの人が認めるようにDelphiの方がVBより優秀です。DelphiにできてVBにできないこともあると思います。また操作性ではVBとDelphiは互角で、Delphi上でもマウスを使って簡単にフォーム上にボタンやテキストボックスを配置したりできます。
さらに、Delphiで作ったプログラムは特別なランタイムなしで動作します。おまけに、ついにLinux進出もはたしVBとちがってWindowsの垣根も越えてしまうというすばらしいツールです。私も使っています。
では、なぜDelphiが普及していないかというと、VBより知名度が低いからだと思います。
また、機能面以外に言及すればVBと比べて次のような不利な点が上げられます。
このような不利な点もありますが純粋にプログラムツールとして考えた場合は最初に書いたようにVBより上でしょう。
以下は結論。
言語の性能だけを見ればVBより優れている。
Linux進出も果たし、人気急上昇が予想される。
多少言語が難しくてもいいという人はDelphiに乗り換えるのも手。
なお、余談ですがDelphiの開発チームの責任者はMicrosoftにヘッドハンティングされて今ではVB7の開発チームに加わっています。
4.C言語 / C++言語
C言語やC++(「シープラスプラス」と読む。人によっては「シープラプラ」、さらに「プラプラ」とも言う)はプログラムを大変細かく制御できます。そのため完成するプログラムの性能はほとんどの場合VBより上です。
ところがこの言語はずっとVBと共存してきました。すみわけがされているのです。世間の認識では、「VBでできるプログラムはVBで、VBでできないプログラムはCで」というものです。実際C言語でプログラムするときはいろいろ細かい点をプログラマが制御しなければいけないので大変です。VBでは1行も書かなくてもフォームを表示できるのに、C++では何十行かかかなければフォームも表示できません。
まぁ、すでに住み分けが完成しているのでVBの対抗馬としては無視していいような気もしていましたが次の言語の登場で事情が変わってきました。
5.C#
C#(シーシャープ)は去年登場した新しい言語でC++を基に作られています。JAVAもC++を基に作られたのでC#とJAVAは兄弟なわけで、よく似ています。しかし、大変仲の悪い兄弟となるでしょう。というのもC#はJAVAに対抗するためにMicrosoft社が作り出した言語なのです。
JAVAに対抗するという仕様のために、無関係であったVBにも対抗する性能となっています。JAVAと違ってWindowsプログラムにも強く、フォームにマウスでボタンを配置していくようなことももちろんできます。
さらに、Microsoft社はC#の使用を公開して、標準化団体に提出していますからVBのようにMicrosoft専用の言語というわけではないのです。またJAVAの対抗馬ですからWEBにも強いらしいです(この辺は私もよく知りません)。
結論
C#はまだ未成熟なので慎重に見守る必要がある。
正式なC#開発環境はまだリリースされていないはず・・・(?)
6.VBの暗い未来
VB.NET(VBドットネット)は別名VB7です。これまでのVBと仕様が大きく変わるのでもはや別の言語といった感もあります。この仕様変更はVBが難しくなることを意味しています。このためVBのもつ利点のいくつかは消滅します。この点をもう少し説明しましょう。
元来、VBは開発言語としての純粋なVBのほかにOfficeに搭載されているマクロ言語としてのVB(VBA)と、ブラウザ上やWSH(Windowsに標準装備されているスクリプト実行エンジン)で動作するスクリプト言語としてのVB(VBS)と3種類あり、どのVBも言語使用が一緒だったため1つマスタすれば他も使えるというすばらしい仕組みになっていました。
ところが、時期VB7から、開発言語としてのVBは仕様が大きく変わるため、VBAやVBSとは別の道を歩むことになります。そう入っても同じVBなのですからそれほど違うというわけではありませんが、いままでに比べたら大きく違います。いままではVBで作ったプログラムをコピーして、VBAやVBSに貼り付ければそのまま動いてくれましたが、これからは必ずしも動くとはいえません。もちろん動くところもあるでしょう。
このことから、VBをマスタすればOfficeの世界にも活用できるという利点の一つは消滅しないまでも割り引いて考えなければいけなくなりました。時期Officeである、Office XPのVBAは以前のVBと同じ仕様になっているのです。
さらに、難しくなったため「習得が容易」で初心者が入りやすいという利点は消滅しました。難しくなったといってもJAVAやC#、Delphiとくらべて難しいというのではなく、今のVB6とくらべて難しいというだけですがやはりこれは大きいと思います。
このようの利点を捨ててまでなぜVBはかわらなければならなかったのでしょうか?
それはMicrosoft社の .NET言語(ドットネット言語)というコンセプトにあります。このコンセプトではあらゆる言語が平等に取り扱われます。VBもC#もJAVAもCOBOL(コボル)もFORTRAN(フォートラン)もどれも.NETという枠組みの中で平等なのです。
平等というのはどれでプログラムしても出来上がるものの性能は同じということです。今まではVBではあれはできるがこれはできない、JAVAはあれにはいいがこれは苦手だ、Cはあの処理ははやいがこの処理はDelphini劣るなどなど言語の間での性能の違いがありましたがそういったものがなくなるというのです。
そのため、「VBだけ独自の仕様を貫く」わけにはいかなくなって今回の仕様変更になったようです。しかし、これはVBのパワーダウンではありません。言語の性能としてはVB7はVB6を圧倒的に凌駕します。継承可能なクラスの作成、マルチスレッドのサポート、どれもいままでVBプログラマが他の言語をうらやましく思っていた機能です。
しかし、他の言語との区別がなくなればVBじゃなくてもそれらの機能を利用できるということですからかならずしもVBを使う必要もなくなるわけです。
これらの点から考えて Visual Basicの将来は不透明である という怪しい結論に到達します。
不透明というのは「明るい」か「暗い」かわからないということです。まだ、VB.NETが正式に発売されていないのでわからないということです。まぁ実際にやってみてください。VB.NETのベータ2は一般開発者向けにも大量配布する計画だといううわさがありますので手にいれてやってみるといいでしょう。私のベータ1をやった感想ではたしかにVB.NETはすごい!
7.VBの明るい未来
VBが滅びるということは絶対にありません!なぜなら、VBAとVBSがあるからです。私の考えではVBはWindowsのマクロ言語としてWindowsが栄える限り活躍していくことと思います!
さらに、OfficeにVBAが搭載されていることは実は大変重要です。OfficeはMAC用のものも発売されていて、それでもVBAが使えるのです。つまり、Officeを通してVBはMACの世界にすでに進出しているのです。(ただし、私はMACを使ったことがないので実際このVBAがどの程度のものだかは知りません)。
そして、未確認情報ですがMicrosoft社はついにLinux用のOfficeの発売を発表したということです。となればVBはまたしてもOfficeを通してLinux界に進出というわけです。これは大きい、明るい話題です。
8.まとめ
結局まとまりのない主張でしたが、一応まとめておきます。