Jarminal - terminal of JavaScript on browser
JavaScriptの為のターミナルツール「Jarminal」の紹介
- Author
- 37to
Enter:進む Shift+Enter:戻る
Agenda
- Jarminalとは?
- 特徴
- 使い方とか
- まとめ
1.Jarminalとは?
- JavaScriptが実行できるターミナルツール
- ちょっとしたデバッグに使える
- minibufferっぽい事が出来る
開発動機
jQueryベースのプレゼンツール(この資料が動いているツール)を作っていた時に、Greasemonkeyのminibufferみたいな事が出来るツールが欲しかった。
要件としては、任意の関数をCUIから呼び出せるだけでいいので、ライブラリを探してみる
Jash: JavaScript Shell
NitobiBug - Browser based debugger
JavaScript Terminal
JavaScript Shell 1.4
Interactive JavaScript Shell
色々あるけど、しっくりくるものがないので、自作を考えてみたのが開発のきっかけ。
2.特徴
目指す所
- CUIを基本とした、ターミナルっぽいUI
- 対話的にJavaScriptのコードが実行出来る
- JavaScriptの関数をコマンドとして実行ができ、拡張可能
- カレントスコープの概念
- UIは自由に定義出来るので、既存アプリケーションに組み込み可能
- ブラウザに依存しない
ターミナルとしての基本機能
- 作りかけの補完機能
- 作りかけのhistory
- Shift+Enterで改行
3.使い方とか
準備
- スクリプトを読み込ませる(まだブックマークレットは作ってないので)
- 画面上でダブルクリック
- 出て来たターミナルにコマンドを入力するだけ
手軽にJavaScriptのコードが実行出来る
(function test(){
alert('Kanasan.JS');
})()
オブジェクトの中身も見れる
cd jQuery
ls
jQueryのプロパティ一覧が見れる
カレントスコープの概念
デフォルトで「window」と表示されている部分が現在のスコープ
ls
lsで現在のスコープのオブジェクト一覧が見れる
cd document
cdでスコープを移動出来る
getElementsById('screen')
スコープを移動すると、現在のオブジェクトは省略して実行出来る
内部ではwithを使っている。withもたまには思い出してあげて下さい。
コマンドは自由に拡張出来る
jarminal.command.list.mycommand = {
desc : 'my command',
/**
* 引数には入力された
* コマンドの情報が
* オブジェクトとして入ってくる
*/
func : function(input){ /* code */ }
};
API部分の仕様が固まっていませんが、上記のような形で拡張可能
UIは自由に定義出来るので、既存アプリケーションに組み込み可能
- デフォルトではjQuery UIを利用して、ウィンドウのようなUI
- UI部分のコードは分離しているので、使用するライブラリやUIは独自に定義可能
- script.auculo.usとかdojoとか
- ウィンドウじゃなくても、通常のhtmlに埋め込むとか
ブラウザに依存しない
ブラウザに依存しないので、汎用的なデバッグツールとしても使える
console.log()みたいな機能もあるので、IEとかFirefoxでも同じようにログ表示出来る
4.まとめ
- 自作プレゼンツールの機能として作り始めたのが始まり
- minibufferのように、コマンドを追加できて、自由に使える
- 簡単なデバッグツールとしても使える
- スコープを移動出来る
- オレオレターミナルのベースに出来る拡張性
今後とか
- シェルのように、パイプとかxargsとか使えるようにしたい
- JavaScriptの開発ツールとしてはFirebugが優秀(Firefox3.0+Firebug1.2bでとても軽くなった)なので、機能はシンプルにして使いやすさを求めていきたい。
- プラットフォームとして作り込んで、機能は好きに拡張してもらえるようにしたい
- 色分けとかもしたい
- オレオレターミナルツールを作りたい人は、コア部分の作成をぜひ手伝って下さい!
ご清聴ありがとうございました!