技術は時代共にどんどん発展していきますが、その影響を最も受けると言って過言ではないのは、プログラム言語ではないでしょうか。
かつて主流だったCOBOLなども、今や過去の言語という風潮です。JavaやC#と比べ、それらを扱える技術者は随分と少なくなったのが実情でしょう。
ですが、中には繰り返しそのバージョンをアップデートしてきた言語もあり、VB系列はその代表の一つです。VB1.0から始まり、VB6.0までのバリエーションが生まれ、更にはVBAやVB.Netなどの派生言語も生まれました。
今回注目したいのは、そんな派生言語の一つ、VBSです。VBランタイムを使わず、vbscript.dllで実行される言語ですが、最近は業務の場で見かけることはほとんどなくなってしまいました。
ですがVBSは、決して過去の遺物ではありません。VBSにしか存在しないメリットも数多く、改めて採用を検討する価値は十分にあると言えるでしょう。
そんなVBSにまつわるメリット、デメリットをそれぞれ簡単に解説していきたいと思います。
VBSならではのメリット6選
環境構築が不要
プログラム開発をするには、専用ツールを必要とすることがほとんどです。ですがVBSの場合は、そうした環境構築が一切いりません。
実際にはWSH(Windows Script Host)やASP(Application Service Provider)が必要ですが、WindowsのOSに標準機能として組み込まれていますので、特に意識することなく開発することが出来ることでしょう。
開発方法に関しても実に単純で、メモ帳にコードを打ち込むだけで良いのですから、これ以上ないほどお手軽ですよね。
② 動作環境の多彩さ
色々な環境でプログラムを実行出来るのも、VBSの魅力の一つです。
Windows上で動作させることはもちろん、HTMLに組み込んだり、サーバサイドで動作させることも可能です。手軽に、広範囲に機能を組み込むことはこれ以上ないメリットですよね。
これが他の言語の場合、動作環境の数だけ使用言語を切り替えなければならず、その分だけ多くの開発者が必要になってしまいます。
そうなれば相互の機能の連係に手間がかかり、システムテストに多くの工数を費やしてしまうことになるので、VBSの効率の良さは群を抜いていると言えるでしょう。
③ 機能拡張の柔軟さ
VBSは単純な言語であるが故に、機能的には貧弱な面がありますが、その弱点はコンポーネントによる機能拡張によってカバーすることが出来ます。
例えば「Basp21」というコンポーネントは、導入することでメールの送受信やバイナリデータの読み書き、FTP操作、正規表現なども出来るようになります。
④ アプリケーション操作も可能
VBSはアプリケーションに対する汎用性にも優れており、メモ帳のようなシンプルなアプリケーションのみならず、実はExcelなども操作することが出来るんです。
使用する際も、難しい設定などは必要ありません。Excelのインスタンスを生成すれば良いだけで、ブックの新規作成、セル操作、画面描画の停止など、いくらでも応用を利かせることが出来ます。
⑤ 言語構造の簡単さ
VBSのVisualBasicの派生言語であるため、言語構造が極めてシンプルなのもメリットの一つです。
修得が簡単で、環境構築の手間もなく、学習のハードルの低さは他の言語と比較しても抜きん出ているので、初心者にも扱いやすいことでしょう。
しかも.Netのような今も使われている言語にもその知識が通用するので、無駄になることがありません。まだ使ったことのない方も、サブ言語として学んでみてはいかがでしょうか。
⑥ ライバルが少ない
修得しやすいVBSではありますが、そうは言ってもこれをメイン言語に据えたプロジェクトはほとんど見られなくなりました。それは同時に、業務レベルでVBSを扱える人が少なくなってきたことも意味しています。
ですが、それは逆に考えればVBSの案件におけるライバルの少なさを意味しています。ひょっとしたら思わぬ高単価・好条件の仕事を受けることが出来るかも知れないので、就職活動の際は、是非それを考慮に入れて探してみてください。
VBSならではのデメリット6選
① 外部DLLが使えない
拡張コンポーネントが使える反面、DLLを使えないのは、VBSの大きなデメリットと言えるでしょう。
VBに詳しい人ほど「あのDLLが使えれば……」という場面が出てきますので、あくまで派生言語であることを念頭に置いておきましょう。
② エラー判定が困難
VBSにおいて特に厄介なのが、想定外エラーへの明示的な対処が出来ない、という点です。
別の言語であれば、エラー発生時は「GoTo」や「Try~Catch」などの構文によって専用の処理に飛ばすことが出来ますが、VBSの場合、「On Error Resume Next」を使ってエラー発生時に中断しないようにする、くらいのことしか出来ません。
エラー種類の判定も出来ないので、異常発生時の動きを細かく想定しておかなければならなくなります。
③ ファイルへのアクセス手段が少ない
プログラムにおいて、テキストファイルへの読み書きは頻繁に必要になる機能ですが、これを実現する手段が少ないことも問題です。
基本的にはFileSystemObject関数を使うしかなく、これは本当に「読んで」「書く」くらいの機能しかない関数です。そのためファイル破損のような想定外エラーに対応出来ない弱点があり、エラー判定が困難というデメリットは、こうした点にも影響しています。
④ 変数の型がVariantのみ
変数の型宣言が出来ない、というのもVBSの面倒なところです。実際は文字型変換や日付型変換、四則演算なども出来るため、内部的には「型」というものが存在しているのですが、コーディング上はVariant型しか用意出来ません。
短いプログラムならそれでも良いのですが、長く複雑なコードを書いていると、変数のデータ型を管理しきれず、エラーの発生源となってしまう可能性があります。
⑤ Select文の分岐方法が貧弱
大量のIf文を書くとコードの可読性が落ちるため、その対策として良く使われるのが、Select文です。
最初に分岐判定を行う変数を記述し、それに対する条件をシンプルに書いていけるのがSelect文の強みですが、.Netとは異なり、VBSでは等号(イコール)による判定しか出来ません。そのため不等号を用いた分岐を記述することが出来ず、結果として長々とした可読性の低いコードを書くしかなくなってしまうのです。
⑥ コンパイルが出来ない
多くの言語ではプログラムの起動前にコンパイルが行われ、構文などにエラーがあれば前もって通知してもらうことが出来ます。
ですがVBSにはそうした機能がないため、エラーが発生するのはプログラムを実行し、問題のあるコードに到達したタイミングになってしまいます。
そのためケアレスミスによるエラーを起こしやすく、どんな単純な機能でもテストケースを網羅しなければなりません。
今も前線で活躍する言語でもある
前述の通り、VBSにはデメリットがありますが、それを上回るメリットも存在するのが分かって頂けたかと思います。
それを証明するように、一昔前から続いているシステムの中には、リプレースがされず未だにVBSをメイン言語として活用しているものも多くあるんです。特筆すべきは、そうしたプロジェクトは大体、大規模案件であることが多く、そのため技術者を優遇してくれるということでしょう。
VBSは、数ある言語の中でもかなり修得が容易な言語ですので、これを機に勉強してみると、思わぬ好条件の仕事が見つかるかも知れませんね。