コンテンツにスキップ

HTML Living Standard/Web IDL

出典: フリー教科書『ウィキブックス(Wikibooks)』

Web IDL(Web Interface Definition Language)

[編集]

Web IDLは、ウェブブラウザで実装されることを意図したインターフェースを記述するための言語仕様です。HTML、DOM、WebAPIなど、多くのウェブ標準仕様でインターフェースの定義に使用されています。

仕様のステータス

[編集]

テスト

[編集]

Web IDLの相互運用性を証明するためのテストには、2つの分類があります:

  • 仕様のテスト:Web IDL記法を使用してインターフェースを定義する仕様をテストし、すべての仕様が正しく一貫して記法を使用していることを確認します。
  • 実装のテスト:ブラウザがインターフェースとオブジェクトをどのように実装しているかをテストし、オブジェクトのリフレクションやインターフェースの公開などの機能を含みます。

オンラインバリデータ

[編集]

Dominique Hazael-Massieuxによって、Web IDLフラグメントやWeb IDLを含むHTML/テキスト文書(仕様)のためのオンラインバリデータが作成されました(コードはGithubで利用可能)。

テストスイート

[編集]

Web IDLのテストスイートは、W3CのWeb Platform Testsリポジトリの一部として管理されています。

依存仕様

[編集]

Web IDLを規範的に参照している主な仕様には以下のものがあります:

HTML WG

[編集]
  • HTML5
  • Canvas 2D Context
  • HTML Microdata
  • Media Source Extensions
  • Encrypted Media Extensions

WebApps WG

[編集]
  • DOM4
  • File API
  • IndexedDB
  • Web Storage
  • Web Workers
  • XMLHttpRequest
  • WebSocket API

Web Performance WG

[編集]
  • Navigation Timing
  • Resource Timing
  • High Resolution Time
  • Performance Timeline

その他のワーキンググループ

[編集]
  • Web Audio API(Audio WG)
  • Web Cryptography API(Web Crypto WG)
  • Geolocation API(Geolocation WG)
  • Web Notifications(Notification WG)
  • WebRTC API(Web RTC WG)

構文例

[編集]
// インターフェースの定義
interface Person {
    // 属性の定義
    attribute DOMString name;
    attribute unsigned long age;
    
    // メソッドの定義
    void sayHello();
    boolean checkAge(unsigned long minimum);
};

// 列挙型の定義
enum UserType {
    "admin",
    "regular",
    "guest"
};

// Partial interfaceの定義
partial interface Person {
    attribute UserType type;
};

// Dictionaryの定義
dictionary PersonOptions {
    DOMString? nickname;
    double height = 170.0;
    double weight;
};

主な機能

[編集]
  • インターフェース定義
  • 属性とメソッドの定義
  • 型システム
  • 継承
  • Partial interfaces
  • Mixins
  • Callbacks
  • Dictionaries
  • Enumerations
  • Exceptions
  • Extended attributes

注意事項

[編集]
  • Web IDLは実装言語ではなく、インターフェース定義言語です。
  • ブラウザベンダーは、Web IDLの定義に基づいて実際の実装を行います。
  • Web IDLの定義は、JavaScript APIとして公開される際に自動的にバインディングされます。
  • 非標準や実験的な機能は、extended attributesを使用して明示的に示されます。
  • インターフェースの互換性を保つため、慎重な設計が必要です。

参考文献

[編集]