Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Future of Programming in Node.js

The Future of Programming in Node.js

東京Node学園祭2013 基調講演

Toshihiro Shimizu

October 26, 2013
Tweet

More Decks by Toshihiro Shimizu

Other Decks in Programming

Transcript

  1. about me { “name”: “清水 俊博”, “twitter”: “meso”, “github”: “meso”,

    “communities”: [“nodejs_jp”, “java-ja”], “work”: “dwango” }
  2. 本題 • The Future of Programming in Node.js • Isaac

    Schulueterが今年8月14日にMLに投げ たメール • 今のところ日本語に翻訳されてない!! ◦ 最近ワザノバさんでNodeの話題が翻訳されすぎててネ タに困ってた ▪ Node.jsをサーバサイドのUIレイヤに限定するのか? ▪ Issac Schlueterが語るNode.js v1.0へのロードマップ ◦ ドワンゴでのNode事例とか基調講演っぽくないし
  3. Isaacs Schlueter • 言わずと知れた、Nodeの2代目リーダー • MLにメールを投稿した目的 ◦ 最近、NodeのコアAPIについての議論や意見、要望が 多い ◦

    ここらで今後の計画についてハッキリさせておく • CallbackやStreamやAlt JSなど、11項目につ いて記述 ◦ それぞれの項目に対する反応も含めて紹介 ◦ 超訳入ります。特にメールで会話してるとこ
  4. 1. Callback • callbackは非同期処理を記述するデファクトの 方法であり続けます。 • generatorやpromiseは興味深いですが、あくま でもユーザ拡張の領域のものです。 ◦ generatorとは?

    ▪ 詳しくはConstなんとかさんのセッションで ▪ ECMAScript 6(Node.js v0.11.4以降)で使える ▪ https://github.com/visionmedia/co ▪ https://github.com/koajs/koa
  5. 1. Callback • Bert: callback地獄を根本的に解決するようなソ リューションがでてきたらどうすんの? • Isaac: もし、ユーザ拡張の何れかのライブラリ が明らかにデファクトとして使われるようになり、

    なおかつ、それを後方互換性を損なうことなくコ アに取り込めるなら、そのとき検討しましょう。 • Isaac: っていうかこの話この前したじゃん
  6. 2. Stream • Streamはより早く、かつ一貫性のあるものにな ります。 • v0.10との後方互換性は100%保たれます。 ◦ 「互換モード」がAPIによってより隠蔽される ◦

    ストリームをpause()した後に、安全にread()することが できる • StreamをコアAPIの中に隠蔽せずに外から見 える状態にすることで、Streamを拡張したクラス をユーザが作ることを推奨している、その姿勢 は変わりません。
  7. 2. Stream • Radford: `on(‘data’, …)`って書き方はそのまま 使えんの? • Isaac: 使えるよー。v0.10では`on(‘data’,

    …)`が あると互換モードになって、v0.12では、flowを 開始するリスナが追加されるよ。
  8. 3. Domain • Domainはリファクタリングすることで、より包括 的にエラーを継続追跡できる仕組みにしていき ます。 ◦ エラーハンドリングの仕組みをユーザ拡張で作れるよう に •

    最終的にはDomainモジュールはユーザ拡張で 補えるものになるかもしれません。 ◦ けどまあとりあえずNodeにバンドルされたままであり続 けるよ
  9. 3. Domain • Bert: エラーハンドリングは本当に糞だよね • Issac: 糞だねー。何かいい感じに継続追跡出 来るのがでてきたらいいのに。 •

    Nuno: エラーハンドリングは確かに糞だけど、 ぶっちゃけErlang以外の環境だとどこでも糞 じゃね。 • Arunoda: まあ、Callbackもエラーハンドリング も糞だけど、それでもアプリ作れるしまあいいん じゃん。
  10. 6. Binary Addon • v0.12では、V8のAPIが*著しく*変わったため、 基本的には全てのバイナリアドオンが動きませ ん! • しかもopensslやzlibなどのライブラリと組み合 わせることもとても難しくなった。

    • 今この問題に取り組んでいます。 ◦ 安定したCのAPI互換レイヤを追加します。 ▪ Cで書かれたバイナリアドオンがNodeの安定版のブ ランチ間で、同一コード(できれば同一バイナリ)で動 作するように
  11. 7. New Language Features • V8には新しい言語仕様が取り入れられ、それら はNodeにもやってきます。 • しかし、それらの仕様を自動的にenableにする つもりはありません。

    • その代わり、何を必要としているのかを検知し て、わかりやすいエラーメッセージを投げるよう にします。
  12. 10. Roadmap • v0.12は完成に近づいています。 • v0.12が出たらみんなに使ってもらいます(安定 版だからね)。 • v0.12の後、v1.0に向けてはAPIの変更は行わ ないつもりです。

    • v0.12とv1.0の間では、パフォーマンス改善とバ グFixと安定性向上に注力します。 • 今動くものが来年も、しかもより早く安定して動 作するよう、最大限の努力をします。
  13. 11.1. StrongLoop • Bert: StrongLoopはさらなる改善を加えていく よ。それはNodeとは呼ばれなくなるかもだけ ど。 • Isaac: “StrongLoop

    Nodeディストリビューショ ン”のことだよね。それはそれでOSSのあり方な んじゃない。 • Bert: それそれ。StrongLoopのがコアへの新機 能追加の実験場になるとは思ってないけど、何 か他のものにはなるかもね。
  14. 11.2. Meteor • Arunoda: Bertが言うように問題に対するソ リューションは必要で、でもそれはNodeとは別 物だ。Meteorもそのいい例だよね。 • Bert: というかユーザ拡張とかforkとかが正しい

    なら、なんでみんなそんなにMeteorに腹立てて んの? • Isaac: え、個人的にはMeteorに腹立てたりして ないよ。MeteorがNodeに対して何かスポーツ マンシップに悖る不作法なことしたってのも聞い てないし。
  15. コミュニティのリーダー • コミュニティの段階に応じてリーダーが担うべき 役割が変化する ◦ Ryan -> Isaac • Node.js

    日本ユーザグループも3年以上経ちま した ◦ そろそろ代表を交代しようと思います ◦ 立候補、推薦の方法をMLで周知します
  16. • 既に紹介したもの ◦ http://strongloop.com/strongloop-suite/strongnode/ ◦ https://github.com/visionmedia/co ◦ https://github.com/koajs/koa • その他

    ◦ ツール ▪ https://github.com/Unitech/pm2 ▪ http://commando.io/ ▪ http://www.opsmezzo.com/ ▪ https://github.com/creationix/jsgit ▪ http://brunch.io/ ▪ http://makebooth.com/i/1xkN1 Nodeの最近の面白い事例
  17. Nodeの最近の面白い事例 ◦ Framework / Boilerplate ▪ https://github.com/airbnb/rendr ▪ http://actionherojs.com/ ▪

    http://www.deployd.com/ ▪ http://www.mean.io/ ◦ Service ▪ http://glide.so/ ◦ Development Environment ▪ http://noflojs.org/ ◦ Hardware ▪ http://tessel.io/ ◦ OS ▪ http://nodeos.github.io/