API・Web API・REST APIの概要や違いについて整理する

API・Web API・REST APIの概要や違いについて整理する

2020年12月17日
まとめ系

普段何気なく使っている技術や言葉について、表面的な知識にせず、しっかりとイメージできるまで自分なりに調べて整理し、理解するシリーズ。

API・Web API・REST APIについてそれぞれの概要や違いなどについて、自分の理解を深めるためにも改めて整理してみました。

APIとは

APIとは「Application Programming Interface(アプリケーション・プログラミング・インターフェイス)」の略語で、ざっくりに言うと「アプリケーションをプログラミングするためのインターフェース」という意味になります。

インターフェイスとは、コンピュータ用語でいうと、「何か」と「何か」をつなぐものという意味を持ちます。例えば、USBは「パソコン」と「周辺機器」をつなぐものなので、インターフェイスの一つです。

つまり、APIとは、この「何か」と「何か」が「アプリケーション、ソフトウェア」と「プラグラム」をつなぐもの、という意味になります。

 

Web APIとは

APIとは元々Webの世界だけで使われる言葉ではなく他にも様々な種類があり、そのうちの一種として「Web API」があります。

Web APIはその名の通り、Web上に公開されていて、外部から呼び出して利用が可能なAPIです。

Webの世界ではこのWeb APIのことをAPIと呼んでいることが多いです。

よく使う機能がAPIとして用意されていれば、わざわざ一からプログラムを組まなくても、必要に応じてAPIを利用し、効率的に開発を進められます。

 

Web APIの役割

Web APIを使うことで、インターネット経由で別のサーバー上にあるプログラムを呼び出し、その結果を受け取ることができます。

例えば、サービスのデータをWeb APIで提供するような場合において、外部のプログラムとサービスのDBの中間に位置して、やりとりの仲介を行います。

外部のプログラムからサービスのDBに直接アクセスできないが、Web APIが橋渡しをすることで、サーバー上にあるデータを取得したりできます。

 

Web APIの活用例

Web APIの活用例として、Google MapsのAPIを利用してWebサイトに指定した場所を表示したり、Googleマップを活用したアプリ開発したりすることができる。

また、YouTube APIを利用して、カテゴリ別の最新の人気動画などを取得することが可能です。

その他にも様々なAPIが公開されており、これらを活用することで最新情報を取得してデータ分析に使ったり、外部APIと組み合わせて新しいアプリを開発することができます。

 

Web APIの実装方式SOAPとREST

SOAP API(SimpleObject Access Protocol)

リクエストおよびレスポンスともにXMLフォーマットのデータで行う形式です。

SOAPのURLは操作と対応づけられるため、URLの命名が動詞的になることが多いようです。

SOAPでは複雑な入力を必要としたり、入出力に対してチェックを必要とするようなサービス等での利用に向いています。

REST API(REpresentational State Transfer)

Web APIでは現在、このRESTが主流になっています。

RESTの世界では、ネットワーク上のコンテンツ(リソース)を一意なURLで表すのが基本です。

各リソース(URL)に対してGET, POST, PUT, DELETEでリクエストを送信し、レスポンスをXMLやjsonなどで受け取る形式です。

また、RESTの原則に従って実装されているシステムのことを、RESTfulと呼びます。

RESTでは不特定多数を対象にした、入力パラメータが少ない情報配信や検索サービス等での利用に向いています。

 

REST APIの仕組み

上記の処理では、データの取得・新規作成・更新・削除に対して1つの「/Hoge」をURLに対応づけしています。

HogeのIDなどは「/Hoge」ともにURLに含んでシステム側に渡しています。

データの取得・新規作成・更新・削除についてはHTTPの一般的なリクエストメソッドを使用し、「GET」なら取得、「POST」なら新規作成、「PUT」なら更新、「DELETE」なら削除のように処理を決定しています。

HTTPの一般的なリクエストメソッドを使用することもRESTなAPIである1つの要因となっています。

 

REST APIのメリット・デメリット

メリット

■ モバイルアプリなどの他システムとの連携が容易になる

HTTPリクエストに対し、JSON形式やXML形式といった、軽量のデータのみを返すため、加工が容易で、通信環境が悪い場所であっても「待機時間が長くなる」や「操作性が低くなる」といった不具合が起こりづらくなります。

■ アプリケーションの中のリソースが容易にわかる

アドレス欄に入力すれば、そのリソースを参照できるため、どのリソースを操作しようとしているかがひと目でわかります。

■ 標準的なAPIの提供

RESTの思想に基づいたAPIを公開することで、標準的なデータフォーマットを使い、多様なアプリケーションを提供することができます。

 

デメリット

■ 実装ルールの統一性がない

実装ルールに統一性がないため、「十分に理解しないまま作られた、あやふやなRESTful APIが増えている」という弊害も生じています。

■ 仕様や定義に関する要素がない

ドキュメントと実装したときの乖離が発生しやすくなり、外部プログラムが動作を読み取ったり、想定したりすることができないというデメリットが生じる場合があります。

 

参考:

  • https://www.internetacademy.jp/it/programming/javascript/how-to-use-web-api.html
  • https://app.codegrid.net/entry/2018-web-api-1
  • https://data.wingarc.com/what-is-api-16084
  • https://wp.tech-style.info/archives/683#toc1
  • https://qiita.com/pink/items/f1a22840619d3b79c4f2
  • https://qiita.com/masato44gm/items/dffb8281536ad321fb08
  • https://blog.api.rakuten.net/ja/jp-restful-api/#RESTful_API-3