$30 off During Our Annual Pro Sale. View Details »

ESNext の議論に参加しよう / Join the ESNext discussion

森建
November 15, 2019

ESNext の議論に参加しよう / Join the ESNext discussion

フロントエンドカンファレンス福岡 2019 前夜祭&リジェクトコン
https://fec-fukuoka.connpass.com/event/154737/

森建

November 15, 2019
Tweet

More Decks by 森建

Other Decks in Programming

Transcript

  1. ESNext の議論に参加しよう
    フロントエンドカンファレンス福岡 2019 前夜祭
    pixiv Inc.
    petamoriken
    2019.11.15

    View Slide

  2. 2
    自己紹介まわり
    ● 主にフロントエンドエンジニア
    ● ECMAScript や WHATWG DOM を追うのが好き
    11/20(水) 19:30~ Three.js Meetup Tokyo #0
    サテライト会場を福岡でやるのでよければどうぞ
    https://connpass.com/event/154480/
    petamoriken
    課題解決部

    View Slide

  3. 3
    知らない間に JavaScript の新機能が
    ブラウザ / TypeScript に入っていた
    (例)Optional Chaining
    Nullish Coalescing Operators
    こんな経験はありませんか?

    View Slide

  4. 4
    ES5.1 / ES2015 (ES6) / ES2019
    ECMAScript を知っていますか?

    View Slide

  5. 5
    Stage 4 (ES2020) / Stage 3 / Stage 2
    ESNext を知っていますか?

    View Slide

  6. 6
    ESNext について知ってもらう
    更に言語仕様策定に参加してもらう
    この発表の目的

    View Slide

  7. 7
    ESNext の策定プロセス
    ● Stage 1 Proposal
    ○ 担当者が決まる
    ● Stage 2 Draft
    ○ 最初の仕様文書が作られる
    ● Stage 3 Candidate
    ○ 仕様文書が完成し、レビューが完了する
    ● Stage 4 Finished (ES2020)
    ○ polyfill ではない2つの実装で互換性が確認される

    View Slide

  8. 8
    Ecma International TC39
    ● JavaScript の言語仕様 ECMAScript を策定する専門委員会
    ● 提案一覧は GitHub 上で管理されている
    ○ https://github.com/tc39/proposals
    ● だいたい2ヶ月おきに会議を開いている
    ○ アジェンダ: https://github.com/tc39/agendas
    ○ 議事録: https://github.com/rwaldron/tc39-notes

    View Slide

  9. 9
    My Scrapbox
    ● 個人的に TC39 の会議の内容をまとめているのでよければどうぞ
    https://scrapbox.io/petamoriken/ECMAScript

    View Slide

  10. 10
    実際の提案を見てみよう
    ● Stage 1 Record / Tuple (2019-10 に議題に出た提案)
    ○ https://github.com/tc39/proposal-record-tuple
    ○ Object / Array のリテラルに # をつけて Immutable な Record Types を作る
    const tuple1 = #[1, 2, 3];
    // 値を取り出すときは普通の Array と同じ
    assert(tuple1[0] === 1);
    // Tuple#with によって値を変更した新たな Tuple を作る
    const tuple2 = tuple1.with(0, 2);
    assert(tuple1 !== tuple2);
    assert(tuple2 === #[2, 2, 3]);

    View Slide

  11. 11
    議論に参加するには
    ● 新規提案については ES Discuss というメーリングリストへ
    ○ TC39 members に見られて Stage 1 に入れてもらえることもある
    (例)Float16Array トピックに polyfill を放り込んだら Stage 1 にしてもらえた

    View Slide

  12. 12
    議論に参加するには
    ● 既存の提案については該当のリポジトリの issues へ
    ○ Stage 3 はブラウザ / TypeScript に実装し始める段階
    ○ Stage 2 以前の段階で意見を言うとよさそう
    (例)Stage 1 Math Extensions の
    Math.sum に誤差補正を入れる提案
    https://github.com/rwaldron/proposal-mat
    h-extensions/issues/4

    View Slide

  13. 13
    JavaScript and evidence-based language design survey
    ● 今年5月末に Mozilla が出した Stage 1 Pipeline Operators についてのアンケート

    View Slide

  14. 14
    もうすぐ仕様が確定する提案
    ● Stage 2 Temporal
    https://github.com/tc39/proposal-temporal
    ● Date を置き換える提案
    ● 現段階の提案仕様の polyfill を用意していて
    フィードバックを求めている
    ● 年末に Stage 3 になる予定なので
    それまでに触って何かあれば意見を!
    https://pipobscure.github.io/temporal-2019-10/#19

    View Slide

  15. 15
    まとめ
    ● TC39 はフィードバックを求めています
    ● ブラウザ / TypeScript に実装が入り始める Stage 3 では仕様は確定しています
    ○ Stage 2 以下の提案もちゃんと見ていこう!
    ○ 議論に参加しよう! 意見を言っていこう!
    ● 毎回 TC39 の会議を Scrapbox にまとめているのでよければどうぞ
    https://scrapbox.io/petamoriken/ECMAScript

    View Slide