ここ数週間ぐらい、node.jsとmongodbでwebアプリを作っている。その中で参考になった良リンクをここに。

実践Node.js プログラミング (Programmer's SELECTION)
- 作者: Mike Cantelon,Marc Harter,T.J. Holowaychuk,Nathan Rajlich,生越昌己,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2014/06/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る
[目次]
- Javascriptの基礎(Node.jsプログラミングで特に意識すること)
- Node.js入門
- Expressの入門
- ExpressのテンプレートEJSの使い方
- セッション管理
- mongodb関連
- 例外処理、サニタイズなど
- バックグラウンド実行
- パフォーマンス
- ログ出力
- apacheとの共存
- その他
- 開発環境補足
- heroku
- npm(node.jsのモジュールなどのパッケージ管理ソフト)
- 作ったもの
- 作りはじめて、現在の感想
Javascriptの基礎(Node.jsプログラミングで特に意識すること)
Node.jsではフロー制御(関数Aを実行後、関数Bを実行するなど)を行う上で、コールバック関数を使って処理のフローを作ることが多くなる。コールバック関数とは関数Aを実行後、次に実行する関数のこと。その基礎などを以下にメモ。
- コールバック問題対応
- Node.jsでのフロー制御
Node.js入門
Node.jsの入門書はあまり、書籍では数がないので出ていないので、ネットに出ている情報をベースに勉強することが中心。強いていうならこの本(Smashing Node.js: JavaScript Everywhere (Smashing Magazine Book Series)
)とかがお薦め。(ディスカウント前の3000円くらいで買った。今は1300円位だからお得)
- webソケット系
- Node.jsのモジュールを使ったクラス作成
- Node.jsでのメール送信
Expressの入門
- Node.jsでWebアプリケーションを作る上で便利なフレームワーク。
- Expressを作った人が新しく作ったフレームワークKoa。Node.js(javascriptの面倒な非同期処理をジェネレータ yieldを使って上手くやってくれるみたいです)
ExpressのテンプレートEJSの使い方
Node.jsでWebテンプレート。ページのテンプレートを作って、そのページを呼び出す際に、変数を与えて、Webページのタイトルだけ都度動的に変えるなどが可能です。jadeっていうものあるけど、EJSのほうが、なんとなくわかりやすい。
セッション管理
ログインが必要なサイトとか作る場合にセッション管理が必要ですが、その実装方法が書いてあります。
- mongodbでセッション管理
- mongodb以外でのセッション管理(Memcachedとか)
mongodb関連
- Mongodbのインストール
- Node.js + mongodb全般
- herokuでNode.jsを使ってchatアプリ その3(MongoDBを利用して、メッセージを永続化) - from scratch
- 第5回 Node.jsアプリケーションをHerokuで動かす:基礎から学ぶNode.js|gihyo.jp … 技術評論社
- Node.jsを使ってみよう(2):Node.js、MongoDBでデータの保存 (1/4) - @IT
- Tutorial - Getting Started With Node.js, Express, MongoDB | Christopher Buecheler - Web, Writing, Cocktails and More
- Node.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiita
- mongooseでのクエリ
- node.js x mongoose での組み込みドキュメント(サブドキュメント)の使い方 - "Diary" インターネットさんへの恩返し
- node.js x mongoose でinsertした_idを取得する方法 - "Diary" インターネットさんへの恩返し
- node.js x mongoose で データ取得範囲を指定する方法(比較) - "Diary" インターネットさんへの恩返し
- node.js x mongoose でkey(フィールド)を指定して値を取得する(find)方法 - "Diary" インターネットさんへの恩返し
- mongodb - How to return Mongoose results from the find method? - Stack Overflow
- node.js から MongoDB にアクセス (Mongoose の紹介) - KrdLab's blog
- node.js - Mongoose/mongoDB query joins.. but I come from a sql background - Stack Overflow
- mongodbでのjoin
- mongoose(mongodb用ドライバ)
- mongodbのCappled collection(自動ハウスキープ)
例外処理、サニタイズなど
バックグラウンド実行
node.jsはそのままでコンソール立ち上げっぱなしのプロセス起動になってしまうので、バックグラウンド実行にします
開発環境補足
- Visual Studio
- Aptana(開発ツールのインストール)
heroku
- 画像ファイルなどの扱い
- テストherokuサーバ
npm(node.jsのモジュールなどのパッケージ管理ソフト)
- npmコマンド集
作りはじめて、現在の感想
いろんな所にでているけど、Node.jsの特徴は以下の通り。これらが必要ない場合はNode.jsは扱わない方がいいと感じた。
- 非同期処理が必要
- リアルタイムWeb(Webソケットとか)をしたい
- 大量アクセセスをさばく必要があり
普通にapatchと、phpやrubyで作ったほうがよほど安定して、作りやすく、メンテも楽。なんたって特に特定の順次フローが必要な処理をnode.jsが実施する場合コールバック地獄に陥り、さらに同期できるモジュールを入れたとしてもなんか不安。
あとmongodbだけど、リレーションを持たないようなデータ格納には便利だけど、ユーザ管理やレコードとのヒモ付が少しでも出てくるようなら、普通のmysqlとかRDBMSを使ったほうが、便利でよい。
なのでちゃんとした処理順序を意識したロジックが必要で、さらにデータにリレーションを持たせる場合はnode.js/mongodbは最悪な組み合わせと感じました。(数週間後考えは変わるかも。。。)
とりあえず、これが今の感想。