対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門 / game model

942bb606679caf4c57b38927f83178e1?s=47 qsona
August 30, 2019
6k

対戦ゲームに学ぶ、フレームワークの設計技法とAIのアルゴリズム入門 / game model

builderscon tokyo 2019 / 補足はこちら https://note.mu/qsona/n/n137733801fd0

942bb606679caf4c57b38927f83178e1?s=128

qsona

August 30, 2019
Tweet

Transcript

  1. ରઓήʔϜʹֶͿ
 ϑϨʔϜϫʔΫͷઃܭٕ๏ ͱAIͷΞϧΰϦζϜೖ໳ builderscon tokyo 2019 (2019-08-30) @qsona

  2. whoami • @qsona • ιϑτ΢ΣΞΤϯδχΞ • ରઓήʔϜ޷͖ • কعΞϚνϡΞ࢛ʙޒஈ͘Β͍ •

    ήʔϜAIΛ͔ͬͨ͜͡ͱ͋Γ
  3. ࠓ೔ͷ࿩ • ରઓήʔϜ͸ָ͍ͧ͠ • ରઓήʔϜʹؔ࿈͢Δٕज़ͷ࿩Λ͢Δ • ॳڃऀ޲͚ • ٕज़ͱ࣮ੈքͷήʔϜͱͷܨ͕ΓΛײͯ͡΋ Β͑ͨΒخ͍͠

  4. ࠓ೔ͷ୊ࡐ͸ओʹ͜ΕΒͰ͢ • ࢦͷήʔϜ / কع / ຑ੃ / ΀Α΀Α /

    ਓ࿛
 ͦΕͧΕҧ͏ੑ࣭Λ࣋ͭήʔϜ • ରઓήʔϜΛϞσϦϯά͢Δ͜ͱͰɺ
 ήʔϜͷੑ࣭Λଊ͑ͯΈΔ • ϞσϦϯάΛੜ͔͠ɺήʔϜͷϓϩάϥϛϯά΍
 AIΞϧΰϦζϜΛߟ͑Δ
  5. Agenda • 1. ରઓήʔϜͷϞσϦϯά • 2. ରઓήʔϜAIͷΞϧΰϦζϜೖ໳ • 3. boardgame.io

    ʹֶͿ
 ϑϨʔϜϫʔΫઃܭͷצॴ
  6. 1. ରઓήʔϜͷϞσϦϯά • 3ͭͷ؍఺ͰϞσϦϯά͢Δ • ήʔϜͷϧʔϧ • ήʔϜͷछྨͷ෼ྨ • ήʔϜͷঢ়ଶͷਐߦ

    (ήʔϜ໦) • ͦΕͧΕͷ؍఺ͰͷϞσϧͱɺ
 ࣮ੈքʹ͓͚Δਓؒͷଊ͑ํͱͷؔ࿈Λߟ͑Δ
  7. ରઓήʔϜͷϧʔϧͷఆࣜԽ • ήʔϜͷঢ়ଶͷू߹, ॳظঢ়ଶ • Move • ϓϨΠϠʔ͕ήʔϜΛਐΊΔखஈ • ঢ়ଶ͔Βঢ়ଶ΁ͷભҠ

    • ऴྃ৚݅ͱ݁Ռ
  8. ࣮ੈքͰͷఆࣜԽ ྫ: কعͷϧʔϧ • ࣮ࡍͷήʔϜͷϧʔϧ΋ɺ
 ͦͷ3ͭͰߏ੒͞Ε͍ͯΔͷ? • কعΨΠυϒοΫ
 (೔ຊকع࿈ໍ, 2003)


    ΛಡΈղ͍ͯݕূ͢Δ • ϧʔϧ͸17߲໨ʹ෼͔Ε͍ͯΔ
  9. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ
  10. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (1) ήʔϜͷঢ়ଶ(ہ໘)ͷ
 ू߹, ॳظঢ়ଶ
  11. ہ໘ (≒ήʔϜͷঢ়ଶͷू߹) • কع൫ = 9x9 • ֤Ϛεʹ͸ɺઌख·ͨ͸ޙखͷ͕ۨ
 ࠷େ1ͭೖΔ •

    ۨ୆ɾ࣋ۨ • ઌखɾޙख1ͭͣͭ
  12. ہ໘ (≒ήʔϜͷঢ়ଶͷू߹) • ൫໘ (൫্+ۨ), ࣋ۨ (ۨ୆+ۨ), ख൪ Λ߹Θͤ ͯʮہ໘ʯͱఆٛ͞Ε͍ͯΔ

    • ہ໘͸ɺকعʹ͓͚ΔήʔϜͷঢ়ଶ • ਖ਼֬ʹ͸ɺہ໘୯ମ͚ͩͰ͸ήʔϜͷঢ়ଶΛ දͤͳ͍ (ઍ೔ख: ϧʔϓΛ൑ఆͰ͖ͳ͍)
  13. ॳܗ (ॳظঢ়ଶ)

  14. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (2) Move (ࢦ͠ख)
  15. ࢦ͠ख (Move) • ൫্ͷۨΛಈ͔͢ or ۨ୆ͷۨΛ൫্ʹଧͭ • ൫্ͷۨΛಈ͔͢৔߹ɺ͞Βʹ࣍ͷಈ࡞͕Մ ೳͳ৔߹͕͋Δ •

    (૬खͷۨΛ) औΔ • ੒Δ (ۨΛཪฦ͢)
  16. ߹๏खͱې͡ख • কعͷࢦ͠खʹ͸ɺ߹๏ख (Valid Move)ͱ
 ې͡ख (Invalid Move) ͕͋Δ •

    ې͡ख͸ࢦ͠खͷू߹ʹؚ·ΕΔ͕ɺ
 ͦΕΛࢦ͢ͱʮ൓ଇʯͷऴྃ৚݅ʹΑΓ
 ήʔϜ͕ऴྃ͢Δ
  17. ې͡खͷྫ • ਖ਼͘͠ͳ͍ۨͷಈ͔͠ํ • ೋา, ଧͪา٧Ί, etc... • ԦΛ૬खʹऔΒΕͯ͠·͏ঢ়ଶʹ͢Δ •

    ※ԦΛ࣮ࡍʹऔΔ͜ͱ͸ى͜Βͳ͍ɻ
 औΕΔ࣌఺Ͱ૬ख͕൓ଇෛ͚
  18. • 1. ରہ • 2. ରہऀ • 3. ۨΛॳܕʹ഑ஔ •

    4. ۨͷଘࡏͱͦͷۭؒ • 5. ֤ۭؒͷۨͷଘࡏ਺ • 6. ۨͷಈ͖ͱੑ࣭ • 7. ࢦ͠ख • 8. ࢦ͠खͷछྨ • 9. औΔ • 10. ੒Δ • 11. ۨͷؼଐ • 12. ࢦ͠खͷ׬ྃ • 13. ہ໘ͷఆٛ • 14. ൫্ͷۨͱ࣋ͪۨͷؔ܎ • 15. Ԧखͱ٧Έ • 16. ಛʹܾΊΒΕͨېࢭࣄ߲ • 17. ऴہ (3) ऴྃ৚݅ͱ݁Ռ
  19. ऴہ (ऴྃ৚݅ͱ݁Ռ) • ԦΛ٧·͢ (٧·ͤͨํ͕উͪ) • ౤ྃ (౤ྃΛએݴͨ͠ํ͕ෛ͚) • ૬ೖۄ

    (఺਺Ͱউഊ͕ܾ·Δ) • ઍ೔ख (Ҿ͖෼͚) • ൓ଇ (ېࢭࣄ߲ɻ൓ଇΛͨ͠΄͏͕ෛ͚)
  20. Ԧखͱ٧Έ • ࣍ʹ૬खͷԦΛऔΕΔঢ় ଶ͕ʮԦखʯ • ԦखͰ͋Γɺ͞Βʹ૬ख ͕Ͳ͏΍ͬͯ΋࣍ʹԦΛ औΕΔঢ়ଶ͕ʮ٧Έʯ • ٧Έͷ৔߹ɺԦखΛ͔͚

    ͍ͯΔଆ͕উͪ
  21. ଧͪา٧Ί • ൓ଇͷҰछɻ
 าΛଧͬͯʮ٧Έʯʹͯ͠͸͍͚ͳ͍

  22. "ଧͪา٧Ί" ͸ϝλతϧʔϧ • "٧Έ" = Ԧख͕͔͔͓ͬͯΓɺ͔ͭ૬खʹ
 Valid Move ͕ଘࡏ͠ͳ͍ঢ়ଶ •

    าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ
  23. ઍ೔ख • 4ճಉ͡ہ໘͕ൃੜ͢Δ͜ͱ • Ҿ͖෼͚ • Ұൠతʹ͸ઌखͱޙखΛೖΕସ͑ͯ΍Γ௚͢ • ͨͩ͠ɺ͜ͷؒยํͷԦख͕ଓ͍͍ͯΔ
 ʮ࿈ଓԦखͷઍ೔खʯ͸ɺ


    ԦखΛ͔͚͍ͯΔํ͕൓ଇෛ͚
  24. ʮ࠷ޙͷ৹൑ʯ(1997) • ๓ాޫ࢘ ࢯʹΑΔ
 ٧কع • ٧কع ... Ԧखͷ࿈ଓ Ͱ૬खͷԦ༷Λ٧Ί

    Δύζϧ • কعͷϧʔϧͷໃ६Λ ಥ͍ͨ࡞
  25. None
  26. None
  27. None
  28. தུ

  29. None
  30. None
  31. None
  32. None
  33. 3ճ܁Γฦ͢

  34. None
  35. None
  36. None
  37. ࿈ଓԦखͷઍ೔ख • ઍ೔ख ... 4ճಉ͡ہ໘͕ൃੜ͢Δ͜ͱ • ͜ͷہ໘͸ʮ࿈ଓԦखͷઍ೔खʯʹΑΓ
 ઌख(ԦखΛ͔͚͍ͯΔํ)͕൓ଇෛ͚ • ͱ͍͏͜ͱ͸ɺઌख͕ҧ͏खΛࢦ͞ͳ͚Ε͹

    ͳΒͳ͍?
  38. None
  39. ଞʹख͕ͳ͍ • าͰԦख͕͔͔͍ͬͯΔ • ֯ͰऔΔҎ֎ͷબ୒ࢶ͕ͳ͍ • ͔͠͠ɺ֯Ͱऔͬͯ΋൓ଇෛ͚ • ͭ·Γ͜ͷہ໘͸ "٧Έ"

    Ͱ͸......?
  40. าͷԦखͰ٧Μͩ • ͱ͍͏͜ͱ͸͜ͷہ໘͸ʮଧͪา٧Ίʯ • (࠶ܝ) าΛଧͬͯԦख͢Δ ͱ͍͏ Move ͸ɺ
 ͦͷޙ૬खʹ

    Valid Move ͕ଘࡏ͠ͳ͍ͱ͖
 Invalid Move Ͱ͋Δ • ͭ·Γ͜ͷา͸ଧͯͳ͍ɺͱ͍͏ओு
  41. None
  42. ͜ͷ٧কع͸੒ཱ͢Δ͔? • ͜ͷาଧͪ͸ʮଧͪา٧Ίʯͳͷ͔Ͳ͏͔ • ௚ײʹ͸͔ͳΓ൓͢Δɻ • ٧Έͱ͍͑͹ී௨͸
 ʮͲ͏ࢦͯ͠΋࣍ʹԦ͕औΒΕΔʯ͜ͱ • ͜Μͳ͜ͱ͕ى͖Δ͜ͱ͸୭΋ߟ͑ͳ͔ͬͨ

  43. ͜ͷ٧কع͸੒ཱ͢Δ͔? • ݱߦͷϧʔϧͰ͸ɺউͪෛ͚͕ʮෆఆʯ
 ͱ͍͏ͷ͕ఆઆ • ϧʔϧ͕ᐆດɺਖ਼͘͠ఆࣜԽͰ͖͍ͯͳ͍ • ࢲݟ: কعΨΠυϒοΫ (2003)

    Λਫ਼ಡ͢Δͱ... • ଓ͖͸WebͰ
  44. ྫ: ਓ࿛ • ਓ࿛ͷϧʔϧΛͦͷ··ద༻͢Δͱɺࣗવݴޠղੳ͕ඞཁ ʹͳΓɺղੳ͕೉͍͠ • ʮਓ࿛ϓϩτίϧʯ... ֤ϓϨΠϠʔͷൃݴΛఆࣜԽ (ࣄ࣮΍ ҙਤͷද໌,

    ཁ੥ͳͲ) • ྫ: REQUEST [◦͞Μ] (DIVINATION [×͞Μ])
 →ʮ◦͞Μɺ×͞ΜΛ઎͍·͠ΐ͏ʯ • ͜ΕʹΑΓݚڀର৅ʹ͠΍͘͢ͳΔ
  45. ϧʔϧΛఆࣜԽ͢Δͱ • ʮ࠷ޙͷ৹൑ʯͷΑ͏ͳέʔεΛਖ਼͘͠൑ఆͨ͠Γɺ
 ໃ६Λൃݟͨ͠ΓͰ͖Δ (͸ͣ) • ήʔϜ AI ͳͲͷݚڀର৅ʹͰ͖Δ •

    ಛʹ General Game Playing ... ະ஌ͷήʔϜΛ͏· ͘ϓϨΠͰ͖Δ൚༻ AI ͷର৅ʹ • ήʔϜࣗମͷੑ࣭ͷཧղʹܨ͕Δ
  46. 2. ରઓήʔϜͷ෼ྨ

  47. جຊͷ෼ྨ߲໨ • ϓϨΠਓ਺ (2ਓʙ) • རಘͷ߹ܭ͸Ұఆ(θϩ)͔ • ঢ়ଶ͕ແݶʹଘࡏ͢Δ͔ • ϥϯμϜωε(ཚ਺)͸ଘࡏ͢Δ͔

    • ͢΂ͯͷ৘ใ͕શһʹ։ࣔ͞Ε͍ͯΔ͔
  48. ೋਓྵ࿨༗ݶ֬ఆ׬શ৘ใήʔϜ • কع, ғޟ, Φηϩ, νΣε, ... ͳͲ • ήʔϜAIݚڀͰ͸جຊͱͳΔΫϥελ

    ਓ਺ ਓ ঢ়ଶ ༗ݶݸ ϥϯμϜωε ͳ͠ ৘ใ શͯ։ࣔ
  49. ྫ: ຑ੃ • ଟਓ਺, ϥϯμϜωε͋Γ, ෆ׬શ৘ใ ਓ਺ ਓ ঢ়ଶ ༗ݶݸ

    ϥϯμϜωε ͋Γ ہ͝ͱͷॳظঢ়ଶ͸ϥϯμϜ ৘ใ ࣗ෼ͷखṛ )BOE ͸ࣗ෼͚ͩʹ։ࣔ
 ࢁṛ %FDL ͸શһʹඇ։ࣔ
  50. ྫ: ΀Α΀Α • ϓϨΠϠʔ͸೚ҙͷλΠϛϯάͰૢ࡞Մೳͳ ͷͰɺ࿈ଓແݶͷہ໘͕͋Δ͕ɺ࣮࣭తʹ͸ ཭ࢄεςοϓͱଊ͑Δ͜ͱ͕Մೳ ਓ਺ ਓ ঢ়ଶ ࿈ଓແݶ࣮࣭తʹ͸༗ݶ

    ϥϯμϜωε ͋Γ ৘ใ ΄΅׬શ৘ใ खઌҎ্ͷ΀Α͸දࣔ͞Εͳ͍
  51. ྫ: ਓ࿛ • ෼ྨ্͸͔ͳΓಛघͳήʔϜͱݴ͑Δ ਓ਺ ଟਓ਺ɾνʔϜ ঢ়ଶ ࿈ଓແݶϓϩτίϧͷ੍ݶʹΑΓ༗ݶ ϥϯμϜωε ॳظঢ়ଶҎ֎͸΄΅ͳ͠

    ৘ใ ෆ׬શ৘ใ
  52. ଟਓ਺ͷ೉͠͞ • ࣗ෼ͷߦಈ͕ଞਓͷউഊʹӨڹͯ͠͠·͏͜ ͱ͕͋Δ • શһ͕े෼ʹϨϕϧ͕ߴ͘ɺͦΕͧΕ͕ࣗ෼ ͷউͪͷͨΊʹߦಈ͢ΔͱԾఆͯ͠Α͍ͷͩ Ζ͏͔?

  53. ϥϯμϜωεͷ೉͠͞ • ࠷ऴ݁Ռ͚͔ͩΒֶश͠Α͏ͱ͢Δͱ
 ऩଋʹ͔͔࣌ؒΓ͗͢Δ • ≒ ݁ՌʹҰتҰ༕͢Δਓ͸ڧ͘ͳΒͳ͍ • ֬཰Ͱߟ͑Δඞཁ͕͋Δ •

    ྫ: "ṛޮ཰" ... ΞΨΕΔ֬཰͕ߴ͍ํ๏Λ୳͢
  54. ෆ׬શ৘ใͷ೉͠͞ • ৚݅෇͖֬཰Λߟ͑Δඞཁ͕͋Δ • ྫ: ࣺͯṛ͔Β૬खͷ଴ͪΛਪଌ͢Δ • ૬खʹखͷ಺Λಡ·Εͳ͍Α͏ɺ
 ࠞ߹ઓུ͕ඞཁʹͳΔ৔߹͕͋Δ

  55. θϩ࿨ରઓήʔϜͷ෼ྨ·ͱΊ • ೋਓɾ༗ݶɾ֬ఆɾ׬શ৘ใ͕
 ΋ͬͱ΋جຊͷΫϥελ • ͦΕͧΕҳ୤͢Δͱ৽ͨͳෳࡶ͕͞ੜ·ΕΔ

  56. 3. ήʔϜ໦
 (ήʔϜͷਐߦͷϞσϦϯά)

  57. ήʔϜͷਐߦͱ໦ߏ଄ • ॳظঢ়ଶ͔ΒɺMoveʹΑͬͯήʔϜͷঢ়ଶ͕ ॱʑʹҠΓมΘ͍ͬͯ͘ • ঢ়ଶ = ϊʔυ
 Move =

    ࢬ
 ͱΈͳͨ͠໦ߏ଄ͰදͤΔ
  58. ઌख ޙख ઌख ޙख

  59. ήʔϜ໦ͷϊʔυͷ஋ • ೋਓήʔϜ໦ͷ৔߹ • ࣗ෼ͷख൪ => max(ࢠϊʔυͷ஋) • ૬खͷख൪ =>

    min(ࢠϊʔυͷ஋)
  60. ઌख ޙख ઌख ޙख উͪ ෛ͚ Ҿ෼ ෛ͚ ઌखࢹ఺ ͷউഊ

  61. ઌख ޙख ઌख ޙख উͪ ෛ͚ Ҿ෼ ෛ͚ ઌखࢹ఺ ͷউഊ

    Ҿ෼ উͪ
  62. ઌख ޙख ઌख ޙख উͪ ෛ͚ Ҿ෼ ෛ͚ ઌखࢹ఺ ͷউഊ

    Ҿ෼ উͪ Ҿ෼ Ҿ෼
  63. ήʔϜ໦ͱήʔϜͷੑ࣭ • ήʔϜ໦͕Ͳ͏ͳ͍ͬͯΔ͔͸ɺਓؒͷײ͡ ํͱϦϯΫ͍ͯ͠Δ͸ͣ • ྫ͑͹
 ਓ͕ؒʮ໘ന͍ʯͱײ͡ΔήʔϜΛɺ
 ήʔϜ໦ͷঢ়ଶͰදͤͳ͍ͩΖ͏͔?

  64. ࢲݟ: ໘ന͍ήʔϜ • ϧʔϧ͕γϯϓϧ • ਂΈ͕͋Δ • ۓுײ͕࣋ଓ͢Δ
 (ద౓ʹٯస͕ى͜Γ΍͍͢)

  65. ήʔϜ໦ ઌख

  66. ফԽࢼ߹ͷήʔϜ໦ ෛ͚ ෛ͚ ෛ͚ উͪ উͪ উͪ উͪ উͪ ઌख

  67. ফԽࢼ߹ͷήʔϜ໦ • ࣗ෼͕ͲΕΛબΜͰ΋উͭ • ฆΕ͕গͳ͍

  68. ࠷ޙ·Ͱ೤͍ࢼ߹ͷήʔϜ໦ ෛ͚ ෛ͚ ෛ͚উͪ ෛ͚ উͪ ෛ͚ উͪ উͪ ઌख

  69. ࠷ޙ·Ͱ೤͍ࢼ߹ͷήʔϜ໦ • ࣗ෼͕બΜͰউͯΔख͸Ұ͚ͭͩ • উͪͷہ໘͕ଟ͍͕ɺ
 ૬ख͕ਖ਼֬ʹ΍Δͱෛ͚Δख͕͋Δ • ٯసͷՄೳੑ͕͋Δ

  70. ήʔϜͷ໘ന͞ͷఆࣜԽ • ଞʹ΋໘ന͞ͷई౓͸͋Δ͕ɺଟ͘͸
 ήʔϜ໦ͷঢ়ଶͰදݱͰ͖ͦ͏ • ໘ന͞ΛఆࣜԽͰ͖Ε͹
 ʮࣗಈήʔϜ࡞੒AIʯΛ࡞ΕΔ͔΋͠Εͳ͍

  71. 1ষ·ͱΊ • ରઓήʔϜΛ3ͭͷ؍఺ͰϞσϦϯάͨ͠ • ͦΕͧΕɺ࣮ੈքʹ͓͚Δ֓೦ͱͷؔ܎Λࣔ ͨ͠ • ࣍ͷষ͔Β͜ͷϞσϧΛ
 AI΍ήʔϜϑϨʔϜϫʔΫʹద༻͍ͯ͘͠

  72. 2. ରઓήʔϜͷղੳͱ
 AIͷΞϧΰϦζϜೖ໳

  73. ରઓήʔϜAIͷྺ࢙ • ݚڀ͸1950೥͝Ζ͔Βଘࡏ • von Neumann (ϑΥϯɾϊΠϚϯ) • C. E.

    Shannon (γϟϊϯ) • Alan Turing (νϡʔϦϯά) • ௒߽՚
  74. ରઓήʔϜAIͷྺ࢙ • 1993೥ 6x6Φηϩͷ׬શղੳ(ޙखউͪɺ16-20) • 1997೥ νΣεͰੈքνϟϯϐΦϯʹউར • 2007೥ νΣοΧʔͷ׬શղੳ(Ҿ͖෼͚)

    • 2013೥ কعͰτοϓϨϕϧͷϓϩع࢜ʹউར • 2016೥ ғޟͰτοϓϨϕϧͷϓϩع࢜ʹউར
  75. ରઓήʔϜAIͷجຊ • ήʔϜ໦Λϕʔεʹ୳ࡧ͢Δ • ϛχϚοΫε๏, ࢬמΓ (α-β๏) • ϞϯςΧϧϩ໦୳ࡧ •

    ධՁؔ਺Λ࡞Δ • ήʔϜͷঢ়ଶΛείΞͰදؔ͢਺
  76. ࢀߟ: কعʹ͓͚Δਓؒͷઓུ ͱͷൺֱ • ήʔϜ໦Λϕʔεʹ୳ࡧ͢Δ (ಡΈ) • ͋Γ͑ͦ͏ͳࢦ͠खΛ͍͔ͭ͘બΜͰಡΉ (બ୒త୳ࡧ) •

    AI Ͱ͸શ෯୳ࡧ͕ओྲྀ
  77. ࢀߟ: কعʹ͓͚Δਓؒͷઓུ ͱͷൺֱ • ධՁؔ਺ (ܗ੎൑அ, େہ؍) • ඇৗʹ೉͘͠ɺτοϓϓϩಉ࢜Ͱ΋ҙݟ͕ ৯͍ҧ͏

    • ७ਮͳධՁؔ਺(੩తͳہ໘ͷධՁ)Ͱ͸
 ਓؒ > AI
  78. ୳ࡧ(1)
 ϛχϚοΫε๏ / ࢬמΓ(α-β๏) • ήʔϜ໦ͷͱ͜ΖͰઆ໌ͨ͠ͷ͕
 ϛχϚοΫε๏ • ࢬמΓ ...

    ಡ·ͳͯ͘ྑ͍ࢬΛΧοτ͢Δ • ྫ: ͋ΔMoveͰ10఺औΕΔͷ͕֬ఆ͍ͯ͠Δɻ => 10఺ҎԼ͕֬ఆͨ͠ࢬ͸ಡ·ͳͯ͘Α͍
  79. ࢬמΓͷྫ ઌख  

  80. ࢬמΓͷྫ ઌख   ? ͸ಡ·ͳͯ͘ྑ͍

  81. ୳ࡧ (2) ϞϯςΧϧϩ໦୳ࡧ • ͱΓ͋͑ͣɺήʔϜऴྃ·Ͱ΍ͬͯΈΔͷΛ
 Կճ΋܁Γฦ͢ • উ཰͕ߴ͍खΛબͿ • ͨͩ͠ɺ୯ʹϥϯμϜʹબͿ͚ͩͩͱऑ͍ͷ

    Ͱɺ޻෉Λ͢Δ
  82. ϞϯςΧϧϩ໦୳ࡧͷվྑ • Multi-Armed Bandit Problem ʹର͢ΔΞϧΰϦ ζϜΛԠ༻͢Δ (UCB1 ΞϧΰϦζϜͳͲ) •

    ͲΕ͘Β͍౰ͨΔ͔ෆ໌ͳεϩοτϚγϯ͕ͨ ͘͞Μ͋Δͱ͖ɺͲ͏͍͏ઓུͰ΍Δͱྑ͍͔
  83. ධՁؔ਺ • ྫ: ΦηϩͰ۱ΛऔΔͱධՁ͕ߴ͍ • ػցֶशΛ࢖͏ͷ͕ओྲྀ • ಛ௃ྔͷநग़͸ਓ͕ؒߦ͏ • General

    Game Playing ʹ͓͍ͯ͸ɺಛ௃ྔ ͢Β΋ AI ͕ࣗ਎Ͱநग़͢Δ
  84. ͔͜͜Β࣮ࡍͷήʔϜͰͷྫ

  85. ྫ: ࢦͷήʔϜ • ہ໘਺͕গͳ͍ • ͔͔ͨͩ 5^4 * 2 =

    1250 ௨Γ • ରশੑ౳Λߟ͑ͯ (5+4+3+2+1) * 2 - 1 = 224௨Γ • ͦͷ͏ͪ14௨Γ͸ऴྃہ໘ • ׬શղੳ͕Մೳ
  86. ૉ௚ͳղੳํ๏ • ॳظঢ়ଶ͔ΒήʔϜ໦Λల։͠ͳ͕Βܭࢉ • ϛχϚοΫε๏ • ಈతܭը๏ ... Ұ౓ܭࢉͨ͠ہ໘ͷ݁ՌΛอ ଘ͓͖ͯ͠ɺ࠶ར༻͢Δ

    • ໰୊: ήʔϜ໦ʹϧʔϓ͕ଘࡏ͢Δ
  87. ޙୀղੳ • ऴྃͷہ໘͔Βٯࢉ͠ɺউͪ/ෛ͚ͷہ໘Λ֬ఆ͍ͤͯ͘͞ • ෛ͚ہ໘͔Β1ख໭ͬͨہ໘͸উͪہ໘ • উͪہ໘͔Β1ख໭ͬͨہ໘͔ΒɺࢬΛফ͢ɻࢬ͕0ຊʹ ͳ͍ͬͯͨΒͦͷہ໘͸ෛ͚ہ໘ • ֬ఆ͍ͯ͠Δہ໘͕૿͑ͳ͘ͳͬͨΒɺ


    ࢒Γͷہ໘͸Ҿ͖෼͚
  88. ྫ: কع • ׬શղੳ͸ෆՄೳ • ہ໘਺͕ଟ͗͢Δ (10^68 ఔ౓ͱਪଌ͞ΕΔ) • ήʔϜ໦ͰҰఆͷਂ͞·Ͱ୳ࡧ͠ɺ


    ہ໘ΛධՁؔ਺ͰධՁ͢Δ • ධՁؔ਺͕ॏཁ
  89. কعͷධՁؔ਺ • ੲ͸ϧʔϧϕʔεͩͬͨ • ։ൃऀͷ౒ྗͷ݁থ... • عྗ͸ΞϚνϡΞ༗ஈϨϕϧ
 (12ࡀͷqsonaͱಉఔ౓. ϓϩ͸·ͣෛ͚ͳ͍) •

    ͜ͷධՁؔ਺ʹϒϨΠΫεϧʔ͕ى͖Δ
  90. Ϙφϯβϝιου • Bonanza (2005, อ໦๜ਔ ࢯ) • ϓϩع࢜ͷعේΛڭࢣσʔλͱͯ͠ɺ
 ػցֶशʹΑΓධՁؔ਺Λ࡞੒ •

    ύϥϝʔλ͸ɺۨͷՁ஋΍ɺ
 3ۨͷҐஔؔ܎ͳͲ
  91. কعͷධՁؔ਺ͦͷޙ • ࣗ෼ಉ࢜Λରઓֶͤͯ͞श͢Δ (ڧԽֶश) • ϓϩͷعේ౳Λશ͘࢖Θͣɺθϩ͔ΒࣗݾରઓͰ ڧ͘͢ΔࢼΈ΋͋Δ • AlphaZero ͕༗໊

    • ͜ͷํ๏Ͱ΋ਓؒΛ௒͑ΔϨϕϧʹͳ͍ͬͯΔ
  92. ͪͳΈʹ: ׬શղੳͱධՁؔ਺ • ׬શղੳʹ͓͍ͯ΋ධՁؔ਺͸ॏཁ • (݁ہશ෦ಡΉͳΒɺঢ়ଶΛධՁ͢Δඞཁ͕ͳͦ͞͏ʹࢥ͑Δ͕...) • ྑͦ͞͏ͳMove͔ΒಡΉ͜ͱͰ
 ୳ࡧ͢Δہ໘ΛݮΒͤΔ •

    શہ໘਺ n => ୳ࡧہ໘਺ ໿ √n
  93. ྫ: ғޟ • ғޟͷAI͸͠͹Βͣͬ͘ͱऑ͔ͬͨ • 2006೥, ϞϯςΧϧϩ໦୳ࡧ + UCB1 ͷొ৔ʹ

    ΑΓɺಥવΞϚνϡΞߴஈҐϨϕϧʹ • ΊͪΌͪ͘Ό෼͔Γ΍͍͢ࢀߟࢿྉ͕͋ΔͷͰ
 ஔ͍͓͖ͯ·͢
  94. ྫ: ΀Α΀Α • ࣮ػͰਓؒʹউͬͨྫ͋Γ • (࣮ը໘Λը૾ೝࣝ) • AI ಉ࢜ͷରઓେձͷه࿥΋͋Δ •

    ϨΪϡϨʔγϣϯ͕೉͍͠ • ൛ݖͷ໰୊, ϓϥοτϑΥʔϜ͕ͳ͍ • ਓؒͷೝࣝೳྗͷݶք (কع౳ʹൺ΂ͯAIѹ౗త༗ར)
  95. ྫ: ਓ࿛ • ʮਓ࿛஌ೳϓϩδΣΫτʯ • ਓ࿛ϓϩτίϧͷ΋ͱͰAIಉ࢜ରઓ͢Δ
 ϓϥοτϑΥʔϜ͕ଘࡏ͢Δ • ৽͍͠λΠϓͷήʔϜɻ
 ͜Ε͔Βݚڀ͕ൃల͍ͯ͘͠෼໺

  96. ରઓήʔϜAIͷ͜Ε͔Β • ݚڀʹ͓͍ͯ͸ɺ͋ΔಛఆͷήʔϜAIΛݚڀ͢Δ͜ ͱͰଞͷ෼໺ʹߩݙ͢Δ͜ͱ͕͋Δఔ౓ٻΊΒΕΔ • ೋਓɾ׬શ৘ใήʔϜ͸͔ͳΓݚڀ͠ਚ͘͞Ε͖ͯ ͍ͯΔ • ଟਓ਺΍ɺෆ׬શ৘ใήʔϜɺGeneral Game

    Playingʹؔ৺͕ҠΓͭͭ͋Δ
  97. ରઓήʔϜAIͷ͜Ε͔Β (ࢲݟ) • झຯͱͯ͠ͷήʔϜAIϓϩάϥϛϯάΛ
 ΋ͬͱؾܰʹָ͠ΊΔੈքʹͳΔͱ͍͍ • ద੾ͳ੍໿Λ΋ͬͨϓϥοτϑΥʔϜ͕͋Δͱ ྑ͍? (ܭࢉͷεςοϓ਺Λ੍ݶ͢Δͱ͔) •

    ࠃ಺Ͱ΋ e-sports ΍ AtCoder ͳͲؔ࿈෼໺͕ ੝Γ্͕͍ͬͯΔͷͰɺػӡ͸͋Δ
  98. 3. boardgame.io ʹֶͿɺ
 ϑϨʔϜϫʔΫઃܭͷצॴ

  99. boardgame.io ͱ͸ • λʔϯ(ख൪)ϕʔεͷήʔϜΛ࡞ΔͨΊͷ
 ϑϨʔϜϫʔΫ • JavaScript, Node.js, (React, React

    Native) • TypeScript ରԠ͸ਐߦத
  100. boardgame.io ͷػೳ (ެࣜΑΓ) • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  101. ϑϨʔϜϫʔΫͱ͸Կ͔ • A structure that forms a support or frame


    for something • (Collins English Dictionary ΑΓ) • Կ͔ʹର͢Δࢧ࣋෺΍࿮૊ΈΛܗ੒͢Δߏ଄
  102. ϑϨʔϜϫʔΫͷྫ • Ruby on Rails • Angular

  103. ࢲݟ: ྑ͍ϑϨʔϜϫʔΫ • ର৅ͱ͢Δൣғ͕޿͍͕ɺ޿͗͢ͳ͍ • ର৅ͷߏ଄Λద੾ʹଊ͍͑ͯͯɺ
 ؤ݈ੑ͕͋Δ • ଞͷٕज़ͱྑ͍ܨ͕Γ͕͋Δ
 (ΤίγεςϜ)

  104. boardgame.io ͷର৅ • λʔϯ੍ (Turn-Based) ͷήʔϜ • ޿͍͕ɺ޿͗͢ͳ͍ద੾ͳந৅Խ • ϦΞϧλΠϜͰಈ࡞͢ΔήʔϜΛؚΊΔͱ༨

    ܭͳػೳ͕૿͑ɺҰํͰ݁ہ࢖ΘΕͳͦ͏
  105. (࠶ܝ) ରઓήʔϜͷϧʔϧ • ήʔϜͷঢ়ଶͷू߹, ॳظঢ়ଶ • Move • ϓϨΠϠʔ͕ήʔϜΛਐΊΔखஈ •

    ঢ়ଶ͔Βঢ়ଶ΁ͷભҠ • ऴྃ৚݅ͱ݁Ռ
  106. boardgame.io ʹΑΔଊ͑ํ (1) • G ... ։ൃऀ͕ ؅ཧ͢ΔήʔϜ ͷঢ়ଶ •

    ctx ... ϑϨʔϜ ϫʔΫଆͰ؅ ཧ͢Δঢ়ଶ
  107. ଊ͑ํ͕ద੾ • ྫ: কع • ʮہ໘ʯ(൫໘ɾۨͷঢ়ଶ) Λঢ়ଶ(G)ͱͯ͠؅ཧ͍ͨ͠ • ࣮ࡍʹ͸ࢦ͠खͷཤྺ΋ήʔϜͷঢ়ଶʹؚ·ΕΔ •

    ཤྺ͕ͳ͍ͱઍ೔खͷ൑ఆ͕Ͱ͖ͳ͍... • ͦΕΒ͸ϑϨʔϜϫʔΫ͕؅ཧͯ͘͠ΕΔͷͰɺ։ൃऀ͕ҙ ࣝ͠ͳ͍Ͱ΋࢖͑Δ (͍͍ͪͪࣗ෼Ͱཤྺ؅ཧ͠ͳ͍͍ͯ͘)
  108. boardgame.io ʹΑΔଊ͑ํ (2)

  109. ଊ͑ํ͕ద੾ • Move Λ G => G ͷ७ਮؔ਺ͱͯ͠ଊ͍͑ͯΔ • ෭࡞༻ͳ͠

    • ϝϦοτ͕ଟ͍ • ཤྺͱͯ͠ѻ͍΍͍͢ • React ͳͲ View ଆͷϑϨʔϜϫʔΫͱ૬ੑ͕͍͍
  110. boardgame.io ʹΑΔଊ͑ํ (3) • Phase ͱ͍͏֓೦Λಋೖ • Move ͨ͠ޙ Phase

    ΛભҠͰ͖Δ • Phase ʹΑͬͯɺऔΓ͏Δ Move ͷछྨ͕
 มΘΔ
  111. ଊ͑ํ͕ద੾ • Phase ͸ཧ࿦తʹ͸ήʔϜͷঢ়ଶʹؚ·ΕΔ • ͔͠͠ɺଟ͘ͷήʔϜʹϚον͢Δ֓೦ • ਓ࿛ ... னͱ໷ͷ2ϑΣʔζͷ܁Γฦ͠

    • ன͸શһ͕ձ࿩͠ɺ໷͸ਓ࿛͚͕ͩձ࿩͢ Δ
  112. ϞσϦϯάͷؤ݈ੑ • ྑ͍ϞσϦϯά͕ग़དྷΔͱɺ෇ਵͯ͠
 ͞·͟·ͳศརػೳΛ͚ͭΒΕΔ • "1ཻͰN౓͓͍͍͠"

  113. ࠶ܝ: boardgame.io ͷػೳ • State Management • Multiplayer • AI

    • Game Phases • Prototyping • Logs • View-Layer Agnostic • Component Toolkit • Extendable
  114. Multiplayer • ෳ਺ਓͰͷಉ࣌ରઓ͕Մೳ • multiplayer: { server: 'localhost:8000' }
 ͷΑ͏ʹઃఆ͢Δ͚ͩ

    • transport ૚͕ந৅Խ͞Ε͍ͯΔઃܭ • socket.io, firebase ͕࢖͑ΔͬΆ͍
  115. Multiplayer - ෆ׬શ৘ใ • ෆ׬શ৘ใήʔϜͷ৔߹ɺϓϨΠϠʔʹ͸ݟ ͑ͳ͍ήʔϜͷ৘ใ͕͋Δ • ௨৴೷͍ͨΒݟΕΔͱ͔͸μϝ • ήʔϜͷঢ়ଶ

    => PlayerView ͷ
 ७ਮؔ਺ͱͯ͠දݱ͢Δ͚ͩͰྑ͍
  116. Logs • Move ͷݺͼग़͠Λཤྺͱͯ͠ѻ͑Δ • Undo, Redo ͕Ͱ͖Δ • عේͷอଘͱ͔͕؆୯ʹͰ͖Δ

  117. Prototyping • ૢ࡞ը໘Λ࡞Βͳͯ͘΋ɺdebugը໘͕ࣗಈ Ͱ࡞ΒΕΔ • ήʔϜͷਐߦΛ؆୯ʹςετͰ͖Δ
 (Move ΛςΩετͰॻ͍ͯήʔϜΛਐΊΔ)

  118. View-Layer Agnostic • PDS(ϓϨθϯςʔγϣϯͱυϝΠϯͷ෼཭)͕ ׬શʹ͞Ε͍ͯΔ • React Ͱը໘ͷ࣮૷͕͙͢ʹ࢝ΊΒΕΔ • ΤίγεςϜ

    (Component Toolkit ͳͲ) Λ
 ࣗવͱ࡞Δ͜ͱ͕Ͱ͖Δ
  119. AI • ϞϯςΧϧϩ໦୳ࡧϕʔεͷAIΛࣗಈͰੜ੒Ͱ ͖Δ • ϞϯςΧϧϩ໦୳ࡧ͸ήʔϜࣗମͷ஌ࣝΛඞ ཁͱ͠ͳ͍ɻ • ֤ঢ়ଶʹ͓͍ͯ Valid

    Move ͷू߹Λฦؔ͢ ਺Λ࡞Δ͚ͩͰɺ؆қతͳAI͕࡞ΕΔ...!
  120. AI (ิ଍) • ϞϯςΧϧϩ໦୳ࡧ͕୯७ʹ࢖͑Δͷ͸ɺϥ ϯμϜʹਐΊΕ͹ඞͣऴہ͢ΔήʔϜʹݶΔ • TicTacToe(◦×), ғޟ, Φηϩ, etc...

    • ෆ׬શ৘ใήʔϜ͸೉͍͠
  121. ίʔυͷDEMO ͠Α͏ͱࢥ͕ͬͨ......

  122. ໰୊ • ࣗ෼ͷίʔυ͕Ԛ͗ͯ͢ݟͤΒΕͳ͍... • PDS (ݟͨ໨ͱυϝΠϯͷ෼཭)͸׬શʹ͞Εͯ ͍Δɻͦͷ఺Ͱ࠷ѱͰ͸ͳ͍ • ͔͠͠ɺͦΕͧΕͷPͱDͷίʔυ͸ΘΓͱ
 ͻͲ͍ঢ়ଶʹͳ͍ͬͯΔ

  123. ϑϨʔϜϫʔΫͷର৅ͱݶք • ϑϨʔϜϫʔΫ͸ۜͷ஄ؙͰ͸ͳ͍ • ։ൃऀ͸ɺϑϨʔϜϫʔΫ͕ର৅ͱ͍ͯ͠Δ ྖҬΛݟۃΊΔඞཁ͕͋Δ • ର৅ͱ͍ͯ͠ͳ͍ྖҬʹ͍ͭͯɺࣗ෼ͷ಄Ͱ ߟ͑ͳ͚Ε͹ͳΒͳ͍

  124. ଟ෼͜ͷ࿩ʹܨ͕Δ

  125. ·ͱΊ • ྑ͍ϑϨʔϜϫʔΫ͸ɺղܾ͢Δର৅ͷ޿͞ Λద੾ʹͱΓɺͦΕΛਖ਼͘͠ଊ͍͑ͯΔɻ • ։ൃऀ΋ͦΕΛཧղ͠ɺϑϨʔϜϫʔΫ͕α ϙʔτ͠ͳ͍෦෼ʹ͍ͭͯࣗ෼Ͱߟ͑Δඞཁ ͕͋Δɻ

  126. ·ͱΊͱࠓޙ

  127. ·ͱΊ • ϧʔϧɾήʔϜ໦ɾ෼ྨͷ3ͭͷ؍఺Ͱରઓ ήʔϜΛϞσϦϯά͠ɺͦΕͧΕ࣮ࡍͷରઓ ήʔϜͷੈքͱͷܨ͕ΓΛΈͨ • ϞσϦϯά͸ɺ AI ͷΞϧΰϦζϜ΍ϑϨʔϜ ϫʔΫΛ࡞Δͱ͖ʹ׆͔͞ΕΔ

    • ରઓήʔϜ໘ന͍ΑͶ!!
  128. ࠓޙ • ෆ׬શ৘ใήʔϜ΍൚༻AIͳͲͷݚڀ͕ࠓޙ͞Βʹ ੝Γ্͕͍ͬͯ͘ͷͰɺ௥͍͖͍ͬͯͨ • ࣗಈήʔϜੜ੒AI͸͋Γ͏Δͷ͔...? • ΈΜͳ͕޷͖ʹήʔϜΛ࡞ͬͨΓ༡ΜͩΓAIΛ࡞ͬ ͨΓͯ͠ൃදͰ͖ͯɺָ͍͠͠ݚڀʹ΋ͭͳ͕ΔΑ ͏ͳϓϥοτϑΥʔϜ͕Ͱ͖ͯ޿·Δͱ͍͍ͳʙ

  129. ิ଍, ࢀߟࢿྉͳͲ • https://note.mu/qsona/n/n137733801fd0
 
 ʹ͢΂ͯ·ͱΊͯ͋Γ·͢