Felix’s Node.js Convincing the boss guide
node.js を上司に説得するガイドという文章が面白かったので, それを斜め読んだメモです. node.js の良いユースケース, 悪いユースケースなどが書かれていています.
Felix’s Node.js Convincing the boss guide
このガイドは node.js の初期からのコントリビューターである Felix Geisendorfer による node.js のガイド のうちのひとつです.
導入
node.js は話題の技術ですが, どんなアプリにでも使えるものではありません. 多くの場合は既存の技術のほうが適切です.
この文章では node.js の使いどころや管理職を説得する方法を紹介しています.
Bad Use Cases
CPU heavy apps
CPU ヘビーで IO が軽いようなアプリには向いていません. 例えば動画のエンコーディング, AI といった処理です. そういった処理は C/C++ で書くほうが適切です. (ただし node.js では C++ でアドオンを書くこともできます)
Simple CRUD / HTML apps
通常の Web アプリ (db からデータを読み, html をレンダリングするようなもの) を作るときは, まだ PHP, Ruby, Python を使ったほうがメリットがあります. スケーラビリティやパフォーマンスで node.js に多少分があるかもしれませんが, Rails, CakePHP, Django のようなパワフルなフレームワークがまだ node.js にはありません.
NoSQL + Node.js + Buzzword Bullshit
node.js + NoSQL なアプリを次につくろうとしているとしたら, ちょっと待ってください. たしかに, Redis, CouchDB, MongoDB, Riak, Casandra, etc... はとても魅力的です. しかし新たな技術を2つも使うことによって, リスクが倍増してしまいます.
Good Use Cases
JSON APIs
軽量な REST/JSON API の実装には node.js は非常に向いています. ノンブロッキングIOモデル + JavaScript は db や Web Service をラップし JSON を提供するような仕組みにはベストマッチです.
Single page apps
ひとつのページで AJAX をヘビーに使う, gmail のようなクライアントで多くを行うアプリにも向いています. 多くのリクエストを低レイテンシでさばける, 共通のバリデーションコードをサーバとクライアントで共有するという特徴がのためです.
Shelling out to unix tools
node.js は大量の子プロセスを作り, その出力をストリームとして扱えるので, 従来の Unix のコマンドラインツールと組み合わせると大きな力を発揮します.
Streaming data
従来の Web アプリのように http リクエスト・レスポンスをアトミックに扱うのではなく, ストリームとして扱う場合に node.js は向いています. 多くの cool な node.js のアプリはこの特徴を使っています. 例として リアルタイムの動画アップロード などがあります.
Soft Realtime Applications
twitter, チャット, sport bets, インスタントメッセージングなどのソフトなリアルタイムアプリに向いています. ただし, JavaScript は GC の挙動にレスポンスタイムが依存してしまうので, レスポンスタイムが安定しません. 一定のレスポンスタイムが求められるようなハードなリアルタイムアプリには, Erlang などが向いているでしょう.
Convincing the boss
node.js を使うのが適切なユースケースだとわかったら, つぎは上司を説得しないといけません.
まずプロトタイプを作るのがもっとも良い方法です.
また Node.js の以下のようなメリットをアピールします.
- 優秀な人材を得やすい
- JavaScript 処理系は大抵のマシンには入っているので, 多くの開発者は js の経験がある
- 活発なコミュニティ
- パフォーマンス
- V8, ノンブロッキングIO
- 若いプロジェクトだが, 企業(Joyent)のバックアップがある
- Yahoo! や HP での採用実績もある
Convincing a client
もしあなたがフリーランスや小さなベンチャーをやっていて, クライアントに対して node.js の使用を説得する場合は, より保守的になったほうが良いと思います. node.js はまだ急速に発展している途中なので, 安定するまでアプリをメンテナンスするコストが比較的高くなります.
関連記事
Felix’s Node.js Community Guide
node.js のコミュニティについてのガイドが面白かったので, それを斜め読んだメモです. IRC や ML, コミュニティの重要人物などについてまとめられています.
Felix’s Node.js Community Guide
このガイドは node.js の初期からのコントリビューターである Felix Geisendorfer による node.js のガイド のうちのひとつです.
導入
このガイドは Beginners Guide を読み終わり, さらに node.js コミュニティに参加したい人のためのものです.
IRC
- IRC は vim 対 emacs の宗教戦争をするのにもいい場所だけど, 同様に node.js のコミュニティの中の人とコミュニケーションをするのにもいい場所
- オフシャルのチャンネルはは freenode の "#node.js" チャンネル (dot もチャンネル名の一部)
- 常時 500 人くらいの参加者
- 質問する前にまずググるべし
Google Group
- オフィシャルのリストは2つ
- nodejs
- 一般的な質問・議論を行うリスト. node.js のユーザはこちら
- nodejs-dev
- 開発者向け. バグを見つけたり, 将来の機能について議論している. ノイズも少ないし, コアコントリビューターの多くはこのリストをフォローしている
- #nodejs
- twitter のハッシュタグはドットが使えないので, #nodejs が使われている
- http://search.twitter.com/search?q=node.js:node.js
- あるいは単に "node.js" という単語でサーチしてもいい
Community Members
Ryan Dahl
- node.js の開発者, メンテナ, BDFL
- つまり, すべてのコードは彼にレビューされる. リポジトリに直接プッシュできるのは彼だけ.
- 彼はとても忙しいので, 彼に直接質問して答えてくれなくても怒らないように
- 現在は Joyent で働いている
- Joyent は node.js のホスティングサービスを提供し, node.js のオフィシャルコーポレートスポンサーでもある
IRC Nic | ryah |
---|---|
@ryah | |
GitHub | ry |
Blog | blog.nodejs.org |
Where | San Fransico, USA |
Isaac Schlueter
- npm の作者
- Joyent 勤務
- node.js core の重要なコントリビューター
- JavaScript コミュニティをセミコロンから解放する活動も
IRC Nic | isaacs |
---|---|
@izs | |
GitHub | isaacs |
Blog | blog.izs.me |
Where | San Fransico, USA |
Bert Belder
- node.js の Windows 対応のメイン開発者
- プロジェクト全体への重要なコントリビューターでもある
IRC Nic | piscisaureus |
---|---|
@piscisaureus | |
GitHub | piscisaureus |
Where | Netherlands |
TJ Holowaychuk
@tjholowaychuk | |
GitHub | visionmedia |
Blog | tjholowaychuk.com |
Where | Victoria, BC, Canada |
Tim Caswell
- connect の作者
- HP に勤務 (以前は Palm)
- How To Node - NodeJS でも有名
IRC Nic | creationix |
---|---|
@creationix | |
GitHub | creationix |
Blog | howtonode.org |
Where | San Fransico, USA |
Felix Geisend〓rfer
- このガイドの著者
- formidable, node-mysql の作者
- node.js core 開発でも活動
- node.js を使った ファイルアップロード & ビデオエンコーディングサービスを提供する transloadit の co-founder
IRC Nic | felixge |
---|---|
@felixge | |
GitHub | felixge |
Blog | debuggable.com/blog |
Where | Berlin, Germany |
Mikeal Rogers
- request の作者
- core の開発, コミュニティでも活発に活動
IRC Nic | mikeal |
---|---|
@mikeal | |
GitHub | mikeal |
Blog | mikealrogers.com |
Where | San Fransico, USA |
Alexis Sellier
IRC Nic | cloudhead |
---|---|
@cloudhead | |
GitHub | cloudhead |
Blog | cloudhead.io |
Where | Montreal, QC, Canada |
Jeremy Ashkenas
- CoffeeScript, underscore.js, backbone.js, docco の作者
- node.js のスタートアップ DocumentCloud
IRC Nic | jashkenas |
---|---|
@jashkenas | |
GitHub | jashkenas |
Where | New York City, USA |
Jed Schmidt
- 日本語翻訳者の傍ら JavaScript Ninja として活躍
- fab.js の作者
- fab は js コードを構造化する革新的なアプローチ. 多くの新しい側面を指摘し, 殆どの人の JavaScript に対する既成概念を打ち破った
IRC Nic | jedschmidt |
---|---|
@jedschmidt | |
GitHub | jed |
Blog | jedschmidt.com |
Where | Tokyo, Japan |
Marak Squires
- Marak は Jim Bastard のエイリアス
- 毎月多くの node.js ライブラリをリリース
Marak who goes by the alias Jim Bastard, is mostly known for pumping out douzands of node.js libraries per month, an ability only exceeded by his artful use of profanity and trolling people. Don't get upset if he rubs you the wrong way, he's a nice guy, but you just shouldn't challenge him to a Monkey Island style sword duell.
IRC Nic | jimbastard |
---|---|
@maraksquires | |
GitHub | marak |
Blog | blog.nodejitsu.com |
Where | New York City, USA |
Peteris Krumins
- good coders code, great coders reuse で有名
- James Halliday とともに browserling という node.js のスタートアップを始めた
IRC Nic | pkrumins |
---|---|
@pkrumins | |
GitHub | pkrumins |
Blog | catomat.net |
Where | Riga, Latvia |
James Halliday
- dnode, node-optimist, node-browserify など, 数多くのライブラリで有名
- Peteris Krumins と browserling を運営. キュートなロボットは彼の作品
IRC Nic | substack |
---|---|
@substack | |
GitHub | substack |
Blog | substack.net |
Where | Oakland, California, USA |
- このリストは包括的ではないが, node.js の全ユーザー を載せるわけにもいかないので, このような形になっている