San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

WADL - ウェブアプリ記述言語

企業や事業者は、ウェブアプリやその他のデジタル資産に対し、内部データの閲覧や操作を効率的に行うため、HTTPベースのリソースを利用しています。これらのHTTPリソースは、テキスト形式の文書を用いてデータを表現します。

WADLは、HTTPベースのアプリデータとエンドユーザーとの間の橋渡しとして機能し、その内容を分かりやすく説明します。本記事では、WADLとは何か、その意義について詳しく解説します。

WADL - ウェブアプリ記述言語

WADLとは?

WADLは、HTTPウェブアプリの機能や構成部分を説明するために用いられる言語です。この言語を使用して、アプリが提供するすべてのHTTPリソースとその関連性、依存関係を記述できます。 

この言語は、エンドユーザーや他のマシンがHTTPウェブサービスの基本構造や処理を容易に理解できるようシンプルに設計されており、アプリの再利用も促進します。しかし、WADLはWorld Wide Web Consortiumによる標準化がまだなされていません。 

以下に、WADLの特徴的な点を示します。

  • WADLによる記述は、機械が扱えるXMLのみで提供されます。
  • 主にRESTfulアプリの構成要素の説明に用いられます。WSDLがSOAPに対して果たす役割と同じです。 
  • プラットフォームや言語の制約なく利用可能です。
  • 複数のリソース要素を組み合わせ、具体的なウェブアプリ説明を提供します。
Web Application Description Language example

WADLの主な要素

WADLを定義する主要な要素は以下の通りです:

  1. リソース

この要素では、URIで識別されるリソースについて説明します。 

この要素はxsd:anyURI型のbase属性を持ち、アプリが提供する全リソースのコンテナのように機能します。base属性は、含まれる各子リソース識別子の基本URIを示します。

この要素の主な属性は以下の通りです:

  • id - 任意のxsd:ID型属性で、リソースの識別に役立ちます。
  • path - 任意のxsd:string型属性で、リソース識別子のURIテンプレートを示します。 
  • type - さらに任意の属性で、xsd:anyURIのリスト型に関連します。各リスト値は、resource_type要素を説明する相互参照となります。 
  • queryType - リソースのURIに関するquery要素のメディアタイプを説明するために使用されます。

上記の属性に加え、resource要素にはdoc、param、template、matrix、header、queryなどの子要素が含まれます。 

  1. メソッド

この要素は、特定のリソースに対してHTTP経由で提供される入力と出力を説明します。主な子要素は以下の通りです。

  • doc - doc要素は存在しない場合もあれば複数ある場合もあり、メソッドに関するドキュメントを示します。 
  • requestは、主にパラメータの集合として、HTTPメソッドの入力を詳細に示します。
  • response は、HTTPメソッドを通じて得られる出力値を示し、入力に応じてその数は0個以上となります。 

メソッド属性は、メソッド定義とメソッド参照の2種類があり、一度にどちらか一方のみが存在します。

メソッド参照

これは、xsd:anyURI型のhref属性を持つresource要素の派生で、hrefの値がメソッド定義要素への相互参照として機能します。 

その他のWADL由来の属性や子要素は含めず、複数リソースに同一メソッドが適用される際の重複を防ぐために使用されます。 

メソッド定義 

アプリまたはresource要素の子として、このタイプには以下の属性が含まれます。 

name は使用されるHTTPメソッドを示します。複数の子メソッド要素が同じnameを持つ場合、それらは兄弟要素となり、同一のHTTPメソッドの異なるバリエーションとして扱われ、各々異なる入力値を持ちます。 

idは、広く用いられる既定のメソッドを定義するための識別子です。ローカルに組み込まれたメソッドにはidは付与されず、XMLの識別子としてURI参照に使用されます。 

  1. リクエスト

この要素により、HTTPメソッドで利用される入力内容が説明されます。属性はなく、doc、representation、paramなどの子要素を含むことがあります。 

これらの子要素は、0個以上の値を持つ可能性があります。 

レスポンス内のparamは、queryまたはheaderの値を示し、style属性に追加されます。

  1. レスポンス

WADLの定義要素の一つとして、レスポンスは送信されたHTTPリクエストに対して受け取る出力を示します。レスポンスは1つの属性、Statusを持ちますが、これは任意で、特定のレスポンスに対応するHTTPステータスコードを示します。 

