SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Jersey、AJAX、JSONを使ってRESTに挑戦しよう

RESTのメリットをJavaコードに簡単に取り込む方法

RESTとは何か?

 RESTとは、Representational State Transferの略です。RESTは、HTTPプロトコルを使ってコンピュータ間でデータをやり取りするための洗練された手段を提供します。その鍵となるのは、HTTPリクエストです。Webの最も初期の時代には、HTTPリクエストは主に、Webサーバからファイルを取得するために使用されていました。

 例えば、筆者のプロフィール情報が記載されたHTML Webページを作成し、そのページを、myProfile.htmlというファイルとしてBobInfoというディレクトリに保存したとします。そのファイルを参照したいユーザーは、http://www.myExampleWebSite.com/BobInfo/myProfile.htmlというURLを呼び出します。URLを受け取ったWebサーバは、このファイルを取得し、呼び出し元のコンピュータのブラウザ(またはHTMLを解釈できる何らかのコンピュータベースの処理機構)に、そのファイルバイトを返すという仕組みです。もちろん、時の流れとともに、処理はこれよりもずっと複雑になっています。データ駆動のWebページの場合は、Webページを実行時に作成することが求められます。そのため、最近のmyProfile.htmlでは、筆者のプロフィール情報を記述したHTMLが、ハードコーディングされたWebページとしては含まれていない場合もありえます。その場合のWebサーバは、HTMLファイル(大体はJSP、ASPX、またはPHPファイル)を、Webページを動的に生成するためのサーバ側データ駆動プログラミングロジックがちりばめられたHTMLを含むコードとして解釈していると言えます。こうなってくると、HTMLテキストのページを動的に作成するという概念そのものが薄れてきました。WebサーバにXMLを作成させ、それを返すようにしたらどうか、XMLをHTTPリクエストの一部として受けつけるようにしたらどうか、SOAPメッセージのような、さらに複雑なXML構造を返すようにしたらどうか ― 用途はどんどん広がりました。WWWにおいて、不可能なものなど存在しません。こうして時を経るごとにHTTPリクエストとHTTPレスポンスはますます複雑で扱いにくいものとなり、今後もこの流れは変わらないと思われていました。そこで登場したのがRESTです。

 RESTの世界では、すべてがもっと単純で、おもしろいものになります。まずRESTでは、URL(純粋なREST主義者に言わせればURI)は「もの」を表します。「もの」とは、名詞であると考えることができます。

 例えば、www.CoolCars.com/salesman/reselman/bobというURLは、Bob Reselmanという名前の販売員を表し、www.CoolCars.com/lenders/contact/reselman/bobという別のURLは、Bob Reselmanという名前の貸主担当者を表すことができます。ここで理解すべき重要な点は、URLが「もの」を定義しているということと、その定義の構造は呼び出されるドメインによって定義されるということです(この記事の後半では、WADL(Web Application Description Language)を使用して、あるRESTドメイン内の「もの」を呼び出す方法を紹介します)。

 RESTでは、URLが「もの」を定義するということが分かりました。では、「もの」を使って何ができるのでしょうか? まず考えられるのは「もの」をドメインから取り出したり、ドメインに追加したり、ドメインから削除したりすることです。では、どのようにしてこれらの操作を行うのでしょうか? ここで登場するのがHTTPメソッドです。

 上述のように、RESTではHTTPプロトコルを使用して、非常に強力な処理を非常に簡単な方法で行います。RESTが多用するHTTPプロトコルの機能の1つが、METHODフィールドです。最もよく知られているHTTPメソッドは、GETPOSTです。昔のWeb開発者は、処理に使うクエリ文字列やフォーム情報をWebサーバに引き渡すための手段としてGETとPOSTの値を使用していました。

 しかしRESTでは、METHODフィールドをもっと賢明な方法で使用します。RESTの考え方は、「これらのメソッドを、もともとの想定どおり、HTTPリクエストの意図に関する指示として使おうではないか」というものです。そこでRESTでは、GETはデータを取得すること、PUTはデータを追加すること(POSTと同じ)、DELETEはデータを削除することを意味します。RESTで使用できるHTTPメソッドは、他にも存在します。しかしここでは、これらの基本的なメソッドのみを対象に、話を進めることにしましょう。

 これでRESTの基本概念が分かりました。RESTでは、URLによって「もの」を定義し、HTTPリクエストのMETHODフィールドを設定することで「もの」を取得したり、追加したり、削除したりできます。確かにこれは、普通のWeb開発者よりも低いレベルでHTTPプロトコルを扱っていることになります。しかし、本質的なHTTPを扱う方法がつかめれば、ずっと容易に、ずっと高度な作業が可能となるのです。

次のページ
Jerseyを使ってRESTを簡便化する

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Bob Reselman(Bob Reselman)

Edmunds Incのシニアテクニカルライター兼テクニカルエディター。Edmunds Inc.は、多彩な情報と高い可用性を誇る、最先端のJavaベースの各種自動車情報Webサイトを運営する大手パブリッシャーである。http://www.edmunds.com/およびhttp://www.insid...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4596 2009/12/09 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー