(1/3)サーブレット/JSPを基にする重厚長大なJavaのWeb開発のイメージを変える軽量フレームワーク「Play」について解説し、Webアプリの作り方を紹介する入門連載。今回は、RESTの概要、URIの概念、RESTで使われるHTTPメソッドとステータスコード、PlayでのRESTfulな設計、実装上の問題点などを解説します。frameworkを紹介してきました。frameworkが得意とするソフトウェア・アーキテクチャのパターンである「REST」をターゲットとして紹介します。frameworkが求めるシステム像が見えてくるかと思いますので今回はRESTの概念に重点を置いて以下の内容で紹介していきます。「RESTって何?」という方もいるかと思うので、まずはRESTについて簡単に説明します。Fielding氏が提唱した分散システムにおけるソフトウェア・アーキテクチャのパターンのことです。そのRESTの原則に従ったシステムのことをRESTfulなシステムといいます。RESTfulなシステムの特徴は、セッションやクッキーなどでクライアント・サーバ間の情報を持ち続けず、同じURIでアクセスしたら毎回同じリソース(情報)が取得でき、HTTPで定義されたコマンドのみでシステムを操作できることです。RESTでの基本となる原則は4つあり、以下のものになります。frameworkとの関係を説明していきます。ちなみに、他の3と4の2つの解説を除いた理由ですが、Webシステムによっては例えば認証が必要なシステムなどステートレス(セッションやクッキーを使わない状態)であり続けるのが難しいものがあるのと、リンクは普段、皆さんが使っているので、今さら述べるほどのことでもないからです。リソース(情報)を識別するURIの概念RESTの基本原則の1つにリソースをURIで識別できることがありますが、これは同じURIが示す情報は情報元が更新や削除をされない限り、毎回同じ情報になるということです。このリソースとURIの関係をイメージしやすいのはフォルダ構成とアドレスの関係かと思います。下記のようなC直下にある「サンプル」というフォルダに年月日ごとの記事があったとします。ここで2012年6月1日のリソースにアクセスしたい場合は、アドレスに「C:\サンプル\2012\06\01\」と入力すると、そこのフォルダにアクセスでき、ファイルやフォルダの一覧が表示されます。2012年6月のリソースなら、「C:\サンプル\2012\06\」とアドレスに入力すれば、その月の各日々のフォルダの一覧が表示されます。このように、指定したアドレスに意味を持たせ、そこにアクセスすれば、そのリソース(ここではファイルやフォルダ)があるようなことをURIで表現するのがURIでリソースを識別する考え方です。先ほどの例をブログサイトに例えてみましょう。下記のようなURIを使うと、年月日ごとにブログ記事のリソースを取得するように設計可能です。URIリソースhttp://....../2012/2012年のブログ記事の一覧http://....../2012/06/2012年6月のブログ記事の一覧http://....../2012/06/012012年6月1日のブログ記事の一覧また、年月日での区分けではなく下記のようにブログ記事のカテゴリごとにリソースを取得できるようにすることも可能です。URIリソースhttp://....../foods/グルメについてのブログ記事の一覧http://....../sports/スポーツについてのブログ記事の一覧http://....../movies/映画についてのブログ記事の一覧http://....../diaries/日記についてのブログ記事の一覧さて、URIでリソースを識別できることによって、どんな利点があるのでしょうか?まず考えられるのは、URIで何のリソースがあるのか直感的に分かりやすいことが挙げられます。リソースの指定を全てパラメータで指定した場合に上記のブログサイトで年月日を示すには、以下のように長くなってしまいます。http://....../blog?year=2012&month=6&day=1この程度ならまだ許容できる範囲ですが、さらに年月日のほかに長文のような情報があった場合は、パラメータがさらに追加され長くなってしまいます。目的のリソースにアクセスするためには指定するパラメータ名自体を知らなければならなくなってしまいます。URIでリソースを指定できる場合、ブックマークの設定時の仕組みが作りやすいという利点があります。あるのが全て情報をPOSTメソッドで遷移していくシステムだと、まずURIが変わらないのでブックマークするURIが特定できません。なると毎回トップページからの遷移になってしまいます。ブックマークしたいページがトップページから深いリンクをたどる場合は、毎回深いリンクをたどらねばならず、ユーザーにとって使い勝手が良いサイトではなく、かつ開発者にとっては確認やテストするのも時間が奪われてしまいます。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。