NodeConf Adventure 2015 に行ってきました。(一日目、二日目に起きたこと)

NodeConf に行ってきました。 NodeConf っていうのは Node.js のための勉強会です。 io.js の中心人物である mikeal や、 npm のCEO である izaacs 、 hapijs author であり、先日 Walmart を退社した Eran Hammer など、そうそうたるメンバーの中でディスカッションをしてきました。

NodeConf Adventure とは

NodeConf Adventureはいわゆる発表者がいて、聴講者が聞くっていうスタイルのカンファレンスじゃありません。

なんというかものすごくメタなカンファレンスで、ワークショップとノウハウの共有をメインとしたディスカッションのための場所です。 アンカンファレンスっていう形式ですね。

午前中に主催者である mikeal がロッジに全員を集合させます。
その後で参加者全員に何が聞きたいかを決めてスタート。

みんな isomorphic とか ES6 とか IoT とか microservices とか言って、発言していて、 substack が 「P2P hack しようぜ」って言ってたのが面白かった。( mikeal は興味なかったみたいでスルーされてたけど。)

それぞれのトピックごとに場所を分けてスタート。

isomorphic

isomorphic って言ってもメインは サーバサイドレンダリングと React っていうよくある話だった。やっぱり viewの機能をサーバサイドで使えるようになったこと、初期表示のスピードが通常のSPAより改善できること、SEOによるアクセス向上などの話がメイントピックだった。

面白かったのは、 browser で module の解決とかどうするのかっていう話で browserify から ES6 に話は飛び火して、 isomorphic を実現するための鍵としてやっぱり ES6 module なんじゃないかっていう話が一番面白かった。

今は browserify っていうか commonjs が主流だけど、これをどうするのか、あと HTTP/2 とかが来たらどうなるのかっていう議論をしていた。(もっと英語で話せるなら日本だとこういう議論してるって言えたんだろうけど、議論に割り込む勇気がなかった)

あと、ここでも fluxible 使ってるっていう人とか meteor で頑張ってるっていう人もいたけど、一人自作したっていう人が居てその人の lighter っていうライブラリを教えてもらってた。

Lighter.io - faster is better

React + isomorphic の ワークショップ

React と isomorphic のワークショップをやってたのでそこにも参加してきた。ワークショップ教材は以下のとおり。

Reactと fluxible つかって簡単なカウンターをみんなで実装しましょうっていうノリ。 1時間無いのと wifi が不安定すぎて一問しか進まなかった。 終わった後でOliverっていう isomorphic workshop をやってた方と話したけど、

僕:「fluxible どうよ?」
Oliver: 「isomorphic library の中ではいいと思うけど、 isomorphic 辛い」
僕: 「何が辛いの?」
Oliver: 「isomorphic でクラサバどちらでも呼べるようにするのがたまに面倒、ブラウザにしかないAPIを呼んじゃうと台無しになるし。」
僕: 「たしかに。でもfetchr とか routr みたいな isomorphic library 使っていれば、そこまで大変じゃないのでは?」
Oliver: 「まぁそうなんだけどね、まだ慣れてないのがあってうっかりすると呼んじゃうんだよ」

みたいなことを言ってました。ちなみに Oliver とは同じ部屋であることもあってすごく仲良くなった。

https://cldup.com/n_70N0wE5r.jpg

Oliver とパシャリ

Node Stability の話

Node.js の安定性っていう io.js Collaborator としてものすごく興味深いトピックに対しての議論だった。



izaacs とか mikeal とか Fishrock とか Chris Dickenson とかのこれまでのコラボレーター達が今後どうするべきかについて議論してた。

最終的に議論の成果として、現時点で mikeal が思うバージョン階層について説明してくれた。

これを io.js の issue に上げて今でも議論中。

f:id:yosuke_furukawa:20150623022328p:plain

こんな感じになる予定らしい。

ES6/7 の話

みんな ES6/7 の関心が高いようで、やっぱりここでも babel の存在感は大きかった。

