読み方 : アシンク/アウェイト

async/await

概要

async/awaitとは、プログラム上で非同期処理を同期処理に近い形で記述するための構文。JavaScriptPython、C#などで採用され、待ち時間の発生する処理を、見た目上は上から下へ順に実行されるコードとして書けるようにする仕組みである。
async/awaitのイメージ画像

非同期処理」とは、時間のかかる処理の完了を待たずに次の処理を進める仕組みである。通信やファイルの読み書き、データベースへの問い合わせなどは完了まで時間がかかり、終わるまで待ってから次を実行する「同期処理」で行うとその間プログラム全体が停止する。非同期処理を用いれば、待ち時間の間に他の処理を実行でき、応答性を保つことができる。

async/await構文に対応した言語では、非同期に実行したい関数には「async」を付けて定義し、その内部で完了を待つ処理には「await」を付ける。await部分はその完了を待ってから次の行に進むが、async関数自体は呼び出し元をブロックしないため、他の処理と並行して進められる。実行環境ではイベントループが動作し、待機中の処理の完了に応じて後続の処理が再開される仕組みになっている。

async/await以前は、コールバック関数やPromiseによって非同期処理を記述していた。コールバック関数を多用すると呼び出しが入れ子状に重なり、コードが読みにくくなる問題があり、これは「コールバック地獄」とも呼ばれた。Promiseはこの問題を一定程度解消したが、処理の流れを直感的に把握するには工夫が必要であった。

この構文は2010年代にC#へ導入されたことを契機に、JavaScriptPythonRustなど様々な言語へ普及した。Webアプリケーションやスマートフォンアプリの開発のように、通信や画面描画の並行処理が頻繁に発生する領域において、コードの品質向上と開発効率の改善に寄与している。言語によっては記述を簡易化するシンタックスシュガー構文糖)として実装され、実行時には内部的な処理形式へ変換される場合もある。

(2026.6.23更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。