Narwhalを使ってみよう

NarwhalはこちらのWebサイトからダウンロードすることが可能だ。

Narwhalは様々なJavaScriptインタプリタで動作するよう設計されているが、配布されているディストリビューションはJavaによるJavaScriptの実装であるRhinoが同梱されており、Rhino上で実行するためのシェルスクリプトが提供されている。

Linux上であればダウンロードしたZIPアーカイブを適当な場所に展開し、環境変数PATHに展開したディレクトリ配下のbinディレクトリのパスを追加することでnarwhalコマンドを利用することができるようになる。すでにPATHが通っている場所にシンボリックリンクを作成してもいいだろう。ただし、Windows向けのBATファイルなどは用意されておらず、Windows上では動作させることが難しい(Cygwinを利用してもそのままでは動作させることができない)。

まずは動作確認を兼ねてnarwhalコマンドを使用して簡単なJavaScriptを実行してみよう。以下のスクリプトはNarwhalのWebサイトに掲載されているサンプルプログラムだ。このファイルをtest.jsという名前で適当な場所に保存しておく。

#!/usr/bin/env narwhal
var File = require("file");

var text = File.read(system.args[1]);
File.write(system.args[1], text.toUpperCase());

このファイルはコマンドラインから以下のようにして実行する。引数で指定したファイルの内容が大文字に変換されて上書きされるので注意して欲しい。

$ narwhal test.js test.txt

なお、JavaScriptファイルに実行可能なパーミッションを設定しておけば以下のように直接実行することもできる。

$ chmod +x test.js
$ ./test.js test.txt

Narwhalではファイルシステムへのアクセスなどを行うAPIが提供されているため、シェルスクリプトやPerlスクリプトの代わりにJavaScriptを用いることができるだろう。

ServerJSで定義されているAPI

現在ServerJS標準で議論されているAPIには以下のようなものがある。

  • モジュール
  • ファイルシステム
  • バイナリデータオブジェクト
  • エンコーディング・文字コード
  • システムインタフェース
  • Cライブラリ向けのAPI

今後ServerJS標準ではネットワークやRDBMSとのインタフェース、ロギングや国際化、非同期処理といったより高度なトピックについて検討される予定となっているようだ。Narwhalではこれらの高度なAPIについても先行して実装されている。ドキュメントは整備されているとは言い難いが、ソースを見ながら試してみるのもいいだろう。