Fork me on GitHub

役立ちぬ開発史、それはただのブログ

覚えておくといい、ブログの時代は終わる。いつかその内、きっとたぶん…

東京Node学園15限目に行ってきたメモ

| Comments

 少し前の話ですが、2月10日(火)に行われた東京Node学園に行ってきたときのメモのまとめ記事です。リリースされてまだ間もないio.jsについてのセッションがあり、興味をそそられた勉強会でした。

io.jsについて

  • io.jsは何か?

 最初はsporkと書いていたが、今はNode.jsのfriendly forkという立ち位置を取っている。理由は、forkするけどフォークみたいに先がわかれていないことを表していて、思いは同じで、やりたいことも一緒という意味。

  • Node.jsと政治面の違い

 プロジェクトの取り組み方が、Node.jsと違う。Node.jsはコアメンバーだけが話し合うので、突如featureすることをやめてしまうこともある。また、isuueが滞っていたり、fuatureが見えないのが現状。
 io.jsは、オープンガバナンスモデルをとっている。io.jsはオープンにして透明化する方針。2週間に1回行われている会議も、ハングアウトの録画と議事録が展開される。
 issue、featureの会議は合議制をとっており、意見割れたら、投票で決める。会議も同じ会社から3人以上参加しない。
 GitHubのコミットで、issue、featureの透明性を確保し、コントリビュートしやすくしている。
 オープンガバナンスした効果として、新しいコミッターが6人も追加された。そのなかに日本人も1人いる。おかげで、io.jsの活動が活発になっている。

  • Node.jsと機能面の違い

 大きく違う所はv8のバージョンが違う、io.jsはv4.1.0.14を使っている。ESのスクリプトが充実しており、letやconstなどが書けるようになった。
 また、--es_staring というオプションを使うとclassEnhanced object Literalが使え、簡易的に書ける。arrow_functionsproxyなどは、もう少し待つ必要がある。
 新APIにv8が追加され、heapの統計が取れ、中がどうなっているのかがわかる。またv8をアドホックに設定ができる。
 simple creatation Streamassert.deepStrictEqualなども扱えるようになった。

  • Nodeと性能面での違い

 Nodeよりも全体的に性能が10%上がった。

  • その他

 Atomもtravisとかも、io.jsをサポート

  • Nodeとioどっち使えばいいの?

 今は混乱している時期なので、皆で一緒に考えていきましょう。混乱を無くすために、ioの翻訳とNodeとioの性能を継続して測る。

Extensible web

 2013年にExtensible webのマニフェストが出てきた。最初はあんまし流行らなかったが、去年の末あたりから見直されている。内容は思想的な話で、「つべこべ言ってないでコード書け」ということを標準化している人が言っている。

 標準化している人がなぜそれを言っているのか?

  • 標準化団体→ベンダー→devから標準化団体へ

 標準化団体が承認して、ブラウザに取り組み、開発者に届く。仕様から始まっており、かなり時間がかかっている。
 開発者がGitHubに上げたり適当にアプリ作ったりし、もしそれが流行ったりしたら、それを標準化する流れを作りたい。
 標準化する流れを作るために、開発者がWebでできることをlow-levelで実行できるようにする。

    • fetch
    • terminology
    • encoding
    • custom elements

 開発者は、低レベルのAPIがちょっとずつ出てきているから、それを使ってアプリを作ったり、ラップしてフレームワークを作ればいい。そのための楽だよねっていうライブラリも書けばいい。
 この流れも標準化団体から承認がおりないとできないと思っていたが、低すぎてJSでもできる。

—– ここからLT —–

Websocketの permessage deflateを実装した話とそれによりsocket.ioがどう変わるか

 古くからあるissueを解決した話。permessage deflateとは、メッセージデータをdefalt圧縮するもの。同メッセージを同一コンテキストで圧縮することで圧縮率を向上させた。メッセージの後半に行くに連れて圧縮率が良くなる。

  • 残念なお知らせ
    • 今はChromeのみで、firefox v37以上からサポート
    • ブラウザでは設定変更できない
    • socket.ioは、v1.4から使えるようになる

 地味機能だが、パフォーマンスへの影響はでかい。

codeonmobile

 nodeを使って、codeonmobileを作った話。githubのコードをスマホのブラウザで編集するもので、ACEなどのライブラリを使い、簡単に作ることができた。

今できる通信高速化にトライしてみた

 JSパーサで生成したJSONをLZ4の後にgzipすると、容量がgzipだけよりも3割も圧縮された。gzipよりも減るのはすごいこと。
 LZ4をJavaScriptで展開すれば、通信を高速化できるのではないかと思い、JSXjと通信部分はWebWorkerを使って実装し、ベンチマークはAppleの開発ツールで検証した。

  • 結果
    • ダウンロードは早くなった
    • デコードのコストは掛かる
    • WebWorkerのコストはタダ

 メリットは、今はWEBを使いたい放題の時代ではなく、7GB制限とかあるので、通信を減らせたこと。
 デメリットは、バッテリーの消費が激しいことと、JSONがMB以上でないと恩恵を受けにくい。

soket.ioでライフゲームをする

 Node.jsとsoket.ioで、ライフゲーム作りましたという話。

Comments