ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2022ǯ12·î05Æü(·î) 11:20:04ÍúÎò
¡¡Google ¤Î SpreadSheet(¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¡£°Ê²¼¡¢GSS ¤È¤·¤Þ¤¹)¤Î¥·¡¼¥È¤Î¾ðÊó¤ò£±¥·¡¼¥È¤Ë¤Ä¤¡¢£±¤Ä¤Î¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ë¼è¤ê¹þ¤àÊýË¡¤Ë¤Ä¤¤¤Æ¡¢
¥³¥ë¡¼¥Á¥ó¤Ë¤è¤ê¼ÂÁõ¤·¤Æ¤¤¤¿ÈóƱ´ü½èÍý¤ÎÉôʬ¤ò UniTask (async/await) ¤òÍøÍѤ·¤¿½èÍý¤ËÃÖ¤´¹¤¨¤Æ¼ÂÁõ¤·¤Þ¤¹¡£
¡¡»öÁ°¤Ë¤³¤Á¤é¤Îµ»ö¤è¤ê¡¢¸µ¤È¤Ê¤ë½èÍý¤ÎºîÀ®¤ò¹Ô¤Ã¤Æ¤«¤é³Ø½¬¤ò¤·¤Þ¤¹¡£
¡ã¿·¤·¤¤³Ø½¬ÆâÍÆ¡ä
¡¡¡¦async ¥¡¼¥ï¡¼¥É¤È await ¥¡¼¥ï¡¼¥É¤òÍøÍѤ·¤¿ÈóƱ´ü½èÍý ¡¡¡¦UniTask ¤È¤Ï¡© ¡¡¡¦CancellationToken¡Ê¥¥ã¥ó¥»¥ì¡¼¥·¥ç¥ó¥È¡¼¥¯¥ó¡Ë
¡¡¤³¤Î¥¡¼¥ï¡¼¥É·²¤Ï C# ¤Î Task ¥¯¥é¥¹¡¢¤ª¤è¤Ó UniTask ¥¯¥é¥¹¤Ëɳ¤Å¤¤¤¿¹½Ê¸¤Ç¤¹¡£
¤è¤Ã¤Æ Task ¥¯¥é¥¹¤« UniTask ¥¯¥é¥¹¤È°ì½ï¤ËÀë¸À¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡async(¥¨¥¤¥·¥ó¥¯) ¤Ï Asynchoronous(¥¨¥¤¥·¥ó¥¯¥í¥Ê¥¹) ¤È¤¤¤¦Ã±¸ì¤Îά¸ì¤Ç¡ÖÈóƱ´ü¡×¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£
¤³¤ì¤Ï await ¤òÍøÍѤ¹¤ë¥á¥½¥Ã¥É¤òµ½Ò¤¹¤ë¤¿¤á¤Ë¡¢¥á¥½¥Ã¥É¤ÎÀë¸À»þ¤Ë¤Ä¤±¤ëɬÍפ¬¤¢¤ë¥¡¼¥ï¡¼¥É¤Ç¤¹¡£
¤½¤ÎºÝ¡¢Ìá¤êÃÍ¤Ë¤Ï UniTask ¤òÍøÍѤ·¤Þ¤¹¡£
¡ãasync ¥¡¼¥ï¡¼¥É¡ä
private async UniTask Hoge() { }
¡¡await(¥¢¥¦¥§¥¤¥È) ¥¡¼¥ï¡¼¥É¤Ï¡ÖÂÔ¤Á¼õ¤±¤ë¡×¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£
¤³¤Î¥¡¼¥ï¡¼¥É¤Ï¡¢ÈóƱ´ü½èÍý¤È¤·¤Æ¼Â¹Ô¤¹¤ë¥á¥½¥Ã¥É¤ÎÀèƬ¤Ëµ½Ò¤·¤Þ¤¹¡£
¡ãawait ¥¡¼¥ï¡¼¥É¡ä
private async UniTask Hoge() { await HogeHoge(); }
¡¡¤³¤Î£²¤Ä¤Î¥¡¼¥ï¡¼¥É¤òÍøÍѤ·¡¢Ìá¤êÃͤη¿¤ò UniTask ¤Ë¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥³¥ë¡¼¥Á¥ó½èÍý¤ÈƱ¤¸¤è¤¦¤ËÈóƱ´ü½èÍý¤ò¼Â¹Ô¤·¡¢¤½¤Î½èÍý¤Î²ò·è¤òÂÔ¤Á¼õ¤±¤ëµ¡Ç½(¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ë½èÍý¤¬Ìá¤Ã¤Æ¤¯¤ë¤Î¤òÂÔ¤Ä)¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤Þ¤¿¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥ÉÆâ¤Çµ½Ò¤¬²Äǽ¤Ç¤¢¤Ã¤¿ yield return null ¤ä WaitUntil ¤Ê¤É¤â½èÍý¤â UniTask ¤Ë¤Ï static ¥á¥½¥Ã¥É¤È¤·¤ÆÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢async / await ¥¡¼¥ï¡¼¥É¤ò»È¤¦¤³¤È¤Ç¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òÃÖ¤´¹¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤Þ¤¿¥³¥ë¡¼¥Á¥ó¤Ç¤ÏľÀÜ»ØÄê¤Ç¤¤Ê¤«¤Ã¤¿Ìá¤êÃͤâ UniTask<T> ¤È¤·¤Æµ½Ò¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥¿¥×¥ë·¿¤òÍøÍѤ¹¤ë¤³¤È¤ÇÊ£¿ô¤ÎÌá¤êÃͤò»ý¤¿¤»¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£
¡¡¤Ê¤ª UniTask ¤Ë¤Ï void ¤ËÁêÅö¤¹¤ë UniTaskVoid ·¿¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Î·¿¤Ë¤¹¤ë¤³¤È¤Ç½èÍý¤òÂÔ¤Á¼õ¤±¤Ê¤¤(await ¤Ç¤¤Ê¤¤)¥á¥½¥Ã¥É¤È¤·¤Æµ¡Ç½¤µ¤»¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
½èÍý¤Î´°Î»¤òÄÌÃΤ¹¤ëɬÍפ¬¤Ê¤¤¥á¥½¥Ã¥É¤ÇÍøÍѤ¹¤ë¤¿¤á¡¢¤³¤Îµ¡Ç½¤Ï UniTask ¤ò»È¤Ã¤¿ÈóƱ´ü½èÍý¤ÎºÇ¸å¤ËÍøÍѤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£(ÈóƱ´ü½èÍý¤òºÇ½é¤Ë½èÍý¤·»Ï¤á¤ë¾ì½ê¡¢¤È¤â¸À¤¨¤Þ¤¹)
¡ã»²¹Í¥µ¥¤¥È¡ä
MicroSoft
https://docs.microsoft.com/ja-jp/dotnet/csharp/pro...
Qiita @4_mio_11 ÍÍ
ÈóƱ´üÍý²ò¤Î¤¿¤á¤Ëasync/await¤ÈTask¤Î´ðÁäò³Ø¤ó¤ÀÏÃ
https://qiita.com/4_mio_11/items/f9b19c04509328b1e...
¡¡°Ê²¼¤Î Github ¥µ¥¤¥È¤«¤é UniTask ÍѤΠUnitypackage ¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¥¤¥ó¥Ý¡¼¥È¤ò¹Ô¤¦¤«¡¢PackageManager ·Ðͳ¤Ç¥¤¥ó¥Ý¡¼¥È¤ò¹Ô¤¤¤Þ¤¹¡£
https://github.com/Cysharp/UniTask/releases
¡ãUnitypackage ¤òÁªÂò¤¹¤ë¡ä

