sosukesuzuki.dev

2022年 sosukesuzuki 1人アドベントカレンダー

December, 11 2022

「How to Read the ECMAScript Specification」を読んだ感想

2022年の sosukesuzuki 1人アドベントカレンダー 11 日目です。

本来の予定では、今日は ECMAScript の仕様に関する別の記事を書くつもりでした。

しかし、ふと「How to Read the ECMAScript Specification」の存在を思い出してしまい、せっかくだからと思い読んでみたら時間がなくなってしまいました。

できるだけアドベントカレンダーを休みたくないので、感想文をそのまま記事にさせていただきます。

「Hot to Read the ECMAScript Specification」とは

「How to Read the ECMAScript Specification」は Timothy Gu 氏によって管理されているドキュメントで、名前の通り ECMAScript の仕様の読み方について書かれています。

https://github.com/TimothyGu/es-howto で管理されています。

「Hot to Read the ECMAScript Specification」の価値

ECMAScript Specifications は JavaScript の言語仕様についてまとめられている巨大なドキュメントで、仕様内の独自の用語や構文、略記法などが多く初見だとかなり読みにくいです。

「Hot to Read the ECMAScript Specification」は、そのような ECMAScript の仕様の独特な難しさを、具体例とともに丁寧に解説してくれるドキュメントです。

印刷してみると A4 で 25 ページ程度の長さで、ブログ記事だと考えるとかなり長いですが、仕様書や書籍だと考えるとかなり短く、私は 3 時間程度で読むことができました。ECMAScript の仕様を本格的に読む前に一度目を通しておくと捗ると思います。

何が書かれているか

ここで詳細を語ると翻訳になってしまうので、感想を交えつつ印象に残った部分をさらっと紹介します。

  • ECMAScript の仕様には何が含まれているのか、という説明。たとえば document.querySelector とか import foo from "foo" とか、日頃よく見かけるコードが仕様としてはどこに属しているのか、という話です。このあたりは ECMAScript の仕様に限らず Web の仕様を読む上で重要だと思います。
  • ECMAScript の仕様で頻出する用語の説明。Abstract Operation とか、ぱっとみよくわからない用語を最初に説明してもらえると全体の理解が一気に簡単になると思います。
  • [[Hogehoge]] の整理。[[Hogehoeg]]という文法はよく見かけますが、それらがコンテキストによって意味が異なります。それぞれの意味について整理されていて、わかりやすかったです。
  • Completion Record と ?/! の説明。私はこれまで Completion Record を全然理解せずに読んでいて ?! もなんとなくで読んでいたので助かりました(今まで全体的なアルゴリズムを把握する分には困らなかった)。
  • String.prototype.substringBoolean()String() を具体例として用いた説明。普段使っているコードの仕様を示して解説してくれるのでイメージしやすかったです。

まとめ

これまで何度かこのドキュメントの存在を耳にしていたのですが、面倒くさくて読んできませんでした。この機会に読めてよかったと思います。

普通におもしろかったし、これからの私の ECMAScript の仕様ライフがより楽しくなるだろうと思います。