Slide 1

Slide 1 text

ECMAScriptとTC39について Shuji Nishino @surumebeer 『Vue.js/PWA/JavaScript…新&定番なんでもあり』 表参道Web勉強会 3 2019/4/8

Slide 2

Slide 2 text

自己紹介 Shuji Nishino @surumebeer 株式会社PR TIMES フロントエンドエンジニア ・するめ ・ビール ・鯱がマスコットのサッカークラブ が好きです。 よろしくおねがいします。

Slide 3

Slide 3 text

ささやかな疑問

Slide 4

Slide 4 text

ES2015だのES7だの ナンバリングがあれこれあるけど そもそもこれはどういうことなんだろ

Slide 5

Slide 5 text

あれこれを調べてみた

Slide 6

Slide 6 text

そもそもES(ECMAScript)とは?

Slide 7

Slide 7 text

ECMAScript(Ecma-262) ● Ecma Internationalが策定しているJavaScriptの仕様 ● 紆余曲折あってブラウザ(クライアントサイド)で使える JavaScriptの仕様を標準化する必要性が高まり、Ecma Internationalが策定&標準化している (詳しくはWebで)

Slide 8

Slide 8 text

ECMAScript(Ecma-262) ● ES2015(ES6)から毎年策定する予定のため、策定時の バージョニングから西暦でナンバリングしようとなっているみ たいです。 Ecma Internationalの中にTC39という集まりがあるらしい ● どうやって標準化してるの? ● ES2015には大きな標準化がありましたね

Slide 9

Slide 9 text

TC39…

Slide 10

Slide 10 text

TC39とは ● ECMAScriptの仕様について議論する委員会(github) ● github/TC39のPeople 各ブラウザ、W3C、WHATWG、Node.jsのDevelopper等 ● 段階的なプロセスを経て機能の標準化をしている ● ブラウザに導入して実際にテストしていたりする。 → 例:Chrome 67にPromise.allSetteledが導入される

Slide 11

Slide 11 text

仕様策定のプロセス ● Stage0 - Strawperson ● Stage1 - Proposal ● Stage2 - Draft ● Stage3 - Candidate ● Stage4 - Finished ● (Inactive) https://tc39.github.io/process-document/

Slide 12

Slide 12 text

MTGの内容 アジェンダだったり議事録だったりがGitHubに置いてある 主に… ● ProposalのStage、issues、PRについての議論 ● Proposalにある機能の仕様の確認 等 毎年5-6月にStage4の機能の標準化を発表している

Slide 13

Slide 13 text

ちなみに… 今年発表されるであろうECMAScript2019のバージョンは10ら しいです。

Slide 14

Slide 14 text

実際にStage4にある機能を見てみる Finished Proposals

Slide 15

Slide 15 text

ES2019で追加される予定のもの ES2016 - 2 Proposals ES2017 - 6 Proposals ES2018 - 8 Proposals ES2019 - 8 Proposals とES2016以降で毎年追加予定の 機能は増加傾向にある。

Slide 16

Slide 16 text

Array.prototype.{flat,flatMap}を見てみる Array.prototype.flat 配列を連結して特定の深さの新しい配列を作成する Array.prototype.flatMap 配列の各要素をマッピングする関数を使用してマッピングし、flat化した結果を新しい配 列にする。 Array.prototype.flatMap & Array.prototype.flat(Stage 3 Draft / January 4, 2019)

Slide 17

Slide 17 text

Array.prototype.{flat,flatMap}を見てみる flat flatMap

Slide 18

Slide 18 text

Proposalの動き GitHub/TC39にレポジトリが立っているので、commitのhistory見てみる

Slide 19

Slide 19 text

Proposalの動き Stage 0 には2017年6月に上がっている。

Slide 20

Slide 20 text

議事録見てみる 2017-07-27 Meeting Notes Proposalのためのslideとかもある みたいな仕様についての議論がされている

Slide 21

Slide 21 text

そしてStage4(Finished)に

Slide 22

Slide 22 text

で、どこで使えるの or どこで使えないの? ECMAScript 5/6/7 compatibility tables 見るとすごいわかりやすくていいです

Slide 23

Slide 23 text

参考 ・GitHub/TC39 ・ECMAScript Discussion Archives ・ECMAScript® 2020 Language Specification ・ECMAScript 2019の議事録を全部読む #TC39MTG 読書会をしました ・ECMAScriptの仕様策定に関するカンニングペーパー (Web Scratch) ・ECMAScript 5/6/7 compatibility tables

Slide 24

Slide 24 text

おしまい

Slide 25

Slide 25 text

ご清聴ありがとうございました

Slide 26

Slide 26 text

乾杯