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として提供する構造です。それと引換えに、アプリケーションは直接ハードウエアにアクセスしないのがルールです。この構造は、アプリケーションが共通部品から構成されている事を意味し、アプリケーション間の連携が容易なことは想像できます。

 Microsoftは、Windows 95が成功であったことを見届け、インターネットを戦略の前面に掲げました。 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の拡張子付きのファイルだった。2000年5月4日のこの事件から何を学ぶべきだろうか。

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


 

技術文書
 

 「動く」ホームページ。ここからjavaScriptを操っていたが、あくまでNetscapeの思想の上で使っていた。ページから閲覧者のパソコンのデータを読んだり、逆にこちらのデータを書き込まない。書き込むのは唯一Cookiのみ。そのような思想でjavaScriptは設計されている。
 僕のコンピュータはMicrosoftのWindows。僕はエンジニアだから技術文書の為にjavaScriptの拡張部分を使ってみた。そこで一線を越えてJScriptとなる。自分のためには、ファイルを自由に読み書きできるJScriptは快適だ。自社用のアプリケーションが作れてしまう。使いなれたブラウザをインターフェースにできるのだから、たまらない魅力がある。Windowsプログラムはとても手におえないと思っていたのだが、そうではない。むしろ、DOS時代よりもイージーなのである。

 社内用の技術文書をサーバーに送ると、それはインターネットのページになる。知らない人がそのページを操作すれば、同じようにファイルを読み書きできる。MicrosoftのWindowsOSならばの話だが。
 しかし、そこで何が起こるかは2000年5月4日の事件で推定はできる。内部用と外部用のページを2つ書く必要がある。JScriptの全容を理解すると、僕はIEのセキュリテイをワンランク上げた。JScriptの存在を知り、全容を理解してそうする人が何人いるだろう。やはり、ページは二本立てにするしかないだろう。

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


2003.12.16
by Kon