愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

Replica - terminalのreplからブラウザ上のJavaScriptを実行する

マクラ

このまえ会社でちょっと特殊な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