0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

同期処理と非同期処理とは?違いや使い分けを解説

0
Posted at

同期処理とは

同期処理とは、1つの処理が完了してから次の処理へ進む方式です。

ユーザー情報を取得
        ↓
商品情報を取得
        ↓
画面に表示

処理が順番に進むため流れを理解しやすい一方、通信などに時間がかかると、後続の処理も待たされます。

非同期処理とは

非同期処理とは、処理の完了を待っている間に、別の処理を進める方式です。

ユーザー情報を取得 ─→ 完了
商品情報を取得   ───→ 完了

通信などの待ち時間を有効に使えるため、処理全体の時間を短縮したり、画面が固まるのを防いだりできます。

なぜ非同期処理がよいのか

非同期処理には、次のメリットがあります。

  • 独立した処理では、全体の時間を短縮できる場合がある
  • フロントエンドでは、通信中も画面操作を続けやすい
  • バックエンドでは、待ち時間に別のリクエストを処理しやすい

ただし、非同期処理を使えば必ず高速になるわけではありません。処理の内容や依存関係に応じて使い分ける必要があります。

非同期処理が向いている場面

非同期処理は、通信などの待ち時間が発生する処理に向いています。

フロントエンドの場合

  • Web APIからデータを取得する
  • 画像やファイルを読み込む
  • ファイルをアップロードする
  • タイマー処理を実行する

処理を待つ間も、クリックやスクロールなどの画面操作を続けられます。

バックエンドの場合

  • データベースへ問い合わせる
  • 外部のWeb APIを呼び出す
  • ファイルを読み書きする
  • メールを送信する
  • 複数の独立したデータを取得する

待ち時間に別のリクエストを処理できるため、サーバーの処理効率を高められます。

非同期処理を使う必要がない場面

処理の順番が重要な場合や、待ち時間がほとんどない場合は、無理に非同期処理を使う必要はありません。

フロントエンドの場合

  • 入力内容を検証してから送信する
  • ログイン完了後に画面を移動する
  • 前の処理結果を使って画面を更新する
  • 短い計算や単純なデータ変換を行う

バックエンドの場合

  • ユーザーを登録してから注文を保存する
  • 決済完了後に注文状態を更新する
  • 処理を決められた順番で実行する
  • 同じデータを連続して更新する

無理に非同期化すると処理の流れが複雑になるため、順番が重要な処理では同期処理が適しています。

非同期処理の注意点

非同期処理には、次のような注意点があります。

  • 処理の実行順序が分かりにくい
  • エラー処理が複雑になりやすい
  • デバッグが難しくなる
  • 同じデータを同時に変更すると不具合が起こる
  • 多用すると、かえって処理が遅くなることがある

すべてを非同期にするのではなく、待ち時間が長く、処理の順番に問題がない場合に利用することが大切です。

まとめ

同期処理と非同期処理は、待ち時間や処理の依存関係を考え、場面に応じて使い分けることが大切です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?