岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

WADLは必要か・その1

識者の間でも結論は出ていない

RESTfulなWebサービスのための仕様記述言語・WADL(Web Application Description Language)の必要性については、識者の間でも意見が分かれています。Leonard Richardson(『RESTful Webサービス』の著者の一人)は必要派(「It's Just A Hypermedia Format」)、Joe Gregorio(AtomPubの仕様策定者の一人)は不要派(「Do we need WADL?」)といった具合です。

必要派と不要派の間には、Tim Bray(IETFのAtomPubワーキンググループに参加)のような消極的賛成派(「On Web Service Definition」)、Sam Ruby(同、また前掲書共著者)のような別解模索派(「Doctrine of Minimum Necessary Disclosure」)もいます。

したがって、私ごときにWADLの要不要が決められるはずもないのですが、上記の記事やそれらの関連記事を読んで考えたことがあるので、書きとめておく次第です。

WADLを使いたくなる場面

必要派が存在するということは、人によってはWADLを使いたくなる場面があるということです。何を隠そう私にもあります。あるリソースが受けつけるリクエスト形式をクライアントに知らせたいときです。

AtomPubやTwitterのクライアントが多数できているのは、クライアント作成者がリクエスト形式を知っているからです。リクエスト対象のリソースが受けつけるリクエスト形式を知らないと、GET時のクエリや、POST/PUT時のリクエストボディが決められません。

なんらかの手段でリクエスト形式を知らせることで、様々なクライアントに使ってもらう、それが私の理想です。AtomPubなどの標準に従えば叶えられる理想ではありますが、標準から外れてしまうリソースについては、自力で知らせなければなりません。

もちろん、TwitterのようにAPI仕様を人間の読める文書で公開する手もあります。しかし、API仕様が変わった場合、クライアントはすぐには対応できません(サーバとクライアントの密結合)。WADL文書であれば、すぐに対応できる可能性があります。

WADLなら疎結合が保てるのでは

不要派のJoe Gregorioは、WADLによってサーバとクライアントが密結合する可能性を憂えていますが、クライアントが毎回WADL文書をパースするのであれば、疎結合が保てるのではないでしょうか。ブラウザがHTMLをパースして、フォームをレンダリングするのと変わらない気がします。

今回はここまで。次回は、もう少し具体的にWADL文書の使い方を考えてみます。