特に議論になっていたのは、 async-awaitの話、decorator の話、function-bind の話で、みんな ES7 の話をしていた。

特に、 async-await と generator-yield の使い分けの話がメインだった。
NodeConfだとまだ async-await を使って ES7 やるぜっていう人はそこまで多くなかったけど、 io.js だと generator-yield がネイティブに使えるのでそれを基本にやってる人はまぁまぁ多かった。

ES6 workshop

ES6 を io.js を使って動かしてみようワークショップ、これも Oliver さんが担当。

github.com

これ実は微妙に手伝ってて、このリポジトリに io.js の ES6 の issue 投げてたり、 Oliver と discussion してたら、何かわからないことあったらフォローしてくれと言われたので、注意深く聞いてた。

これに関しては知っている事も多かったので、時折Oliverを補足したりしながら進めることができた。

Interview with Chris and Fishrock

終わった後で、 io.js の TC member であるChris DickensonFishrock123 と一緒に今後の io.js について話した。

俺:「今って Chris はどんな事を io.js に入れようとしてるの?」
Chris:「Code Coverage を取れるようにしようとしているよ」
俺:「おお、それって io.js の test のカバレッジ?」
Chris :「そうそう、(画面を見せてくれる)」
俺:「へーすごい。isutanbul で取れるようになるのかー。」
Chris:「今だと tls-legacy があまりカバレッジ良くないとか出てるよ。」
俺:「Fishrockは今何やってるの?」
Fishrock:「バグが出たら直す、PRが来たらレビューする、そればっかりやってるよ。」

俺:「ところで前に isomorphic の issue 上げたんだけど、あれってどう思う?ちょっとセンシティブな話かなぁ」
Fishrock:「うーん、基本的にユーザーランドで解決できるようなものは解決してコアはシンプルにっていうのがいいかなぁ」
Chris:「Agree、ただ url module とかどうするべきかねぇ。」
Fishrock:「url は what-wg で出てる奴が仕様になったらそれを採用するべきかなって思ってるよ。後は他の下の方の Blob とかは対応するべきだと思ってる。基本的に既にコアモジュールになっていて、what-wgが出してるものに関しては出来る限り isomorphic にするべきかなって思ってる。
Chris:「Streamはどう思う? what-wg stream が出てるよ」
Fishrock:「うーん、どうかなぁ、、、」
俺:「fetchは?」
Fishrock:「Fetchはやりたくないかなぁ、僕は新しいモジュールは追加したくない。」
俺:「fetchは http.fetch みたいな関数では?」
Fishrock:「それでもユーザーランドでできるならそっちのほうが、、、」
俺:「ところで Stream ってなんであんなに what-wg の奴は API が違うんだろうね」
Chris:「僕らのStreamはFile IOとかNetwork IOの性能面のケアをすごくしてるからね、 what-wg の方は ウェブのインタフェースとして提案されていて、そっちの使い方に特化してるからじゃないかなぁ」
俺:「なるほど、そうなると Stream は難しそうだね、 what-wg stream の方、今 promise の配列だし、、、」
Chris:「そうなんだよね、さすがに EventEmitterベースを変えるつもりは無いし、 性能面はNodeの優先事項だしね。」

Chris はめっちゃ気さくな人で、 Fishrock はちょい堅物の若者っていう感じだった。

f:id:yosuke_furukawa:20150622030920p:plain
Chris とパチリ(Fishrock 帰り際に捕まえられなかった、でも良い奴だった)

レクリエーション

夕飯を食べていたら急に MaxOgden と substack が「お前ら!ゲームやるぞ!!」って言い出したので参加してきた。

まとめ

  • isomorphic で fluxible が人気、 meteor も使ってる人多かった
  • ES6へのみんなの関心は ES7 に移ってた
  • Node Stablity という事で安定バージョンをどうやって提供するか提案された
  • isomorphism の話を Fishrock, Chris として何となく彼らが思っている事がわかった
  • レクリエーションゲームで勝利!!

続きは三日目と四日目に起きたことを書くよー!