2006 年 9 月 11 日 23 時 57 分

Server-Side JavaScript (SSJS)


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


JavaScript には動的に HTML を生成する機能がある。
これは、クライアント側の技術としてはあまり相応しくない。

実は、Netscape Communications 社は、
JavaScript をサーバ側技術にも適用することを考えており、
JavaScript を搭載した Web ブラウザの発表後すぐに、
Server-Side JavaScript 技術を製品化した。

Server-Side JavaScript (SSJS) は、CGI と同様、
サーバ側でプログラムを実行する仕組みであるが、
HTML に対して最適化されている技術である。

クライアント側 JavaScript と同じように、
HTML に埋め込む形でコードを書くことができるのが特徴だ。
Web ブラウザが、<script> 要素を使うのと同じように、
Web サーバでは <server> 要素を使う。

以下に例を示そう。

========== sample.html ==========
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p>
クエリ文字列:<server>write(request.query);</server>
</p>
<p>
<a href=`"http://" + server.hostname`>ホーム</a>
</p>
</body>
</html>
========== end of sample.html ==========

SSJS 対応の Web サーバは、
HTML ファイルをクライアントに送り返す前に、
<server> 要素を解析し、Web サーバ側で実行する。

また、任意の要素の属性に、区切り記号として、
バッククォートを使っている場合、その内容を
JavaScript 文として実行して置き換える。

例えば、上のページに以下の URL でアクセスすると、
sample.html は Web サーバで「実行」され、
以下のような内容となって Web ブラウザに返される。

http://www.example.com/ssjs/sample.html?id=xxx

========== sample.html (parsed) ==========
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p>
クエリ文字列:id=xxx
</p>
<p>
<a href="http://www.example.com">ホーム</a>
</p>
</body>
</html>
========== end of sample.html (parsed) ==========

従来の CGI と異なり、サーバ側のプログラミングは、
オブジェクト指向の JavaScript を使って行う。

HTTP のリクエストやサーバ情報などは、
request, server などのオブジェクトとして表現され、
ファイルやデータベースにアクセスするための、
オブジェクト等が組み込みとして用意されていた。

また、LiveConnect という機能を利用すると、
JavaScript から Java のオブジェクトを作成し、
その機能を利用することもできた。

var name = new java.lang.String("LiveConnect !");

SSJS は、デザインとしての HTML と
ロジックとしてのコードの部分をうまく区分し、
より保守や分担のしやすい開発手法を取り入れている。
この方法は、テンプレートモデルと呼ばれ、
今日の Web 開発の基盤となっている。

現在の高度な技術と比較すれば、
ロジックが完全に分離されているには程遠いが、
HTML の見通しが良くなったことは大きな進歩である。

SSJS は、ASP や JSP を知っている人には馴染みの構文だ。
SSJS は、これらの元となった技術なのである。

さらに、SSJS は、JavaScript の事前コンパイルや、
Tomcat の war のような、配布の機能も持っていた。
実はかなり将来を見越した設計となっていたのである。
個人的にも、SSJS が発展していれば面白かったと思う。

SSJS がそこまで大きく普及しなかった理由としては、
JavaScript がブラウザ側の機能として知られており、
サーバ側としての JavaScript の知名度が低かったこと、
そして、SSJS が製品化した直後、
Microsoft の対抗技術、ASP が発表されたことだ。

ASP は、SSJS をベースに発展させたもので、
IIS 3 の上に乗せる形で公開された。

当然、ASP は Windows でしか動作しないのだが、
その当時、WWW で利用する Web システムよりも、
社内(イントラネット)で利用するシステムの方が多かった。

当時、社内サーバとして Windows NT が普及しており、
後には、IIS と ASP は無料で搭載されるようになった。

社内の NT Server 上でそのまま動作し、
VB + COM の資産を活用できるというメリットもあり、
ASP の方が徐々に市場を伸ばす結果となったのである。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.