【僕の学習ノート】APIとは?分かりやすく解説
こんにちは、なおやです。
今日は、Courseraというプラットフォームで、Metaの社員さんたちから授業を受けました。
そこで得た学びが、下記のツイートです。
【#今日学んだ】APIとは何かについて
1. API:2つのソフトウェアを繋げて使う為の一連のプロトコルや定義
2. Browser API:Webブラウザに組み込まれていて、高度な機能の簡素化や簡単な構文を提供するAPI
3. RESTful API:2 つのコンピュータがインターネットを介して安全に情報を交換するためのAPI— Naoya (@kaigaiblog63) October 8, 2022
今回は、これを掘り下げて解説していきます。
この記事の信憑性
この記事は、Courseの授業を受けて、学び、理解したことを基に、僕なりの言葉と解釈で分かりやすく解説しています。まあ簡単にいうと、僕が学んだことのアウトプットノートです。※ 注意:僕はまだ日々学習している段階です。解説していることに間違いがある可能性も否定できません。何か間違いを見つけて下さった方は、このWebサイトの向上のと僕の学習の為に、教えてください🙏
» Courseraという素晴らしいプラットフォームはこちら (授業は全て英語です)
【僕の学習ノート】APIとは?分かりやすく解説
API (Application Programming Interface) とは、あるソフトウェアなどが持つ機能やデータを別のアプリケーション上でも利用できるように繋ぐ仕組みのことです。
簡単に言うと、APIとはレストランで言うウェイトレスのような役割です。ウェイトレスの仕事は、お客さんから注文を貰ってそれを厨房に伝え、厨房からお客さんの所に料理を運ぶことですよね?APIとは、この厨房とお客さんを繋ぐ役割のような感じです。
例えば、僕のWebサイトにはTwitterが埋め込まれています。なぜ埋め込むことが出来ているのでしょうか?僕は、Twitterの開発なんてしてないのに。それは、僕のWebサイトとTwitterの間をAPIが繋いでくれているからです。
正確に言うとAPIとは、2つのソフトウェアを繋げる為の一連のプロトコルや定義のことで、別のアプリケーションなどの機能やデータにアクセスして自分のアプリケーションで使う方法を教えてくれます。
一般的によく使われるAPI 3選(この記事の目次)
- 1. Browser API
- 2. Rest API
- 3. Sensor-Based API
一つずつ解説します。
Browser API とは?
Browser API とは、Webブラウザに組み込まれているAPIのことで、複雑な機能を簡素化してくれたり、高度な機能を構築する為の簡単な構文を提供してくれたりします。
そこで今回は、最も一般的な「Browser API」を6つご紹介します。
DOM (Document Object Model) API とは?
DOM API とは、Webブラウザで読み込んだHTMLとCSSの文書を操作する為のAPIです。
つまりは、WebページとJavascriptなどのプログラミング言語を繋ぐ役割をしており、JavascriptからHTMLのこの要素 (ノード) に「こういうことをさせたい」と命令をすることを可能にしてくれます。
Geolocation API
Geolocation API とは、ユーザーの位置情報を取得する為のAPIです。またこれを使用すると、ユーザーが望む場合のみ、自分の位置情報をWebアプリケーションに提供することが出来ます。
const x = document.getElementById("demo");
function getLocation() {
try {
navigator.geolocation.getCurrentPosition(showPosition);
} catch {
x.innerHTML = err;
}
}
function showPosition(position) {
x.innerHTML = "Latitude: " + position.coords.latitude +
"
Longitude: " + position.coords.longitude;
}
ちなみに、緯度と経度を取得する為のJavascriptのコードはこんな感じになります。
Fetch API
Fetch API とは、サーバーからデータを取得する為のAPIです。つまりは、Fetch APIを使うことで、Webサーバーに対してHTTPリクエストを行うことが出来ます。
また、fetch()メソッドも提供しており、非同期通信でHTTPリクエストを発行し、そのHTTPレスポンスを取得することが出来ます。
Canvas API
Canvas API では、主に2DのグラフィックをHTMLとJavaScriptを用いて描く方法を提供します。
History API
History APIでは、履歴スタック (ユーザが訪れたページなどをブラウザのウィンドやタブごとに管理するもの) を操作する方法を提供します。
例えば、「history.back(); 」というメソッドを使うと、前のページに戻れたりします。
» History APIを使った具体的な例はこちら (英語です)
Web Storage API
Web Storage API では、クライアント側でのデータ保持を提供します。
» Web Storage APIを使った具体的な例はこちら (英語です)
RESTful API とは?
RESTful API とは、RESTというルールを用いて作ったAPIのことを言います。
では、RESTとはなんでしょうか?
RESTとは、Web上のリソース(画像、ファイル、HTMLなど)にアクセスする際の基本的な考え方を提示しており、4つの原則で成り立っています。
- 1. 統一インターフェース (Uniform Interface)
- 2. アドレス可能性 (Addressability)
- 3. 接続性 (Connectability)
- 4. ステートレス性(Stateless)
統一インターフェース (Uniform Interface) とは?
統一インターフェースでは、情報をやり取りする方法を統一しています。
- Webリソースへのアクセスは、HTTPメソッドを使用する。
- やり取りするデータの形式がJSONかXMLであること
主に上記の2つが規定されています。
アドレス可能性 (Addressability) とは?
アドレス可能性とは、URLを使うことでそれぞれのWebリソースを識別し、簡単にアクセスできるようにするということです。
接続性 (Connectability) とは?
接続性とは、やり取りされる情報にはハイパーリンクを含めることができ、簡単に他のWebページやサイトに飛ぶことが出来るというものです。
ステートレス性(Stateless) とは?
ステートレス性とは、ステート (状態) がレス (ない) という意味です。つまりは、「やり取りが1回ごとに完結する」ということを表しています。
もっというと、サーバーはユーザーの過去の情報などは保持せずに、同じリクエストに対しては、誰にでも同じ情報を返すということです。(過去のやり取りには左右されず、同じ入力に対しては同じ出力を返す)
まとめ
つまり「RESTful API」とは、2 つのコンピュータシステムがインターネットを介して安全に情報を交換するために使用するAPIです。
Sensor-Based API とは?
Sensor-Based APIとは、モノのインターネット (IoT) が使用しているAPIです。
LoTでは、世の中に存在するあらゆるモノにセンサーをつけ、それぞれのセンサーがAPIを介して通信することで、データを蓄積したり、処理を返したりすることが出来ます。
以上です!