見出し画像

2月15日「Async Await多分わかった 」

わかりました(絶対うそ)

プログラムって言葉を最初に知ったのはどこでしたか?

私は昭和の生まれなので、コンピューター関連で知るよりも先に、

「運動会」

で知りました。

運動会の手順が書かれている紙、アレの名前が「プログラム」でした。

プログラムは基本的に書いてある上から順に始まります。

ひとつのイベントが終わるまで、次の行には進みません。

校長先生の話が終わって、壇上から先生が降りるまでは次の競技には進めないのです。

書いてある順に、順番に進める、これがプログラムの進め方なのでした。

コンピューターのプログラムも基本的にはこんな感じで、「ケイサンチュウ…ケイサンチュウ……」みたいな感じで立ち止まって計算して、終わったら結果を画面に表示して! みたいな感じだったんです。

ところが、今は色んなアプリが同時に動いていて、ウインドウやページを切り替えて操作できるのが当たり前になってます。

計算中だからといって画面全部が固まって何もできなくなったり、ロード中だからといって完了するまでずっと白い画面しか見えない、とかだとユーザーに怒られちゃいます。

その場合、何本かのプログラムを別々に書いて、それらを並列に動かしてやる必要があります。

「ウインドウを動かしたりスクロールさせたりするプログラム」「すごく時間のかかる計算をするプログラム」「ウェブ上の超でかいリソースをひたすらローディングするプログラム」「ロードできたものから少しずつ表示させていくプログラム」みたいに、同時に色んなプログラムを並列に動かしてやるのです。

「一年生の50メートル走」のプログラムと同時に「校長先生独演会」のプログラムがまだ続いてる、みたいな感じです。

運動会の一枚だったプログラムに「校長先生独演会のプログラム」がついてきて、しかも同じ場所で同時に開催されてるのであっち見たりこっち見たり見る方も大変です。作る方ももちろん大変です。(校長先生をどうにかして黙らせることはできないのでしょうか?)

このプログラムをできるだけ一緒に書けるようにしたのが「async await」だという風に理解しました。

校長先生が話し始めたら基本はほっといていいですよ。、ただし、話し終わった時にはちゃんとアナウンスしてあげてね? みたいにして運動会の手順の中にまとめて書くことができます。

「終わるまでは他のことはできない」今までのプログラムとは違う動きなのに、今までのプログラムのように書ける! というのが一番の売り、なのですね。

内部でかなりアクロバティックなことをしているので、一見しただけではわからない色々な制約があるという短所があるのですが、

ある程度スッキリと書けるので、「そこまでややこしいことをするつもりはない、ただこの長〜い処理中も止まらないで待っててほしい」みたいな時には重宝します。

反面、ややこしい処理をしようとすると見通しが悪くなって、複数のプログラムに分けてた方がわかりやすかったのでは? みたいなことにもなり得る、ようです。

大体わかったつもりですが、まだ書き方のクセみたいなところは混乱する感じです。

もうちょっとわかった時点で覚え書きをまとめておきたいですね。

この記事が気に入ったらサポートをしてみませんか?