クイック エンジニアリングブログ

株式会社クイック Web事業企画開発本部のエンジニアリングチームが運営する技術ブログです。

フルスタックのNode.jsフレームワーク「Meteor」で簡易カウンターを作ってみた

概要


近年Node.js周りで騒がれている「Meteor」。

この辺りの記事を読むとその特徴がよく分かります。

www.airpair.com

medium.com

私も公式サイトのチュートリアルを終え、PHPRailsと全く違う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でプロキシーパスを使うそうです。

www.digitalocean.com

個人的にでも勉強しようかな。

また、弊社では、Meteorやその他最新技術を使いたい!というエンジニアを絶賛募集中です!

社内SE(アプリ開発) | 株式会社 クイック | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2016/01/20 18:32:36更新 | id:27758