同期(Synchronous)と非同期(Asynchronous)とAJAXとWeb APIについて

2021年3月12日JavaScript

JavaScriptの同期(Synchronous)と非同期(Asynchronous)とAJAXとWeb APIについて、基礎的な部分をまとめました。

同期(Synchronous)と非同期(Asynchronous)

同期的な処理は、ラインごとに実行されます。
それぞれのラインがその前のコードが実行が終わるのを待っています。
これをブロッキングといいます。(blocking)
例えば、alert()などがとてもわかりやすい例です。
アラートが出た後、OKをクリックしないとそのあとの処理が実行されません。

問題となるのは、とても重たい処理を行うコードがあった場合です。その場合でも、それを待ってから後が実行されます。

非同期的な処理は、たとえば、setTimeoutなどがそうです。
設定した時間が経過した後に、処理が実行されますが、setTimeoutはバックグラウンドで実行されて、その間、その下にあるコードは実行されていきます。
これをノンブロッキング(non-blocking)といいます。
その非同期の中でも代表的な処理がAJAXです。

AJAXについて

AJAXはAsynchronous JavaScript And XMLの略で、リモートのWebサーバーに非同期的にアクセスすることができます。
AJAXコールで動的にWebサーバーからデータをリクエストすることができます。

AJAXを利用することで、クライアント(ユーザー側)がリクエストしたものを、Webサーバー側(多くはWeb API)がレスポンスを返します。

APIについて

APIはApplication Programming Interfaceの略で、ソフトウェアのかたまりのようなもので、
アプリケーションがコミュニケーションがとれるように他のソフトウェアに使われます。
たとえば、JavaScriptには、DOM APIやGeolocation APIなどがあります。
また、classを使って自分でAPIを作ることもできます。
AJAXにかかわるとても大事なAPIが、online APIです。
online APIはサーバー上で動いているAPIで、データをリクエストしたりレスポンスを返したりします。
そして、多くの場合、このonline APIのことを、Web APIや単にAPIと呼ぶ人が多いです。
JavaScirptでもNode.jsを利用することで、自分でWeb APIを作成することができます。

そして、このWeb APIにはサードパーティ製のものがたくさんあります。

  • 天気のデータを取得するAPI
  • フライトデータを取得できるAPI
  • 通貨の両替のAPI
  • グーグルマップのAPI
  • 国のデータのAPI

などなど、ほかにもたくさんのものがあり、多くの場合無料で利用することができます。

AJAXのデータフォーマットについて

AJAXは名前にXMLが入っている通り、XMLというデータフォーマットで作られていました。
しかし、最近では、JSONというJavascriptのデータ形式が主流になっています。その方がデータ転送が容易なためです。
そのため、XMLデータフォーマットではありませんが、AJAXという名前だけが残っています。