その子要素は以下の通りです:

  • doc 要素(任意)。
  • representation は0個または複数存在し、各値がメソッド実行後のリソースの表現を示します。兄弟要素として、通常のHTTPコンテンツの論理的代替手段も示されます。
  • param 要素は0個または複数存在し、各値がstyle属性のヘッダデータを保持します。
  1. パラメータ

Parameterまたはparam要素は、パラメータの定義または参照として機能し、親要素のパラメータ化された値を示します。

パラメータ参照

この種類のparam要素は、xsd:anyURI型のhref属性を持ちます。 

hrefはparam定義要素への相互参照となり、WADLで定義された他の属性や子要素は含めず、複数の親に同一パラメータを適用する際の重複を避けるために使用されます。 

パラメータ定義

これは、親要素やリソースの子要素などのパラメータ化された値を説明します。また、representation、application、response、request要素にも利用されます。 

この要素には、 

  • doc子要素(0個または複数)。 
  • 子要素は任意で、0個または複数存在します。
  • link子要素は任意です。 

これらの要素の主な属性は、id、name、style、type、default、path、required、repeating、fixedです。 

id、name、styleを除き、その他の属性は任意です。 

WADL例

WADL Example
WADL Example

WSDLとWADLの違い

WADLとWSDLは、どちらもウェブサービスの契約やインターフェースとして利用され、ほぼ同様の用途に使われます。効果的に利用するためには、これら2つの違いを把握することが重要です。 

違いを詳しく理解する前に、サーバとクライアント間の橋渡しとなり、データ転送を担う共通点にも注目してください。

WADLとWSDLの比較

違いのポイントWADLWSDL
略称Web App Description Languageの略Web Service Description Languageの略
対応フォーマットRESTfulアプリの記述に有用SOAPアプリの記述に有用
ファイルアップロードの仕組みWADLファイルをアップロードすると、対象ウェブサービスの基本機能が理解できるWSDLファイルをアップロードすると、メソッド呼び出し、引数、返却データの詳細が把握できる
複雑さのレベル非常に軽量で、初心者にも扱いやすい複雑で、効果的な利用には高度な専門知識が必要
サーババインディングほとんど、または全くSMTPサーババインディングがない高いSMTPサーババインディングがある
デザインシンプルなデザイン複雑なデザイン
URIの仕組み簡単なURI機構を要求URI機構を正しく利用するため、XMLメッセージの詳細な記述が必要
認知度W3Cによる推奨はなしW3Cから高く推奨される
RESTとの関係RESTおよびHTTPでのみ動作旧バージョン(WSDL 1.1、1.0)はGET・POSTのみ対応。最新バージョン(WSDL 2.0)はHTTPにも対応
定義される内容リソース、表現、リソース操作の手法などを説明主要な要素全般(ただしは除く)を説明。すべてがXML形式である必要はなく、抽象部分と具象部分の概念もサポート
説明可能なリソース
認証認証以外のすべてのキーがサポートWSDLはWADLより柔軟で、すべての期待に応える
入力POSTとGETの2機能を持つ「?」を用いて自動生成
目的アプリの再利用を支援操作、メッセージ、呼び出しデータの支援

RESTfulサービスにおけるWADLとは?

簡単に言えば、WADLはアプリの構造、メディア拡張、リソース、およびHTTPリクエストメソッドの詳細を記述するXMLです。RESTソリューションで試してみると理解しやすいでしょう。

  • RESTサービスのオプションを選び、メニューから“sample-service”を選択。
  • 新しく表示されたウィザードで、メニューを展開。
  • 希望のService Endpointsを選択。
  • ‘WADL’のオプションから‘Content’を選択。

この方法で、対象のRESTfulアプリの記述を確認し、参照することができます。

結論

HTTPを利用するウェブサービスの機能や特徴を説明するために広く用いられているWADLは、Flickr、Google、Yahooなどのアプリで大きな役割を果たしています。WADLについて詳しく理解することで、これらのアプリやサービスの再利用がより容易になります。また、このファイルをWADL JSON形式に変換して、さらに便利に活用することも可能です。

FAQ

Open
Web Application Description Language(WADL)とは?
Open
WADL を使う利点は?
Open
WADLを扱う人気ツールにはどんなものがあるでしょうか?
Open
WADLはWSDLとどのように違うのか?
Open
WADLについて詳しく学べる専門の情報源はご存じでしょうか?

参考資料

Web Application Description Language - w3.org official

WADL - Github repository

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック