同期(Synchronous)と非同期(Asynchronous)とAJAXとWeb APIについて
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という名前だけが残っています。