Movatterモバイル変換


[0]ホーム

URL:


@IT編集部の西村賢がRuby/Rails関連を中心に書いています。

Node.js+CoffeeScriptで書かれた「Pow」がカッコ良すぎる件

»

 Ruby on Railsの生みの親、DHHが在籍する37signalsがMac OS X用のRackサーバ「Pow」をオープンソースで公開しました。ちょっとこれまでにない種類のプロダクトで、その使い勝手のシンプルさとアイデアに鼻血が出そうになりました。実装にNode.jsとCoffeeScriptを使っているというのも面白いです。

Pow01

 Powの売りは、「Zero-configuration」(設定要らず)ということで、複数のRails/Sinatraアプリをローカルで動かして開発するようなときに、仮想的なドメイン名を手軽に割り当ててアクセスできるようにしてくれる、というものです。インストールはcurlのコマンド一発で、

$ curl get.pow.cx | sh

とするだけ。そして、RailsやSinatraなどのRackアプリのディレクトリをPowのディレクトリにシンボリックリンクを貼るだけです。

$ cd ~/.pow$ ln -s ~/Projects/myapp

 これだけで、このアプリには「http://myapp.dev」というホスト名でアクセスできるようになります。Rails同様にConvention over Configurationの精神で、ホスト名は「ディレクトリ名.dev」と決め打ちです。Powはインストール時にlaunchd(Mac版のinit、inetdみたいなもの)を使ってファイアウォール設定を書き足していて、「ディレクトリ名.dev」というリクエストが来ると、powディレクトリ下のRackアプリを起動するという仕組みです。1アプリ当たり、最大2ワーカーが起動し、15分間アクセスがないとアプリを終了させます。

 「localhost」の代わりに名前を付けるために、これまでは「/etc/hosts」を手で書き換えたりしていて、これだと複数アプリを開発環境で動かすための設定が煩雑だった、ということです。37signalsは自社のオンラインのサービス群で共通して使う決済アプリなどがあり、開発に当たっては複数アプリを起動する必要があり、この設定が面倒だったということです。

 サブドメインを設定して違うアプリに割り当てたり、アプリのディレクトリトップに「.rvmrc」を書いておいて、異なるバージョンのRuby処理系を使って各アプリを起動したりもできます

 いろいろなアプリを同時並行で開発しているケースなどに便利かもしれませんね。「/etc/hosts」を手でいじるよりも良いアプローチのように思えますから、複数アプリを開発するわけでなくても、Powは使われていくようになるのかも、と思いました。

●CoffeeScriptの実例としての面白さ

 PowはCoffeeScriptで書かれていて、http://pow.cx/docs/を見ると、注釈付きでコードが見られます。CoffeeScriptはJavaScriptにコンパイルすることを前提とした言語で、JavaScriptよりもPythonやRubyに近い感じで書けて、例えばPythonのリスト内包表記のような配列内包表記で、

cubes = (math.cube num for num in list)

のように面倒なループがスッキリ書けたりするようです。このコードは、

cubes = (function() {  var _i, _len, _results;  _results = [];  for (_i = 0, _len = list.length; _i < _len; _i++) {    num = list[_i];    _results.push(math.cube(num));  }  return _results;})();run: cubes

とコンパイルされます。オブジェクトの定義もブレースなしで

math =  root:   Math.sqrt  square: square  cube:   (x) -> x * square x

のように書けば、

math = {  root: Math.sqrt,  square: square,  cube: function(x) {    return x * square(x);  }};

にコンパイルされるといった具合です(このへん、CoffeeScriptの公式サイトからサンプルを持ってきています)。打鍵数が多くて嫌われ者(?)のfunctionも不要で、「->」というのでラムダが書けるのってRubyっぽいですよね

 CoffeeScriptのリアルなコード例が見れるという意味でもPowは面白いなと思います。

西村賢2011/04/08 16:25:53Comment(0)

コメント

コメントを投稿する

SpecialPR
スポンサーからのお知らせPR
西村賢

西村賢

@IT編集部の西村賢がRuby/Rails関連を中心にブログしています。
Ruby on Rails情報の新コーナー「Rails Hub」をよろしく!

2024年6月

      1
2345678
9101112131415
16171819202122
23242526272829
30      

自分研 新着記事

    SpecialPR

    [8]ページ先頭

    ©2009-2025 Movatter.jp