【新連載】CPIエバンジェリストのお悩み相談室①
今さら聞けないRESTの話
効率的なコンテンツ配信を可能にするRESTとは?
今、シンプルで扱いやすいRESTが注目を浴びています。昨今は1社が保有するWebサイトが増え、それぞれが異なるシステムを利用することも多く、管理が煩雑なケースがあります。このような場合の解決策の1つとしてRESTが活用されることもあります。さらに、行政データのオープン化に向けた動きが活発ですが、こうした場面でも効率よくデータ配信できるRESTの利用は進んでいます。今回は、セミナー登壇時にお話ししたことをベースに、RESTの概要と、参加者からよく受けるお悩みもあわせてご紹介したいと思います。
今回の内容は、PHPカンファレンス2016@東京にて「未来のWebに欠かせないREST APIをApache Solr + Drupalで実装しよう」というタイトルで講演したものです。当日使用したスライドも公開していますので、あわせてご覧ください。
URL:http://www.slideshare.net/MasayukiAbe1/webrest-apiapache-solr-drupal8php2016-68358246
[目次]
・注目を浴びるREST(RESTful Webサービス)とは・RESTサーバーについて
・REST構築でよくあるお悩み
・最後に
●注目を浴びるREST(RESTful Webサービス)とは
RESTとは、REST(Representational State Transfer)によって定義されたアーキテクチャーの原則に従って、リソース情報を取得、作成、修正、削除が行えるAPIインターフェースです。リソースへのアクセスはリソース固有のURIにHTTPメソッドを明示的にアクセスします。簡単にいうと、WebサイトなどがRESTサーバーに固有のURIとメソッドを使い、リソース(データ)を要求し、jsonデータやxmlデータを取得します。
RESTという概念は古くから存在しますが、再び注目を浴びている理由のひとつは、増え続けるWebサイトや増え続けるマルチデバイスに効率よくリソース(コンテンツ)を配信することができるからです。
下図のように、1社で複数のサイトを保有し、さらにサイトごとに入っているシステムの違いや様々なデバイスでの利用を考えると、これまでのWebサイトの作り方では非効率となってきました。
そこで、リソース(コンテンツ)配信用のサーバー(RESTサーバー)を用意します。各Webサイトやデバイスのアプリケーションからデータを取得しにくるWebシステム(REST)を設けるだけで、これまで手作業だった部分が自動化され、効率的なコンテンツ配信が可能になります。
●REST サーバーについて
RESTful Webサービスはリソースに対して、固有のURIにHTTPメソッドを明示的にアクセスします。
(例)REQUEST URI:http://example.com/node/123 HTTP Method:GET
Return code:200 OK
この例では、ノード(記事)番号123番のリソースに対してGETメソッドを使いリソースを取得しています。RESTはさまざまな方法で構築できますが、今回はオープンソースCMSのDrupal8(https://www.drupal.org/)を用いた例を紹介します。Drupal8では、下記のHTTPメソッドで各リソースにアクセスできます。
Method | 意味 | Return code |
GET | リソース取得 | 200 OK |
POST | 新規作成 | 201 Created |
PATCH | 編集 | 204 No Content |
DELETE | 削除 | 204 No Content |
GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE
<form action=”./send.php” method=”post”> のようにPOSTメソッドや、GETメソッドを指定している「method=”post”」の箇所がメソッド名です。一般的にRESTで使われているメソッドは下記のメソッドです。
POST、GET、PUT、PATCH、DELETE
PATCHに関してはリソースの一部をアップデート(編集)する場合に利用し、PUTはリソースの完全な置き換え(置換)する場合に利用するためのメソッドです。そのためリソース編集は、PUTやPATCHが使われますが、Drupal8では、リソースの一部に対してアップデート(編集)を行うので、PATCHメソッドを利用します。
●さまざまなWebサービスに使われるRESTの活用
ここで役立ちそうな質問をセミナー時にもらったので、あわせて紹介したいと思います。
[質問1]
今回紹介したCMSはDrupalでしたが、その他のCMSでもRESTの構築は可能でしょうか?
答え:可能です。
各社CMSは、REST化するためのプラグインがすでにありますので、簡単に構築できます。
・WordPress:WP REST API(http://ja.wp-api.org/)
・Movable Type:Data API(https://www.movabletype.jp/developers/data-api/)
・Joomla!:Rest API(https://extensions.joomla.org/extension/rest-api)
[質問2]
RESTの活用例を教えてください。
答え:
京都市が公開した「KYOTO OPEN DATA」は、京都市が保有するデータをAPI経由で誰でも簡単に取得できるオープンデータポータルサイトです。Drupalでの開発実績が豊富なANNAI株式会社によって開発され、地域経済の活性化や行政の透明性・信頼性の向上などを目的に開設されました。
●最後に
CMSはインタラクティブとマルチプラットフォームのためのAPIに急速に進化しています。未来のWebに欠かせないRESTは、今後さらに必要となり、今後どのようにRESTを活用するか、どのようにRESTを構築するかに注目が集まることでしょう。それではまた、Webセミナー登壇時にいただきました質問にお答えさせていただきますので、第2回目の記事をお楽しみに。
[筆者プロフィール]
阿部 正幸(あべ まさゆき) | KDDIウェブコミュニケーションズ/エバンジェリスト
システム開発会社で大規模なシステム開発を経験後、Web制作会社でプログラマー兼ディレクターとして従事。その後、KDDIウェブコミュニケーションズに入社、レンタルサーバーCPIのプロダクトマネージャーに就任。ACE01、SmartReleaseをリリース後、現職の「エバンジェリスト」としてWeb制作に関する様々なイベントに登壇。Drupal(g.d.o Japan)日本コミュニティー、HTML5 funなどに所属し、OSSを世に広げる活動やWeb制作に関する情報を発信している。
●PHPカンファレンス2016@東京で使用したスライド
「未来のwebに欠かせないREST APIをApache Solr + Drupalで実装しよう」
URL:http://www.slideshare.net/MasayukiAbe1/webrest-apiapache-solr-drupal8php2016-68358246
●CPIスタッフブログ
「RESTful webサービスを構築しよう」
URL:http://shared-blog.kddi-web.com/webinfo/205