ES6+カジュアルトークを開催しました #es6_casual

ES6+カジュアルトークを開催しました。

Ustreamはこちらです。


Ustream.tv: ユーザー dena_tech: DeNA Technology Seminar #ES6+カジュアルトーク, Recorded on 2014/10/29. コンピュータ


僕はES6を追い始めたのが遅くて、ちゃんと追うようになったらもっと前に追っている人がたくさんいたので、その人達を呼んでカジュアルトークをしつつ、ガチで学べる会を開催しました。

全体的に発表レベル高くて濃い話が聞けたと思っています。

TL;DR

  • ちょっとES6使ってみよっかなーな人はrunstantがオススメです。
  • Node.jsの次のバージョンではarrow_functionがharmony付きで使えるようになります。Symbol, for-of, Collections, Object.observe, Promiseがデフォルトで使えるようになります。
  • ES6からは不変なオブジェクトを作ることができます。関数型プログラミング入門にもなると思います。
  • ただし、今でも既にprototype拡張を使ってメソッド拡張している人達はES6になったらぶっ壊れることもあるから気をつけて。
  • Closure CompilerでもES6が書けるようになるよ。今後のAltJSには型が必須だよ。
  • ES7からはMonolithic Releaseじゃなくて機能単位のリリースになるよ、今はES7に向けて型とかも提案されてるよ。

runstant 始めるEcmaScript6 入門 by @phi_jp

@phi_jpが作っているrunstantっていうエディタを使ってES6のハンズオンをする会。
オープニングに相応しい話をしてもらいつつ、ES6をとりあえず使ってみるっていう上では非常に面白い話だった。
ちなみにrunstantっていうツールは非常に良く出来ているのでオススメです。

runstant

Node.js v0.12で使えるようになるES6+αの機能 by @yosuke_furukawa

僕の発表。ES6の機能のうち、次のNode.jsで使えるようになるものをまとめた感じ。
簡単にいえば、v0.12からはアロー関数は使えるようになるが、harmonyオプションが必要です。その代わり、Symbol, for-of, Collections, Promise, Object.observeがデフォルトで使えるようになります。

今のところまだなのは、class, generator, block scopeとかですね。

Ecma script6による関数型プログラミング by @TanUkkii


ES6で関数型プログラミングするアプローチについての話。副作用を排すために何をES6として使ったほうがいいか、という切り口で斬新だった。

再代入できない変数としてconstを使う話と、分割再代入で代入処理自体を少なくする話、末尾最適化で再帰呼び出しを高速化する話と、最終的にProxyオブジェクトを使うことで不変な値を作るっていうアプローチは非常に面白かった。

別件だけど、jser.infoの200回記念イベントではObjectの変更を禁止するObject.freeze, seal系のメソッドはproductionでは使わないって言ってて、こういう不変な値を作るようなアプローチと性能をケアするようなアプローチの良い塩梅はどの辺なのか知りたいなと思った。

Introducing break the Web by @Constellation

資料なし

ES6がwebをぶっ壊してしまう可能性について言及した話。
詳しくはここ読むといいけど、with構文を使うと簡単に壊れそう。

あと、実際に壊れてしまった話のケーススタディとして、MooToolsの話、enumerableだったメソッドがES6からnon-enumerableになってしまった結果、for-inの中で登場しなくなり、結果としてメソッドが無くなってしまった。これを使っているプロダクト全体が壊れた。

まとめとして:

  • 短縮化されたコードを書くな、inではなく、hasOwnProperty使いましょう
  • Object.prototypeとか将来的に拡張される可能性があるのでそういうの考えよう
  • with使うな

という示唆に富んだ話でめっちゃ面白かった。

Closure CompilerのES6対応あるいはES6時代のAltJS生存戦略 by @teppeis


Traceur CompilerもES6のtranspilerだけど、同じくGoogle製のClosure CompilerもES6からcurrent JavaScriptに変換できるようにしていっているという話で、未来があって面白かった。TCはちょっと大きめのruntime scriptを読み込む必要があるんだけど、CCの場合はruntime scriptが小さいし、最終的にconcatされると小さくなるっていう話は良かったと思う。今だとruntime script不要な6to5が出てきてたりするので、transpiler戦国時代の今にClosure Compilerが切り込むのは良いと思った。

あと、これからのES6以降のAltJSではやっぱり型が重要になってくるし、ES7にOptional Typeを入れるためにもAtScriptとかTypeScriptの動きが重要になる。とりあえずFacebook Flowマダー!!!!

明日には使えなくなるES7トーク by @azu_re

ES6よりも未来、ES7でどうなっていくかっていう話。これは今のプログラミング言語全体に言えることだと思うんだけど、バージョンアップするっていうときに機能セットをいくつか作成して、その機能セットが全て出来上がってからリリースっていうサイクルになっていると思う。これの一番の問題はバージョンリリースが遅れることだ。こういう機能セット単位でできあがってからリリースしていくことをmonolithic releaseと呼ばれていて、変化が激しいWebの業界では変化が遅い事は問題になりやすい。

それよりも機能単位で検討していき、ひとつの機能単位で標準化していったほうが全体を決めるよりも早い。こういうスタイルでES7は標準化を検討していく、とTC39では発表があって、これがこれまでとの一番の違いだと思う。
ちなみにこの機能単位でリリースすることを feature-based modelって言うらしい。

そんな中で今、ES7では、async構文やTypesの提案、末尾カンマといった提案がされているという話だった。
特に皆がお待ちかねの型に関しては提案段階だし明日にはどうなるかわからない、という話だった。
先は長いかもしれないけど、全体的に型が必要という提案がされてきているようなので、待っていきましょう。

まとめ

ES6+カジュアルトークですが、ものすごく濃い話がちゃんと聞けてよかったなと思います。
こういう上級者というか知っている人がちゃんと集まって濃い話する勉強会は非常に有用ですね。
またES6に限らず何か一個のトピック掘り下げて勉強会開催したいと思います!