VBでできること、できないこと(理論編)
およそ今日の高級言語にとって、実現できないことなど無い! と言ってし
まってはこの章がこれで終わってしまいますね。
でも、パワーユーザーでもない限りVBに不可能を見いだすのは難しいです
よね。逆に言えば、VBで実現できることの壁を感じる位になったら、「あなたは立派なプログラマー」ってことです。
私もVBの全てをしゃぶり尽くした訳ではないですが、知ってる限りでも
- WindowsのAPI(Application Program Interface)が呼び出せる。
つまり、Windwsそのものや誰かが作ったDLLの機能を借りてきて、VBのプロ
グラムから利用できるということです。
- 様々なカスタムコントロールでプログラミングをパワーアップできる。
OCX(今ではActiveXって言うんですよね)というカスタムコントロールをFormに
ペタペタと貼り付けることで、普通では実現できない(あるいは実現の難しい)
機能をMyプログラムに取り入れることができます。
例えば、グリッドコントロールはエク○ルとか1−●−3のような表計算ソフ
トの外観を提供してくれます。
- オブジェクト指向言語である。
この言葉が一般に使われ出したのは90年代に入ってからだったと思うのです
が、当時私は「オブジェクト指向」の概念がちんぷんかんぷんでした。
しかし、VBに触れてみて「オブジェクト指向」の爪先くらいは感じられたと
思います。
まだまだあると思うんですが、これくらいにしときましょう。
次にVBのいいところ。
- GUIを駆使した開発環境で初心者でも簡単にプログラムが作れる(作れそう
?)
これって殺し文句ですよね。私が初めてVBに触れたのはWindowsのバージョ
ンがまだ3.0の頃でした。
当時、会社でVisualBasic2.0(英語版)を買った人がいて、ちょっくら触らせ
てもらったところ、「ふ〜ん、やっぱりこういうのが出たか」という驚きとも感
心とも付かない感想を持ちました。
当時のWindowsプログラムはMicrosoft-CとかBorland-CというC言語がメインで
、しかもMS-DOS上でソースを編集&コンパイル、Windowsを起動して実行&テス
ト。といったもので、とても素人に手の出せるものでは無かったのです。
それに比べてVBではWindows上で動作し、Formというウインドウにボタンと
か入力枠をペタペタと貼り付けて、必要な所だけプログラムを書けばよいという
画期的なものでした。(しかも言語はBasicという初心者にはお馴染みの言語!
)
そう、これを見た誰もが「僕も、私もWindowsのプログラムが書ける!」と思
ったことでしょう。
- イベントドリブンなプログラムで、プログラミングが最小の手間で作れる。
「イベントドリブン」の意味は手元のマニュアルでお調べいただくとして、と
にかくボタンが押されて「こんにちは」と表示するプログラムなら、ボタンが押
された時だけのことを考えてプログラムを書けばいい、ということです。
「そんなの当たり前やんけ」と言われそうですが、これをCなんかで書こうと
思ったら、ウインドウの外観とかボタンの大きさに始まって何百行というプログ
ラムを書かなければいけないのです。
また、CとかPASCALのように「関数」や「プロシージャ」が言語仕様に
取り入れら他こともN88-Basicからのプログラマにとっては嬉しい限りです。
昔のBasicは「Gosub 990・・・Return」などと行番号のみでサブルーチンを作
っていたのですが、この分かりにくさに泣かされたものでした。
ちなみに、「Sub」の仕様はVBの前身であるQuickBasicで採用されたもので
「おお、これぞ構造化言語!!!」と驚いたものでした。この時ばかりは「マイク
ロソフト万歳!」と手を叩きました。
- プログラムのサイズが非常に小さい。
普通にプログラムを作っていて、EXEファイルのサイズが100kbを越えるは稀で
しょう(ただし、フォームにビットマップを貼り付けたりしたら別ですが)。
Windowsの「メモ帳」ですら34kbですから、VBで作ったプログラムの小ささ
は魅力です。
これはVBプログラムを動かすのに、「Vb4jp32.dll」を始めとするライブラ
リ群に頼っているためです。(その中には前述のOCXも含まれます)
サイズが小さいということは、インターネットやパソコン通信でプログラムを
やりとりするのには非常に便利です。ただしこれには裏があって、受け取った相
手もVBを動かせる環境にないといけません。これは後述します。
- インタープリタ言語である。
かつて、Basicがプログラミングの入門言語とされていたのは、まさにこのた
めです。
今ではCでもPASCALでも「統合環境」が当たり前になっていますが、こつこつとプログラムを1ステップずつ作って
いく、壮大な夢はあるけど計画性がない私のようなプログラマにはうってつけの言語でした。
しかし、現在のVB(4.0)では実行時に中間へのコンパイルをしているので、
この旨みが半減しました。
うーん、ここまで来るとVBはきっと万能のプログラム言語に違いない。と
いう錯覚に陥ります。
次にVBのあまり良くない点ですが、実はこっちの問題の方がシビアなので
す。
- 実行速度が遅い。
これは前述のプログラムのサイズが非常に小さいの反作用ですが、VBで作ったEXEプログラムは、実は実行可能なプログラ
ムそのものではなくて中間コードであり、その実行部分のほとんどをライブラリ
に頼っているためです。
まぁ、古来より「Basicのプログラムは遅い」というのが定めですから、この
辺はあきらめましょう。
- バージョン間の互換性の問題。
VB2.0で作ったプログラムを4.0で読み込んでみましょう。アップグレードに
関する様々なダイアログが表示されますが、無事に動くでしょうか?
もし、2.0用に作られたサードパーティー製のVBXを使っている場合、まず満足
には動かないでしょう(当然4.0用の新しいOCXを持っている場合は別ですが)。
あなたに新しいOCXを作る環境と腕がなければ、指をくわえて新しいOCXがリリ
ースされるのを待っているしかありません。
また、無謀にもベータ版のインターネットエクスプローラーやVB5.0CCE
をインストールしている場合は、作ったプログラムを配布しても別のコンピュー
タでは動かないといった事態を招くおそれがあります。くれぐれも注意しましょ
う。
これは、新しくインストールしたソフトがライブラリを新しいバージョンに勝
手に置き換えてしまうためです。当然ベータ版のライブラリはテスト中のものだ
し、ライブラリそのものも下位への互換性を無視して仕様が変わってしまう、な
んてことがあり得るからです。
(私はかつて、自分の作った配布ディスクが客先でインストールできない、と
いう事態に見舞われました。よくよく調べてみると、自分のコンピュータにこれ
らベータ版のソフトがライブラリを置き換えていた事が原因だと判りました。開
発マシンでは、「ベータ版のソフトをインストールしない」とか「バージョンの
違う開発環境は併存できない」が当たり前のようです)
他にもVBに関しては、使えば使うほど悪いところが見えてきます。
「あばたもえくぼ」とは言いませんが、VBのウィークポイントが見えてくる
ほど、よりよいプログラムが書けるようになるのもまた事実です。
その障害を乗り越えて、自分なりの解決法を見つけられるようになれば、あな
たも立派なパワープログラマです。
目次に戻る