はじめに
プロダクト開発部の荒川です。私事ではありますが、バックエンドエンジニアからiOSエンジニアへと転向しました。iOS開発は全くの未経験だったのですが、周りのメンバにも助けられつつ、なんとかやっていけています。サーバサイド、クライアントサイドの両側面から一つのアプリケーションを眺めることができて、非常に楽しく開発できています。【送料無料】【標準設置工事セット】三菱重工 SRK22TX-W ビーバーエアコン TXシリーズ [エアコン (主に6畳用)]
さて前置きはここまでにして、今回は非同期処理をまとめてみました。擬似コードはMDN Web Docsより参考にさせていただいております。
同期処理と非同期処理のキホン
非同期を説明する前に、同期処理について説明しておきましょう。
同期処理とはあるタスクを順番に実行する方式のことで、そのタスクが実行されている間は他のタスクが中断される方式です。*1
同期処理にはいくつかの欠点があります。最たる例としてディスクアクセスなどのI/O処理の場合、メモリアクセスと比べると非常に遅い事が多く、ファイルやソケットが読み出しを完了するまで処理を止める必要があるので、その間は他の処理をすることができません。 ガーデンライト LED 屋外 照明 ポーチライト スタンドライト 門柱灯 門灯 外灯 OG092841LD アンティーク風 照明器具 おしゃれ E26 クリア一般形 6W
一方で非同期処理はある処理を実行する間に他の処理を実現することができます。JavaScriptやSwiftなどのいわゆるクライアントサイド開発に携わる方は日常的に利用するはずです。非同期の実現方法にはいくつかの方法があるので、図は後ほどの実現方法の箇所にてご紹介します。
なぜ非同期処理が重要なのか
I/O処理に限らずブロックというのは、クライアントサイドにおいては大きな問題となります。アプリケーションのメインスレッドとしてUI専用のスレッド、ユーザからの操作を受け付けるためのイベントループの処理が動作しており、開発者が同スレッドにて処理をブロックするとイベントが処理できなくなります。結果としてユーザから見ると画面が止まったかのような体験となるので、UI以外の処理を同一スレッド上で実行するのを避けなければなりません。
もちろんサーバサイドにおいてもCPUを遊ばせておく必要性が低いので重要なテクニックであることには代わりありません。
続きを読む