Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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]);

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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