01 Apr 2011

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 - フリーフォーム フリークアウト

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 もチャンネル名の一部)

Google Group

  • オフィシャルのリストは2つ
  • nodejs
    • 一般的な質問・議論を行うリスト. node.js のユーザはこちら
  • nodejs-dev
    • 開発者向け. バグを見つけたり, 将来の機能について議論している. ノイズも少ないし, コアコントリビューターの多くはこのリストをフォローしている

Twitter

Community Members

Ryan Dahl
  • node.js の開発者, メンテナ, BDFL
    • つまり, すべてのコードは彼にレビューされる. リポジトリに直接プッシュできるのは彼だけ.
  • 彼はとても忙しいので, 彼に直接質問して答えてくれなくても怒らないように
  • 現在は Joyent で働いている
    • Joyent は node.js のホスティングサービスを提供し, node.js のオフィシャルコーポレートスポンサーでもある

IRC Nic ryah
Twitter @ryah
GitHub ry
Blog blog.nodejs.org
Where San Fransico, USA
Isaac Schlueter

IRC Nic isaacs
Twitter @izs
GitHub isaacs
Blog blog.izs.me
Where San Fransico, USA
Bert Belder

  • node.js の Windows 対応のメイン開発者
  • プロジェクト全体への重要なコントリビューターでもある

IRC Nic piscisaureus
Twitter @piscisaureus
GitHub piscisaureus
Where Netherlands
TJ Holowaychuk

  • express, jade をはじめ, 数多くのライブラリの作者

Twitter @tjholowaychuk
GitHub visionmedia
Blog tjholowaychuk.com
Where Victoria, BC, Canada
Tim Caswell

IRC Nic creationix
Twitter @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
Twitter @felixge
GitHub felixge
Blog debuggable.com/blog
Where Berlin, Germany
Mikeal Rogers

  • request の作者
  • core の開発, コミュニティでも活発に活動

IRC Nic mikeal
Twitter @mikeal
GitHub mikeal
Blog mikealrogers.com
Where San Fransico, USA
Alexis Sellier

IRC Nic cloudhead
Twitter @cloudhead
GitHub cloudhead
Blog cloudhead.io
Where Montreal, QC, Canada
Jeremy Ashkenas

IRC Nic jashkenas
Twitter @jashkenas
GitHub jashkenas
Where New York City, USA
Jed Schmidt

  • 日本語翻訳者の傍ら JavaScript Ninja として活躍
  • fab.js の作者
    • fab は js コードを構造化する革新的なアプローチ. 多くの新しい側面を指摘し, 殆どの人の JavaScript に対する既成概念を打ち破った

IRC Nic jedschmidt
Twitter @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
Twitter @maraksquires
GitHub marak
Blog blog.nodejitsu.com
Where New York City, USA
Peteris Krumins

IRC Nic pkrumins
Twitter @pkrumins
GitHub pkrumins
Blog catomat.net
Where Riga, Latvia
James Halliday

  • dnode, node-optimist, node-browserify など, 数多くのライブラリで有名
  • Peteris Krumins と browserling を運営. キュートなロボットは彼の作品

IRC Nic substack
Twitter @substack
GitHub substack
Blog substack.net
Where Oakland, California, USA

  • このリストは包括的ではないが, node.js の全ユーザー を載せるわけにもいかないので, このような形になっている

関連記事

Felix’s Node.js Convincing the boss guide - フリーフォーム フリークアウト