ActiveX と JScript



 
JavaScript とJScript
 

 Netscape が、Sun と共同で JavaScript を開発したのが 1995 年のことでした。 「読む」だけのウェブページはマスメデイアのイミテーションでしかありません。 ネットは双方向の無限の可能性を持っています。JavaScriptはネットのこの能力を 大きく引出す可能性を持っていました。
  1995 年、Windowsを無事デビュウさせたMicrosoft は、「おもちゃ」と言われた Internet Explorer 2.0の改良に動きました。当然、JavaScript同等機能を Internet Explorerに搭載することを考えていました。Netscape は Microsoft へのJavaScriptライセンスを認めませんでした。そこで、 Visual Basic を元に開発した VBScript とともに、JScriptを組み込んだ Internet Explorer 3.0 を世に送り出しました。 1997 年のことです。JScript と VBScript は、スクリプトを解釈する部分はそれぞれですが、ウェブページを操作する部分は共通です。
  当時、Sun Microsystems社のネットワークテクノロジーJavaがネットを制覇すると見られていました。アプレットというプログラムを送信することでインターラクティブなネット社会が思い描かれていました。これに対抗するMicrosoftの答えがActiveXでした。

 

JScript
 

 NetscapeのjavaScriptはオブジェクト指向言語として開発されました。ブラウザをコントロールするものです。ページを閲覧するクライアント側で有効ですが、サーバー側からjavaScriptをコントロールすることは出来ません。ページのjavaScriptにはドライブのファイル読み書きの機能はありません。フォームからの入力は、サーバーとクライアント間でやり取りされるデーターに環境変数という名前で乗せて送られます。パソコンに記録されることはありません。
 このブラウザと連携して双方向の会話が出来るのがサーバーサイドのCGIです。 フォームからの入力を受け取り、ページを書き直して返送します。すべてサーバー側で処理が完結します。唯一、クライアント側のパソコンのCOOKIEという決められた場所だけにデーターを書き込むことができます。
 javaScriptと互換機能のJScriptはファイル入出力をサポートしています。さらに、 ActiveXオブジェクトを通じてアプリケーションやOS自体もアクセスできます。 このJScriptはサーバー側でも使えます。すべてMicrosoftWindowsOSという限られた範囲限定ではありますが、シームレスにスクリプトが動作可能です。ブラウザの機能制限オプションのみがセキュリテイの決め手となります。極めて重要なポイントです。

 

ActiveXオブジェクト
 

 MicrosoftWindowsOSはアプリケーションに対して基本機能をAPIとして提供する構造です。それと引換えに、アプリケーションは直接ハードウエアにアクセスしないのがルールです。この構造は、アプリケーションが共通部品から構成されている事を意味し、アプリケーション間の連携が容易なことは想像できます。
 Windows 95をリリースすると即刻、Microsoftはインターネットを戦略の前面に掲げ Windows 98でOLEをActiveXコントロール (コンポーネント) に模様変えしました。インターネットのブラウザは当然ActiveXコントロールから組立てられています。
 クリップボードの利用、OFFICE製品間の文書貼り付け、図形貼り付けといった中で体験してきたデーター連携は、ActiveXコントロールで外部からアプリケーション自体をコントロールできることになりました。ActiveXコントロールの本質はCOM(Componet Object Model)と呼ばれるアプリケーション間通信です。
 システムとして大規模になったパソコンOS,アプリケーションは、変化に対応するスピードや分割生産を目的として、小さなプログラムの集合体として構築されています。OSの部品はEXCELのようなアプリケーションにも利用されます。ブラウザにも利用されます。このように利用するため、パーツであるプログラムは形が決まっていません。利用する時に初めて値を決めます。プログラム用語の「オブジェクト」がこのパーツに対応すると考えていいでしょう。「インスタンス」という用語がよく出てきますが、オブジェクトにインスタンスを与えるということは、この事を反映している訳です。
 共通部品を利用するには、インターフェースがいります。中身を一々点検しなくてもインプットに対してアウトプットが保証されていなければ利用できません。このルールがインターフェースです。ネットにIPアドレスがあるように、部品にもアドセスがあります。ActiveXコントロールは対応するアドレスをPCのレジストリに記録します。アプリケーションは、使うActiveXコントロールがある場合、レジストリに記録されたIDを調べます。そこから対応するプログラムを識別して利用を開始します。OSメーカー Microsoftはプログラムの世界にもインターネットテクノロジーを導入したと言えます。
 このようなコンピュータソフトの世界を反映して、OSを制するMicrosoftがネット社会をリードするのは必然といえば、それはそうです。その世界で、いかに生きて行くかという事が私たちの問題でしょう。

 

