実行順序に着目したasync/awaitの実行の可視化
論文情報
著者
論文抄録
JavaScript ではネットワーク通信やノンブロッキング I / O などの非同期処理において,終了後の処理をコールバック関数によって定義する.しかし,連続した非同期処理をコールバック関数を用いて記述すると,複数のコールバック関数が入れ子になり,ネストが深く可読性や保守性の低いコードになる.このような状態をコールバック地獄と呼ぶ.コールバック地獄を解決するため,JavaScript には Promise や async / await といった非同期処理の記述を容易にする機構が実装されてきた.async / await を用いると,コールバック地獄に陥ったコードを,ネストが浅く簡潔なコードに書き換えることが可能である.一方,その動作の複雑さ故に,書き換え後のコードの実行順序を正しく理解するのは容易ではない.本研究では async / await の問題点が実行順序の理解の難しさにあることを明らかにし,トレーサを利用して実行の様子を可視化するツールを作成した.その結果,Promise や async / await の動作の表示によって複雑な実行順序の理解を促すサポート機構が実装可能であることを示した.