UniTask v2 - Unityのためのゼロアロケーションasync/awaitと非同期LINQ
BRANK
Cy#の河合です。去年、UniTask – Unityでasync/awaitを最高のパフォーマンスで実現するライブラリという形で紹介させていただきましたが、今回全てのコードを書き換えた新バージョンをリリースしました。GitHub – Cysharp/UniTaskUniTask v2では、コードの徹底的な書き換えにより、ほぼ全てがゼロアロケーション化しました(技術的詳細は後ほど述べます)。これによりパフォーマンスの大幅な向上を果たしているほか、新たに非同期シーケンスと、それに対応する非同期LINQが組み込まれました。その他、DOTweenやAddressableなどの外部アセットに対するawait標準対応も組み込まれ、より利便性が高まっています。v2の前に、まず、async/await はC# 5.0から搭載されている機能で、従来コールバックの連鎖やコルーチンで処理していた非同期コードを、同期コードで書くように、戻り値も例外処理も自然に扱えるようになります。コールバックのみで処理する場合、複雑な処理でネストが多重になること、その際に内側の例外が外側に伝搬されないためエラー処理が難しくなることなどがよく知られています。FooAsync(x => { BarAsync(x, y => { BazAsync(y, z => …