🦧

CSSの仕様が標準化されるまで

2024/08/06に公開

はじめに

CSSの仕様がどのように策定されるかが気になったので調べました。
当記事では、仕様書がどこにあるのかということや、標準化されるまでのプロセスについて説明しています。

CSSの仕様書はどこにあるのか

CSS の仕様書は、W3C (World Wide Web Consortium)という非営利団体によって管理されており、CSS に関するすべての仕様書は以下のページにあります。
https://www.w3.org/Style/CSS/specs.en.html
ただ、上記のページは各仕様書がどの段階にあるのかを把握するには適していないため、ステータスを確認したい場合は以下のページを見る方が良いと思います。
https://www.w3.org/Style/CSS/current-work
このページでは、仕様書がどの段階にあるのかがステータスごとに色分けされています。各ステータスが表す意味について、次に説明していきます。

ステータスについて

仕様書のステータスを見ることで、機能の安定性や実装状況を把握することができます。
CSS の仕様書のステータスには以下の種類があります。下に行くほど安定性が高くなります。Recommendation (REC) が、最終的にWeb標準として承認されたものです。

仕様は、ブラウザベンダーだけでなく、多くの開発者やユーザーに影響します。そのため、関係者によるレビューやテストを慎重に重ね、様々なステータスを経て、仕様書は Recommendation になります。
この標準化されるまでの流れのことを、W3C Recommendation Track と呼びます。

W3C Recommendation Track

https://www.w3.org/policies/process/20231103/#rec-track
W3C Recommendation Track はおおまかに以下の流れで構成されています。

  1. First Public Working Draft を発行
  2. 0〜複数回の改定を重ねて Working Draft を発行
  3. 0〜複数回の改定を重ねて Candidate Recommendations を発行
  4. Proposed Recommendation を発行
  5. Recommendation として公開

    出典: W3C Process Document (2023年11月3日版)
    https://www.w3.org/policies/process/20231103/#rec-track

各ステータスについての詳細は以下です。

Working Draft (WD)

Working Draft は、開発中の仕様の初期のバージョンです。
W3C は、 コミュニティや一般の方、その他の技術組織にレビューをしてもらうため、Working Draft をTechnical Reportsページに公開します。Working Draft の初稿は First Public Working Draft と呼ばれています。

Candidate Recommendation (CR)

Working Group の技術要件を満たし、広範なレビューを得た仕様書のことです。Working Draft よりも安定しており、実装とテストの段階に入ったことを示します。
Candidate Recommendation には Candidate Recommendation Snapshot と Candidate Recommendation Draft の2パターンがあります。

  • Candidate Recommendation Snapshot:特定時点での仕様です。
  • Candidate Recommendation Draft:ある時点の Candidate Recommendation Snapshot に、広範なレビューによる変更を加えたものです。

Proposed Recommendation (PR)

W3C Recommendation になりうる十分な品質を伴うとして、W3Cに承認された文書のことです。このフェーズに入ると、Advisory Committee による正式なレビューが行われ、W3C Recommendation として発行するか、追加作業のために Working Group に戻すか、棄却するかを勧告します。

W3C Recommendation (REC)

W3C によって最終的に承認された、Webの標準として広く展開される仕様書のことです。

Superseded Recommendation (SPSD)

新しいバージョンによって置き換えられた古い仕様です。歴史的な参照のために保持されます。

ブラウザベンダーはどの段階で実装するのか?

ここまでプロセスについて説明しましたが、ではブラウザベンダーはどの段階から実装に取り入れるのでしょうか。気になったので、Claude 3.5 Sonnet に訊いてみたところ、以下の回答が返ってきました。どこまで正しいかはわかりません。間違いがあればコメントください。

