|
Andrew Clinick
Program Manager
Microsoft Corporation
May 4, 1998 日本語版最終更新日 1999年7月7日
この記事はスクリプティングに関する特集シリーズの1回目で、もともとはSite Builder Network Magazineに掲載され、MSDN Online Voices に転載されたものです。
Microsoft Script Groupのプログラム マネージャが最もよく尋ねられる2つの質問:
- 「VBScript と JScript のどちらを使えばいいのでしょうか?」
- 「Microsoft は JScript を優先して、VBScript を放棄する予定なのですか?」
MSDN Online のスクリプティングに関する特集シリーズの1回目では、この難しい問題に取り組み、各言語の背後にある Microsoft の思想と、それがユーザーの決定にどのような影響を与えるかという点について説明したいと思います。最終的には、どちらの言語を使用するかはユーザーの決定に任されるからです。
どちらを使用するべきか?
多くの人にとって、プログラミング言語の選択はほとんど宗教的な問題となっています。C でプログラミングをしている人に、Basic を使うべきだと説得するのは不可能です。同じように、Basic プログラマは、見慣れない構文と、まったく別の考え方を学びたいとは思わないでしょう。Microsoft Script Group は、複数の言語の選択肢を提供することにコミットしています。この選択肢は、Microsoft の VBScript と JScript から始まりますが、そこで終わるわけではなく、他の言語(Perl、Python など)も Microsoft のスクリプティング ソリューション(Internet Explorer、Internet Information Server、Windows Scripting Host)の中で同じように利用することができます。
どの言語を使用すべきかという決定に影響を与える要因には、次のものがあります。
- 対象とするプラットフォーム
- 言語の機能
- 個人的な好み/既存の知識
対象とするプラットフォーム
開発の対象となっているプラットフォームは、どの言語を使用するかという決定に大きな影響を与えます。この決定は、クライアントとサーバーに対して別々に行われます。
サーバー
サーバー上での言語の決定は、ターゲット プラットフォームの影響を受けません。サーバーはプログラマが制御できるからです。ただし、これには Microsoft のサーバー製品を使用しているという前提があります。サーバーの開発を行う場合には、大部分のサーバー機能は COM オブジェクトに実装されているので、外部の COM オブジェクトのスクリプティングを行う能力の方が言語の機能よりも重要となります。たとえば、COM オブジェクトが提起したエラーに対応する能力の方が、言語の拡張機能を使える能力よりも重要となるでしょう。
クライアント
インターネット上でHTMLのスクリプティングを行う計画があり、Netscape と Microsoft の両方のブラウザを「広範に」サポートしたい場合には、言語としては JScript を選択するしかありません。Netscape は VBScript をサポートしていないので、最新のブラウザで表示できるようなページを作りたい場合には、JScript を使用する必要があります。ただし、JScript を使ったからといって、スクリプトがすべてのブラウザ上で動作するという保証はありません。というのも、代表的なブラウザの間でも、HTMLオブジェクトモデルへの適合性にはさまざまな違いがあるからです。HTML 3.2 (World Wide Web Consortium(W3C)のspecification を参照)と ECMAScript(ECMA Standard を参照)の機能に準拠していれば問題はありません。
Dynamic HTML(DHTML) プラットフォームを対象として開発する場合の決定は、いくぶん複雑になります。W3C の Document Object Model と HTML 4.0 は、Web 開発の最新技術を定義していますが、現在のバージョン4.0のブラウザのこれらの標準に対する適合性はまちまちです。DHTML の仕様のすべての機能を使いたい場合には、Internet Explorer 4.0 を使用するべきでしょう。この場合には、言語の決定はいくぶん簡単になります。Internet Explorer 4.0 は VBScript と JScript の両方をサポートしているからです(ただし、Macintosh 上では、現時点では JScript だけがサポートされています)。つまり、Internet Explorer をターゲットとし、サイトに Macintosh ユーザーが来ないことがわかっている場合には(イントラネットの場合など)、どちらの言語を使ってもかまいません。
言語特性
VBScript
VBScriptは、完全なVisual Basic® プログラミング システムのサブセットとして設計されています VBScript の基本的な性質を以下に示します。
- Basic 開発者に、クライアントとサーバー上での Web 開発へのパスを提供します。
- 使いやすく、理解しやすいスクリプティング言語を Web に提供します。
- Visual Basic または Visual Basic for Applications がカバーしていないプラットフォームに、Visual Basic 言語ファミリーを提供する。
大部分の読者は、VBScript を主に 3種類のアプリケーションで使用することになるでしょう。Internet Explorer、Internet Information Server、およびWindows Scripting Hostです。ここではこの3つのアプリケーションについて具体的に説明しますが、長所と短所は他のアプリケーションにも当てはまります。
長所
- 理解しやすく、習得しやすい VBScript の最も大きな資産は、それが短期間で学べるように設計された言語、すなわちBasicであるということです。Visual Basic は、Basic ユーザーに、言語の理解のしやすさという特徴を保ちながら、より複雑な言語の持ついくつかの利点を提供します。
- Visual Basic であること Visual Basic は 1991 年に登場してから大きな成功を収めてきました。現在では、Visual Basic 開発者の数は 300 万人にものぼります。この人々が学んできたスキルは、すべて VBScript にただちに応用することができます。また、Visual Basic の学習に関するトレーニング、書籍、および雑誌を提供している巨大なコミュニティが存在します。
- 柔軟である VBScript は幅広いアプリケーションに使用することができます。また Microsoft は、スクリプティングをサポートしているアプリケーションでは、必ず VBScript も用意することにコミットしています。
言語特性
- エラー処理 VBScriptは、Visual Basic が提供するエラー処理のサブセットを備えています。これには、error オブジェクトと on error resume next が含まれます。サーバーサイドコードを開発するときには、ほとんどの機能でエラーを提起する可能性のある外部 COM オブジェクトにアクセスしなくてはならないため、エラー処理が非常に重要となります。
- 書式 VBScript言語には、日付、数値、および通貨の書式を設定する機能が内蔵されています。
- COMとの簡単な統合 多くのCOMオブジェクトは、コレクションの形で情報を返します。VBScript には、コレクションの繰り返し処理のサポートが内蔵されています。
- 標準的なイベントバインディング構文 Visual Basic 開発者は、イベントハンドラの object_event (sub button1_onclick) という命名規約をすぐに理解することができます。VBScript もこれと同じ方式を使用しているので、イベントバインディングをサポートしているすべてのアプリケーション(Internet Explorer、Outlook、および Windows Scripting Host など)で、この構文をイベント接続するコードに使用することができます。これはまた、既存の Visual Basic コードを切り取って、VBScript に貼り付けることができるということも意味しています(もちろん VBScript でサポートされている機能を使用しているという前提があります)。
JScript
JScript は、C、C++、および Java を使用している多くのプログラマが魅力を感じるような汎用のスクリプティング言語として設計されています。これらの言語から必要に応じて機能を「借りて」いるにせよ、JScript は独自の言語であり、C や Java にない多くの機能を持っています。JScript はブラウザの中でしか使用できないわけではなく、VBScript を使用できるアプリケーションのほとんどで使うことができます。
長所
- 広範な利用 JScript は、ほとんどすべてのブラウザで実行できることが保証されています。あらゆるブラウザで動作しなくてはならないページを開発するときには、この言語が適しています。
- 書店に並んでいる数々の書籍 JScript を学びたいときには、数え切れないほどの書籍を参考にすることができます。
- C と Java との類似性 C または Java のプログラマにとって、JScript の構文は理解しやすいでしょう。
言語特性
- 動的 JScript は完全に動的な言語として設計されています。つまり、プログラムをリアルタイムに再定義することが可能なのです。これにはさまざまな短所もありますが、スクリプトに究極的な柔軟性を持たせることができます。これは特に、オブジェクト モデルを動的に操作することができるDHTMLのプログラミングに有効です。DHTMLを本格的に使用したい場合には、VBScript ではなく JScript を使用することを検討してください。
- オブジェクト指向 JScriptは、従来の意味でのクラスベースのオブジェクト指向言語ではありませんが、プロトタイプをベースにした効果的なオブジェクト指向機能を持っています。開発者は、静的に定義されるクラスに制約されずに、オブジェクト指向プログラミングの恩恵を受けることができます。
- 正規表現 Perlに多数の支持者がいることの主な理由です。正規表現は、文字列の中の表現の検索能力を向上させます。これは特にサーバー上で有効ですが、今後はクライアント上でも重要性を増すでしょう。
- Eval コードを実行時に直接評価する能力があります。これにより、実行時に論理的な依存関係を動的に再定義することができます。これは特に Remote Scripting と組み合わせて使用するときに有効です(ただし Remote Scripting は VBScript でも使用できます)。
我々の公約
Microsoft Script Group は、両方の言語に等価な機能を用意することに努めています。これは、VBScript がいきなり Basic でなくなるとか、JScript が Basic のようになるという意味ではありません。われわれは、個々の言語の精神に沿って、機能を追加していきます。これが成功すれば、言語の選択は、個人的な好みと対象とするとするプラットフォームだけに依存することになります。さらに重要なのは、Microsoft が ActiveX Scripting アーキテクチャを通して、任意のスクリプト言語をサポートするということを約束していることです。このスクリプティング プラットフォームを提供するだけでなく、Microsoft は JScript と VBScript が機能的に等価になるまで、両方の実装を進化させることを明言しています。ですから、言語の未来を考えると、どちらか片方しか選べないという思い込みは不要です。
Andrew Clinick は Microsoft Script Technology グループのプログラム マネージャなので、スクリプトに関係するものならば、何らかの形で関わっている可能性があります。彼は余暇の時間のほとんどを、アメリカのテレビでラグビーの中継番組を探し、新しいアメリカ人の同僚にクリケットのことを説明するのに費やしています。
スクリプティング: 基本事項
Links to Microsoft Scripting Web sites:
VBScript = Microsoft Visual Basic® Scripting Edition
Jscript = JavaScript or ECMAScript JScript
Remote Scripting
Windows Scripting Host
スクリプティングのすべて
HTML 4.0
スクリプティング関連のニュースグループ
JScript
VBScript
Remote Scripting
|