Webの仕様

ウェブの仕様といえば、W3CWHATWGIETFとかが思い浮かぶかもしれません。

これらの仕様が最近ではメーリングリストやIRCといった旧来のところだけではなく、GitHub上で議論されて策定が進められている事が増えています。(両方使ってるという話)

この記事はそのような方法で進められてる仕様等についての紹介です。

* 自分自身はそこまで仕様に対して強い興味があるわけではないので、もっと詳しい方が正しくまとめて頂きたいです。。

最初にMove The Web Forward | Guide to getting involved with standards and browser developmentを見ておくといいかもしれません。

JavaScriptの仕様

この動きが多く見られるのがJavaScript(ECMAScriptやDOM APIを含む)周りの仕様についてです。

例えば、ES6 PromisesはGitHub上のdomenic/promises-unwrappingが議論の中心となっていて、ECMAScript 6thに入った仕様もこのREADMEファイルに書かれたものがベースとなっています。

GitHubにおいてあるので、当たり前のように仕様に対してPull Requestして修正等も行われています。

また、最近のJavaScript仕様策定では仕様と共にPolyfillやリファンレス実装を一緒に作るケースが見られます。

domenicさんが担当するES6 PromisesStreams APIでは、Especiallyというモジュールを使ったリファレンス実装が公開されています。

EspeciallyはECMAScriptの仕様内部で表現操作をコードで表現するためのものなので、リファレンス実装も仕様書のStepに沿うようなコードになっています。


ECMAScriptはどこに?

ECMAScript自体の議論の場としてはMLがあり、es-discussという専用のサイトでアーカイブを見られます。 また、定期的に行われているECMAのTC39ミーティングのノートがGitHubで公開されています。

現在策定中のECMAScript 6thについては上記などで議論された内容を反映したものが、Draft Specification for ES.next (Ecma-262 Edition 6)にてドラフト版として公開されています。 (HTML版もECMAScript Language Specification ECMA-262 6th Edition – DRAFT)


The Extensible Web Manifesto

実際に使えるPolyfillを作りながら仕様も策定していってるスタイルだとWeb Componentsが有名どころです。

Web Componentsではplatform.js(Polymerの内部で使われる)というPolyfillが既に公開されています。

この実際に動かせるPolyfillを用意するというスタイルはThe Extensible Web Manifestoというポリシーが掲げられていて、これに基づいた行動といえると思います。

これ以外にも最近の仕様は大体GitHubにリポジトリを持つのが一般的と言えるぐらいGitHub上に置かれていることが多いです。

GitHub上の仕様とアカウント

仕様関係のGitHubアカウントを適当にまとめてみました。

W3C/WHATWG 組織アカウント

Wiki

W3CとWHATWGにはGitHubの利用についてかかれたページがあります。(このページがどれくらい参照されてるのかよく分からないですが)

WG

その他

GitHubにある仕様はJavaScript関係のものだけではなく、HTTP/2も同様にGitHubにリポジトリを持って管理されていたりします。

(仕様関係のGitHubアカウント どこかにまとめないのかな?)


リポジトリ

上記で紹介しているGitHubリポジトリは必ずしもそこがメインのリポジトリとして使われているわけではありません。

例えば、w3c/csswg-draftscsswg: Summaryのミラーとして置かれています。

W3Cの場合は、バージョン管理+ファイル置き場としてはdvcs.w3.orgGitHubのどちらも使われているようです。

そのため、単純に仕様がどこにあるのかを見たい場合は、最初に紹介した公式サイトW3CWHATWGから該当する仕様を探すのがいいと思います。

追記: 仕様書のURL等やメタ情報がtobie/specrefにてまとめられています。

JSONファイルで仕様書のバージョン毎のURLや作者などがまとめられていて、 http://specref.jit.su/bibrefs?refs=SVG,REX,DAHUT のようにAPIとして使うことも出来ます。

  • W3C
  • WHATWG
  • ECMA
  • IETF

など殆どの仕様がまとめられているのでこれを参照するのが簡単だと思います。

これを元に仕様書をまとめてダウンロードするものを作りました


コミュニティ

ウェブの仕様の策定作業等がGitHubに移動(メーリングリスト等も併用する)したケースだと、 以前に比べると変更を見たり、疑問や問題をIssueにしたり、Pull Requestによって変更を送りやすくなりました。

ただ、それでも仕様に対するContributingは難しいという印象があるかもしれません。 例えば、どこに仕様があるのか分からなかったり、過去ログを見ないと言いたいことが既出なのか分からない等、意見するのに壁があるかもしれません。

そのようなどうすればいいのかわからない状態を補助するために作られたのがSpecifictionというサイトです。

Specifictionは見た目通りの掲示板的な場所ですが、以下で案内されているように、そのウェブ標準への意見の内容が既出であろうがなかろうが言える場所となることを目的にしています。

Basically, if you have anything to say about Web standards, be it a new feature or feedback on an existing one, just say it! Welcome to Specifiction - Specifiction

HTMLやCSSといったかなり大雑把なカテゴリが用意されていることからも分かるように、どこに言えばいいのか分からないならここで言おうという感じです。

話題になった例だと、CSS Color Level 4にrebeccapurpleを加えるという議論はここから始まっています。

このような “誰に or どこに言えばいいのか分からない”ような意見の場としては、ウェブ標準についてだけではなくウェブサイトのブラウザ間での互換性についてもコミュニティが存在します。

webcompat.comはMozilla Web Compatibility teamが始めたサイト(GitHub Issue)で”Bug reporting for the internet.“と書かれているように、通常のウェブサイトの問題やウェブブラウザの問題について報告できる場所です。

報告された問題に対して、ボランティアの人等が調べて、サイトの持ち主やブラウザベンダに報告してくれるという形です。

MSもwebcompat.comからのバグ報告について言及しています。

おわりに

最近よく見るウェブの仕様について簡単に紹介しました。

今までのメーリングリストというような見えにくい所だけではなく、GitHub上やSpecifictionといったより見やすく、参加しやすい形へと変化していってると思います。


識者の見解

ウェブの仕様は今どこにあるのか?を分かる範囲で追補 - 血統の森+はてな

古典的なものの見方で、W3C HTML5仕様を軸にW3C仕様の現状を分かる範囲でごく簡単に

#14 WHATWG | mozaic.fm

WHATWG、 W3C、 TAG などの成り立ちや、それらがやっていること。先日の HTML5 勧告の意味。 LivingStandard とはどう考えればいいのか?といった話から、標準化において「今何が起こっているのか」、「これからどうなっていくのか」そして、「自分たちはそれにどう参加できるのか?」を議論しました。


より詳しい(正しい)見方などがありましたらPull Requestよろしくお願いします。

< Pull Request は こちらからです!