非同期(Asynchronous)は、プログラミングや通信、システム設計において頻繁に登場する重要な概念です。
特に現代のWebアプリケーションやクラウドシステムでは、非同期通信や非同期処理が生産性・応答性の向上に不可欠な技術となっています。
この記事では、非同期とは何かという基本から、同期(Synchronous)との違い、実装方法、コールバック関数などの重要概念、実用例までを専門的にかつ分かりやすく解説します。
非同期とは?
非同期の定義
非同期(Asynchronous)とは、複数のプロセスやコンポーネントが同じタイミングで動作せずに、それぞれ独立して処理を進める方式を指します。
対義語は同期(Synchronous)です。
非同期の概念は、以下のように通信とプログラム実行の両方の文脈で使用されます。
非同期通信とは?
同期通信との違い
非同期通信とは、データ送受信時に通信機器同士のクロックやタイミングを揃えずに、スタートビットやストップビットによって開始・終了を識別して通信する方式です。
同期通信の特徴
-
双方でクロックを同期させる必要がある
-
正確なタイミングでデータを伝送できるが、ハードウェアが複雑
非同期通信の特徴
-
クロックの同期が不要で、実装が簡易
-
例:シリアル通信(RS-232C)など
非同期通信の使用例
-
コンピュータとモデム間の通信
-
USBデバイスとのデータ送受信
-
インターネット経由のHTTPリクエスト(Ajaxなど)
非同期処理とは?
非同期処理の概要
非同期処理(Asynchronous Processing)は、プログラムがある処理の完了を待たずに次の処理へ進む実行モデルです。
対応する同期処理
同期処理では、関数の呼び出し元は処理の完了を待機しなければなりません。
非同期処理の流れ
非同期処理では、呼び出し元は待たずに次の処理へ進み、処理の完了後にコールバック関数などで結果を受け取るのが一般的です。
コールバック関数とは?
非同期実行におけるコールバック
非同期関数の実行が完了したときに呼び戻される処理(関数)のことをコールバック関数(callback function)と呼びます。