素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

node-webkitでNode.jsをいろんなことに使う

node-webkitとは

日本ではあまりnode-webkitは知名度が高くないが、簡単に言うとIntelが開発に関わっている、nodeとWebKitを統合し、DOMコンテキスト上でnode.jsの機能を使えるようにするソフトウェア。一言でいうと言うと、ウェブでnode.jsを動かすプラットフォーム。

何ができるのか

node.jsで出来ることと、ウェブで出来ることと、node-webkitが用意している機能(GUIの操作など)が使える。

例えば/etc/hostsを読み込む場合

node-webkitと同一のディレクトリに下記のようなindex.htmlを用意して

<!doctype html>
<html>
<body>
  <pre id="hosts"></pre>
</body>
<script>

var fs = require('fs');

fs.readFile('/etc/hosts', function (error, file) {
  if (error) {
    alert('Loading /etc/hosts failed :(');
  } else {
    document.querySelector('#hosts').textContent = file.toString();
  }
});

</script>
</html>

package.jsonをこのように書くだけである。

{
  "name": "hosts viewer",
  "main": "index.html"
}

Node.jsのデバッギングツールとして

自分的に一番すばらしいなと思っているのは、Web Inspectorなどの、デバッガが動くところである。信頼性が心配なnode.jsのモジュールと異なり、Safari上で使っている機能は全て動く。ステップ実行、ブレイクポイント、コールスタックなども見れ、また コンソールからrequire('fs')などと入力して、オブジェクトをクリックしてたどっていきメソッドやプロパティなどを見ることも容易である。

普通のnode.jsとは実行環境が多少異なるが、node.jsで動くモジュールは全てnode-webkitでも動くことを目指して作られているので、node-webkitに関係のない普通のnode.js開発でも利用でき、便利なので自分は動作確認によく使っている。

デスクトップ版Greasemonkey/スクレイピングツールとして

XMLHttpRequestやiframeのsame-origin policyなども超えられるので、例えば複雑なサイトをiframe内に読み込んで、サイト側のJS実行が終わった後にDOMにアクセスして、データを取り出して書き出したりすることもできる。 自分のパソコン内で実行するちょっとした自動化ツールとしてもnode-webkitはかなり優秀である。

感想

ちょっとしたものを作るときに非常に便利で、次世代のGreasemonkeyのような、hackableな感じがとてもワクワクするから使ってみるといいと思う