$30 off During Our Annual Pro Sale. View Details »

スマホ時代のBotアプリのつくり方

 スマホ時代のBotアプリのつくり方

YAPC::Asia Hachioji 2016 mid in Shinagawa
2016-07-03
Yusuke Wada a.k.a. yusukebe

Yusuke Wada

July 03, 2016
Tweet

More Decks by Yusuke Wada

Other Decks in Technology

Transcript

  1. εϚϗ࣌୅ͷ
    #PUΞϓϦͷͭ͘Γํ
    :"1$"TJB)BDIJPKJNJEJO4IJOBHBXB

    :VTVLF8BEBBLBZVTVLFCF

    View Slide

  2. ࣗݾ঺հ
    w ࿨ా༟հBLBZVTVLFCF
    w ϫσΟοτ୅දऔక໾
    w ΦϞϩΩ$50
    w ٕज़ސ໰Y
    w DPGPVOEFSPGCPLFUF
    w XBEBGNEBOEZGN
    w 1FSM.POHFS

    View Slide

  3. ͦ͏͍͑͹

    View Slide

  4. ԭೄཱྀߦߦ͖ͬͯ·ͨ͠

    View Slide

  5. ཱྀߦͱ͍͑͹

    View Slide

  6. τϥϕϧϒοΫ ג
    ͷٕज़ސ໰΍ͬͯ·͢

    View Slide

  7. View Slide

  8. ࡢ೔ͷϠύνʔͰ
    τϥϕϧϒοΫ͔ࣾΒ
    ໊͕ ֤ࣗॳ
    ൃදʂ

    View Slide

  9. ΊͰ͍ͨʂ
    ˎࣸਅ͸άϧΫϯͰ͢

    View Slide

  10. Ϡύνʔʹײँ

    View Slide

  11. ͱ͜ΖͰ

    View Slide

  12. View Slide

  13. ΈΜͳେ޷͖ʂ
    ͩΑͶʁ

    View Slide

  14. ͦΜͳͭͷϓϥοτϑΥʔϜ
    ͔Β݄ʹΞφ΢ϯε͕

    View Slide

  15. View Slide

  16. εϚϗϝοηϯδϟʔ
    w -*/&'BDFCPPL.FTTFOHFS
    w εϚϗ࣌୅ͷϝοηʔδΞϓϦ
    w ରPSάϧʔϓ
    w ΋͸΍͜ͷͭ͸σϑΝΫτε
    λϯμʔυʹͳ͍ͬͯΔ
    w ͦ͜ʹ#PUͱ͍͏֓೦ͱ࣮૷͕
    ೖͬͯ͘Δ

    View Slide

  17. ຊ೔ͷςʔϚ
    w -*/&'BDFCPPL.FTTFOHFS#PUͷͭ͘Γํ
    w ओʹ-*/&ʮ#05"1*5SJBM"DDPVOUʯΛར༻
    w #0,&5&#05Λྫʹڍ͛·͢
    w ҙ֎ͱۤ࿑͢Δ࣮૷ͷ͍͔ͭ͘ͷίτ
    w ίϚϯυࢦ޲ͱͦͷ࣮૷
    w ཧ૝తͳΞʔΩςΫνϟͱ࣮ྫ

    View Slide

  18. ͦ΋ͦ΋

    #PUͬͯͳΜͧ

    View Slide

  19. άάΔ

    View Slide

  20. ఆظతʹπΠʔτ͢Δ
    πΠολʔ
    ΞΧ΢ϯτ

    View Slide

  21. /0/0
    ͦΕ͚ͩ͡Όͳ͍Α

    View Slide

  22. ͔͋ͨ΋ਓؒͷΑ͏ʹ࡞ۀΛ
    ߦ͏ίϯϐϡʔλϓϩάϥϜ
    ͷ૯শ

    View Slide

  23. 30#05

    View Slide

  24. ྫ͑͹

    View Slide

  25. ݕࡧΤϯδϯͷ#PU
    ͱ͔΋͋ΔΑͶ

    View Slide

  26. -*/&#05"1*ͷ৔߹

    View Slide

  27. ެࣜ"1*υΩϡϝϯτΑΓ࿨༁Ҿ༻
    w #05"1*Λ࢖͏ͱݸਓͷϢʔβʔͱ௚઀΍ΓͱΓ͕
    ग़དྷΔ
    w #05ΞΧ΢ϯτΛ༑ୡͱͯ͠௥Ճͯ͠΋Β͍ϝο
    ηʔδΛड͚औΔͱࣗಈతʹΧελϚΠζͨ͠Ϩε
    ϙϯεΛฦ͢ͳͲ͕ߟ͑ΒΕΔ
    w ͲΜͳλΠϛϯάͰ΋Ϣʔβʔʹରͯࣗ͠෼ͷ#05
    αʔόʔ͔ΒϝοηʔδΛૹΕΔ

    View Slide

  28. ެࣜ"1*υΩϡϝϯτΑΓਤΛഈआ

    View Slide

  29. ͭͬͯ͘Έͨ

    View Slide

  30. View Slide

  31. ݱࡏ
    ༑ୡ਺

    View Slide

  32. ײ૝

    View Slide

  33. ͭͬͯ͘෼͔Δ#05"1*Ͱग़དྷΔ͜ͱ
    w جຊ͸#05ରϢʔβʔͷΠϯλϥΫγϣϯ
    w NJEݸผ#05ΞϓϦʹͱͬͯͷϢʔβʔࣝผࢠ
    w NJEΛอ࣋ͯ͠Ұ੪ૹ৴ͳͲग़དྷΔ͕ϑΟοτ͠ͳ͍
    w ςΩετͳͲϝοηʔδΛड͚औͬͯԿ͔Λฦ͢
    w Ϧονϝοηʔδ ޙड़
    Λར༻ͯ͠ϘλϯΛ࣮ݱ

    View Slide

  34. #0,&5&#05ͷػೳ

    View Slide

  35. ςΩετΛૹΔ
    Ϙέݕࡧ

    View Slide

  36. ελϯϓΛૹΔ
    ࡢ೔ͷਓؾϘέ

    View Slide

  37. ʮ΋ͬͱΈΔʯΛλοϓ
    .03&ίϚϯυൃಈ
    ଓ͖ͷϘέ͕ݟΕΔ

    View Slide

  38. ࠨԼͷϘλϯΛλοϓ
    5*.&-&"1ίϚϯυൃಈ
    աڈͷ೔ͷਓؾϘέ͕ݟΕΔ

    View Slide

  39. Χʔυͷ্൒෼Λλοϓ
    8FC7JFXͰ։͘

    View Slide

  40. ӈԼͷϘλϯΛλοϓ
    (";0ίϚϯυൃಈ
    ͦͷϘέͷը૾Λऔಘग़དྷΔ

    View Slide

  41. ػೳ͓͞Β͍

    View Slide

  42. #0,&5&#05
    w ςΩετૹΔϘέݕࡧ
    w ελϯϓૹΔࡢ೔ͷਓؾϘέ
    w .03&ίϚϯυ΋ͬͱΈΔ
    w 5*.&-&"1\::::..%%^աڈͷਓؾϘέ
    w (";0\CPLF@JE^Ϙέը૾Λऔಘ
    w Χʔυͷ্൒෼Λλοϓ8FC7JFXͰදࣔ

    View Slide

  43. ϨεϙϯεΦϒδΣΫτ

    View Slide

  44. Ϧονϝοηʔδ
    ςΩετ
    ϝοηʔδ

    View Slide

  45. ը૾
    ϝοηʔδ

    View Slide

  46. Ϧονϝοηʔδ
    w શͯ͸ը૾
    w ࠲ඪͰۣܗΛࢦఆͯ͠Ξ
    ΫγϣϯΛܾΊΕΔ
    w ࢦఆͨ͠63-Λ։͘
    w ࢦఆͨ͠จࣈྻΛൃݴ͞
    ͤΔίϚϯυ
    w -*/&/&84ͷΞΧ΢ϯ
    τͳͲ΋͜ΕΛར༻ͯ͠
    ΔͬΆ͍

    View Slide

  47. λοϓͨ͠Β

    ࢦఆͨ͠จࣈྻΛൃݴͤ͞Δʁ

    View Slide

  48. ࡌͬͯͳ͍

    View Slide

  49. ࣮͸

    View Slide

  50. IUUQTHJUIVCDPNMJOFMJOFCPU
    TELQFSMCMPCNBTUFSMJC-*/&#PU
    "1*#VJMEFS3JDI.FTTBHFQN-
    4%,ͷιʔεʹͷΈࡌͬͯΔ

    View Slide

  51. ͬͯ͜ͱͰ࣮૷ͷ࿩

    View Slide

  52. جຊతͳΞʔΩςΫνϟ
    ࣗલ
    #05ΞϓϦ -*/&
    ϓϥοτϑΥʔϜ
    Ϣʔβʔ
    ϝοηʔδ
    DBMMCBDL
    1045IUUQTFYBNQMFDPNDBMMCBDL
    NFTTBHF
    1045IUUQTUSJBMCPUBQJMJOFNFWFWFOUT
    ϝοηʔδ
    SFTQPOTF

    View Slide

  53. ࣗલ#05ΞϓϦ
    w DBMMCBDLΛड͚औΓ
    w ϝοηʔδʹؚ·ΕΔNJEΛऔಘ
    w NJEΊ͕͚ͯϨεϙϯεΛฦ͢
    w த਎͸+40/
    άϩʔόϧυϝΠϯ)551αʔ
    ό 44-
    +40/ύʔα)551Ϋ
    ϥΠΞϯτ͕͋Ε͹جຊσΩΔʂ
    ˎॺ໊ͷݕূ͸আ͘

    View Slide

  54. ͨͩ͠
    ಠࣗϑϨʔϜϫʔΫ͸඼࣭͕௿͍͜ͱ͕ଟ͍
    ॺ໊ͷݕূ͍ͨ͠ -*/&͔ΒૹΒΕ͖ͯͯΔ͔

    Ϧονϝοηʔδͱ͔ΊΜͲ͍͘͞

    View Slide

  55. -*/&#054%,

    View Slide

  56. -*/&#PU"1*
    w IUUQTNFUBDQBOPSHQPE-*/&#PU"1*
    w $1"/J[F΋͞Ε͍ͯΔ
    w Ϧονϝοηʔδͷ࡞੒ʹ΋΋ͪΖΜରԠ
    w ॺ໊ͷݕূ΋ҰߦͰॻ͚Δ
    w ςετ͕े෼ʹଗ͍ͬͯΔͷͰ඼࣭͕ߴ͍
    w ྫͷυΩϡϝϯτʹࡌͬͯͳ͍"1*͕࣮૷
    w FHσΟϨΫτϦʹϑϨʔϜϫʔΫ͕ܝࡌ

    View Slide

  57. VOMFTT SFRNFUIPEFR1045SFRQBUIFRDBMMCBDL
    \
    SFUVSO< <> </PU'PVOE>>
    ^
    NZJT@WBMJECPUWBMJEBUF@TJHOBUVSF SFRDPOUFOU SFRIFBEFS 9
    -*/&$IBOOFM4JHOBUVSF


    VOMFTT JT@WBMJE
    \
    SFUVSO< <> <GBJMFEUPWBMJEBUFTJHOBUVSF>>
    ^
    NZSFDFJWFTCPUDSFBUF@SFDFJWFT@GSPN@KTPO SFRDPOUFOU

    GPSNZSFDFJWF !\SFDFJWFT^
    \
    OFYUVOMFTTSFDFJWFJT@NFTTBHFSFDFJWFJT@UFYU
    NZSFTCPUTFOE@UFYU
    UP@NJESFDFJWFGSPN@NJE
    UFYUSFDFJWFUFYU


    ^
    SFUVSO< <> <0,>>
    4:/014*4

    View Slide

  58. ࡢ೔ͷ-5ͯ͠Δ࣌ؒʹ

    View Slide

  59. View Slide

  60. -*/&#05"1*ͷಛ௃

    View Slide

  61. NJE͔͑ͭ͞ΜͰ͠·͑͹ݸผͷ
    Ϣʔβʔʹϝοηʔδ͕ૹΕΔ
    NZSFTCPUTFOE@UFYU
    UP@NJESFDFJWFGSPN@NJE
    UFYUSFDFJWFUFYU


    w Ϣʔβʔʹ͖ͭͦͷΞϓϦʹͱͬͯ͸ҰҙͷNJE
    w DBMMCBDLʹ൓Ԡ͢ΔλΠϛϯάͰͳͯ͘΋ྑ͍
    w ඇಉظͰૹΕΔɺNJEΛ͓͚֮͑͹$-*͔ΒͰ΋
    w ϝοηʔδΛૹΔࡍͷ࣮ػςετʹ࢖͑Δ

    View Slide

  62. ޮՌత͕ͩΫηͷ͋Δ
    Ϧονϝοηʔδ

    View Slide

  63. NZSFTCPUSJDI@NFTTBHF IFJHIU

    TFU@BDUJPO
    ."/("
    UFYUNBOHB
    MJOL@VSJIUUQTTUPSFMJOFNFGBNJMZNBOHBFO



    BEE@MJTUFOFS
    BDUJPO."/("
    Y
    Z
    XJEUI
    IFJHIU

    TFU@BDUJPO
    .64*$
    UFYUNJTJD
    MJOL@VSJIUUQTTUPSFMJOFNFGBNJMZNVTJDFO



    BEE@MJTUFOFS


    TFOE@NFTTBHF
    UP@NJENJE
    JNBHF@VSMIUUQTFYBNQMFDPNSJDIJNBHFGPP
    BMU@UFYU5IJTJTBBMUUFYU


    View Slide

  64. Ϧονϝοηʔδը૾഑৴
    w ͭͷαΠζͷը૾Λ༻ҙͯ͠σόΠεʹରԠ͢Δ
    w IUUQFYBNQMFDPNJNHTGBDF
    w ଟ͘ͷ৔߹ಈతʹը૾Λੜ੒͠ͳ͍ͱ͍͚ͳ͍

    View Slide

  65. ྫͷλοϓ͢Δͱ
    ൃݴͤ͞Δ΍ͭ
    λοϓ
    Ϣʔβʔ͕
    উखʹൃݴ

    View Slide

  66. NZSFTTFMGCPUSJDI@NFTTBHF IFJHIUIFJHIU

    TFU@BDUJPO
    #0,&
    UFYUՄԙ
    MJOL@VSJIUUQCPLFUFKQCPLFCPLF\JE^



    BEE@MJTUFOFS
    BDUJPO#0,&
    Y
    Z
    XJEUI
    IFJHIU IFJHIU


    TFU@BDUJPO
    5*.&-&"1
    UFYU5*.&-&"1ZNE
    UZQFTFOE.FTTBHF



    BEE@MJTUFOFS
    BDUJPO5*.&-&"1
    Y
    Z
    XJEUI
    IFJHIU



    UZQFࢦఆͯ͠΍Δ

    View Slide

  67. #PU։ൃͷ࣮ࡍ

    View Slide

  68. Ϧονϝοηʔδͷ
    ը૾഑৴

    View Slide

  69. ཧ૝ͷΞʔΩςΫνϟ
    w ը૾Λੜ੒͢Δʹ͸ίετ͕͔͔Δ
    w DBMMCBDLޙʮ͙͢ʹϝοηʔδΛૹΔඞཁ͸ແ͍ʯ
    w KPCRVFVFʹ౤͛ͯը૾ੜ੒ޙϝοηʔδ͕ཧ૝
    w 8FCαʔό͕٧·Δ͜ͱ͕ແ͍
    8FCαʔό -*/&
    +PCαʔό
    XPSLFS
    XPSLFS
    DBMMCBDL
    SFTQPOTF
    EJTQBUDI
    NFTTBHF
    ը૾ੜ੒

    View Slide

  70. ͱ͸͍͑

    View Slide

  71. ࣮ࡍͷΞʔΩςΫνϟ
    w ొ࿥਺ ਓΛ௒͑ͯ΋ΞΫςΟϒ͸গͳ͍
    w 8FCαʔόͷGPSLͨ͠ϓϩηε͕ը૾ੜ੒Λ݉ͶΔ
    w ͔ͭը૾͸े෼ʹΩϟογϡͯ͠0,ʂ
    w ؅ཧίετͷ௿͞Λॏࢹͨ͠ઃܭʹͨ͠
    8FCαʔό -*/&
    DBMMCBDL
    SFTQPOTF
    NFTTBHF
    ը૾ੜ੒
    ը૾഑৴
    Ωϟογϡ

    αʔό

    View Slide

  72. ը૾ੜ੒഑৴
    w ಺෦Ϙέͯ"1*͔ΒϘέ৘ใΛऔಘ
    w *NBHFSͰΨϦΨϦը૾࡞੒
    w े෼ͳ࣌ؒͰNFNDBDIFEʹσʔλΛΩϟογϡ
    w ্هΛݩσʔλͱ͠ϦαΠζͯ͠഑৴
    w $%/͸ܦ༝ͤͣ"84&-#͔Β௚઀഑৴
    w DBMMCBDL͕དྷͨॠؒʹࣗΒͷը૾Λऔಘ
    w ΩϟογϡΛੜ੒͓ͯ͘͠

    View Slide

  73. ίϚϯυͷ࣮૷
    w ςΩετϝοηʔδΛϋϯυϧ͢ΔࡍจࣈྻΛൺֱ
    w Ϛονͨ͠ΒͦΕͧΕσΟεύον
    w Ϛον͠ͳ͔ͬͨΒϘέݕࡧϞʔυ΁
    JG BSHT\UFYU^FR3"/,*/(
    \
    SFUVSOTFMGIBOEMF@TUJDLFS BSHT

    ^
    JG BSHT\UFYU^_N?5*.&-&"1=T=E
    \
    SFUVSOTFMGIBOEMF@UJNFMFBQ BSHT

    ^
    JG BSHT\UFYU^_N?(";0=T=E
    \
    SFUVSOTFMGIBOEMF@HB[P BSHT

    ^

    View Slide

  74. .03&ίϚϯυͷ࣮૷
    w NJEΛϕʔεʹηογϣϯ*%Λੜ੒
    w ηογϣϯ͔ΒݱࡏͷίϯςΩετΛऔಘ
    w ্هͩͱԿϖʔδ໨͔ʁͱݕࡧΫΤϦʔ
    w ηογϣϯ৘ใ͸NFNDBDIFEʹஞҰอଘ
    JG BSHT\UFYU^FR.03&
    \
    NZQBSBNTTFTTJPOHFU QBSBNT
    ]]\^
    QBHFQBSBNT\QBHF^
    RVFSZQBSBNT\RVFSZ^
    ^

    View Slide

  75. #PUͷӡ༻

    View Slide

  76. ϢʔβʔͷߦಈΛ
    τϥοΩϯά͍ͨ͠

    View Slide

  77. View Slide

  78. +4࣮ߦͱ͔ϜϦϙ

    View Slide

  79. .FBTVSFNFOU1SPUPDPM
    w )551ϦΫΤετΛૹͬͯΞΫηεͱݟͳ͢
    w ͱΓ͋͑ͣϨεϙϯε͕੒ޭͨ͠৔߹ʹૹͬͯΔ
    w NJEΛΩʔʹϢχʔΫϢʔβʔΛΧ΢ϯτ
    w CPLFTFBSDIωίCPLFEBJMZ

    View Slide

  80. ݱ࣮

    View Slide

  81. View Slide

  82. ͳ͔ͳ͔ݫ͍͠

    View Slide

  83. ͦΖͦΖ·ͱΊ

    View Slide

  84. #PU։ൃͷݱ࣮·ͱΊ
    w -*/&#05"1*͸جຊతʹϢʔβର#05
    w NJEͰϢʔβʔΛࣝผ͠Ԡ༻͠Α͏
    w ϝοηʔδ͸ඇಉظͰฦͤ͹ྑ͍
    w ΞΫςΟϒ͕ଟ͘ͳΕ͹ཧ૝తͳΞʔΩςΫνϟ΁
    w ϦονϝοηʔδͱίϚϯυͰػೳΛ࣮ݱ
    w ϞόΠϧΞϓϦ͕͍Βͳ͘ͳΔੈք؍͸དྷΔͷ͔
    w ίϯςϯπΛੜ੒͢Δ͜ͱ΋ग़དྷΕ͹໘ന͍͔΋

    View Slide