定義
ある作業が終わるまでじっと待つのではなく、その間に別の作業を先に進め、準備が整ったという通知が来たら結果を受け取る仕組みです。コンピューターが無駄な待ち時間なく、複数の作業をスムーズに処理できるようにしてくれます。
呼び出しベルが変えたカフェの風景
コーヒーを注文したあと、カウンターの前に立ち尽くしてエスプレッソが抽出されるのを待たなければならないとしたらどうでしょう? 後ろに並んでいるお客さんは、前の人のコーヒーが出るまで注文すらできず、ただ待たされることになります。このようなやり方をコンピューターの世界では「同期(Synchronous)処理」と呼びます。ひとつの作業が完全に終わってからでないと、次の作業に進めない仕組みです。
一方、最近のカフェでは注文を受けるとすぐに呼び出しベルを手渡して、お客さんを席へ案内します。お客さんは席に座ってスマートフォンを見たり、友達とおしゃべりしたりして過ごせます。店員さんも前の人のコーヒーを淹れている間に、次のお客さんの注文を先に受けられますよね。
コーヒーが出来上がってベルが鳴ったら、お客さんはカウンターへ受け取りに行きます。このように、時間のかかる作業の完了を待たずに次の作業を先に進めるやり方こそが「非同期(Asynchronous)処理」なのです。
画面が固まらずサクサク動く理由
スマートフォンでSNSを見ているときのことを思い出してみてください。画面を下にスクロールすると、新しい写真や投稿が次々と表示されます。もし非同期処理がなかったら、サーバーから高画質な写真10枚をすべてダウンロードし終わるまで、画面全体が完全に固まってしまうはずです。タッチも効かず、スクロールも止まってしまいます。
しかし、非同期処理を使えば、写真のダウンロードという重い作業はバックグラウンド(見えない裏側)に任せておくことができます。その間もコンピューターは、ユーザーの画面タッチやスクロール操作を止まることなく即座に処理します。
写真の読み込みが終わるとアプリに「準備完了」の合図が届き、画面の適切な場所にスッと写真が表示されます。そのおかげで、ユーザーはイライラするフリーズを経験することなく、スムーズにアプリを使い続けられるのです。
正確に言うと:何人かで作業することとは違います
非同期処理と聞くと、多くの人は「何人ものスタッフが一斉に取り掛かって作業する姿(並列処理)」をイメージしがちです。しかし非同期処理は、作業する人がたった1人だけでも十分に成り立ちます。
レストランのシェフが1人しかいなくても、パスタを鍋に入れて茹でている8分間、じっと突っ立っているわけではありません。麺が茹で上がるのを待つ間に、別のフライパンでソースを炒めるはずです。1人で作業していても、待ち時間のムダを賢く使っているわけですね。
コンピューターもこれと同じです。頭脳(CPU)がひとつしかなくても、ネット通信やファイルの保存といった時間のかかる外部の作業を走らせておき、その隙に別の計算を休むことなくこなすのが、非同期処理の核心です。
よくある誤解
非同期処理とは、複数のCPUが同時に作業する「並列処理」と同じ意味である。
非同期処理は「待ち時間をどう過ごすか」という話です。CPUが1つだけでも、待ち時間を無駄にせず別の作業を処理できます。
日常で出会う場面
YouTubeで動画を再生しながら、同時に下のコメント欄をスクロールしてコメントを書き込むことができます。
マップアプリでルートを検索している最中でも、画面を自由に動かしてスムーズに操作できます。
つまり ひとことで
非同期処理とは、前の作業が終わるのを待って立ち止まるのではなく、別の作業を先に進めて時間を効率的に使う仕組みです。