by shigemk2

当面は技術的なことしか書かない

それでもNode.jsでやる #lldiver

日本Node.jsユーザーグループ代表

最近こんなこと言われる

日本でのNode.jsはオワコン

TJとExpressの作者がGolangに逃げた

Node.jsって結局なんなのか

2009 Node.js is born Ryan Dahl Joyent

さかのぼって2001

C10K問題

  • 「Web2.0の先にあるC10K問題の話」みたいな記事がバズる
  • ちょーたくさんのクライアントが一度に接続したらサーバ死ぬよね問題
  • 当事のフロントはApache
  • クライアントが接続するたびにプロセスとかスレッドがあがるとメモリが使われて…

1台で10Kもさばかねーしwwwwwwwwwww→ところが、xhr-long pollingが流行った(2006)

Nginx

シングルスレッドなのでコネクションがあたくさんあってもworkerは起動しないので、リソースは効率的 (Apacheはworkerがいっぱい出来る)

C10K問題が出てきてからイベントループモデルが流行り出す

EventMachine Twisted AnyEventなど

時間かかかる処理(ファイルIOとかネットワーク系)はできる限り非同期にすべきという考え方がイベントループモデル

Ryan Dahl

イベントループモデルは良いが、既存のIO同期系の処理はなくしたい

非同期ライブラリとしてlibevが採用され、後にlibuvになる

V8 is born in 2008

これまでのJS → 構文解析 → 実行 故に、遅い

V8→動的にマシン語に変換

  • C10Kを解決するイベントループモデル
  • 高速な非同期I/O
  • 強制可能な言語
  • 超絶早い処理系

2010-2012 socket.io expressあたりが騒がれて普及へ

Node.jsとはなんなのか

  • 非同期ライブラリとイベントループモデルで動く高速かつ省リソースなJS実行環境
  • socket.ioなど、コネクションを貼りっぱなしにするものと親和性が他界
  • Node.jsだけで無理はしないことが重要

分散環境で複数サーバと協調する仕組みにNodeは向かなかった。だけで、TJとしてはWebアプリを作るなら相変わらずNode.jsを使い続けるぜ、っていう壮大な釣り

適用されるは範囲によっては不利なだけ。。。

11/15 東京Node学園祭2014