REST API(RESTful API)とはWeb設計思想の1つであるREST(Representational State Transfer)に従ったAPI(Application Programming Interface)のことを指します。
REST APIを用いることで開発にかかる時間やコストの削減を行うことができ、価格を抑えたサービス提供を行えるだけでなく、共通の枠組みとすることで開発者は理解しやすく効率的な開発が行えます。今回はREST APIの特徴やメリットについて解説を行います。
APIとは
APIとはApplication Programming Interfaceの略でさまざまなアプリケーションの機能を外部から利用できるよう設計されたインターフェースを指します。
このインターフェースは何かと何かを繋ぐ物の総称で、例えばマウスやキーボードなどは人とコンピューターを繋ぐユーザーインターフェースです。APIの場合も同じでクライアントとサーバーを繋ぐインターフェースを指します。APIにはさまざまな種類がありますが、開発現場で広く利用されているのがWeb APIであり、昨今ではAPIと言えばWeb APIを指す場合が増えています。Web APIはWeb上で公開されている機能や情報をHTTP(またはHTTPS)プロトコルで通信し、利用するものを指します。
例えば、代表的なWeb APIにGoogle Map APIがあります。Google Map APIはWebサイト上にGoogle Mapの機能を埋め込めるWeb APIで、Webサイトを訪れたユーザーは目的地周辺の地図を確認するなど、Google Mapに接続しているかのような操作が行えます。
RESTとは
RESTとはRepresentational State Transferの略でWeb設計思想の1つ1です。
このRESTには4つの原則があり、2000年にRoy Fielding氏が自身の論文で提唱したものに基づいています。この4つの原則について詳しく解説を行います。
1. アドレス可能性(Addressability)
アドレス可能性とはURIを通してリソースを端的に表現できる性質を表し、すべての情報が一意なURIで表現されるようにすることを言います。
2. ステートレス性(Stateless)
ステートレス性とはサーバーが過去の状態(ステート)を持たず、その都度受け取ったリクエストに対してレスポンスを行うことを指します。
3. 接続性(Connectability)
接続性とはやりとりされる情報にハイパーリンクを含めることができることを指します。
1つのリンクから別の情報へ接続することができ、円滑に情報連携を行うことができます。
4. 統一インターフェース(Uniform interface)
統一インターフェースとはHTTMPメソッドなどあらかじめ定義・共有された方法でやり取りされることを指します。
REST APIの6つの特徴
REST APIはRoy Fielding氏の論文で提唱された4つの原則に従ったAPIということがわかりました。
このREST APIは以下のような特徴を持っています。それぞれの特徴について解説を行います。
- 統一インターフェース
- ステートレス
- 階層型構造
- キャッシュ
- クライアント・サーバーアーキテクチャ
- コードオンデマンド
統一インターフェース
REST APIではデータ形式は主にJSON、リクエスト〜レスポンスまでの処理はHTTPメソッドを利用することが決まっています。インターフェースが統一されていればブラウザやモバイルアプリケーションなどRESTを利用するクライアントであれば同じ方法でサーバーが呼び出せ、リソースにアクセスすることが可能です。
ステートレス
RESTの原則でも挙げられているように、サーバーは過去の情報(セッション情報など)を保持しません。これによりサーバーは余分な情報を保存する必要がなくなり、軽量化や実装のしやすさ、拡張性の高さにつながります。
階層型構造
階層型構造とはクライアントとサーバーを完全に切り離すことで各アプリケーションがアクセスできる情報を制限し、コンポーネントの管理を強化できます。
キャッシュ
REST APIではHTTPメソッドを用いているためキャッシュが可能です。キャッシュ機能を活用すればリソースの鮮度に基づいて、一度取得したリソースをクライアント側で再使用することができます。
クライアント・サーバーアーキテクチャ
クライアントとサーバーは完全に独立しており、変更点があった場合でも互いに影響されることはありません。ほとんどのWebで同じように設計されていますが、RESTではこの制約を明文化しています。
コードオンデマンド
コードオンデマンドはプログラムコードをサーバーからダウンロードし、クライアント側でそれを実行するアーキテクチャスタイルのことをいいます。
REST APIを用いるメリット・デメリット
WebサービスにAPIを採用し、RESTに従った設計にすることで以下のようなメリット・デメリットがあります。
メリット
REST APIを使うことでシンプルで効率的な開発が行えます。HTTPメソッドやJSON形式など一般的なWeb技術を用いるため開発が容易であり、ステートレスにより負荷に応じた拡張がしやすい点などが挙げられます。
デメリット
デメリットはあくまでRESTは開発における設計思想の1つであり、実装の規定などがないため開発者により記述方法にばらつきが出てしまう点が挙げられます。
まとめ
REST APIとはWeb設計思想の1つであるRESTに従ったAPIを指します。
RESTには次に掲げる4原則があり、それらに沿ったAPIをREST APIといいます。
- アドレス可能性
- ステートレス性
- 接続性
- 統一インターフェース
現代のシステムやサービスは外部サービスとの連携を前提に開発されていることが多く、Web APIを用いる事で既存サービスを活用し、コストの削減や開発スピードの向上に繋げることができます。その中でも主流であるREST APIは幅広いエンジニアに求められるスキルのため、基本を理解して開発を行えるようにしましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.01.25
Googleアナリティクスとは?基本機能や最新版GA4への移行方法解説
Googleアナリティクス(ユニバーサルアナリティクス)とは、Googleが無料で提供を行なってい*Webアクセス分析ツールです。
- WEB
- SEO
2023.01.25
Nginxとはどんなソフトウェア?インストール方法は?
NginxはApacheを抜いてシェア率1位を誇るWebサーバソフトウェアとなりました。そんなNginxにはどのような特徴があるのか見ていきましょう。
- WEB
2023.01.25
人気WebサーバソフトApacheとは?
ApacheとはApache HTTP Serverの略称で、世界的に人気の高いオープンソースのWebサーバ(HTTPサーバ)ソフトウェアの1つです。
- WEB