2000年5月4日
 

 コンピュータ専門学校を卒業した青年が、一通のメールをチャットクラブの知人に流した。彼は学んだ知識を十分理解していたでしょう。ああすれば、こうなる。こうすれば、こうなる。彼の考えた事に間違いはなかった。コーディングするにも、それ程の時間を掛ける必要もなかった。
 メールは6時間で世界に拡散し、770億ドルとも言われるビジネスチャンスを消失させたと言われる。簡単な電子メールフィルタで防げたかもしれなかったこの事件は、明かにネット社会の変化を意味します。おおらかで、のどかであった社会が、一つの事件でルールを又一つ積み重ねて行く。すでに何千年もの歴史の中で繰り返された事と言ってしまえば終りなのだが。
 最終的にこのワームが破壊するターゲットはvbs,vbe,js,css,wsh,sct,hta,jpg,jpeg,mp2,mp3の拡張子付きのファイルだった。このことを含めて、この事件から何を学ぶべきだろうか。

 Windows時代のバッチファイルを出発点に、少し試行錯誤で辿りつく点がここである。 C言語の書籍が店頭を埋めたのは1980年頃と記憶している。マシン語レベスのコードが書けるというのがキャッチフレーズだった。その頃ビジネスマンだった僕は、部品を一から作る言語と付き合う余裕はなかった。マクロを大掛かりにしたようなプログラムをBasicで処理するのが一番早かった。使い捨てのソフトである。
 Windows時代のGUIプログラムは疎遠な感じだったが、Webページからのアプローチでカンはまだ鈍っていなかった。しかし、このJScriptはすごい。 Microsoftはプログラムの世界にインターネットテクノロジーを導入した。その実像を理解したことの驚きだろうか。COM(Componet Object Model)と呼ばれるアプリケーション間通信の仕組みに対する称賛だろうか。レジストリーにある、あの長たらしい数字の意味がやっと理解された。
 さて、ワームの事件を踏まえ、JScriptといかに付き合うか。それは各個人の見識と信念を試す極めて戦略的なテーマであることに間違いはないだろう。


 

技術文書
 

 「動く」ホームページ。ここからjavaScriptを操ってはいたが、あくまでNetscapeの思想の上で使っていた。そのはずだった。僕のコンピュータはMicrosoftのWindows。技術文書の為に拡張部分を使ってみた。そこで一線を越えてJScriptとなる。社内の技術説明書とサーバーに送るプレエンテーション用のページを2つ書く気はない。しかし、JScriptの全容を理解すると、そう言ってはおれない事も確かだ。僕自身、IEのセキュリテイを この時点でワンランク上げた。JScriptの存在を知り、全容を理解してそうする人が何人いるだろう。やはり、ページは二本立てるにするしかないだろう。

 内と外。こう決めたら話しは早い。外にはドライブのファイル入出力のあるJScriptは出さない。つまり、サーバーに送らない。機能をオフにして送る。javaScript仕様とする。
 逆に、内はJScriptを縦横無尽に使い切る。レジストリー処理を数行でコーデングできるツールがすでにPCの中に眠っていたのだ。今まで知らなかっただけの話だが。




2003.12.16
by Kon