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

Published on December 5, 2024

Web標準化の動きが進んでもなお、CustomizableでないForm Controlの紹介。Customizable Select Element提案の契機となるサーベイ

Table of Contents

Table of Contents

はじめに

Customizable Select Element Ep.2では、ブラウザエンジンの発展と、Web 標準の台頭、より柔軟なスタイリングを可能にした歴史を見ていきました。

ほとんどのForm Controlのスタイリングが可能に

OS への技術的な依存が解消されて、標準に則ったブラウザレンダリングエンジンによる描画がおこなわれるようになったことに加え、CSS3 の登場により、ほとんどの Form Control に対してスタイリングが可能になりました。

例えば、次の要素ではほとんどのスタイリングが可能です。

しかし、レンダリングの OS への依存が解消されてからも、<select>などの「入力時になんらかの特殊要素を必要とするもの」に関しては、スタイリングが困難なままでした。

CustomizableでないForm Controlたち

Customizable でない Form Control が存在する根幹の原因は、1995 年に HTML2.0 に定義された Form Control の仕様まで遡ります。

Ep.1でも見たように、当初の仕様では、HTML ドキュメントにデータを入力する方法、そのデータを使用してアクションを実行する方法のみが定義され、Form Control の具体的な構築方法は各ブラウザに委ねられていました。

標準化されていなければ、クロスブラウザの互換性を保つことができないため、Form Control をスタイリング可能にする改善を加えることも現実的ではなくなります。

例えば、<input>の type 属性に”range”を指定するとスライダーを表示させることができますが、ブラウザ・OS 間で見た目が一貫しておらず、かといってスタイリングしたり内部の DOM を制御したりすることはできません。

<input type="range" id="volume" name="volume" min="0" max="11"></input>

スライダーはShadow DOMとしてレンダリングされるため、外部から変更できない スライダー内部はShadow DOMとしてレンダリングされるため、外部から変更できない

初期の仕様策定の段階で、具体的な実装方法が詰められることがなく、各ブラウザで実装が進められてきた結果、ネイティブの見た目の一貫性・スタイル可能性と拡張性が著しく欠けたままの Form Control は多く存在しています。

かといって、ネイティブ Form Control を使用せずにイチから実装しようとすると、アクセシビリティやパフォーマンス、セキュリティなど、非常に多くの考慮事項が発生します。 もし仮に、完璧な ARIA ロールを持ち合わせ、パフォーマンスもセキュリティも問題ないようなカスタム Form Control を実装できたとしても、長期的にその独自 Form Control が動作するかというと、それは保証されていません。

独自 Form Control を構築する上で必要だった実装の一部が、いつの日か Web プラットフォームから廃止されてしまうリスクも考えられます。

例えば以下は、代替手段が出現したり、後方互換性の維持のために一時的に存続しているものの、いつ Web 標準から削除されるかわからない技術といえます:

それに加えて、アクセシビリティの要件もアップデートされ続けます。独自で実装したものを中長期的に運用していくコストは、非常に高いと言えるでしょう。

Form Controlの抱える問題を解決する動き

Open UI の Chair である Greg Whitworth は Form Control について、「何が扱いにくいのか」、「それはどうしてなのか」を調べるため、1,400 人の回答者を対象にサーベイを行いました。

Initial thoughts on standardizing form controls
Initial thoughts on standardizing form controls favicon www.gwhitworth.com

re-created-form-controls

reasons-re-creation

hardest-form-controls

このサーベイの結果から、<select>の扱いにくさは特に顕著だとわかります。独自実装している理由としては、スタイリングや機能拡張、クロスブラウザでの一貫性の無さが挙げられています。

この問題に立ち向かうべく、Open UI に提案された新しい仕様が、Customizable Select Element だったのです。


それでは、また明日⛄

See you tomorrow!

Appendix