Upgrade to Pro — share decks privately, control downloads, hide ads and more …

中規模チームを支える自動化とノウハウ共有の仕組み/CEDEC2017

Konboi
August 30, 2017

 中規模チームを支える自動化とノウハウ共有の仕組み/CEDEC2017

本セッションでは、約20〜30人規模で面白法人カヤックが運用しているスマホゲームタイトルの開発/運用の現場を支えている開発の仕組み化と自動化の取り組みについて具体的な例を上げながら紹介します。

Konboi

August 30, 2017
Tweet

More Decks by Konboi

Other Decks in Technology

Transcript

  1. தن໛νʔϜΛࢧ͑ΔࣗಈԽͱ
    ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ
    ໘ന๏ਓΧϠοΫ ໼ਧྒྷհ@CEDEC2017

    View full-size slide

  2. Profile
    • ໼ਧྒྷհ a.k.a ˏKonboi
    • ໘ന๏ਓΧϠοΫ
    • ιʔγϟϧήʔϜࣄۀ෦ॴଐ
    • ٕज़෦ όοΫΤϯυΤϯδχΞ݉νʔϑ
    • Ωϯ೑ϚϯϚοεϧγϣοτͳͲΛ୲౰

    View full-size slide

  3. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  4. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  5. ΧϠοΫͷ
    ։ൃମ੍ͷ঺հ

    View full-size slide

  6. • ๻ΒͷߕࢠԂϙέοτ
    • γϦʔζྦྷܭ 600ສDL
    • ϓϨΠϠʔ͸̍ਓͷߴߍٿࣇ
    • ϓϨΠϠʔಉ࢜ͰνʔϜΛฤ੒
    • ߕࢠԂग़৔/༏উΛ໨ࢦ͢
    • Ωϯ೑Ϛϯ MUSCLESHOT
    • DeNA͞Μͱͷڠۀ
    • ݪ࡞Λ࠶ݱͨ͠ετʔϦʔ
    • ࠷େ̐ਓͷϦΞϧλΠϜ

    ڠྗότϧ

    View full-size slide

  7. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  8. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ˞ήʔϜٕݚΠϯϑϥ͸ٕज़෦ॴଐ

    ϓϩϞʔγϣϯ͸اը෦ॴଐ

    Ͱ͕͢આ໌ͷͨΊ෼͚͍ͯ·͢

    View full-size slide

  9. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  10. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾϓϩσϡʔαʔ

    ɾσΟϨΫλʔ
    ɾϓϥϯφʔ
    ɾϨϕϧσβΠφʔ
    ɾϓϩδΣΫτϚωʔδϟʔ

    View full-size slide

  11. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  12. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾ6*σβΠφʔ
    ɾ%σβΠφʔ
    ɾάϥϑΟοΧʔ
    ɾΞχϝʔλʔ

    View full-size slide

  13. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  14. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾόοΫΤϯυΤϯδχΞ
    ɾήʔϜϓϩάϥϚ
    ɾ6*ϓϩάϥϚ

    View full-size slide

  15. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  16. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾΞηοτύΠϓϥΠϯߏங
    ɾڞ௨ϥΠϒϥϦͷ։ൃ
    ɾͦͷଞڞ༗ج൫ͷ։ൃӡ༻

    View full-size slide

  17. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  18. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾαʔόʔߏஙӡ༻
    ɾΠϯϑϥʹؔ͢ΔΞυόΠβʔ
    ɾো֐࣌ͷରԠϔϧϓ

    View full-size slide

  19. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  20. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ɾ޿ࠂؔ࿈
    ɾίϥϘاը

    View full-size slide

  21. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦
    ˒ d!3
    ˒ ༑৘ϚʔέςΟϯάͷղઆ

    View full-size slide

  22. اը෦
    ҙঊ෦
    ٕज़෦
    ήʔϜٕݚ
    Πϯϑϥ
    ϓϩϞʔγϣϯ
    اը෦
    ҙঊ෦
    ٕज़෦

    View full-size slide

  23. اը෦
    ҙঊ෦
    ٕज़෦
    dਓఔ౓
    dਓఔ౓
    dਓఔ౓

    View full-size slide

  24. اը෦
    ҙঊ෦
    ٕज़෦
    dਓఔ౓
    dਓఔ౓
    dਓఔ౓ ͏ͪ#&d̒ਓ

    View full-size slide

  25. اը෦
    ҙঊ෦
    ٕज़෦
    dਓఔ౓
    dਓఔ౓
    dਓఔ౓ ͏ͪ#&d̒ਓ

    ߹ܭdਓ

    View full-size slide

  26. ΧϠοΫͷ։ൃମ੍
    • ήʔϜΤϯδϯ͸UnityΛ࢖༻
    • ։ൃ؀ڥ΋ؚΊόοΫΤϯυ͸શͯAWS
    • GithubͷPrivateϦϙδτϦͰίʔυ؅ཧ
    • Ξηοτ΋GithubͰ؅ཧ
    • νϟοτπʔϧʹ͸Slack

    View full-size slide

  27. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  28. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  29. Ϛελʔσʔλͷ

    ӡ༻ϑϩʔࣗಈԽ

    View full-size slide

  30. • Ϛελʔσʔλ͸ߋ৽ͷස౓͕ߴ͍
    • ΫΤετɺΩϟϥΫλʔɺΨνϟɺ etc ...
    • Ϛελʔσʔλͷߋ৽αΠΫϧ͕ૣ͍
    • Ϣʔβʔ΁ఏڙͰ͖Δࢪࡦ͕૿͑Δ
    • ϏδωεతΠϯύΫτ͕େ͖͍
    Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ

    View full-size slide

  31. Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ
    • ΧϠοΫͰ͸Ϛελʔσʔλͷ؅ཧʹ

    Google Spreadsheets(ҎԼ GSS)Λ࢖༻
    • ൓өͷେ·͔ͳྲྀΕͱͯ͠
    • ϓϥϯφʔɺϨϕϧσβΠφʔ͕GSSʹೖྗ
    • GSS͔ΒCSVܗࣜͰμ΢ϯϩʔυ
    • CSV͔ΒDB΁Πϯϙʔτ
    • ΫϥΠΞϯτ΁഑৴͕ඞཁͳ΋ͷ͸ม׵ͯ͠഑෍

    View full-size slide

  32. Why GSS ?
    • ϝϦοτ
    • ෳ਺ਓͰૢ࡞Մೳ
    • Πϯλʔωοτ͑͋͞Ε͹Ͳ͔͜ΒͰ΋ฤूՄೳ
    • ฤूͷཤྺ͕࢒Γɺ෮ݩ΋Մೳ
    • JavaScriptͰϓϥάΠϯͷهड़͕Մೳ

    View full-size slide

  33. Why GSS ?
    • σϝϦοτ
    • ࣜ΍ϓϥάΠϯΛ࢖༻͢Δͱ͙͢ॏ͘ͳΔ
    • ωοτͷ؀ڥ͕ͳ͍ͱߋ৽͕൓өͰ͖ͳ͍

    View full-size slide

  34. ࣗಈԽલͷGSSͷӡ༻ϑϩʔ
    • ̍ͭͷγʔτΛΈΜͳͰฤू
    • ࡞ۀ಺༰͕িಥ
    • ฒߦͰͷ࡞ۀ͕೉͘͠
    • ࡞ۀεϐʔυ͕ग़ͳ͍ࣄ͕໰୊ʹ

    View full-size slide

  35. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ࡞ۀ͕িಥ (ࣄྫ)
    དྷिग़͢෢ثΛ

    ೖྗ͠·͢

    View full-size slide

  36. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ࡞ۀ͕িಥ (ࣄྫ)
    ࠶དྷिग़͢෢ثΛ

    ೖྗ͠·͢

    View full-size slide

  37. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ࡞ۀ͕িಥ (ࣄྫ)
    ࠓೖྗதͳͷͰ
    গ͠଴ͬͯԼ͍͞

    View full-size slide

  38. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)
    ։ൃ؀ڥͰ
    ֬ೝ͠Α͏ͬͱʂ

    View full-size slide

  39. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)
    ͍͢·ͤΜ

    View full-size slide

  40. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)
    ࣄલͷ͓஌Βͤͱ
    ύϥϝʔλ͕ҧ͏ͷͰ
    मਖ਼͠·͢

    View full-size slide

  41. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)
    2"લͷσʔλൈ͍ͯ
    Լ͍͞

    View full-size slide

  42. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)

    View full-size slide

  43. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    ࡞ۀ͕িಥ (ࣄྫ)
    ࡞ۀͰ͖Δͷ͍ͭʹ
    ͳΔ΍Βʜ

    View full-size slide

  44. ΍͹͍
    • Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍
    • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ

    ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ
    • ໰୊͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ

    View full-size slide

  45. ରࡦ
    • ։ൃ༻ͷGSSΛຊ൪༻͔Β·Δͬͱෳ੡
    • QAલͷσʔλ͸ෳ੡γʔτʹೖྗ
    • QA׬ྃޙʹຊ൪༻ͷγʔτʹೖྗࠩ෼ΛҠಈ
    • σϓϩΠ

    View full-size slide

  46. ·Δͬͱෳ੡
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD
    L
    )1
    ໦౛
    ୹݋
    ϋϯϚ
    ʔ

    φΠϑ

    View full-size slide

  47. ·Δͬͱෳ੡
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD
    L
    )1
    ໦౛
    ୹݋
    ϋϯϚ
    ʔ

    φΠϑ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD
    L
    )1
    ໦౛
    ୹݋
    ϋϯϚ
    ʔ

    φΠϑ

    View full-size slide

  48. ·Δͬͱෳ੡
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD )1
    ໦౛
    ୹݋
    ϋϯϚ
    φΠϑ
    ދప
    ଜӍ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD
    L
    )1
    ໦౛
    ୹݋
    ϋϯϚ
    ʔ

    φΠϑ

    View full-size slide

  49. ·Δͬͱෳ੡
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD )1
    ໦౛
    ୹݋
    ϋϯϚ
    φΠϑ
    ދప
    ଜӍ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BN "UUB )1
    ໦౛
    ୹݋
    ϋϯ
    φΠ
    *% /BNF "UUBD )1
    ໦౛
    ୹݋
    ϋϯϚ
    φΠϑ
    άϩʔ
    ϝϦέ

    View full-size slide

  50. • ຊ൪Խ͞Εͨσʔλ͕ະ൓өͰ

    ڍಈ͕͓͔͘͠ͳΓΤϯδχΞ͕ௐࠪ͢Δ͜ͱ͕ଟൃ
    • ຊ൪Խ͞ΕͨσʔλΛฤूதͷγʔτ΁

    ൓ө͢Δ࡞ۀ΋Ұۤ࿑
    • मਖ਼͕Ϧόʔτͯ͠͠·͏ࣄҊ΋…
    • ൓өʹϛε͕͋ͬͨ৔߹ͷϦΧόϦʔ͕େม
    ·Δͬͱෳ੡ ݁Ռ

    View full-size slide

  51. • Ϛελʔσʔλͷೖྗऀͷෛՙ͸গ͠Լ͕ͬͨ
    • ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ

    όοΫΤϯυΤϯδχΞͷෛՙ૿
    ·Δͬͱෳ੡ ݁Ռ

    View full-size slide

  52. GSS෼ׂ
    • ϕʔεͷGSS
    • σϓϩΠՄೳͳσʔλ͕ೖͬͨγʔτ
    • ։ൃ༻ͷGSS
    • ৽ن௥Ճ͍ͨ͠σʔλͷΈ௥Ճͨ͠γʔτ
    • ͜ΕΒͷ̎ͭͷγʔτΛ݁߹ͯ͠औΓࠐΉ

    View full-size slide

  53. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  54. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  55. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ
    *% /BNF "UUBDL )1

    View full-size slide

  56. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ދప
    ଜӍ
    *% /BNF "UUBDL )1
    άϩʔϒ
    ϝϦέϯ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  57. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ދప
    ଜӍ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  58. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    άϩʔϒ
    ϝϦέϯ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    άϩʔϒ
    ϝϦέϯ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  59. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ

    View full-size slide

  60. *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    ދప
    ଜӍ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    *% /BNF "UUBDL )1
    ໦౛
    ୹݋
    ϋϯϚʔ
    φΠϑ
    GSS෼ׂ
    *% /BNF "UUBDL )1
    ދప
    ଜӍ

    View full-size slide

  61. GSS෼ׂ ࣮ࡍͷӡ༻
    • GSS෼ׂऔΓࠐΈͷεΫϦϓτΛ༻ҙ
    • ※GSSࣗମʹ͜ͷ༷ͳػೳ͸͋Γ·ͤΜ
    • εΫϦϓτΛchat botܦ༝Ͱ࣮ߦͰ͖Δঢ়ଶʹ
    • ϓϥϯφʔ/ϨϕϧσβΠφʔ͸ChatͰσʔλ
    ͷऔΓࠐΈΛߦ͏

    View full-size slide

  62. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ

    View full-size slide

  63. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ
    ฤू

    View full-size slide

  64. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ
    CPU΁NFOUJPO

    View full-size slide

  65. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ
    TDSJQUͷ࣮ߦ

    View full-size slide

  66. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ
    ݁߹ͯ͠औΓࠐΈ

    View full-size slide

  67. GSS෼ׂ ࣮ࡍͷӡ༻
    #BTF
    ෼ׂ
    13ͷ࡞੒

    View full-size slide

  68. GSS෼ׂ ࣮ࡍͷӡ༻

    View full-size slide

  69. GSS෼ׂ ࣮ࡍͷӡ༻

    View full-size slide

  70. • Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍
    • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ

    ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ

    ˠ ඞཁͳγʔτΛࣗ෼Ͱ࡞੒͢Δ͚ͩ

    ଞࣾͷ࡞ۀΛ΄ͱΜͲҙࣝͤͣʹ࡞ۀՄೳʹ
    • ໰୊͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ

    ˠ ϕʔεͱͳΔγʔτΛमਖ਼͢Δ͚ͩͰOK
    GSS෼ׂ ࣮ࡍͷӡ༻

    View full-size slide

  71. • ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ

    όοΫΤϯυΤϯδχΞͷෛՙ૿

    ˠ ΄ͱΜͲͷ৔߹௥Ճ͞ΕͨσʔλΛௐࠪ͢Ε͹ղܾ
    • chatopsͰ΄ͱΜͲΤϯδχΞͷखΛआΓͳͯ͘΋Մೳʹ
    • εϓϨουγʔτͷ௥Ճ
    • σʔλͷऔΓࠐΈ
    • σʔλͷߋ৽
    GSS෼ׂ ࣮ࡍͷӡ༻

    View full-size slide

  72. ͦΕ΋ଋͷؒ

    View full-size slide

  73. ৽ͨͳ՝୊

    View full-size slide

  74. ෳ਺ͷ։ൃ؀ڥͷχʔζ
    • ฒߦͯ͠࡞ۀ͕Ͱ͖Δ؀ڥʹͳͬͨ͜ͱͰ

    σʔλͷߋ৽εϐʔυ͕UP
    • ֬ೝ༻ͷ؀ڥ͕ෳ਺ඞཁʹ

    View full-size slide

  75. Ҏલͷ֬ೝ؀ڥ
    • dev01~devN ·Ͱ༻ҙ(~10)
    • ߋ৽/मਖ਼͍ͨ͠σʔλΛ൓өͨ͠branchΛద༻
    • ࢪࡦʹΑͬͯ͸αʔόʔͷ࣌ؒΛมߋ͢ΔͨΊ

    ࢖ͬͯΔਓ͕͍ͳ͍͔֬ೝ͕ඞཁ

    View full-size slide

  76. EFW EFW EFW EFW/
    ʜ
    8FC4FSWFS
    Ҏલͷ֬ೝ؀ڥ
    FYBNQMFHBNFDPN

    View full-size slide

  77. EFW EFW EFW EFW/
    ʜ
    8FC4FSWFS
    Ҏલͷ֬ೝ؀ڥ
    FYBNQMFHBNFDPN
    HBDIB

    View full-size slide

  78. EFW EFW EFW EFW/
    ʜ
    8FC4FSWFS
    Ҏલͷ֬ೝ؀ڥ
    EFWFYBNQMFHBNFDPN
    HBDIB

    View full-size slide

  79. EFW EFW EFW EFW/
    ʜ
    8FC4FSWFS
    Ҏલͷ֬ೝ؀ڥ
    FYBNQMFHBNFDPN
    HBDIB pYXFBQPO

    View full-size slide

  80. EFW EFW EFW EFW/
    ʜ
    8FC4FSWFS
    Ҏલͷ֬ೝ؀ڥ
    EFWFYBNQMFHBNFDPN
    pYXFBQPO
    HBDIB

    View full-size slide

  81. Ҏલͷ֬ೝ؀ڥ
    A͞Μ: dev01࢖͍ͬͯΔͻͱ͍·͔͢ʁ
    B͞Μ: ͸͍
    A͞Μ: ͡Ό͋ɺdev03͸Ͳ͏Ͱ͔͢ʁ
    C͞Μ: ࢖ͬͯ·ʔ͢

    View full-size slide

  82. Ҏલͷ֬ೝ؀ڥ
    • ։͍͍ͯΔ؀ڥΛ୳͢ͷ͕஍ຯʹखؒ
    • ࠷ॳ͸֬ೝස౓͕গͳ͔͕ͬͨ

    ঃʑʹ૿͍͑ͯͬͨ
    • ։ൃͰ΋APIͷͭͳ͗ࠐΈ΍QAʹαʔόʔΛ

    ඞཁͱ͢ΔͨΊӨڹ͕େ͖͘ͳ͖ͬͯͨ

    View full-size slide

  83. docker × mirage 

    Λ࢖༻ͨ͠։ൃ؀ڥͷߏங

    View full-size slide

  84. What's docker ?
    • ίϯςφܕͱݴΘΕΔ

    ΞϓϦέʔγϣϯ࣮ߦ؀ڥ
    • Πϝʔδͱݺ͹ΕΔΞϓϦέʔγϣϯͷ਽ܗ
    ͔ΒΞϓϦέʔγϣϯΛߴ଎ʹىಈՄೳ


    ˞dockerʹؔͯ͠͸ࠓճ͸ৄ͘͠৮Ε·ͤΜ

    View full-size slide

  85. What's mirage ?
    • ήʔϜٕݚϝϯόʔ͕։ൃͨ͠ϛυϧ΢ΣΞ
    • subdomainͱbranch໊ΛηοτͰϦΫΤετ
    • ίϯςφΛىಈ͠ɺbranch৘ใ͕؀ڥม਺ͱͯ͠౉Δ
    • ίϯςφ಺ʹ౉͞ΕͨbranchͰΞϓϦέʔγϣϯΛىಈ
    • ࢦఆͨ͠υϝΠϯ໊ͰϦΫΤετ͢Δͱ

    ର৅ͷίϯςφ΁Proxy͢Δ

    View full-size slide

  86. What's mirage ?
    8FC4FSWFS

    View full-size slide

  87. What's mirage ?
    8FC4FSWFS

    View full-size slide

  88. What's mirage ?
    8FC4FSWFS
    NJSBHF

    View full-size slide

  89. What's mirage ?
    8FC4FSWFS
    NJSBHF

    View full-size slide

  90. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB

    View full-size slide

  91. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB

    View full-size slide

  92. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB
    HBDIB

    View full-size slide

  93. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯXFBQPO

    ϒϥϯνpYXFBQPO
    HBDIB

    View full-size slide

  94. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯXFBQPO

    ϒϥϯνpYXFBQPO
    HBDIB

    View full-size slide

  95. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯXFBQPO

    ϒϥϯνpYXFBQPO
    HBDIB pYXFBQPO

    View full-size slide

  96. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    HBDIBFYBNQMFDPN

    View full-size slide

  97. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    HBDIBFYBNQMFDPN

    View full-size slide

  98. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    HBDIBFYBNQMFDPN

    View full-size slide

  99. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    XFBQPOFYBNQMFDPN

    View full-size slide

  100. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    XFBQPOFYBNQMFDPN

    View full-size slide

  101. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO
    XFBQPOFYBNQMFDPN

    View full-size slide

  102. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB
    HBDIB pYXFBQPO

    View full-size slide

  103. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB
    HBDIB pYXFBQPO

    View full-size slide

  104. What's mirage ?
    8FC4FSWFS
    NJSBHF
    υϝΠϯHBDIB

    ϒϥϯνHBDIB
    HBDIB pYXFBQPO HBDIB

    View full-size slide

  105. What's mirage ?
    8FC4FSWFS
    NJSBHF
    HBDIB pYXFBQPO HBDIB
    HBDIBFYBNQMFDPN

    View full-size slide

  106. docker × mirage
    • ֬ೝ༻ͷ؀ڥ͕ෳ਺ඞཁʹ

    ˠඞཁͳ࣌ʹɺඞཁͳ෼͚ͩ؀ڥ͕ىಈՄೳʹ
    ※ϚγϯϦιʔεͷ্ݶ͸͋Δ
    • ։͍͍ͯΔ؀ڥΛ୳͢ͷ͕஍ຯʹखؒ

    ˠ୭͕࢖͍ͬͯΔ͔֬ೝ͢Δඞཁ΋͍Βͳ͍

    ࣗ෼ͷඞཁͳ؀ڥΛඞཁͳཱ͚ͩͯΕ͹Α͍

    View full-size slide

  107. docker × mirage
    • chat bot ʹ͢Δ͜ͱͰ

    ؀ڥߏங΋ΤϯδχΞ͍Βͣ
    ※ Software Design 2017೥2݄߸ͷಛूͰ

    mirage΍͜ͷลͷ࿩Λॻ͍͍ͯ·͢[એ఻]

    View full-size slide

  108. ͜ΕͰશͯղܾʂ

    View full-size slide

  109. ͔ͱࢥ͍͖΍

    View full-size slide

  110. ·ͨɺ৽ͨͳ໰୊͕
    • Ϛελʔσʔλͷߋ৽εϐʔυUP
    • ։ൃ/֬ೝ؀ڥ΋५୔ʹ
    • νʔϜνΣοΫ΍QAͷ߲໨/ճ਺͕૿͑

    νΣοΫ/QAͷίετ૿ʹ

    View full-size slide

  111. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘

    View full-size slide

  112. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ෳ਺ͷΞΠςϜλΠϓ͕෇༩Ͱ͖ΔΑ͏ͳ

    Ϛελʔσʔλ͕͋Γ·ͨ͠
    • item_type
    • item_id
    • item_amount
    • item_typeͰ͸

    Ϛωʔɺਫথɺ෢ث ༷ʑͳ΋ͷ͕ઃఆͰ͖·͢

    View full-size slide

  113. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • item_type: 1 Ϛωʔ
    • item_type: 2 ਫথ
    • item_type: 3 ෢ث
    • ͱఆٛ͞Ε͍ͯ·͢

    View full-size slide

  114. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ϚωʔΛ1000͋͛Δࢪࡦ͕ܾఆ
    • item_type: 1
    • item_id: 0
    • item_amount: 1000
    • ͱઃఆ

    View full-size slide

  115. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ϚωʔΛ1000͋͛Δࢪࡦ͕ܾఆ
    • item_type: 1
    • item_id: 0
    • item_amount: 1000
    • ͱઃఆ͢Δͱ͜ΖΛ…

    View full-size slide

  116. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ޡͬͯitem_typeΛ2(ਫথ)ͱࢦఆ
    • ೉͍͠ઃఆͰ͸ͳ͍ͷͰνʔϜνΣοΫ͚ͩͰ

    QAνΣοΫ͸εΩοϓ
    • ໰୊ͳ͘ΪϑτϘοΫεʹೖ͍ͬͯΔͷΛ֬ೝ
    • νʔϜνΣοΫ΋ແࣄ௨ա
    • ͦͷ··ɺσϓϩΠ͞Ε·ͨ͠

    View full-size slide

  117. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ࢪࡦ౰೔
    • ͳ͔ͥ๭ܝࣔ൘΍twitter͕૽͕͍͠
    • ֬ೝͯ͠ΞϓϦΛىಈͯ͠ϝοηʔδΛ։෧͢Δͱ
    • ͳ͔ͥਫথ͕1000ݸ෇༩͞ΕΔ
    • ճऩ͢Δͷ͔ɺͲ͏͢Δͷ͔… ϝϯςೖΕΔʁʁ

    View full-size slide

  118. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ͳʹ͕ѱ͍ʁ
    • ϚελʔσʔλΛೖΕͨਓʁ
    • νʔϜνΣοΫΛͪΌΜͱ͠ͳ͔ͬͨ͜ͱʁ
    • QAʹνΣοΫͯ͠΋ΒΘͳ͔ͬͨ͜ͱʁ

    View full-size slide

  119. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘
    • ໰୊͕ऩଋͨ͠ޙͰͷ࠶ൃ๷ࢭMTGʹͯ
    • ͔࣍ΒؾΛ͚ͭ·͢
    • νʔϜνΣοΫͷ֬ೝ߲໨Λపఈ͠·͢
    • શͯQAνʔϜʹQAͯ͠΋Β͏

    View full-size slide

  120. ؓ࿩ٳ୊
    • ࢪࡦ͕૿͑ΔͱQAͷίετ͕૿͑Δ
    • ਓ͕େྔʹ͍Ε͹QAͰ͖Δ
    • QAʹ͔͚ΒΕΔίετ͸༗ݶ
    • ͔͠͠ɺQA͠ͳ͍Θ͚ʹ͸͍͔ͳ͍

    View full-size slide

  121. ϚελʔσʔλͷCI

    View full-size slide

  122. ϚελʔσʔλͷCI
    • CI: Continuous Integration
    • ܧଓతΠϯςάϨʔγϣϯ
    • ཁ͸Ϛελʔσʔλͷࣗಈςετ

    View full-size slide

  123. CIͬͯιʔείʔυʹ

    ΍Δ΋ͷ͡Όͳ͍ͷʁ

    View full-size slide

  124. ࣮ࡍͷςετέʔεͷҰྫ
    • ϦϨʔγϣϯઌͷϚελʔσʔλ͕͖ͪΜͱଘࡏ͢Δ͔
    • N೔ޙ·ͰΨνϟͷࢪࡦ͕ઃఆ͞Ε͍ͯΔ͔
    • ઃఆ͞ΕͨΨνϟͱରԠ͢ΔϚΠϖʔδόφʔ͕ઃఆ͞
    Ε͍ͯΔ͔
    • ෇༩ΞΠςϜʹਫথ͕ઃఆ͞Ε͍ͯΔ৔߹͸̑ݸҎ಺͔
    • etc

    View full-size slide

  125. • ϦϨʔγϣϯઌͷϚελʔσʔλ͕͖ͪΜͱଘࡏ͢Δ͔
    • → ͳΜ͔ಈ͔ͳ͍ΜͰ͚͢ͲΛνΣοΫ
    • N೔ޙ·ͰΨνϟͷࢪࡦ͕ઃఆ͞Ε͍ͯΔ͔
    • → ௕ظٳՋதͷΨνϟ͕

    ઃఆ͞Εͯͳ͍ͳ͔ͬͨώϠϦɾϋοτͷ࠶ൃ๷ࢭ
    ϚελʔσʔλͷCI

    View full-size slide

  126. • ઃఆ͞ΕͨΨνϟͱରԠ͢ΔϚΠϖʔδόφʔ͕

    ઃఆ͞Ε͍ͯΔ͔
    • → Ψνϟ͚ͩ/όφʔ͚ͩ ઃఆ͞Ε͍ͯͨෆ۩߹ͷ

    ࠶ൃ๷ࢭࡦ
    • ෇༩ΞΠςϜʹਫথ͕ઃఆ͞Ε͍ͯΔ৔߹͸̑ݸҎ಺͔
    • → QAͰൃ֮ͨ͠ItemTypeϛεͷ࠶ൃ๷ࢭࡦ
    ϚελʔσʔλͷCI

    View full-size slide

  127. ϚελʔσʔλͷCI
    • ࣮ࡍͷςετίʔυ

    View full-size slide

  128. ϚελʔσʔλͷCI
    • ؆୯ͳ΋ͷ͸ೖྗऀ͕GSS্νΣοΫΛߦ͍ͬͯΔ
    • ϨϕϧσβΠφʔɺϓϥϯφʔ͔Βͷཁ๬Λ্͛
    ͯ΋Β͍ςετίʔυʹ൓ө
    • ࢪࡦʹΑͬͯ͸ྫ֎͕ൃੜ͢ΔͷͰಛఆͷέʔεͩ
    ͚͸εΩοϓͤ͞Δ

    View full-size slide

  129. ϚελʔσʔλͷCI
    • ؾΛ͚ͭͯ΋ؒҧ͏࣌͸ؒҧ͏
    • ๨Εͨ͜ΖʹϛεΔ
    • ϚελʔσʔλىҼͷϛε͕͋ͬͨ৔߹͸Մೳͳ
    ݶΓςετέʔεΛ௥Ճ͠࠶ൃ๷ࢭʹ౒Ί͍ͯΔ

    View full-size slide

  130. ϚελʔσʔλͷCI
    • JenkinsͰઐ༻ͷδϣϒΛઃఆ
    • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖͸

    ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ

    View full-size slide

  131. ϚελʔσʔλͷCI
    • JenkinsͰઐ༻ͷδϣϒΛઃఆ
    • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖͸

    ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ

    View full-size slide

  132. ࣗಈԽͷऔΓ૊Έ ·ͱΊ
    • GSSΛ෼ׂ͢Δ͜ͱͰෳ਺ਓ͕ฒߦͰฤूՄೳʹ
    • chat botͰ֤ਓ͕ΤϯδχΞͷखΛआΓͣʹ

    & ଴ͪ࣌ؒͳ͘σʔλͷ൓ө͕Մೳʹ
    • docker×mirageΛ࢖༻͢Δ͜ͱͰ֤ਓ͕

    ࣗ༝ʹ։ൃ/֬ೝͰ͖Δ؀ڥΛߏஙՄೳʹ
    • ϚελʔσʔλΛCI͢Δ͜ͱͰ҆શͳӡ༻ج൫Λߏங

    View full-size slide

  133. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  134. தن໛νʔϜΛࢧ͑ΔࣗಈԽ
    ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  135. ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ
    • νʔϜ಺Ͱͷϊ΢ϋ΢ڞ༗ͷ࢓૊Έ
    • νʔϜؒͰͷϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  136. νʔϜ಺Ͱͷ

    ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  137. νʔϑ಺Ͱͷϊ΢ϋ΢ڞ༗
    • Ξνʔϒϝϯτγʔτ
    • όοΫΤϯυ޲͚
    • ෛՙࢼݧ
    • ো֐ରԠه࿥

    View full-size slide

  138. Ξνʔϒϝϯτγʔτ

    View full-size slide

  139. Ξνʔϒϝϯτγʔτͱ͸ʁ
    • “୭”͕ɺ”Կ͕Ͱ͖Δͷ” ͔Λදʹͨ͠΋ͷ
    • ॎ࣠ʹλεΫ
    • ԣ࣠ʹνʔϜͷϝϯόʔ
    • λεΫͷଐਓੑΛແͨ͘͢ΊͷऔΓ૊ΈͷҰ؀
    • ࣅͨΑ͏ͳ΋ͷʹ εΩϧϚοϓɺ੕औද ͳͲ

    View full-size slide

  140. Ξνʔϒϝϯτγʔτͱ͸?
    • λεΫ
    • ॏཁ౓×ස౓ͰॏΈ෇͚͕͞Ε͍ͯΔ
    • ֤ϝϯόʔ͕Ͱ͖Δ/Ͱ͖ͳ͍Λೖྗ

    View full-size slide

  141. Ξνʔϒϝϯτγʔτͱ͸?
    • λεΫ
    • ॏཁ౓×ස౓ͰॏΈ෇͚͕͞Ε͍ͯΔ
    • ֤ϝϯόʔ͕Ͱ͖Δ/Ͱ͖ͳ͍Λೖྗ

    View full-size slide

  142. Ξνʔϒϝϯτγʔτͱ͸?

    View full-size slide

  143. Ξνʔϒϝϯτγʔτͱ͸?

    View full-size slide

  144. ϝϦοτ
    • ֤ϝϯόʔͷεΩϧͷݟ͑ΔԽ
    • ଐਓੑͷՄࢹԽ
    • λεΫͷৼΓ෼͚࣌ʹ୲౰ऀ͕

    ݻఆ͠ͳ͍Α͏ׂΓৼΔ
    • ଘࡏ͢ΔλεΫͷݟ͑ΔԽ/਺஋Խ

    View full-size slide

  145. ϝϦοτ
    • “࢓ࣄ͕Ͱ͖Δ”ɺ”1ਓલ”Λ਺஋ͰఆٛͰ͖Δ
    • ໨ඪઃఆͳͲͷ “1ਓલʹͳΔ” 

    ͳͲఆྔతʹνΣοΫͰ͖Δ

    View full-size slide

  146. σϝϦοτ
    • ࠷ॳ࡞Δ͕࣌େม
    • γʔτΛϝϯςφϯε͍ͯ͘͠ඞཁ͕͋Δ
    • ݱঢ়ͷӡ༻Ͱ͸ࣗ෼ͷओ؍Ͱ͚͍ͭͯΔ

    ΋ͷ΋͋ΔͷͰݫີͰ͸ͳ͍
    • ओ໨త͕ଐਓੑͷՄࢹԽͷͨΊࠓͷͱ͜Ζ
    ໰୊ʹ͸ͳͬͯ͸͍ͳ͍

    View full-size slide

  147. Ξνʔϒϝϯτγʔτͷӡ༻
    • ৽ػೳ͕௥Ճ͞ΕͨλΠϛϯά
    • ৽όʔδϣϯΛϦϦʔεͨ͠λΠϛϯά
    • ৽͍͠ਓ͕δϣΠϯͨ͠λΠϛϯά
    • etc
    • અ໨અ໨Ͱ֤νʔϜߋ৽Λߦ͍ͬͯΔ

    View full-size slide

  148. ෛՙࢼݧ
    • όοΫΤϯυΤϯδχΞ޲͚ͷऔΓ૊Έ
    • ຊ൪؀ڥͱ͸ผʹ

    ຊ൪؀ڥͱಉ༷ͷ؀ڥΛߏங
    • ຊ൪ಉ༷ͷϢʔβʔͷϑϩʔͰ

    ର৅ͷαʔόʔʹෛՙΛ͔͚Δ

    View full-size slide

  149. ͳͥෛՙࢼݧʁ
    • ৽ػೳͷϦϦʔε௚ޙ
    • େܕͷྲྀೖࢪࡦͷ࣮ࢪ
    • etc
    • ٸͳΞΫηε૿ʹඋ͑Δ

    View full-size slide

  150. ͳͥෛՙࢼݧʁ
    • ຊ൪؀ڥ͸ϦϦʔεޙ

    େ͖͘؀ڥΛม͑Δ͜ͱ͸গͳ͍
    • σϓϩΠ΍ઃఆϑΝΠϧͷมߋ͚ͩͰ͸

    શ๴Λ೺Ѳ͠ʹ͍͘
    • େ͖͘มߋ͠ͳ͍ͷͰ

    ຊ൪؀ڥΛ೺Ѳ͍ͯ͠Δϝϯόʔ͕ภͬͯ͠·͏

    View full-size slide

  151. ͳͥෛՙࢼݧʁ
    • ෛՙࢼݧͷ४උΛ௨ͯ͠ຊ൪؀ڥͷશମ૾Λ೺Ѳ
    • ࣗ෼ͰෛՙΛ͔͚Δ͜ͱʹΑͬͯ

    Ϣʔβʔͷಈ࡞͕Ͳ͏Өڹ͕͋Δͷ͔Λཧղ͢Δ

    View full-size slide

  152. ෛՙࢼݧ
    • ͨͩɺͲΕ͚ͩඋ͑ͯ΋ى͜Δ࣌͸ى͜Δ
    • ΠϯϑϥىҼ
    • ΦϖϨʔγϣϯϛε
    • etc…

    View full-size slide

  153. ෛՙࢼݧ
    • ΧϠοΫͰ͸ো֐࣌͸جຊ

    ΠϯϑϥνʔϜͱόοΫΤϯυΤϯδχΞ͕୲౰
    • ো֐ͷݪҼڀ໌/෮چ͸

    ࠷୹ͰͷରԠ͕ٻΊΒΕΔ
    • ΍ΕΔਓ/΍Γ׳ΕͯΔਓ͕ରԠ͢Δࣄ͕ଟ͘ͳΔ

    View full-size slide

  154. ো֐ରԠه࿥

    View full-size slide

  155. ো֐ରԠه࿥
    • શ͘ಉ͡ݪҼͷো֐͸ຆͲແ͍
    • γϛϡϨʔγϣϯ͕͠ʹ͍͘
    • ϝϯόʔ͔ΒώΞϦϯά
    • Ͳ͏΍ͬͯো֐ରԠग़དྷΔΑ͏ʹͳͬͨͷ͔
    • ো֐ରԠ͢Δ্Ͱͳʹ͕෼͔Βͳ͍ͷ͔

    View full-size slide

  156. ো֐ରԠه࿥
    • Ͳ͏΍ͬͯো֐ͷ͋ͨΓΛ෇͚͍ͯΔͷ͔
    • ௐࠪ࣌ʹԿΛݟ͍ͯΔͷ͔
    • Կͷ஋ΛΈͯΔͷ͔
    • ͲΜͳίϚϯυΛ࢖͍ͬͯΔ͔
    • ͲΜͳίϚϯυΛ૊Έ߹ΘͤͯΔ͔
    • etc

    View full-size slide

  157. ো֐ରԠه࿥
    • ͲͷΑ͏ʹͯ͠ো֐ΛରԠ͔ͨ͠Λه࿥
    • ͍ͭ
    • Կ͕ى͖ͨ
    • Өڹ͸
    • Ͳ͏΍ͬͯݪҼΛಛఆͨ͠
    • ͲͷΑ͏ʹͯ͠ରԠͨ͠

    View full-size slide

  158. ো֐ରԠه࿥

    View full-size slide

  159. ো֐ରԠه࿥
    • ϝϯόʔ͔ΒͷFB
    • ԿΛݟͯ൑அ͍ͯ͠Δͷ͔ཧղͰ͖ͨ
    • ͲͷΑ͏ͳॱংΛܦͯো֐ͷݪҼΛಛఆ͍ͯ͠Δ
    ͷ͕෼͔ΔΑ͏ʹͳͬͨ
    • ਖ਼௚ɺΞϥʔτͷ಺༰͚ͩͰݪҼΛಛఆ

    Ͱ͖Δಛघೳྗతͳ෺͕ඞཁͩͱࢥ͍ͬͯ·ͨ͠

    View full-size slide

  160. νʔϜؒͰͷ

    ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  161. νʔϜؒͰͷϊ΢ϋ΢ڞ༗
    • ৬ೳ͝ͱͷि࣍KPT
    • ͬ͘͟͹ΒΜձ

    View full-size slide

  162. ৬ೳ͝ͱͷि࣍KPT
    • िʹ̍࣌ؒ ৬ೳϦʔμˍر๬ऀ͕ग़੮
    • લिʹ͋ͬͨ͜ͱΛڞ༗
    • ࠓि͋ΔΠϕϯτ/ࢪࡦͷڞ༗
    • ௚ۙ͋Δେ͖ΊͷΠϕϯτ/ࢪࡦͷڞ༗
    • ෆ۩߹ͷ಺༰ͱରԠ಺༰ͷڞ༗

    View full-size slide

  163. ৬ೳ͝ͱͷि࣍KPT
    • ಉ͡Α͏ͳ໰୊/՝୊ʹ௚໘͢Δࣄ͕…
    • ंྠͷ࠶ൃ໌Λ๷͙
    • ଞνʔϜ΁ͷܯࠂ

    View full-size slide

  164. ͬ͘͟͹ΒΜձ
    • ि࣍KPT͚ͩͰ͸͕࣌ؒ଍Γͳ͍େ͖Ίͷ

    τϐοΫΛ֤νʔϜͲͷΑ͏ʹ΍͍ͬͯΔ͔Λڞ༗
    • ৽نλΠτϧ্ཱͪ͛࣌΍ӡ༻։࢝௚ޙʹ։͔ΕΔࣄ͕ଟ͍
    • ֎෦αʔϏεͷ࿈ܞํ๏
    • AssetBundleͷӡ༻ํ๏
    • KPTͷ΍Γํ
    • etc

    View full-size slide

  165. ϊ΢ϋ΢ڞ༗ ·ͱΊ
    • ΞνʔϒϝϯτγʔτΛ࡞ͬͯଐਓੑͷՄࢹԽ
    • ଐਓੑΛແ͘͢Α͏λεΫͷׂΓৼΓ
    • ෛՙࢼݧͱো֐ରԠه࿥Ͱ

    ࣮ફͰͷܦݧ͕ੵΈͮΒ͍஌ࣝͷڞ༗
    • ि࣍KPTɺͬ͘͟͹ΒΜձ౳Λߦ͍

    νʔϜؒͰ΋ϊ΢ϋ΢Λڞ༗

    View full-size slide

  166. ·ͱΊ
    • தن໛νʔϜͷߏ੒
    • Ϛελʔσʔλӡ༻ͷͨΊͷࣗಈԽͷ࢓૊Έ
    • νʔϜ಺/νʔϜؒͰͷϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

    View full-size slide

  167. தن໛νʔϜΛࢧ͑ΔࣗಈԽͱ
    ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ
    ໘ന๏ਓΧϠοΫ ໼ਧྒྷհ@CEDEC2017

    View full-size slide

  168. ͝੩ௌ͋Γ͕ͱ͏

    ͍͟͝·ͨ͠

    View full-size slide

  169. ࢀߟURL
    • ๻ΒͷߕࢠԂϙέοτ ެࣜαΠτ
    • https://koshien-pocket.kayac.com/
    • Ωϯ೑Ϛϯ Ϛοεϧγϣοτ ެࣜαΠτ
    • http://muscleshot.jp/
    • ΧϠοΫืू ৬छ
    • https://www.kayac.com/recruit/career
    • FINAL FANTASY Record KeeperͷϚελʔσʔλΛࢧ͑Δٕज़
    • https://www.slideshare.net/dena_study/final-fantasy-record-keeper
    • ϞόΠϧήʔϜʹ͓͚ΔϚελʔσʔλӡ༻ࣄྫ
    • http://labs.gree.jp/blog/2015/12/15368/

    View full-size slide

  170. ࢀߟURL
    • docker
    • https://www.docker.com/
    • acidlemon/mirage
    • https://github.com/acidlemon/mirage
    • DockerͰඇΤϯδχΞͰ΋։ൃ؀ڥΛ্͛Լ͛Ͱ͖Δɺmirageͱ͍͏πʔϧΛ࡞Γ·ͨ͠
    • http://techblog.kayac.com/mirage
    • ιϑτ΢ΣΞσβΠϯ 2017೥ 02 ݄߸
    • https://www.amazon.co.jp/exec/obidos/ASIN/B01NBDY5L2
    • ιʔείʔυҎ֎΋ͱʹ͔͘ςετ͢Δɻ΋͘͠͸ΧόϨοδ͚ͩͰ͸μϝͩͱ͍͏࿩
    • http://www.songmu.jp/riji/entry/2014-12-25-test-anything.html
    • εΩϧϚοϓ࡞੒ͷ͢͢Ί
    • http://www.ryuzee.com/contents/blog/7065

    View full-size slide