この章では、ECMAScript 2016 (ES7) 以降のECMAScript機能がどのように設計されるかを規定する、いわゆるTC39プロセスについて説明します。
答え:TC39 (Technical Committee 39)。
TC39は、JavaScriptを進化させる委員会です。そのメンバーは企業(特に、主要なブラウザベンダーすべて)です。TC39は定期的に会合を開き、その会合にはメンバーから派遣された代表者と招待された専門家が出席します。会議の議事録はオンラインで入手可能であり、TC39がどのように機能するかを理解するのに役立ちます。
時々(この本でも)、TC39メンバーという用語を人について使用することがあります。その場合、TC39メンバー企業から派遣された代表者を意味します。
TC39はコンセンサスによって運営されていることに注目するのは興味深いことです。決定には、大多数の賛成と、拒否するほど強く反対する人がいないことが必要です。多くのメンバーにとって、合意は実際の義務につながります(彼らは機能を実装しなければなりませんなど)。
ECMAScriptの最新リリースであるES6は大規模であり、ES5(2009年12月)からほぼ6年後の(2015年6月)に標準化されました。リリース間の期間が長すぎるという主な問題が2つあります。
したがって、ECMAScript 2016 (ES7) 以降は、リリースがより頻繁になり、結果としてより小さくなります。1年に1回のリリースとなり、年間の締め切りまでに完了したすべての機能が含まれます。
ECMAScript機能の各提案は、ステージ0から開始して、以下の成熟段階を経ます。あるステージから次のステージへの移行は、TC39によって承認される必要があります。
これは何ですか? ECMAScriptを進化させるためのアイデアを自由に提出する方法です。提出は、TC39メンバーまたはTC39コントリビューターとして登録した非メンバーのいずれかから行う必要があります。
必要なものは?ドキュメントはTC39会議でレビューされる必要があり(ソース)、その後ステージ0の提案を含むページに追加されます。
これは何ですか?機能に関する正式な提案です。
必要なものは?提案の責任者である、いわゆるチャンピオンを特定する必要があります。チャンピオンまたは共同チャンピオンのいずれかは、TC39のメンバーである必要があります(ソース)。提案によって解決される問題を文章で説明する必要があります。解決策は、例、API、セマンティクスとアルゴリズムの説明によって説明する必要があります。最後に、他の機能との相互作用や実装上の課題など、提案の潜在的な障害を特定する必要があります。実装面では、ポリフィルとデモが必要です。
次は?ステージ1の提案を受け入れることで、TC39は提案を検討し、議論し、貢献する意思を表明します。今後、提案に大きな変更が加えられることが予想されます。
これは何ですか?仕様に含まれるものの最初のバージョン。この時点で、標準への機能の最終的な組み込みは可能性が高くなります。
必要なものは?提案には、機能の構文とセマンティクスに関する正式な説明(ECMAScript仕様の正式な言語を使用)が追加で必要になります。説明は可能な限り完全である必要がありますが、TODOとプレースホルダーを含めることができます。機能の2つの実験的な実装が必要ですが、そのうちの1つはBabelなどのトランスパイラーでかまいません。
次は?今後は、漸進的な変更のみが予想されます。
これは何ですか?提案はほぼ完成しており、今後さらに進歩するには、実装とユーザーからのフィードバックが必要です。
必要なものは?仕様テキストは完全である必要があります。(チャンピオンではなくTC39によって任命された)指定されたレビュー担当者とECMAScript仕様エディターが仕様テキストにサインオフする必要があります。少なくとも2つの仕様に準拠した実装(デフォルトで有効にする必要はありません)が必要です。
次は?今後は、実装とその使用によって提起された重大な問題に対応してのみ変更を行う必要があります。
これは何ですか?提案は標準に組み込む準備ができています。
必要なものは?提案がこのステージに到達する前に、次のものが必要です。
次は?提案は、できるだけ早くECMAScript仕様に組み込まれます。仕様が標準としての年次批准を経ると、提案はその一部として批准されます。
ご覧のとおり、提案がステージ4に達したときにのみ、機能が標準に含まれることが確実になります。その後、次のECMAScriptリリースに含まれる可能性はありますが、100%確実ではありません(時間がかかる場合があります)。したがって、提案を(たとえば)「ES7機能」または「ES2016機能」と呼ぶことはできなくなりました。したがって、記事やブログ投稿の見出しを書くための私の2つの好きな方法は次のとおりです。
提案がステージ4にある場合は、それをES20xx機能と呼ぶことに同意しますが、どのリリースに含まれるかを仕様エディターが確認するまで待つのが最も安全です。Object.observe
は、ステージ2まで進歩したが、最終的に取り下げられたECMAScript提案の例です。
以下は、この章の重要な情報源でした。
その他の読むべきもの