Webやスマホアプリ開発に欠かせないRESTful APIとは?
REpresentational State Transferの略であるREST。RESTful APIは、基本的に「RESTの原則」に従って実装されているWebシステムのHTTPでの呼び出しインターフェースのことを指します。そのため、広義には、「REST APIとRESTful APIは同じものである」といっても間違いではありません。では、RESTful APIとは具体的にはどういったものなのでしょうか? 今回はRESTful APIの概要や原則、そしてRESTful APIを使うことのメリットとデメリットについて紹介します。

RESTful APIの概要、REST、4つの原則とは?
RESTは、HTTPプロトコル作成者の一人であるRoy Fieldingによって2000年頃に提案されたもので、分散アプリケーションを構築する際に、複数のソフトウェアを連携させるのに適した設計原則の集合(もしくはその考え方)を示すものです。また、RESTful APIは、次の4つのRESTの原則に従って設計されたAPIとなります。
1.アドレス可能性
URIを通じ、リソースを端的に指し示すことができる性質を有していること。APIのバージョン、データを取得するのか、それとも更新するのか、などが一目でわかるように、すべての情報が一意なURIで表現されるようにすること。
2.ステートレス性
すべてのHTTPリクエストが完全に分離している性質であること。セッションなどの状態管理は行われないこと。
3.接続性
ある情報に「別の情報へのリンク」を含めることができること。そして、リンクを含めることで「別の情報に接続すること」ができること。
4.統一インターフェース
情報の取得、作成、更新、削除といった操作は、すべてHTTPメソッドを利用すること。この場合のHTTPメソッドとは、取得「GET」、作成「POST」、更新「PUT」、削除「DELETE」となる。
以上が4つの原則になります。この4つの原則を見てもわかるように、RESTの大きな特長はHTTPの技術をこれ以上ないほど効果的に活用したものであり、Web技術との親和性が高いという点です。そのため、現在ではさまざまなWebサービスやWebアプリケーションの開発に活用されています。
特に最近はスマートフォンの普及もあり、パソコンだけではなく、モバイルでも業務システムを利用できるようにするのが当然と考えられるようになりつつあります。また、一つのシステムだけでなく、複数のシステムや多様なWebサービスと連携できるシステムでないとユーザーに選択されない時代です。こうした課題を解決するうえでも、RESTful APIは欠かすことのできないものとして大きな注目を浴びています。
RESTful APIをつくるための条件
続いては、「どういった形で作られたものがRESTful APIと呼ばれるのか?」、「その条件とはどういったものなのか?」について説明します。これは前項で説明したREST(4つの原則)にも関わってくるものです。基本的にRESTful APIはシンプルで簡潔なものであり、誰もが開発できることが重要です。また、APIの利用者から見て容易に理解できるものでなければなりません。そのためには、次の3つの条件を兼ね備えている必要があります。
1.「作成/取得/更新/削除」の4つのHTTPメソッドを使い分けて設計する
基本的に、この4つの処理でほとんどのシステム処理を完結させることができ、かつ目的に応じて4つの処理に対応するHTTPメソッドを指定することが必須となります。
2.ステートレスである
前項でも触れましたが、RESTful APIは、どういった時であっても、誰であっても、どういった状況であっても、アクセスすれば必ず同じ結果を返さなければなりません。これによってRESTful APIは、別の開発者やAPI利用者が見たときも容易に理解することが可能となります。
この設計思想は、URLの設計においても同様です。誰が見てもすぐにAPIであることがわかるようにすること、短いURLのなかにAPIのバージョン、リソースの関係性を含めつつ、アプリケーションや言語に依存する拡張子は含めないなど、あらゆる場面でシンプルかつ簡潔であるという思想が反映されています。
3.通常のHTTP通信と同様にステータスコードを返す
すでに何度か説明しているように、RESTful APIはHTTPメソッドを利用したAPIです。そのため、通常のHTTP通信と同様に、URLを入力した際に「成功」(200)、「リダイレクト」(302)、「不明」(404)、「失敗」(500)といったステータスコードが返ってくるようにしなければなりません。
RESTful APIのメリット
ここまでは、RESTful APIの概要、作るための条件について説明してきました。これらを踏まえたうえで、RESTful APIを活用することにより生じるメリットについて説明していきます。
1.モバイルアプリケーションへの対応が容易になる
モバイルは「いつでもどこからでも情報にアクセスできる」というのが大きなメリットになります。その反面、場所によっては通信環境が悪く、特にデータ量が大きなものになると、待機時間が長くなったり、画面が固まって操作できなくなってしまったり、といった不具合が生じる場合があります。これはクライアントがサーバーのアプリケーションにHTTPリクエストを送った際に、画面(HTML)で返そうとすることから生じる問題です。
一方、RESTful APIの場合は、HTTPリクエストに対し、JSON形式やXML形式といった、データのみを返します。画面(HTML)ではなく、軽量のデータなので、加工も容易で、通信環境が悪い場所であっても、「待機時間が長くなる」とか、「操作性が低くなる」といった不具合が起こりづらくなります。これは、モバイルアプリケーションへの対応はもちろん、外部システムとの連携においても大きな効果を発揮します。
2.インフラ構築の手間を大幅に削減できる
現在、業務効率化やサーバーの運用管理にかかわるコスト削減のほか、BCP対策(事業継続計画:災害や事故といった不測の事態が起きても事業が継続できる対策をとっておくこと)の一環として、オンプレミスからクラウドサービスへと移行する企業が増えています。クラウドサービスの多くは、クラウド上でのインフラ環境構築や運用管理を制御する際に必要となるRESTful APIを提供しています。これを活用することで、これまで手動で行っていた構築作業から解放されるようになります。その結果、手間を大幅に削減でき、作業ミスによる障害発生リスクの減少も実現されます。
RESTful APIのデメリット
RESTful APIには、メリットだけでなく、デメリットもあります。より理解するためにRESTful APIのデメリットについても紹介しておきましょう。
1.設計の自由度が高い反面、実装ルールの統一性がない
基本的にRESTful APIは、RESTの原則に沿ってさえいれば、記述自体は自由度の高いAPIといえます。もちろん、自由度が高いことが汎用性につながり、普及したという側面もあります。しかし、実装ルールに統一性がないため、「十分に理解しないまま作られた、あやふやなRESTful APIが増えている」という弊害も生じています。
2.仕様や定義に関する要素がない
これも「RESTful APIの自由度の高さ」からくるデメリットです。RESTful APIが「どのような仕様であるのか?」、「どういった動作をするのか?」といったことを定義する要素がありません。そのため、ドキュメントと実装したときの乖離が発生しやすくなり、外部プログラムが動作を読み取ったり、想定したりすることができない、というデメリットが生じる場合があります。
RESTful APIが容易にするWeb、スマホアプリ開発
RESTful APIを活用すると、アプリケーションをゼロからすべて自分で構築する場合に比べて、大幅な工数削減を実現できます。作業ミスによる障害発生のリスクも減少します。これは開発者にとって非常に大きなメリットであり、Webやスマホアプリ開発の効率アップに大きく貢献してくれます。