InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

RESTful Worldでの素晴らしいURI

作者 Thomas Bandholtz , 翻訳者 編集部 投稿日 2008年4月10日

セクション
設計/アーキテクチャ,
エンタープライズ・アーキテクチャ
トピック
SOA ,
REST ,
Semantic Web
タグ
Collaborative Technologies ,
標準化 ,
RDF ,
W3C ,
Web 2.0 ,
マッシュアップ
「最小の統合コストでマシン読み取りが可能なデータを共有するための、分散化ワールドワイド情報空間として思い描かれる」とは何を指しているのか? RESTだろうか?いや、違う。SWEOによると、これはSemantic Webということだ。素晴らしいURIは、こうすることを支援する。そこで、RESTful SOA URIも同様に「素晴らしい」のかどうかを確かめてみる価値はあるかもしれない。

Semantic Web Education and Outreach (SWEO)(source)Interest Groupは、 3月末にその権利が終わりを迎えた。最後の製品はCool URIs for the Semantic Web(source)についてのW3C Noteであった。URIは素晴らしいか?1988年(当時はまだ「Sir」ではない)のTim Berners-Lee氏による記事に言及する。
「何が素晴らしいURIを可能にするのか?
素晴らしいURIは、変化しない。
どんな種類のURIが変化するのか?  
URIは変化しない。人びとが変えているのだ」。

こんにちの素晴らしいURIはそんなに単純ではない。2005年、「HTTP修飾参照機能の範囲」(httpRange-14)(source)に関する長く続いた討論の 後、W3C Technical Architecture Group (TAG)は最終的に決定したのは、「HTTP応答コード200(うまくいった検索)が指定され、URIが情報リソースのためであり、しかし、そのような 応答がなく、または別のコードがあることを示唆しているなら、そんな試みはなかっただろう」と2005年にTBLによってまとめられた(source)ことである。現在の SWEO Noteは、Roy T.Fielding氏によるさらに詳細な投稿(source)に言及している。

a) 「http」リソースが2xx応答でGET要求に応答するならば、そのURIで特定されるリソースは情報リソースである。
b)「http」リソースが303(他、参照)応答でGET要求に応答するならば、そのURIで特定されるリソースはリソースである。
c) 「http」リソースが4xx(エラー)応答でGET要求に応答するならば、そのリソースの種類は不明である。

Fielding氏は、REST(参考記事リンク)アーキテクチャーの異名である。しかしながら、httpRange-14の決定は、ほとんどRESTful SOAでは認められていない。例として、Mark Bakers氏による「hypermedia constraint」(参考記事)やAnne Thomas Manes氏による「REST is about Resources」(source)などがある。URIは、概してRESTの基本的な概念である、Uniform Resource Identifiersである。SWEO Noteのみが、例証としての「RDF仕様の実装者の現実的なガイド」と追加している。

RDF(source)は、Resource Description Frameworkを表し、「ユーザが現実の人びと、組織、トピック、ものからのWebドキュメントおよび概念をコンピュータが処理可能な方法で記述する ことを可能にする。そよのうな記述のWeb上での公開は、Semantic Webを作成する」。 人が読解可能なドキュメント(別名:情報リソース)およびコンピュータが処理可能な記述またはセマンティクスコンセプトの共起は、HTTP URIの識別(source)に曖昧さを生じさせる。 http://www.example.com/people/alice はAliceの美しくデザインされたホームページを表しているのか、それともAliceについてのRDFがエンコードされたメタデータを表しているのか?企業固有のスキームに従ったvCard、FOAFレコード、またはHRデータセットであるのか?

そういった質問はプロトコルに依存しないURI構文(source)の範囲外であるので、ソリューションとしてコンテンツネゴシエーション(source)を提供するのはHTTPプロトコ ル次第である。HTTPクライアントは優先されたデータ形式と言語に加え要求ヘッダーでのターゲットURIを考慮に入れないので、コンテンツプロバイダー がこれらの設定を取り扱うべきである。SWEO Noteは、それぞれのデータ形式に1つの個別のURIを暗示するソリューションと「汎用」のURIを提供する。これにより、必要に応じて複数の提示の中 で具体的な好みへの直接リンクが可能になり、汎用URIは実行時間としてHTTP要求で指定された「受諾」設定にしたがって、これらの1つに転送する。 Apache HTTP Serveのさらに詳しいベストプラクティス(source)が公開されている。

これは主に修正ドキュメントファイルの準備に適合することを、RESTful SOAは議論するかもしれない。動的SOAサーバは転送することなしに、オンデマンドで要求されたフォーマットでコンテンツをレンダリングすることのみ で、簡単にこの「汎用」URIコンセプトを実装することができる。このビューはコンテンツの希望に沿いながら、転送アーキテクチャーがリンケージおよび参 照をサポートする。また、リソース管理およびガバナンス(source)を利用し、Semantic WebまたはRESTful SOAでそうする。そしておそらくこれらの2つのアプリケーションの分野はお互いにそれほど離れたものではない。

原文はこちらです:http://www.infoq.com/news/2008/04/cool-uris-rest

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。