構造化された並行性
Kotlinのコルーチンの場合、コルーチン内で coroutineScope() を呼ぶと、現在のコルーチンを一旦停止(サスペンド)し、新たな「コルーチン・スコープ」を作成する。 このスコープ内で launch() によって新たなコルーチンが起動されると、 launch() 内と、コルーチン起動後のスコープのコードは並行的に実行される。coroutineScope() を抜けた時点で、両者のコードが完了していることが保証される。