BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MIMEはRESTにとって問題か?

MIMEはRESTにとって問題か?

ブックマーク

原文(投稿日:2009/08/25)へのリンク

お気に入りのウェブサーバを動かすだけでなく、REST (とHTTPを超えたREST)導入は広がり、より多くの人々が幅広いコミュニティに実世界の経験をもたらしているのが見える。このような場合に、Benjamin Carlyle氏MIMEタイプがRESTを引き止めているかどうか疑問を口にした。

私の見解によるとHTTPの重大な弱みは、メディアタイプの識別のためのMIME標準と、関連するianaレジストリに依存することです。このレジストリは利用が制限されるボトルネックであり、個々の企業やドメインのメディアタイプ定義の要求を扱う能力を持っていません。マシン中心の環境は、ウェブの人間中心の環境より高いレベルの意味論に頼っています。マシンが効果的に情報を活用するために、情報の1つ1つのスキーマはメディアタイプで標準化され、これらのメディアタイプは個々に識別されなければなりません。マシンが分散コンピューティング環境の中でさらに支配的になり、個別の環境の数が増えるにつれて、メディアタイプの数は増えていきます。

Benjamin氏が指摘する問題は、様々なMIMEタイプの導入を全体に対して行うことは非常に難しく、広がっていかないことだ。タイプが何か、そのタイプがどのように動くべきかということに合意を得ようとしなくても、なぜ特定のタイプが必要なのかに合意を得ることだけで十分大変なのだ。

ウェブの外側で、これらの標準を実験的に定義して作り出す能力は、RESTスタイルやウェブ以外で関連するスタイルを健全に導入するために欠かせないものです。

Benjamin氏は、続けて選択可能なアプローチを提案する。最初に挙げたのは、特にURNがすでに分散レジストリを提供しているということで、URNを使うことであった。しかし、彼が指摘する通り、ここにも問題がある。「一番目は、単純にHTTPが特有のヘッダーを使うことを許可しないことです。二番目は、URNは、読み込まれるときにそれ以上解釈されないことです。三番目は、MIMEタイプがパラメータ化されるようにはURNがパラメータ化されないことです。」 MIMEタイプは、異なるタイプに対する適合性を定義する非常に強力な方法を提供する。これをURNだけ使用して表すのは難しい。そして、引き続き、代わりにURNを使うことを容易にするHTTPへの変更を提案する。例えば、

これらの問題に対する解決策は、HTTPを見直して、メディアタイプ用にURIシンタックスのサポートを追加することかもしれません。その際には、1つのメディアタイプがどのメディアタイプから受け継がれたかをプロセッサが決められるプロトコルと組み合わせます。 [...] 1つは、URIのためにGETレスポンスのHTTPヘッダーを利用するか、メディアタイプ記述のために新しいメディアタイプを指定することができるでしょう。リンクヘッダーを使った明らかなアプローチは、Link: rel="inherits"だと言えるでしょう。しかしながら、これは制限されたアプローチです。実際のメディアタイプ記述は、メディアタイプが短いXMLドキュメントの形式か、人が読める単なる小さな形式をしています。そして、おそらくもっと一般的で将来が保証されているものです。

もちろん、Benjamin氏が指摘する通り、旧版互換性はウェブの世界で非常に重要であり、何か変更された場合は、この点に関して慎重に考慮しなければならないだろう。しかしながら、Benjamin氏は、別の提案がある。MIMEシンタックスの分散レジストリだ。

URNにつながる選択肢は、メディアタイプ識別子の一部として、DNSシステムのみを使うことかもしれません。例えば、「dns」サブツリーはMIMEの下に登録できるでしょう。サブツリーによって、例えば「example」という企業は、IANAで調整することなく、application/dns.com.exampleで始まる識別子をまとめて安全に持つことができます。DNSツリーにある企業は同じことができるでしょう。

これによって、HTTPに影響しない程度に旧版互換性を扱う。また、継承などのMIMEシンタックスの利点を維持するようだ。しかし、そこにはまだ欠点がある。

おそらくこの選択肢に対するもっとも強い反対論は、標準ドキュメントを見つけることができないことです。URLは、仕様書を確認して簡単に逆参照できます。DNSとMIMEを混ぜ合わせた場合は、特別の手助けが必要でしょう。そのようなMIME識別子を適当なURLに変換する方法を持つ必要があります。これによって、robots.txtや他のURLの構成の世界に素早く入り込みます。

Benjamin氏はこのようなアプローチを他にも示しているが、以下のように結論付けた。

これには悩みました。私は、会社内でメディアタイプを発表するたびにIANAに行きたくありません。URLは気に入っていますが、重要な継承関係を見つけるのに簡単な方法がほしいと思っています。HTTPとの旧版互換性は崩したくありません。そして、RESTを使う企業にとって利用可能なよりよいプロトコルはありません。どうすればいいでしょうか?

この記事が述べているように、現在のMIMEアプローチは限られたものだろうか? 他に使えるアプローチはあるだろうか? MIMEの問題は、新しいタイプが規制される方法であるMIMEプロトコルではなさそうだ。

この記事に星をつける

おすすめ度
スタイル

BT