マクラ
このまえ会社でちょっと特殊なJavaScript replを作ったのだけど、もうちょっと汎用的なものを作ってみたかったのでNodeで書いたっていうお話。Nodeで書くこと自体にあまり深い意味はないんですが、Socket.IO使えばcross-browser/cross-originでのpushが簡単だから、ということで。
Install
Replica - http://github.com/zentooo/Replica
npm install replicaでインストールできます。ちなみにNodeについてはv0.5.0-pre、ブラウザについてはFirefox4.0 RC2, Chrome(10.0.648.151) / Chrome-dev(11.0.696.14) しかテストしてないです。多分、その他の環境でも動くんじゃないでしょうか。
npmにゃんでのインストールがずっこける場合は、npm再インスコするかIssac先生にレポートを投げて
npm install socket.io npm install cli npm install node-static git clone git://github.com/zentooo/Replica.git cd Replica/bin ./replica
のように、直で叩くと起動できると思います。
Inside
内容としては、コマンドラインからreplを立ち上げて、localで立ち上がるWebサーバのとあるページにアクセスして、replにJavaScriptのコードを打ち込むとブラウザ側でそいつが実行される、というものです。
ここまで書いたところで分かる人は一発で分かると思いますが
replで行を受け取る -> ブラウザにpush -> 受け取ったものをeval
しているだけですね。本当にありがとうございました。
Behavior
起動しているところはこんな感じです。
基本はこのページのコンテキストでJavaScriptを実行出来るだけなのですが、青文字のでかい"Replica"はブックマークレットへのリンクになっていて、このブックマークレットを利用すると任意のサイトでReplica replからJavaScriptを投げられるようになります。ひょっとしたら役に立つ場合もあるかもしれませんね。
ページ左下のフォームからJavaScriptコードのブロードキャストもできるので、試す場合は複数マシン/複数ブラウザでやると面白いです。
ネタバレ
分かる人は分かるかと思いますが、これはJames Coglan先生のTerminusの単なるNode版ですね。jcoglan先生のTerminusは自作JSライブラリを駆使した労作なのですが、僕のは色々な外部ライブラリにのっかった手抜き版です。しいて勝っているところをあげるとしたら、起動/終了の速さぐらいでしょうか。
jcoglan先生は面白いものを一杯作っているので、興味がある人はgithubを覗いてみましょう。
http://github.com/jcoglan