2010/08/10

HTTPD


NILScriptに用意されている機能の中で最も特徴的なのが、Webサーバ機能を実現する「HTTPD」です。
単にローカルにあるファイルを公開するだけでなく、リクエスト内容に応じて動的にWebページを生成して返すことも可能です。
また、ブラウザ上のJavaScriptからNILScript側の機能を呼び出すための機能も用意されており、HTMLによる自由度の高い画面表示とNILScriptの多彩な機能を連携させたアプリケーションを作成可能です。
ブラウザからアクセスして利用するため、設定画面などをブックマークしておいて素早く呼び出せるなど、通常のGUIアプリケーションでは出来ない使い方も可能です。

HTTPDの機能を試すには、NILScriptのアーカイブに含まれる「start_httpd.ng」を実行してください。サンプルのWebサーバスクリプトが起動し、ブラウザでドキュメントの検索・閲覧ページが表示されるはずです。
このスクリプトには、将来的には自作スクリプトの管理やアップデート情報の閲覧などの機能も追加され、NILScriptに関するポータルサイト的な物となる予定です。
HTTPDを利用したプログラムを作ってみたい場合は、アーカイブ内の「sample\HTTPD.ng」にあるサンプルスクリプト本体や、HTTPDのドキュメントを参考にしてください。
HTTPDによって公開されたドキュメント閲覧ページ
「Script console」のリンクからは、NILScriptのスクリプトを簡単に実行するためのコンソールページを表示できます。下部の入力欄にスクリプトを入力してボタンを押すと、入力されたスクリプトがHTTPDに送信され、実行結果(最後に評価された式の値)やエラーが返信され、ログとして表示されます。
スクリプトは専用のスレッド上で実行され、定義した変数などは次回実行時に引き継がれるので、対話型インタプリタのような感覚で利用できます。
簡単なコードを試してみたい場合などに役立つでしょう。
スクリプトコンソールのページ

このコンソールはHTTPDのプラグイン機構で実装されており、処理の本体は「plugins\HTTPD\ScriptEvaluator\ScriptEvaluator.ng」内に記述されています。スクリプト内容を見れば、NILScriptによってサーバ側関数の呼び出しがラップされて、HTTPのリクエストなどを意識することなく連携処理を記述できているのが分かるはずです。
また、スクリプト実行環境の部分はライブラリ化されており、「lib\ScriptEvaluator._test\ScriptEvaluator.ng」にあります。こちらでは、マルチスレッドでの同期処理機能などの使用例が見られます。

なお、NILScriptのHTTPDは、ローカルネットワーク上から1人もしくは小数のユーザーがアクセスして利用することのみを想定しているため、インターネット上に公開して不特定多数のユーザーに利用してもらう用途には向いていません。
これは、NILScriptではネットサービス上から必要な情報を収集して様々に活用するプログラム群の作成を優先的な目標としているためです。
わざわざネットサービス型のプログラムを作成するのは、不特定多数のユーザーの投稿を利用した集合知的な機能を実現したい場合か、広告を掲載して収入を得たい場合などが主だと思われますが、広告を無視して情報を抽出するツールを使用してアクセスする人が増えれば、サーバ負荷ばかり増えて収入は減ってしまいます。
そうなると、NILScriptのHTTPDに不特定多数からのアクセスを捌くための機能を充実させたとしても、大した使い道が無く無駄になってしまうでしょう。
そのような理由から、今後も大規模ネットサービス公開向けの機能が積極的に実装される予定はありません。どうしても欲しいという人は、自分で拡張ライブラリを作成してください。

0 件のコメント:

コメントを投稿