33
Node における CommonJS 応について 2011-11-19 @esperia09

NodeにおけるCommonJS対応について

Embed Size (px)

DESCRIPTION

どうしてこうなった

Citation preview

Page 1: NodeにおけるCommonJS対応について

Nodeにおける CommonJS対応について

2011-11-19@esperia09

Page 2: NodeにおけるCommonJS対応について

Nodeにおける CommonJS対応について

2011-11-19@esperia09

…のはずだった!

Page 3: NodeにおけるCommonJS対応について

自己紹介

• HN: esperia• Twitter: @esperia09

• Re: Kayo-System ってとこで働いてます• お仕事: Androidアプリ開発とか• 絵とか描くの好きです• JavaScript周りは趣味でやってます

• ライトニングトークは初めて

Page 4: NodeにおけるCommonJS対応について

What is ...

Page 5: NodeにおけるCommonJS対応について

?

Page 6: NodeにおけるCommonJS対応について

JavaScriptをサーバーサイドなどで使うための標準仕様

名前それっぽいけどライブラリじゃないです

Page 7: NodeにおけるCommonJS対応について

サーバーサイド JS以外でも、以下のような実装が対象

• コマンドラインツール• デスクトップアプリケーション• ハイブリッドアプリケーション

o Titaniumとか Adobe AIRみたいなの

Page 8: NodeにおけるCommonJS対応について

JavaScriptとCommonJSの歴史

Page 9: NodeにおけるCommonJS対応について

• 1995/05 : Brendan Eich さんが JSのプロトタイプを作るo 今のMozilla CTOo 実装 10日o Brendan「 Schemeを実装するって聞いてたんだけどど

…ういうことなの 」o Netscapeェ

Page 10: NodeにおけるCommonJS対応について

• 1996 : 初めてブラウザにスクリプト言語が載る• Netscape Navigator 2.0

• 同 1996 : 初のサーバーサイド JS製品、 LiveWireが登場• これもNetscapeの製品• 当初からNetscapeは JavaScriptをサーバーサイドで動作させることについて考えていた

Page 11: NodeにおけるCommonJS対応について

1996 〜 2008年 〜この間共通仕様なし〜

Page 12: NodeにおけるCommonJS対応について

2009/01 : ServerJS(後の CommonJS)が登場Kevin Dangoorさんが標準化プロジェクトをスタートMozillaのデベロッパーツールのプロダクトマネージャしてる人

http://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/

Page 13: NodeにおけるCommonJS対応について

2009/08 : ServerJSが「CommonJS」へ改名

2009 年内 : 実装が登場してくる Persevere

http://www.persvr.org/Page/Persevere JackJS

http://jackjs.org/ 今の Joyentの Issacさんも commitしていた

Page 14: NodeにおけるCommonJS対応について

で、

Page 15: NodeにおけるCommonJS対応について
Page 16: NodeにおけるCommonJS対応について

Q.Nodeは、CommonJSに対応してるの?

Page 17: NodeにおけるCommonJS対応について

http://d.hatena.ne.jp/t_43z/20110626/1309082158

Page 18: NodeにおけるCommonJS対応について

CommonJSの仕様のうち、Nodeが準拠していることになっているのは以下の2つ

Module 1.0しかし Nodeならではの独自仕様が存在する

Unit Testing 1.0Assertモジュールのみ定義されている

Page 19: NodeにおけるCommonJS対応について

http://www.reddit.com/r/node/comments/h1m2o/i_am_ryan_dahl_creator_of_nodejs_ama/c1rxntv

Page 20: NodeにおけるCommonJS対応について

ry「 CommonJSはオワコン」

Page 21: NodeにおけるCommonJS対応について

ryan「 Nodeの API変えるとき、 CommonJSのことは一切気にしないよ」

「どういうことなの?」

Page 22: NodeにおけるCommonJS対応について

http://dic.nicovideo.jp/a/何・・・だと・・・%3F

Page 23: NodeにおけるCommonJS対応について

理由考えた

Why?

Page 24: NodeにおけるCommonJS対応について

1.コミュニティの規模が違う

http://www.slideshare.net/olegp/server-side-javascript-going-all-the-way

Page 25: NodeにおけるCommonJS対応について

http://groups.google.com/group/commonjs?pli=1

最近コミュニティ寂しいんですよね

←09/15

←11/04

Page 26: NodeにおけるCommonJS対応について

策定もそこまで活発ではないみたい

8ヶ月前と状況があまり変わってないように見える

http://www.commonjs.org/specs/

↓だいたい決まったやつ

Page 27: NodeにおけるCommonJS対応について

2.仕様で縛られたくない?

• Nodeの革新的なところは、 JavaScriptを採用したところではなくそのシステムだというところ

• 仕様を気にしているとシステムの策定に歯止めがかかる?

引用元: node.jsとは何かhttp://d.hatena.ne.jp/badatmath/20101020/1287587240

●「 js に決まったというのはもともと JavaScript がシングルスレッドモデルでイベントループという仕組みを持っていたから」● 「もし JavaScript がスレッドモデルを採用していたとしたらnode.js ではなくて node.el になっていたとしても不思議じゃなかった。」

Page 28: NodeにおけるCommonJS対応について

2-2.仕様で縛られたくない?

• Nodeは関数にコールバックを必要とするので、もしかしてCommonJS に対応すると仕様上問題がでてくる?

● 現に、 CommonJSへの対応がとても進んでいる RingoJSは、イベントループに関して懐疑的

● RingoJS … JVM上で動くサーバーサイド JSの実装

Page 29: NodeにおけるCommonJS対応について

http://groups.google.com/group/ringojs/browse_thread/thread/4238cd010c2a1df9

「シングルスレッドのイベントループサーバーのパフォーマンス周りには多くの神話があります。もちろんスレッドがないということはメモリ使用量が下がる訳

ですが、それは一旦ロードするとサーバの遅延が増加することを意味します。」

Page 30: NodeにおけるCommonJS対応について

これオワコン言われても…仕方ない ?

Page 31: NodeにおけるCommonJS対応について

RingoJS使ったりしてる僕としては、

I hope ...

Page 32: NodeにおけるCommonJS対応について

Nodeで培われた仕様が、CommonJSとして反映されることを

願ってます。

Page 33: NodeにおけるCommonJS対応について

ご清聴ありがとうございました

Thank you!