ブラウザベンダーのCSS仕様実装タイミングは一様ではありませんが、一般的な傾向と考慮事項を説明します:

  1. 実装のタイミング:
  • 多くの場合、Working Draft (WD) 段階から実験的な実装が始まることがあります。
  • Candidate Recommendation (CR) 段階に達すると、より多くのベンダーが実装を検討し始めます。
  1. ベンダーごとの違い:
  • Google (Chrome)やMozilla (Firefox)は比較的早い段階で実験的実装を行うことがあります。
  • Apple (Safari)やMicrosoft (Edge)は、仕様がより安定するまで待つ傾向があります。
  1. 実装の要因:
  • 仕様の安定性と完成度
  • ユーザーやウェブ開発者からの需要
  • 実装の複雑さと技術的課題
  • 互換性やセキュリティへの影響
  1. フラグ付き実装:
  • 多くのブラウザは、WDやCR段階の機能を実験的フラグ付きで実装することがあります。
  1. プレフィックスの使用:
  • 以前はベンダープレフィックス(-webkit-、-moz-など)を使用して早期実装を行っていましたが、現在はこの慣行は推奨されていません。
  1. Working Group での活動:
  • ブラウザベンダーはCSS Working Groupに参加しており、仕様策定に直接関与しています。これにより、実装の準備を早い段階から行えます。
  1. 実装状況の共有:
  • Can I use... などのウェブサイトで、各ブラウザの実装状況を確認できます。
  1. 標準化プロセスへのフィードバック:
  • 実装過程で発見された問題は、仕様にフィードバックされることがあります。
    結論として、具体的な実装開始時期は仕様やブラウザベンダーによって異なりますが、多くの場合WDからCRの間に実験的な実装が始まり、仕様が安定するにつれて本格的な実装が進められます。

レベルについて

先ほどのページを見ると、各仕様書に Level が付いています。CSS は、伝統的なバージョニングではなくレベルという概念を用いているのですが、CSS Level 3 以降は、各モジュールごとにレベルを持つようになったため、各モジュールの仕様書に Level が存在します。CSS の Level については以下に詳しく書いてあります。
https://www.w3.org/TR/CSS/#css-levels

CSS Level 1 (CSS1)

1996年12月に W3C によって勧告された、最初の公式仕様です。
各セレクタや、フォントやボックスなどのプロパティについての機能を提供しています。

CSS Level 2 (CSS2)

1998年5月に勧告。
擬似クラスや擬似要素の拡張や、セレクタの追加など、CSS 1 をベースに新たな機能が追加されました。

CSS Level 2.1 (CSS2.1)

2011年6月に勧告。
CSS2 は、Candidate Recommendationフェーズを定義する前に Recommendation に移行したものでした。時間の経過とともに、実装経験やさらなる見直しにより、CSS2 の仕様に多くの問題点が浮き彫りになったため、CSS Working Group は CSS Level 2 Revision 1 (CSS2.1) を定義することにしました。2つの仕様の間に矛盾がある場合、CSS2.1 の定義が正となります。

CSS Level 3 (CSS3)

CSS3 は、CSS2.1 の仕様を中核とした CSS Level 2 の仕様をモジュールごとに構築したものです。CSS Working Group は、CSS2.1 の仕様と矛盾しないよう、後方互換性を保ちながら機能を追加したり、CSS2.1 の仕様の一部を置き換えたりしています。各モジュールが完成すると、CSS2.1 および以前に完成したモジュールにプラグインされます。
全く新しい機能を導入するモジュールは Level 1 から始まります。CSS2 にすでに存在していた機能を更新・拡張する場合は、CSS2 を Level 2 とみなすため、Level 3 から始まります。

CSS Level 4 (CSS4)

先述の通り、CSS Level 3 から各モジュールごとに Level が管理されることになったため、CSS Level 4 は存在しません。しかし、各モジュールが Level 4 や Level 5 になることはあります。

おわりに

当記事では、CSS の仕様書がどこにあるのかということや、標準化までの流れについて説明してきました。
仕様書の読み方についても、のちのち記事にしたいです。

Discussion