Upload
satoshi-kohno
View
1.633
Download
1
Embed Size (px)
DESCRIPTION
どうしてこうなった
Citation preview
Nodeにおける CommonJS対応について
2011-11-19@esperia09
Nodeにおける CommonJS対応について
2011-11-19@esperia09
…のはずだった!
自己紹介
• HN: esperia• Twitter: @esperia09
• Re: Kayo-System ってとこで働いてます• お仕事: Androidアプリ開発とか• 絵とか描くの好きです• JavaScript周りは趣味でやってます
• ライトニングトークは初めて
What is ...
?
JavaScriptをサーバーサイドなどで使うための標準仕様
名前それっぽいけどライブラリじゃないです
サーバーサイド JS以外でも、以下のような実装が対象
• コマンドラインツール• デスクトップアプリケーション• ハイブリッドアプリケーション
o Titaniumとか Adobe AIRみたいなの
JavaScriptとCommonJSの歴史
• 1995/05 : Brendan Eich さんが JSのプロトタイプを作るo 今のMozilla CTOo 実装 10日o Brendan「 Schemeを実装するって聞いてたんだけどど
…ういうことなの 」o Netscapeェ
• 1996 : 初めてブラウザにスクリプト言語が載る• Netscape Navigator 2.0
• 同 1996 : 初のサーバーサイド JS製品、 LiveWireが登場• これもNetscapeの製品• 当初からNetscapeは JavaScriptをサーバーサイドで動作させることについて考えていた
1996 〜 2008年 〜この間共通仕様なし〜
2009/01 : ServerJS(後の CommonJS)が登場Kevin Dangoorさんが標準化プロジェクトをスタートMozillaのデベロッパーツールのプロダクトマネージャしてる人
http://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/
2009/08 : ServerJSが「CommonJS」へ改名
2009 年内 : 実装が登場してくる Persevere
http://www.persvr.org/Page/Persevere JackJS
http://jackjs.org/ 今の Joyentの Issacさんも commitしていた
で、
Q.Nodeは、CommonJSに対応してるの?
http://d.hatena.ne.jp/t_43z/20110626/1309082158
CommonJSの仕様のうち、Nodeが準拠していることになっているのは以下の2つ
Module 1.0しかし Nodeならではの独自仕様が存在する
Unit Testing 1.0Assertモジュールのみ定義されている
http://www.reddit.com/r/node/comments/h1m2o/i_am_ryan_dahl_creator_of_nodejs_ama/c1rxntv
ry「 CommonJSはオワコン」
ryan「 Nodeの API変えるとき、 CommonJSのことは一切気にしないよ」
「どういうことなの?」
http://dic.nicovideo.jp/a/何・・・だと・・・%3F
理由考えた
Why?
1.コミュニティの規模が違う
http://www.slideshare.net/olegp/server-side-javascript-going-all-the-way
http://groups.google.com/group/commonjs?pli=1
最近コミュニティ寂しいんですよね
←09/15
←11/04
策定もそこまで活発ではないみたい
8ヶ月前と状況があまり変わってないように見える
http://www.commonjs.org/specs/
↓だいたい決まったやつ
2.仕様で縛られたくない?
• Nodeの革新的なところは、 JavaScriptを採用したところではなくそのシステムだというところ
• 仕様を気にしているとシステムの策定に歯止めがかかる?
引用元: node.jsとは何かhttp://d.hatena.ne.jp/badatmath/20101020/1287587240
●「 js に決まったというのはもともと JavaScript がシングルスレッドモデルでイベントループという仕組みを持っていたから」● 「もし JavaScript がスレッドモデルを採用していたとしたらnode.js ではなくて node.el になっていたとしても不思議じゃなかった。」
2-2.仕様で縛られたくない?
• Nodeは関数にコールバックを必要とするので、もしかしてCommonJS に対応すると仕様上問題がでてくる?
● 現に、 CommonJSへの対応がとても進んでいる RingoJSは、イベントループに関して懐疑的
● RingoJS … JVM上で動くサーバーサイド JSの実装
http://groups.google.com/group/ringojs/browse_thread/thread/4238cd010c2a1df9
「シングルスレッドのイベントループサーバーのパフォーマンス周りには多くの神話があります。もちろんスレッドがないということはメモリ使用量が下がる訳
ですが、それは一旦ロードするとサーバの遅延が増加することを意味します。」
これオワコン言われても…仕方ない ?
RingoJS使ったりしてる僕としては、
I hope ...
Nodeで培われた仕様が、CommonJSとして反映されることを
願ってます。
ご清聴ありがとうございました
Thank you!