pirosikick's diary

君のハートにunshift

ES6+カジュアルトーク行った #es6_casual

ES6+カジュアルトーク - connpass

6つのLTどれも面白くて前日申し込みで滑り込めて本当に良かった。 カジュアルトークということで、全部で1時間半くらいとあんまり疲れなかったし、 でも内容は全然カジュアルじゃなく深い感じで本当に楽しい時間だった。

@teppeisさんのLTがかなり良くて資料をあとで見直したい。 Closure Compilerがあんなに高機能だったとは知らなかったw

ハッシュタグに かなり補足情報があったので後で読もう。

以下、メモ

Runstantで始めるEcmaScript6

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

Node.js v0.12で使えるようになるES6+の機能一覧 // Speaker Deck

  • @yosuke_furukawa
    • DeNA
    • Node.js日本ユーザグループ代表
  • v0.12ブランチをビルドして確認、v8のバージョンは3.28
    • v8の最新は3.30
  • v0.12で削除されたオプション harmony_typeof
    • typeof null == 'null'trueになるオプション
    • 元から非推奨
  • 追加されたオプション
    • harmony_arrow_functions
    • アロー関数
  • デフォルトになった機能
    • Symbol
      • オブジェクトのkeyに利用できる特殊なオブジェクト
      function getObj() {//
        // _nameはこのスコープじゃないと使えないので実質的に_nameはprivaete
        var _name = Symbol("_name");

        var obj = { name: 'hoge' };
        obj[_name] = 'hoge';
        return obj;
      }

      var obj = getObj();
      console.log(obj) // { name: 'hoge '}
  • Collections
    • Map, Set
    • Set.prototype.keysとSet.prototype.valuesは同じものが返る
      • -> 内部はMapでできてる
    • for-of
      • IterableなものならOK
      • Symbol.iteratorで作れる
        var hoge = {
          [Symbol.iterator]() {

            return {
              next () {
                if (終わってない) return {done: false, value: '...'};
                return {done: true};
              }
            };
          }
        }
  • GeneratorもIterable
  • Promise
  • Object.observe
    • Array.observe(array, callback(changes))

ES6による 関数型プログラミング

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

  • @TanUkkii007
    • 安田さん
    • 株式会社トライフォート
  • 関数型とJavaScript
    • JSはSchemeベース
    • 第1級関数オブジェクトがあるでござる
  • const 不変性
    • use strict有り無しで挙動ちゃうで
  • パターンマッチ
    • 分割代入
  • 再帰
    • 関数型は再帰や。副作用使わんからな
    • ES6で末尾呼び出し最適化入るで。
    function hoge (n) {
      return hoge(n - 1); // これが末尾呼び出しや
    }
  • 不変性
    • Proxyコンストラクタ
    • 既存のObjectの挙動をユーザで変える
    • トラップを仕込む(getter, setter, 関数呼び出しなど)
    • 例)配列を不変に
      • getterにトラップ仕込んで
      • 破壊メソッド呼ばれたらコピー&Proxy化して返す
        • Array.prototype.pushなど

Introducing break the Web

  • @Constellation
    • Webkit Committer
      • CSS Selector Level 4をこの前実装した!
    • ES6のOwnerもいくつかやってる
  • ES6はArray結構拡張した
  • Array.prototypeって既に拡張してる人いない?居るならぶっ壊れるよ
  • values,keysとか被りそうな名前やし
  var values = [];
  
  with(object) {
    values = ...; // objectがArray継承してたら死
  }
  • @@unscopables
  • case1 MooTools − Array.prototype.containsの上書き
    • jsfiddleがぶっ壊れた
    • es-discussではhasにしようかみたいな議論が出てた
      • 出てたソリューションはどうしようもない感じ
  • case2 outlook.com
  • まとめ
    • コードを省略しない
      • inじゃなくてhasOwnProperty使おう
    • Object.prototypeとか将来的に拡張される可能性があるのでそういうの考えよう
    • with使うな。use strictで使えなくなるけど。

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

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

  • @teppeis
    • サイボーズ
    • kintone作ってる
  • Closure Compiler − 超圧縮&最適化
    • JSDocベースの静的片付け
    • Github移行して議論が盛り上がってる
  • ECMASCript6
  • Tracuerは自前で実装しすぎててruntimeが大きくなってて微妙
  • ES6はAltJSのいいとこ取りなので全部実装されればいい感じやで
  • AltJSと出口戦略
  • ES6時代のAltJS
    • Facebook Flow, TypeScript, AtScript, etc
  • ECMAScript Typesが提案に

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

http://azu.github.io/slide/es6talks/

  • @azu_re
    • JSer.info
  • TC = 専門委員会
  • Stage 0 ~ 4
    • 今日は0はほとんどアイデアレベル
    • 4でテスト作る。
  • AtScript, FlowはTypeScriptの型定義を真似てるらしい
  • tc39-notesを見ればだいたいわかるよー