¡¡Unity ¤òµ¯Æ°¤·¡¢¥À¥¦¥ó¥í¡¼¥É¤·¤¿ Unitypackage ¤ò Unity Æâ¤Î Assets ¥Õ¥©¥ë¥À¤Ë¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¤¯¤À¤µ¤¤¡£
¥¤¥ó¥Ý¡¼¥ÈÍѤΥݥåץ¢¥Ã¥×¥¦¥¤¥ó¥É¥¦¤¬³«¤¤Þ¤¹¤Î¤Ç¡¢Import ¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¼«Æ°Åª¤Ë¥¤¥ó¥Ý¡¼¥È¤¬»Ï¤Þ¤ê¤Þ¤¹¡£
¡¡Unity Æâ¤Ç PackageManager ¥¦¥¤¥ó¥É¥¦¤ò³«¤¡¢º¸¾å¤Î ¡Ü ¥¢¥¤¥³¥ó¤ò²¡¤·¤Æ¡¢Add package from git URL... ¤òÁªÂò¤·¤Þ¤¹¡£

¡¡Github ¤Î URL ¤òÆþÎϤ¹¤ë¥Ý¥Ã¥×¥¢¥Ã¥×¤¬½Ð¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤Ë¡¢²¼µ¤Î URL ¤ò¥³¥Ô¡¼¤·¤ÆŽ¤êÉÕ¤±¡¢Add ¥Ü¥¿¥ó¤ò²¡¤·¤Þ¤¹¡£
¡ãUniTask ¤Î GitURL¡ä
https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask
¡ã¾åµ¤Î URL ¤ò¥³¥Ô¡¼¤·¤ÆŽ¤êÉÕ¤±¤Æ¤«¤é Add ¥Ü¥¿¥ó¤ò²¡¤¹¡ä

