nodeconf.eu 1日目 (Future Node.js, microservices, hapi)
さて、 nodeconf.eu に来ています。
当たり前なんだけど、nodeconf.eu ではnode.jsを使っているユーザーが多くて、外人ばっかり。
会う人会う人に「お前の国ではNode.jsは流行ってるのか?」って聞いてるんだけど、とりあえずの理解では、「サンフランシスコ、シアトルとかアメリカでは流行ってる。Dublin、ロンドンとかのアイルランド、イギリスでもまぁまぁ流行ってる。スウェーデンでは全く流行っていない。」っていう感じ。
日本ではどうなんだ?って聞かれたから「MatzのおかげでRubyがめっちゃ流行ってるよ、Node.jsも一時期流行ったけどRubyほどじゃない、最近だとGoとScalaが流行ってるよ」って応えてる。
ちなみにサンフランシスコだと、Node.jsめっちゃ流行ってて、Goがちょっと前のNode.jsみたくぼちぼち流行ってる、エッジな人たちがRust使い始めてるって言ってて、大体想定通りの話だった。
Keynotes: The State of Node by TJ Fontaine
TJ Fontaineの発表。
Node.jsは広く使われ始めてきた、ツールは正しい使い方があり、Node.jsが向くサービス(Web Application, microservices)ではNode.jsが使われてきている。
それにともなって Node.js には安定性が求められるようになってきている。これからはpatchレベルでの安定も担保する予定だ。
あとはロードバランシングをもっと強化して性能面でも安定させたいと思っている。
終わった後でTJ Fontaine に直接質問してきた。
Q. いつ頃Node.js v0.12 出るの?
A. 今は性能面で安定していないことが一番課題。それさえ解決できたら出そうと思っている、詳しい話はFedor Indutny に聞いてみてほしい。
とのことでした。んじゃあ Indutny どこにいるんだろと思って探したらまだ来てないとのこと。
明日以降に期待。
ちなみに写真とったw
TJ Fontaineと写真撮ってきた! pic.twitter.com/g37mHpy4Xr
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
Microservices Track
Microservicesトラックでは、IBM、Groupon、CityBank、Paypalの人が「俺たちが思う俺達のmicroservices」の話をしてくれてて、バズワード化しつつあるmicroservicesでどんなことをする必要があるのかを話してた。
特に面白かったのはIBMのトラックで、ツイッターではまとめたけど、
microservices間のcommunicateにAMQPとMQTTを使っているとのことで、かなり疎結合なメッセージングが行われてた。
まとめられそうなので、まとめておくと、
- microservicesは小さいコンポーネントでサーバー群を実現するための試み。
- データストアを一個にする必要がなくてサービスに合わせたデータストアを使える
- プロセス間のメッセージングはMQTT or AMQPを使う (続く)
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
- microservicesを実現するためには、簡単にサーバーを作れる必要があり、それにはdocker/vagrantのような仕組みがあると作りやすい
- そのサービス間を跨いで認証するためにはSSOの仕組みが必要だったりする。 (続く)
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
- 実例としてはIBMがmicroservicesに舵を切っていて、mqttやamqpを基本にメッセージングの流れが分かりやすくなった。
- ただConsもあってサーバーが多くなるので、今までよりも多数サーバーが必要だったり、監視が大変だったりする。 という話でした。
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
9 anti-patterns JavaScript
JavaScriptのやっちゃいけない9つのこと。原文の資料があるので参考にしてほしい。
1.npmの知らないやつ使うな
2.モノリシックアプリにするな
3.JSの事をGoogleに聞くな
4.エラーを無視するな
5.Callbackをうまく使え
6.npmに公開しよう
7.非同期処理パターンを使おう
8.良いツールに仕事をさせろ
9.エコシステムを無視しない
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
hapi workshop
hapiっていうweb application frameworkの使い方。
$ npm install makemehapi -g
ってやるとmakemehapiコマンドが有効になるので、それを叩くとhapiのチュートリアルが出てくる仕掛けになってる。所謂nodeschool形式。
最初のHello Worldからfile upload, cookie へのセッションストア、template engineとかの使い方を学べてすごくよかった。
終わった後で、hapiの作者にhapiがexpressよりも優れている点はどこなんだ?って聞いてみたところ、
hapiはstream baseのresponseを扱えるんだ。expressはstreamをどこかでぶった切る事(多分、body-parser)がある、streamを透過的に扱えるし、expressよりも層が薄いんだ。
とのことでした。
hapiも良かったけど、hapiシリーズのjoiっていうvalidation libraryがあって、それがすごく便利だった。
懇親会会場にて
色々聞いてきた。
Ben (hapi.js author) への質問
Q. hapiもよかったけど、Joi(validation library)が良かった。joiってexpressとかkoaでも使えるの?
A. 使えるよ。express-joiとかkoa-joiってのがあるよ。
Q. hapiのWorkShopとか開くから、日本に来ることが有ったら教えてよ!
A. sure! sure!
substackへの質問
Q. browserifyって今みたいなモジュールローダーとしての使い方は予期してたの?
A. もちろん予期してたよ。ユースケースの一つだろうと最初から思ってた。
僕がやりたかったのは、browserifyでサーバーとクライアントでコードを共有することはもちろん、npmを使ってクライアント側のモジュールを管理したかったんだ。必然的にモジュールローダーの機能も必要になるよね。
Q. そっちの機能(モジュールローダー)の方が主流になることも?
A. まぁ当然あり得るだろうと思ってたよ。予想外という事ではなかった。
Q. いつコード書いてるの?
A. "whenever"
Q. tapeっていうテストモジュールいいよね。でもmochaだとshould.jsとかexpect.jsとか
自分の好きなアサーションモジュール組み込めるけど、tapeだとt.assertに依存してて使えないよね。
A. tapeとmochaはあんまり一緒にしてほしくない。僕はあまりmochaが好きじゃなくて、tapeのがシンプルで好きなんだ。
Q. 日本に来たら何話すの?
A. 決めてない。
このインタビュー終わったら絵を描き始めたので撮影させてもらった。
サブスタックが隣で絵を描いててウケるw pic.twitter.com/0LMthsL6pc
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
mikealへの質問
Q. 日本に来たら何話すの?
A. 何かモジュールのこととか、何か話すよ。requestとかかも。
Q. なんか注目している技術はある?
A. 実は最近あまりコードを書いてないんだよね。コミュニティの運営ばかりしてるよ。
Q. nodeconfとか大変だったんじゃない?
A. そりゃまぁ大変だけど、やりがいあるからね。
mikeal, cianと一緒にパチリ
nodeconf.eu organizer, nodeconf organizer, nodefest organizer :) pic.twitter.com/z9Y4erGFaY
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 8
Bert Belder (libuv)への質問
Q. libuv パーカーかっこいい!!
A. インターネットで売ってるぜ!
Q. いつごろ libuv って v1.0 リリースするの?
A. 多分今週末くらいかなー。
Q. libuvのロードマップって何か考えてる?
A. まずは設計のリファクタリングかな~、結構フロストレーション溜まってるんだよね。
全然unixの考え方にそって無くて、もう少しunixっぽいシンプルなデザインにしたい。統一的なAPI呼び出しとか考えてる。
それが終わったら、libuvのスケジューリングアルゴリズムをもう少し見直したい。
libuvのスケジューリングって今は完全に統一されてるんだけどもっと細かいタイミングでスケジューリングできるようにしたいんだ。
あと最近だとRustがlibuv使ってるからnode.jsだけじゃなくてRustの要望も取り入れて行きたい。
Q. libuvのAPIってv1.0が出たらstableになるの?
A. もちろん!
Q. libuvがpure にシステムコール呼ぶよりも遅いっていう話出てるけど。
A. まぁそうなるだろうね。システムに特化した最適化よりも広い環境で使えることを目指しているから。そしてそのときに多少遅くてもその遅延がそこまで問題になることは少ないんじゃないかと僕達は思ってる。どっちかというと広く使えることを目指した結果、多少性能に影響が出てしまうとは思う。
Q. 日本でlibuv meetupとか開きたいけど、もし良かったら日本に来てよ!
A. sure! 11月にある学園祭に行けたらいくよー!
まとめ
- microservicesの話が面白かった。結構突っ込んで聞けたし、日本での話も需要がありそうなので、どこかでまとめて話したいです。
- hapiも良かったけど、Joiも良かった。
- substackとかmikeal, bert belderと話ができてよかった!
こんな感じ :D
海外エンジニアに聞いてみたい質問があれば受け付けるので、twitterとかにメンションください!!