SpiderMonkey
Google Maps API バージョン2リファレンス(意訳とサンプル)に触発されてJavaScriptを使い始めたのですが、コードを書く前にメソッドの動作を確かめる、そのためだけにいちいちhtmlを書いてブラウザで動かして…というのが非常に面倒くさいです。
というわけで、ブラウザを使用せずにスタンドアロンで動かせるJavaScriptの実装を探してみたら、SpiderMonkeyというものを見つけました。
これは、Mozilla の C による JavaScript 実装です。FirefoxのJavaScriptエンジンとほぼ同等の動作をするというのがいいですね。
自分が使っているDebianでのインストール方法は以下の通り。
# apt-get install spidermonkey-bin
このDebian用バイナリだと、readlineライブラリにもリンクされているので、履歴等が使えて便利です。
インストール後に"js"コマンドを実行すると、irbのようなインタラクティブシェルが起動します。
$ js js>
Dateオブジェクトの作成を試してみるとこんな結果になりました。
js> new Date("2006/8/30") Wed Aug 30 2006 00:00:00 GMT+0900 (JST) js> new Date("2006-8-30") Invalid Date js> new Date("2006 Aug 30") Wed Aug 30 2006 00:00:00 GMT+0900 (JST) js> new Date("2006 8 30") Invalid Date
JavaScriptライブラリを使用する場合は、loadで呼び出します。
js> load("prototype.js") prototype.js:880: ReferenceError: document is not defined js> Prototype.Version 1.5.0_rc0
現在の実行環境ではdocumentオブジェクトが定義されていないのでエラーが発生していますが一応読み込めているようです。
このloadメソッドはhelpに記載されていました。
js> help() JavaScript-C 1.5 pre-release 6a 2004-06-09 Command Usage Description ======= ===== =========== version version([number]) Get or set JavaScript version number options options([option ...]) Get or toggle JavaScript options load load(['foo.js' ...]) Load files named by string arguments print print([exp ...]) Evaluate and print expressions help help([name ...]) Display usage and help messages quit quit() Quit the shell gc gc() Run the garbage collector trap trap([fun, [pc,]] exp) Trap bytecode execution untrap untrap(fun[, pc]) Remove a trap line2pc line2pc([fun,] line) Map line number to PC pc2line pc2line(fun[, pc]) Map PC to line number build build() Show build date and time clear clear([obj]) Clear properties of object intern intern(str) Internalize str in the atom table clone clone(fun[, scope]) Clone function object seal seal(obj[, deep]) Seal object, or object graph if deep
printメソッドを使うと、あらかじめ作成したjsファイルを実行して、結果をコンソールに出力させることが出来ます。
まず、quitでJavaScriptコンソールを抜けて…
js> quit() $
jsファイルを作成。
$ echo "print('Hello World!')" > hello.js
jsコマンドの引数にhello.jsファイルを指定することでスクリプトを実行できます。
$ js hello.js Hello World!
画面効果はブラウザ上でないと確認出来ませんが、データ処理等のロジック作成はSpiderMonkey上のほうが楽かもしれません。