¡¡°Ê¾å¤Î¼ê½ç¤ò¹Ô¤¦¤È¡¢¼«Æ°Åª¤Ë UniTask ¤Î¥¤¥ó¥Ý¡¼¥È¤¬»Ï¤Þ¤ê¤Þ¤¹¡£


¡¡C# ¤Ë¤ª¤¤¤ÆÄ󶡤µ¤ì¤Æ¤¤¤ë Task µ¡Ç½¤ò¡¢¤è¤ê Unity ¤ËºÇŬ²½¤·¡¢¤è¤ê°·¤¤¤ä¤¹¤¯¤·¤¿¤â¤Î¤¬¡¢UniTask ¤Ë¤Ê¤ê¤Þ¤¹¡£
UniTask ¤ÏÈóƱ´ü½èÍý¤ËÍ¥¤ì¤Æ¤ª¤ê¡¢¥³¥ë¡¼¥Á¥ó¤Ë¤è¤ë½èÍý¤Î¿¤¯¤ò async / await ¥¡¼¥ï¡¼¥É¤ò»È¤Ã¤ÆÈóƱ´ü½èÍý¤È¤·¤Æµ½Ò¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Chsharp ÍÍ
https://github.com/Cysharp/UniTask
¡¡¥¹¥¯¥ê¥×¥ÈÆâ¤Ç UniTask ¤Îµ¡Ç½¤òÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢using Cysharp.Threading.Tasks; ¤ÎÀë¸À¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡¡Â礤ʰ㤤¤È¤·¤Æ¡¢¥³¥ë¡¼¥Á¥ó¤ä Invoke ¥á¥½¥Ã¥É¤Ï MonoBehavior ¥¯¥é¥¹Æâ¤Î¥á¥ó¥Ð¤Ç¤¢¤ë¤¿¤á¡¢MonoBehavior ¤ò·Ñ¾µ¤·¤Ê¤¤¤È¼ÂÁõ¤¬½ÐÍè¤Þ¤»¤ó¤¬¡¢UniTask ¤È async / await ¤Ë¤Ï¤½¤ÎÀ©Ìó¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¡¢MonoBehavior ¤ò·Ñ¾µ¤·¤Æ¤¤¤Ê¤¤ static ¥¯¥é¥¹¤Ê¤É¤Ç¤âÍøÍѲÄǽ¤Ç¤¹¡£
¡¡
¡¡¤Þ¤¿¡¢¥³¥ë¡¼¥Á¥ó¤Î½èÍý¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ÇË´þ¤µ¤ì¤¿Ãʳ¬¤Ç¼«Æ°Åª¤Ë½èÍý¤¬ÇË´þ(¥¥ã¥ó¥»¥ë)¤µ¤ì¤Þ¤¹¤¬¡¢
async / await ¤Ç¼ÂÁõ¤·¤¿ÈóƱ´ü½èÍý¤Ï¼«Æ°Åª¤Ë¤ÏÄä»ß¤·¤Þ¤»¤ó¤Î¤Ç¡¢¥¥ã¥ó¥»¥ë½èÍý¤ò¹Í¤¨¤Æ¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡ã»²¹Í¥µ¥¤¥È¡ä
Qiita @toRisouP ÍÍ
UniTaskµ¡Ç½¾Ò²ð
https://qiita.com/toRisouP/items/4445b6b9bf00e49eb...
¥½¥Õ¥È¥á¥Ç¥£¥¢¸¦µæ²ñ ¤¹¤¤¤Þ ÍÍ
UniTask¤Ç¥ì¥Ã¥ÄÈóƱ´ü¡ª
http://softmedia.sakura.ne.jp/advent-calendar/2019...
¡¡GSSReader ¥¯¥é¥¹¤È GSSReciver ¤Î£²¤Ä¤Î¥¯¥é¥¹¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¤¡¢
ÈóƱ´ü½èÍý¤ÎÉôʬ¤ò¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤«¤é UniTask ¤Îµ¡Ç½¤È async / await ¤Îµ¡Ç½¤òÍøÍѤ·¤¿½èÍý¤Ë½¤Àµ¤·¤Þ¤¹¡£
¡¡¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢½¤Àµ¸å¤ÏƱ¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¤³¤È¤¬µá¤á¤é¤ì¤Þ¤¹¡£
¡¡ÈóƱ´ü½èÍý¤ÎÅÓÃæ¤Ç½èÍý¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê»öÂÖ¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¤ÎÀ©¸æ¤Î½èÍý¤Ç¤¹¡£
¡¡¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸Â¸¾õÂ֤ȥ³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤¬É³¤Å¤¤¤ÆÆ°¤¤¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Ç˲õ¤µ¤ì¤ë¤È¡¢¤½¤Î»þÅÀ¤Ç¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤â¼«Æ°Åª¤Ë½ªÎ»¤·¤Þ¤¹¡£
¡¡UniTask ¤ÇÍøÍѤ¹¤ë async / await ¤Ë¤è¤ëÈóƱ´ü½èÍý¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë½èÍý¤¬É³¤Å¤¤¤Æ¤¤¤Ê¤¤¤¿¤á¡¢
½èÍý¤ò¼Â¹Ô¤·¤¿¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Ç˲õ¤µ¤ì¤Æ¤â¡¢½èÍý¼«ÂΤÏÆ°¤Â³¤±¤Æ¤·¤Þ¤¦¤³¤È¤Ë¤Ê¤ê¡¢
¥á¥â¥ê¥ê¡¼¥¯¤ò°ú¤µ¯¤³¤¹¸¶°ø¤È¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢»öÁ°¤Ë½èÍý¤òÄä»ß¤¹¤ë¤¿¤á¤ÎÀ©¸æ¤òÍÑ°Õ¤·¤Æ¤ª¤¤¤Æ¡¢½èÍý¤ÎÄä»ß¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡C# ¤Ë¤Ï CancellationToken ¤È¤¤¤¦µ¡Ç½¤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢UniTask ¤Ç¤âƱÍͤε¡Ç½¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤òÍøÍѤ¹¤ë¤³¤È¤ÇÈóƱ´ü½èÍý¤òÄä»ß¤µ¤»¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡C# ¤Î CancellationToken ¤Ï System.Threading ¤Î namespace ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
UniTask ¤ÎÀë¸ÀÆâ¤Ë¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢½ÅÊ£¤·¤ÆÀë¸À¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
¡¡using Cysharp.Threading.Tasks; ¡¡// CancellationToken ¤ÎºîÀ® ¡¡var token = this.GetCancellationTokenOnDestroy(); ¡¡// ÈóƱ´ü½èÍý¤Ë CancellationToken ¤ÎÀßÄê¤ò¹Ô¤¤¡¢ÈóƱ´ü½èÍý¤ò¥¥ã¥ó¥»¥ë¤·¤¿¾ì¹ç¤Ë¤Ï½èÍý¤¬Ää»ß¤¹¤ë¤è¤¦¤Ë¥»¥Ã¥È¤¹¤ë await request.SendWebRequest().WithCancellation(token);
¡¡ÈóƱ´ü½èÍý¤ò¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤«¤é UniTask ¤òÍøÍѤ·¤¿½èÍý¤Ë¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤·¤¿¤À¤±¤Ç¤¹¤Î¤Ç¡¢
¥²¡¼¥à¤ò¼Â¹Ô¤·¤¿ºÝ¤Î½èÍý¤Ï¤¤¤Þ¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼«Æ°Åª¤Ë¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤ÎÆɤ߹þ¤ß¤È¡¢Æɤ߹þ¤ó¤À¾ðÊó¤ò¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Ë¼è¤ê¹þ¤à½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¡¡SkillDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò³Îǧ¤·¡¢Size ¤¬ 0 ¤Ç¤Ï¤Ê¤¯¡¢¥¹¥×¥ì¥Ã¥É¥·¡¼¥È¤Î¹Ô¤Î¿ôʬ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢Ãͤ¬ÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Þ¤¿Ê£¿ô¤Î¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Æ¤¤¤ë¾ì¹ç¤âƱÍͤ˳Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