同期処理とは
同期処理とは、1つの処理が完了してから次の処理へ進む方式です。
ユーザー情報を取得
↓
商品情報を取得
↓
画面に表示
処理が順番に進むため流れを理解しやすい一方、通信などに時間がかかると、後続の処理も待たされます。
非同期処理とは
非同期処理とは、処理の完了を待っている間に、別の処理を進める方式です。
ユーザー情報を取得 ─→ 完了
商品情報を取得 ───→ 完了
通信などの待ち時間を有効に使えるため、処理全体の時間を短縮したり、画面が固まるのを防いだりできます。
なぜ非同期処理がよいのか
非同期処理には、次のメリットがあります。
- 独立した処理では、全体の時間を短縮できる場合がある
- フロントエンドでは、通信中も画面操作を続けやすい
- バックエンドでは、待ち時間に別のリクエストを処理しやすい
ただし、非同期処理を使えば必ず高速になるわけではありません。処理の内容や依存関係に応じて使い分ける必要があります。
非同期処理が向いている場面
非同期処理は、通信などの待ち時間が発生する処理に向いています。
フロントエンドの場合
- Web APIからデータを取得する
- 画像やファイルを読み込む
- ファイルをアップロードする
- タイマー処理を実行する
処理を待つ間も、クリックやスクロールなどの画面操作を続けられます。
バックエンドの場合
- データベースへ問い合わせる
- 外部のWeb APIを呼び出す
- ファイルを読み書きする
- メールを送信する
- 複数の独立したデータを取得する
待ち時間に別のリクエストを処理できるため、サーバーの処理効率を高められます。
非同期処理を使う必要がない場面
処理の順番が重要な場合や、待ち時間がほとんどない場合は、無理に非同期処理を使う必要はありません。
フロントエンドの場合
- 入力内容を検証してから送信する
- ログイン完了後に画面を移動する
- 前の処理結果を使って画面を更新する
- 短い計算や単純なデータ変換を行う
バックエンドの場合
- ユーザーを登録してから注文を保存する
- 決済完了後に注文状態を更新する
- 処理を決められた順番で実行する
- 同じデータを連続して更新する
無理に非同期化すると処理の流れが複雑になるため、順番が重要な処理では同期処理が適しています。
非同期処理の注意点
非同期処理には、次のような注意点があります。
- 処理の実行順序が分かりにくい
- エラー処理が複雑になりやすい
- デバッグが難しくなる
- 同じデータを同時に変更すると不具合が起こる
- 多用すると、かえって処理が遅くなることがある
すべてを非同期にするのではなく、待ち時間が長く、処理の順番に問題がない場合に利用することが大切です。
まとめ
同期処理と非同期処理は、待ち時間や処理の依存関係を考え、場面に応じて使い分けることが大切です。