こんにちわ、えんとんです。
今回はSails.jsを使ったチュートリアルということで、最短でPub/Subを使ったチャットシステムを作ってみます。

Sailsとは

http://catcher-in-the-tech.net/637/ ←偉大なるクロサキ先輩の記事を見て頂くのが早いと思います。
リンク先の記事では、開発で使えるTipsが乗っていますが、この記事ではそこまで扱わず最短ルートでとりあえず動くものを作ります。

開発環境構築

まずは開発環境を構築しましょう、今回使用するバージョンは以下のとおりです
OS : MacOS X 10.9.4
Node.js : v0.10.25
npm : 1.3.24

まずはSailsのインストールです。npmは入っている前提で進めるので、早速インストールしてしまいましょう。

念のため、バージョンを確認しておきましょう

2014/12/14日時点では0.10.5が標準でインストールされます。

それでは起動してみましょう。
まずはプロジェクトを作成します。

これで必要なファイルがhoge/の中に自動で生成されます。

続いて、sailsをビルドインサーバー上で起動します。

成功するとこんな画面が出てきます。

スクリーンショット 2014-09-24 1.11.04

これだけでプロジェクトを作ってビルドインサーバー上で動かすことが出来ます。
この状態でhttp://localhost:1337/ にアクセスするとデフォルトのウェルカムページを見ることが出来ます。

永続化もできるのですが、とりあえず起動できることがわかったらCTRL+Cで落としてください。

実践

では、早速チャットシステムを作っていきましょう。
今回実装する内容は
・ページ1枚。ログインとか一切なし。
・発言したらそのページ開いている全ページに発言が反映される
・過去の発言を見れる機能は作らない

超最小の構成です。潔く行きましょう。

まずはプロジェクトを作成します。

続いて、先にチャットのviewを用意してしまいましょう。
view/vhat.ejs

デフォルトのテンプレートにそのままあてこむので、bodyの中身だけ用意すれば大丈夫です。 では、このviewを表示するための Controllerを作成しましょう。 SailsではControllerやModelを生成するgenerateコマンドが用意されています。

ひな形が生成されました。さっそくviewを表示するだけのメソッドを追加しましょう

api/controllers/ChatController.js

これで準備は整いました。sails liftして確認しましょう。→ http://localhost:1337/chat
途中、マイグレーションについて聞かれますが特に気にせずエンター押してしまいましょう。

ページが表示できることが確認できたら、投稿とPub/Sub処理を書いていきます。
投稿を保持するためのModelを作成します。これもgenerateコマンドで生成しましょう

modelに要素を指定していきます。

api/models/Chat.js

とりあえず型だけ指定しました。

続いて、Controllerを編集します。

api/controllers/ChatController.js

続いてViewです。

view/vhat.ejs

たったこれだけの追記で、Pub/Subを使ってリアルタイムに同期させることができるようになります。再度sails liftしなおして2つのウィンドウで同じページを開いてみてください。片方のブラウザで文字を入力してみるともう片方に反映されるはずです。

まとめ

Sailsを使えば、わずらわしい処理をしなくてもとても簡単にPub/Subを使ったアプリケーションが作ることができます。実際にハッカソンでSailsを使ったアプリケーションを作ったのですがリアルタイムにブラウザ間で同期するものを簡単に作れるのはとても楽しかったです。
とはいえ画像の取り扱いなどが弱いなどの欠点があるのでまだまだ発展途上のフレームワークでもあります。バージョンによって実装の差もわりと大きいので注意が必要です。