9.5 動的HTML
9.5 動的HTML
Webは,開発された当初は静的なページしかサポートしませんでした.しかし,技術の進歩により動的な内容を生成するインタラクティブなアクセスもできるようになりました.
基本的にWebはその主プロトコルのHTTP (Hyper Text Transfer Protocol)で動かされています.HTTPにはある種の制限があります.HTTPのもとで,クライアントはサーバにリクエストを送り,サーバからその応えが返されます.ここで重要になる特徴に,このプロセス全体が無記名だということがあります.つまり,リクエストを処理した後にはリクエストの記録は残らないのです.もちろん,その間の状態は何らかのメカニズムを使ってとっておくことができます.例えばサーブレットAPIにはMSPSessionVariable で使える状態を記録するメソッドがあります.
このリファレンスセクションでは,動的なWebの内容に関するサーバとクライアントの技術について見ていきます.しかし,これは大変変化の激しい分野ですから,完璧な調査を行うのは無理だと言わざるを得ません.
9.5.1 サーバ技術
動的な内容にはサーバの側のさまざまな技術が関連しています.以下ではその中でも特に重要なCGIスクリプト,ASP (Active Server Pages),サーバプラグイン,Perlスクリプト,JavaサーブレットとJavaServer Pagesについて見ていきます.
CGIスクリプト
CGIスクリプトは動的な内容のもとになったサーバ技術を提供しました.CGIのもとでは,シェルスクリプトやコンパイルされたバイナリのように実行可能なものが,リクエストの度に起動されます.
このメカニズムはさまざまな意味で限定されています.まず,リクエストの度に新たなCGIを起動しなければならないためコストが高くつき,スケーラビリティの問題につながる可能性もあります.この解決方法として,実際のCGIスクリプトを自身のサーバとコミュニケートできる軽めのプロセスにすることが考えられます.多くのWebではこの解決策が取られています.無論,この開発は決して簡単ではなく,結果的に動的なソリューションを使うよりも,もっと複雑になる可能性もあります.
ASP (Active Server Pages)
ASP (Active Server Pages)は動的なWebの内容を開発するためにMicrosoftが開発したスクリプト言語です.広く普及していてパワーもあります.現在はサポートしていませんが,今後のサポートを視野に入れています.
サーバプラグイン
ほとんどのHTTPサーバが,インタラクティビティの特別な機能をサポートする何らかの拡張性を提供しています.このアプローチの問題点は,移植性に劣る点です.
Perlスクリプト
PerlはCGIの中,あるいはサーバプラグインの中でよく使われるスクリプト言語です.PerlとMathematica を繋ぐ技術は存在しますが,この技術はJavaとの結合技術ほどには開発が進んでいません.
JavaサーブレットとJavaServer Pages
Javaサーブレットは,HTTPのリクエストに応えるハイレベルのAPI(プログラミングインターフェース)を提供します.Webのサーバを拡張してサーブレットエンジンを追加するのにはさまざまな方法があり,全Webサーバのための主要プラットフォームのすべてで起動するソリューションがあります.
Servlet APIは,サーブレットが起動している間情報を保持し,HTTPのリクエストや返答にも使える機能を提供するハイレベルのインターフェースです.
JavaServer Pages (JSPs)はサーブレットがHTMLを返す便利な方法を提供するJavaサーブレットを使う方法のひとつです.サーバがJSPをサーブレットに変換します.これは後で実行されます.
webMathematica にはJavaサーブレットとJavaServer Pages技術の混合したものが実装されています.
9.5.2 クライアント技術
究極的にはどんな内容でもクライアントにダウンロードし描画することができるようになります.ある意味では,サーバ技術の目的とはクライアントの入力を準備することです.クライアントの側にもさまざまな動的内容のテクノロジーがあります.これにはHTML,JavaScript,アプレットがあります.
HTML
Webのサーバで配布される基本的なものはHTMLです.HTMLはタグで構成された木構造の言語です.現在,HTMLはより厳密な言語のXHMTL(XMLの厳密なアプリケーション)への移行期にあります.
HTMLは動的なWebの内容のトピックにとって基本的なものです.そこで,HTMLを使った動的なWebの内容の簡単な例を挙げておきました.
まず,基本的なHTMLのドキュメントから始めます.
<html> <title>My Page</title> <body> <h1>My Page</h1> <p>Welcome to my page.</p> </body> </html>
これをWebのサーバからダウンロードし,Webのブラウザに表示します.
動的な要素がform とinput 要素を使ってHTMLに追加されます.これはHTML文書の中に含むことができます.下に挙げたのはform 要素です.
<form action="http://myhost/active" method="post"> </form>
form には,action 属性とmethod 属性という2つの重要な属性があります.form が活性化されるとURLとの接続を開き,post メソッドを使います.
URLはページがダウンロードされたのと同じサーバにあることがよくあります.そのような場合は,相対URLを使うのが一般的です.
<form action="active" method="post"> </form>
form 要素の中にいろいろなボタンや入力フィールドを追加するinput 要素を追加することもできます.ここではform に2つのinput タグを追加した例を示してあります.最初のタグでテキストの入力が可能になります.2番目のタグでform を送信します.
<form action="active" method="post"> <input type="text" name="ARG1"> <input type="SUBMIT" name="button" value="Compute"> </form>
form がsubmit というinput タグで活性化されると,ブラウザは参照されたURLにaction 属性でリクエストを送ります.これによりform 中の全input タグからname とvalue のペアが送られます.これがHTMLを起動する最も基本的な方法です.
form 要素に関連して覚えておきたいことにname /value のペアをURLで指定できるということがあります.どこかでhttp://myserver/document?ARG1=10&ARG2=20 等のような形をご覧になったことがあるでしょう.
JavaScript
JavaScriptはクライアントとサーバのインターネットアプリケーションを開発するための,コンパクトなオブジェクトベースのスクリプト言語です.JavaScriptコードは HTMLページに直接埋め込むこともできます.例えばform とinput 要素の操作に装飾を施すことができます.JavaScriptの問題のひとつにその動き方がすべてのブラウザで同じではないことがあります.JavaScriptはブラウザ自体とブラウザが保持しているドキュメントが操作できます.また,アプレットやプラグインとインタラクトすることもできます.
webMathematica にはJavaScriptを使った例が含まれています.
アプレット
アプレットはJavaで書かれたプログラムで,Javaを動かすことのできるブラウザ上で起動するようになっています.JavaScriptに比べ,HTMLの統合度は低くなっていますが,開発が容易でJavaの周辺技術をすべて呼び出すことが可能だといえそうです.JavaScriptのように,ブラウザの中には(特に古いものは)アプレットのサポートが不完全だったり,サポートしていても質が悪かったりするものがあります.アプレットはJavaプログラミング言語で使え,ブラウザの中に実際に描き出せるたくさんの関数を呼び出すことができます.
例の中にはアプレットを使うようになっているものもあります.
今後の開発
主なブラウザのInternet ExplorerとNetscape Navigatorは,インタラクティブな技術の開発をハイスピードで続けています.webMathematica のユーザの皆様も,それらが使用可能になり次第,それを試されるとよいでしょう.