概要
近年Node.js周りで騒がれている「Meteor」。
この辺りの記事を読むとその特徴がよく分かります。
私も公式サイトのチュートリアルを終え、PHPやRailsと全く違うWEB開発を体感しました。
「リアクティブ」のすごさを伝えようと思い、サンプルで簡易カウンターを作ってみました。
ついでにmeteor deploy acro5piano.meteor.com
というコマンドで、Meteorのテスト環境に公開しました。
コマンド一個でMeteorのサブドメインにデプロイできるのはすごいですね。
できたのがこれ
https://acro5piano.meteor.com/
※ 2016/04/11追記
Meteorが無料ホスティングをやめたそうです。なのでこの記事の意味は半分失われました・・・。
ソースコードはこちらに置いておきました。
GitHub - acro5piano/meteor-simple-counter: Click the button, and the number will increase.
カウンターといってもボタンを押したら数字が増えるだけのものです。
私が書いた処理は、
- 最初にMongoDBを初期化、カウンター用のドキュメントを追加
- DBから取ってきた値を表示
- 「ボタン押下→DB更新」というイベントリスナー追加
だけです。
すごいのが、画面上の数値のアップデート処理を明示的に行っていないこと。WEBソケットでサーバーとクライアントが常時接続しており、フレームワーク側がDBの変更を検知して勝手に画面を更新してくれます。
まさにリアクティブですね。
しかもこれは複数のブラウザでも更新されます。(プライベートタブを開いて検証済み)
解説
PHP + JavaScript のようにサーバー・クライアントで分離したプログラムなら
クライアントサイド : ボタン押下 → AjaxでPOST → 待機 ↓ サーバーサイド : POSTメソッドを受け取る → DBの値を更新 → 結果をクライアントに渡す ↓ クライアントサイド : 結果を受け取る → 表示用のDOMを動的に変更
というプログラムを書かなければいけないですが、Meteorだと
クライアントサイド : ボタン押下 → DBの値を更新
というプログラムだけで済みます。
この例だと非常に単純なことしかやっていませんが、応用次第で
- リアルタイムのチャットアプリ
- 「今このサイトを何人が見ているか」を動的に表示
- ソーシャルゲーム
などが簡単に実現できるのではないかと思います。
おまけ
本番環境でMeteor使うためには、Nginxでプロキシーパスを使うそうです。
個人的にでも勉強しようかな。
また、弊社では、Meteorやその他最新技術を使いたい!というエンジニアを絶賛募集中です!
社内SE(アプリ開発) | 株式会社 クイック | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2016/01/20 18:32:36更新 | id:27758