内容
API基盤を構築する際、同期処理と非同期処理の選択は非常に重要です。本記事では、これらの処理の違いや、具体的に何秒以上の処理であれば、非同期を検討すべきかということについて解説します。結論としては、ユーザが介在する処理に関しては、3秒以上かかる処理には非同期処理を検討すべきと考えています。
同期処理と非同期処理とは
同期処理
同期処理とは、ある処理が完了するまで次の処理が待機する方式です。つまり、リクエストを送信した後、レスポンスが返ってくるまで他の処理を行うことができません。
利点: 処理の順序が明確で、デバッグが容易。
欠点: 待機するため、処理が遅延する可能性があり、ユーザー体験が悪化することがある。
非同期処理
非同期処理は、リクエストを送信した後、レスポンスを待たずに次の処理を進める方式です。これにより、ユーザーは他の作業を続けることができます。
利点: 待ちが発生しないので、処理の効率が良く、ユーザー体験が向上。
欠点: 処理の順序が不明確になり、実装やデバッグが複雑になることがある。
同期/非同期の選択
API基盤を設計する際、以下のような場合分けで同期処理または非同期処理を選択することが一般的です。
同期処理が適している場合
- リクエストの結果が即時に必要な場合(例: ユーザー認証)
- 処理が短時間で終わる場合(例: 簡単なデータ取得)
非同期処理が適している場合
- 長時間かかる処理(例: バッチ処理、ファイルアップロード)
- リアルタイムにリクエスト結果が必要でない場合(例: メール、ファイルの送信)
何秒以上で非同期を検討すべきか
先ほど、「処理が短時間で終わる」、「長時間かかる処理」としましたが、具体的に何秒以上の処理で非同期処理を検討すべきでしょうか。これはユーザが介在する処理の場合、ユーザがどれぐらいのレスポンスであれば、ストレスなく操作可能かという点が重要です。API基盤で何秒が妥当かという情報は見つけられなかったため、Webサイト表示のパフォーマンスでの話を元に考えます。
まずは、世界で一番使われているWebサービスであるGoogle検索では、Largest Contentful Paint(LCP)が2.5秒以内に実現するようしています。
Google検索セントラルより
Largest Contentful Paint(LCP)
読み込みパフォーマンスの尺度で。ユーザが最初にページ移動したタイミングから最大のコンテンツが表示されるまでの時間
実際にGoogleが掲げる 10 の事実によると検索結果の平均応答時間は1秒足らずとなっているそうです。
またTECH+によるとWebサイトの待ち時間に関して、3秒を過ぎると57%のユーザーがWebサイト訪問をあきらめるという情報があります。また、モバイル端末からのアクセスでは、約60%のユーザが3秒での表示を許容範囲としています。
これらの情報からユーザは3秒を過ぎるとストレスを感じ始めるため、3秒以上の処理であれば、非同期処理を検討すべきと考えられます。
まとめ
API基盤における同期処理と非同期処理の選択は、システムの設計において非常に重要です。要件に応じて適切な処理方式を選択し、ユーザー体験を向上させることが求められます。ユーザが介在する処理の場合、3秒以上かかる処理には非同期処理を検討すべきと考えられます。