🎄Open UI Advent Calendar: Day7 / Customizable Select Element Ep.5

Published on December 7, 2024

Open UIでCSEのResearchが行われる。同時期にMSで`<selectmenu>`Explainerの作成。Explainerに基づいて、`<selectmenu>`がIntent to Prototypeに

Table of Contents

Table of Contents

🎄はじめに

Customizable Select Element Ep.4では、Greg と Mason による調査結果を受けた、Domenic による Open UI 内での初期提案について見ていきました。

今回から、これまでにどのような提案が議論され、実装されてきたのか、または議論中なのかを見ていきます。

CSE は、現状の形になる前に命名の変遷を辿ってきました。 初めは<selectmenu>だったものが、<selectlist>になり、今となっては<select>です。 最初に、この変遷の経緯を確認していきます。

<selectmenu>としての初期提案

Open UI Propsalのステージ

まず、Open UI での Proposal の進み方を確認しておきます。 Open UI では、Proposal の策定段階が 5 つの Stage に分けられており、次のように区分されます。

Stage目的入る基準出る基準
0: Research調査内容を共有し、アイデアを統合できる状態にするProposalが出され、Issueが開かれているChampion(そのテーマの責任者)が決まり、歴史的経緯の研究調査とProposalが2人のOpen UI EditorまたはChairによってApproveされる
1: Editor’s DraftOpen UI内でコンポーネントのExplainerに合意し、確定させるUsecase、Structure、Property、Behaviorなどをカバーする初期Draftが作成されている仕様がOpen UI EditorまたはChairによってレビューおよびApproveされる
2: Community Draftステークホルダー(WHATWG, ARIA, CSSWG, 他開発者など諸関係者)からのレビューを受け、フィードバックを取り入れるOpen UIがEditor’s Draftを外部グループや個人からの追加レビューのためにApproveしているARIA、I18n、プライバシー、WHATWG、CSSWG、ブラウザ実装者、他Web開発者、Library Authorなどのステークホルダーからの承認
3: RecommendationProposalを最終状態に導くChampionがステークホルダーと合意を形成しているWeb Platformに追加するかどうかの決定。Webコンポーネントが実装されたり、仕様が標準化団体に渡ったりする。適合度テストが行われ、Specが作成される。実装されるがまだExperimentalな状態。
4: Finishedコンポーネントが実装されたことを示すコンポーネントが安定した実装または仕様を持っているN/A

参考: Open UI Working Mode

よって、CSE の PR では Stage 0: Research 段階のものが最も古く、それが以下に当たります。

この PR が Research として十分な内容を含むと認められたとき、Stage 1: Editor’s Draft、つまり Explainer の作成が始まります。

<selectmenu>Explainerの作成

CSE の Explainer は、Dan ClarkによってMSEdgeExplainersの中で考案が始まりました。

当時 MS 内で Explainer を作成過程で議論されていたのが、<select>をカスタマイズ可能とする際のオプトイン方法でした。オプトインを、属性によって制御するのか、はたまた新しい要素を作成するのか。それぞれのメリット・デメリットが MS・WHATWG で検討されました。

最初の問題提起をした Dan の主張を簡単にまとめると、

  1. custom属性を付与する方法
  1. <selectmenu>のような新しい要素を導入する方法

これは最初 MS 内で議論された内容でしたが、WHATWG にも提案が持ち込まれ、より多くの関係者を交えた議論となります。

ここでの議論の結論としては、以下です。

この「新しい要素」が<selectmenu>となって、MS の Explainer を元に実装着手が意思表示されます。

こうして、一旦は仕様が固まった<selectmenu>でしたが、どうして<selectlist>に改名され、最終的に<select>になったのか、次回以降で見ていきます。


それでは、また明日⛄

See you tomorrow!

Appendix