近ごろW3C Web Applications Working Group(リンク)は、 正式名称Language Bindings for DOM Specifications(リンク)であるWeb IDL(リンク)の作業草案を公表した。作業草案は、インターフェイスを定義するスペックで使用されるOMG IDLバージョン3.0(PDF)の構文サブセットを定義する。InfoQはWeb開発コミュニティに与える影響について、スペックエディターに話を聞いた。
Web IDLはインターフェイスを定義するためにW3Cスペックで使用される言語を詳細に指定し、そうしたインターフェイスの ECMAScriptおよびJavaバインディングの正確な適合性要件を提供するよう設計されている。すでに公開されたスペックの実装者に対するガイドと して、ドキュメントは機能し、新たに公開されたスペックはこのドキュメントを参照し、インターフェイスの実装が相互運用可能であることを保証するように期 待されている。「HTML5の構築で信じられないほど役立つことが証明されている」とHTML 5(リンク)エディターの1人であるIan Hickson氏(リンク)は言う。Web IDL(リンク)を参照する別のスペックは XMLHttpRequest Level 2(リンク)であり、今年の2月25日に初めて公表された。W3Cによって公表されたプログラミング言語インターフェイスを含むテクニカルレポートは、典型的にObject Management GroupのInterface Definition Language (IDL) [OMGIDL]を使用して説明されている。IDLは、言語に依存しない方法でこうしたインターフェイスを説明する手段を提供する。たいてい、 theIDLで記述されたインターフェイスが、指定された言語の構造とどのように対応するのかを詳述したドキュメントに追加の言語バインディング索引が含 まれている。
しかしながら、通常Web、ECMAScriptで使用されるこのような言語のスペックのバインディングは、相互運用性の結果に関して、正確性が低く指定 される。また、各スペックはECMAScriptグローバルオブジェクト上のプロパティと対応するDOMインターフェイスが記述したinIDLまたは、 ECMAScriptのNumberタイプにマップする符号なし長IDLタイプのような、同一の基本情報を記述する必要がある。
内容の一部変更のほかに、この改訂の主な変更(リンク)は、ドキュメントのタイトルが「Web IDL」になった。「ドキュメントが定義しているもの(IDL言語およびそれがマップする2つの言語)をより正確に示す名前である。そのドキュメントの以 前の名前は、インターフェイスをIDLで定義するスペックには適用できず、DOMのみに適用可能であるという印象を与えていた」とWeb IDL のエディターであるCameron McCormack氏(リンク)は語る。
Cameron氏はまたInfoQに、Web IDLがWeb開発コミュニティでどのようにして役に立つのかを説明した。
現在のDOM関連のスペックは、特定のインターフェイスを実装するECMAScriptのホストオブジェクトがどのように振る舞うのかについての概要を示 している。たとえば、ECMAScript Language Binding appendix of DOM Level 3 Core(リンク)は、DOM Level 3 Core向けのECMAScriptバインディングを説明しているが、NodeプロトタイプオブジェクトはElementオブジェクトのプロトタイプ チェーンにあることは述べていない。さまざまなAJAXツールキットがこれに依存しているが、標準化はされていない。
別の例としては、ホストオブジェクトで機能を呼び出す場合、どのようにタイプが強制されるのかが説明されていない。たとえば、以下をおこなうとき、
circleElement.setAttributeNS(null, 'cx', 2 * 50);以下のように振る舞うものと予想する。
circleElement.setAttributeNS(null, 'cx', '100');なぜなら、etAttributeNS()に対する3番目の引数がDOMStringだからである。これはどこにも定義されていないが、広く相互運用可能な振る舞いである。Web IDLは、このようにタイプの強制の動作方法を定義している。
そこでWeb IDLに「他のスペックの言語バインディングに対してさらに厳しい要求を課す」と、標準間の一貫性や同一の標準に対して開発された製品間の一貫性に関する限り、Web開発コミュニティはますます相互運用可能な世界になる。