#はじめに
今回はたった2日でマスターできるiPhoneアプリ開発集中講座という書籍の中に、お菓子の虜Web APIを利用したお菓子検索アプリを作るセクションがあったので、練習として作成してみました。
その際に、同期処理と非同期処理というワードが出てきて少し混乱したので、初学者の自分がこれから勉強する方と自分に向けてまとめておきます。
#同期処理
同期処理とはプログラムに書いた処理を順番に実行していく方法です。
A,B,Cという処理がプログラムに記述されているとすると、Aが処理を完了するまではB,Cは処理の開始をせずに待機していなければいけません。
同期処理のメリットとしては、どの処理が実行されるのかが明確であることかなと思います。
デメリットとしては、実行中の処理が完了しないと、次の処理に移ることが出来ないため、利便性が低くなってしまいます。
#非同期処理
非同期処理は同期処理と対する概念で、ある処理が実行されている間に他の処理を止めないことを言います。
A,B,Cの処理がプログラムに記述されているとすると、Aが処理を完了するのを待たずに、B,Cは処理を開始できるので、利便性が高くなります。
非同期処理のメリットとしては、実行中の処理が完了していなくても次の処理に移ることが出来るので、ユーザーの操作を受付できることです。
別の処理は動いていますがユーザーは操作を継続できるので、アプリを快適に使用できることに繋がります。
デメリットとしては、処理が順番に実行されるわけではないため、全体で見るとどの処理が実行されているのかが把握しづらくなる可能性があります。
#同期処理と非同期処理の違い
専門用語を理解しやすくするためには、身近にあるもので説明することが良いと思っています。
今回は2つの概念を飲食店のオペレーションの流れで説明していきます。
この記事の下に参考にした記事を載せておきますので、詳しくはそちらをご覧ください。
図で説明してくれているので、かなり分かりやすいと思います。
##同期処理=Subway
Subwayのオペレーションの流れとしては、お客さんは食べたいトッピングを店員さんに注文していきます。
注文を受けた店員さんはトッピングを1つずつにパンに載せていき、注文から会計まで店員さんがつきっきりで担当します。
注文をしたお客さんの対応が終わるまでは、次に並んでいるお客さんは待っていなければならないので、トッピングが多くなったり注文数が増えると待ち時間が長くなります。
ただ店員さんとしては並んでいる順番通りに対応していくので、お客さんの注文で混乱することがなく、商品の間違いが発生することもほとんどありません。
##非同期処理=マクドナルド
マクドナルドのオペレーションの流れとしては、お客さんが注文をすると店員さんは会計を先に済ませてから調理を始めます。
店員さんは調理をする人とレジで注文をするに担当が分かれていて、1人の店員さんが1人お客さんに最後までつきっきりで担当するとは限りません。
お客さんは注文した商品ができあがるまで、レジ横で受け取りを待ちます。
ただ、商品が出来上がった順に呼ばれるので、一番最初に注文したからといって一番最初に商品を受け取れるとは限りません。
なので、お客さんが待たされる時間がSubwayよりも短くなるというメリットがあります。
ただ店員さんとしては注文が一気にくるので新人さんであればどれから手を付けていけば良いのか混乱してしまい、商品の間違いが発生してしまうリスクがあります。
#まとめ
一応分かりやすくするために、同期処理のメリットも書きましたが、アプリではユーザーが快適に使用できるようにするために非同期での処理を行っていくことが多いようです。
なので、開発者はデータの流れをしっかりと理解してコードを書いていかないと可読性が下がり、アプリの運用が大変になるということです。
・同期処理はある処理の完了を待ってから次の処理を開始する
・非同期処理はある処理の完了を待たずに次の処理を開始する。
同期・非同期処理を理解する時にこの上の2つの処理の違いが大切なところなので、僕自身もこの違いを意識しながらアプリを作っていきたいと思います。
#参考リンク、書籍