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

935fa3c3cfe0ae00d891c958864e3de1?s=47 Konboi
August 30, 2017

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

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

935fa3c3cfe0ae00d891c958864e3de1?s=128

Konboi

August 30, 2017
Tweet

Transcript

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

  2. Profile • ໼ਧྒྷհ a.k.a ˏKonboi • ໘ന๏ਓΧϠοΫ • ιʔγϟϧήʔϜࣄۀ෦ॴଐ •

    ٕज़෦ όοΫΤϯυΤϯδχΞ݉νʔϑ • Ωϯ೑ϚϯϚοεϧγϣοτͳͲΛ୲౰
  3. தن໛νʔϜΛࢧ͑ΔࣗಈԽ ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

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

  6. • ๻ΒͷߕࢠԂϙέοτ • γϦʔζྦྷܭ 600ສDL • ϓϨΠϠʔ͸̍ਓͷߴߍٿࣇ • ϓϨΠϠʔಉ࢜ͰνʔϜΛฤ੒ •

    ߕࢠԂग़৔/༏উΛ໨ࢦ͢ • Ωϯ೑Ϛϯ MUSCLESHOT • DeNA͞Μͱͷڠۀ • ݪ࡞Λ࠶ݱͨ͠ετʔϦʔ • ࠷େ̐ਓͷϦΞϧλΠϜ
 ڠྗότϧ
  7. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦

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


    ϓϩϞʔγϣϯ͸اը෦ॴଐ
 Ͱ͕͢આ໌ͷͨΊ෼͚͍ͯ·͢
  9. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦

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


    ɾσΟϨΫλʔ ɾϓϥϯφʔ ɾϨϕϧσβΠφʔ ɾϓϩδΣΫτϚωʔδϟʔ
  11. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦

  12. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾ6*σβΠφʔ

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

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

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

  16. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾΞηοτύΠϓϥΠϯߏங

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

  18. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾαʔόʔߏஙӡ༻

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

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

    ɾίϥϘاը
  21. اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ˒

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

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

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

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

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

    νϟοτπʔϧʹ͸Slack
  27. தن໛νʔϜΛࢧ͑ΔࣗಈԽ ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

  29. Ϛελʔσʔλͷ
 ӡ༻ϑϩʔࣗಈԽ

  30. • Ϛελʔσʔλ͸ߋ৽ͷස౓͕ߴ͍ • ΫΤετɺΩϟϥΫλʔɺΨνϟɺ etc ... • Ϛελʔσʔλͷߋ৽αΠΫϧ͕ૣ͍ • Ϣʔβʔ΁ఏڙͰ͖Δࢪࡦ͕૿͑Δ

    • ϏδωεతΠϯύΫτ͕େ͖͍ Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ
  31. Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ • ΧϠοΫͰ͸Ϛελʔσʔλͷ؅ཧʹ
 Google Spreadsheets(ҎԼ GSS)Λ࢖༻ • ൓өͷେ·͔ͳྲྀΕͱͯ͠ • ϓϥϯφʔɺϨϕϧσβΠφʔ͕GSSʹೖྗ

    • GSS͔ΒCSVܗࣜͰμ΢ϯϩʔυ • CSV͔ΒDB΁Πϯϙʔτ • ΫϥΠΞϯτ΁഑৴͕ඞཁͳ΋ͷ͸ม׵ͯ͠഑෍
  32. Why GSS ? • ϝϦοτ • ෳ਺ਓͰૢ࡞Մೳ • Πϯλʔωοτ͑͋͞Ε͹Ͳ͔͜ΒͰ΋ฤूՄೳ •

    ฤूͷཤྺ͕࢒Γɺ෮ݩ΋Մೳ • JavaScriptͰϓϥάΠϯͷهड़͕Մೳ
  33. Why GSS ? • σϝϦοτ • ࣜ΍ϓϥάΠϯΛ࢖༻͢Δͱ͙͢ॏ͘ͳΔ • ωοτͷ؀ڥ͕ͳ͍ͱߋ৽͕൓өͰ͖ͳ͍

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

  35. *% /BNF "UUBDL )1  ໦౛    ୹݋

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

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

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

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

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

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

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

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

       ϋϯϚʔ    φΠϑ    ދప    ଜӍ   ࡞ۀ͕িಥ (ࣄྫ) ࡞ۀͰ͖Δͷ͍ͭʹ ͳΔ΍Βʜ
  44. ΍͹͍

  45. ΍͹͍ • Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍ • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ
 ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ • ໰୊͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ

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

  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  ໦౛    ୹݋    ϋϯϚ ʔ    φΠϑ  
  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 L )1  ໦౛    ୹݋    ϋϯϚ ʔ    φΠϑ   *% /BN "UUB )1  ໦౛    ୹݋    ϋϯ    φΠ   *% /BN "UUB )1  ໦౛    ୹݋    ϋϯ    φΠ   *% /BN "UUB )1  ໦౛    ୹݋    ϋϯ    φΠ   *% /BN "UUB )1  ໦౛    ୹݋    ϋϯ    φΠ   *% /BNF "UUBD L )1  ໦౛    ୹݋    ϋϯϚ ʔ    φΠϑ  
  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 L )1  ໦౛    ୹݋    ϋϯϚ ʔ    φΠϑ  
  50. ·Δͬͱෳ੡ *% /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  ໦౛    ୹݋    ϋϯϚ    φΠϑ    άϩʔ    ϝϦέ  
  51. ղܾ

  52. ͠ͳ͔ͬͨ

  53. • ຊ൪Խ͞Εͨσʔλ͕ະ൓өͰ
 ڍಈ͕͓͔͘͠ͳΓΤϯδχΞ͕ௐࠪ͢Δ͜ͱ͕ଟൃ • ຊ൪Խ͞ΕͨσʔλΛฤूதͷγʔτ΁
 ൓ө͢Δ࡞ۀ΋Ұۤ࿑ • मਖ਼͕Ϧόʔτͯ͠͠·͏ࣄҊ΋… • ൓өʹϛε͕͋ͬͨ৔߹ͷϦΧόϦʔ͕େม

    ·Δͬͱෳ੡ ݁Ռ
  54. • Ϛελʔσʔλͷೖྗऀͷෛՙ͸গ͠Լ͕ͬͨ • ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ
 όοΫΤϯυΤϯδχΞͷෛՙ૿ ·Δͬͱෳ੡ ݁Ռ

  55. Ͳ͏͔ͨ͠

  56. GSSͷ෼ׂ

  57. GSS෼ׂ • ϕʔεͷGSS • σϓϩΠՄೳͳσʔλ͕ೖͬͨγʔτ • ։ൃ༻ͷGSS • ৽ن௥Ճ͍ͨ͠σʔλͷΈ௥Ճͨ͠γʔτ •

    ͜ΕΒͷ̎ͭͷγʔτΛ݁߹ͯ͠औΓࠐΉ
  58. *% /BNF "UUBDL )1  ໦౛    ୹݋

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

       ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1 *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   GSS෼ׂ
  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
  61. *% /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෼ׂ
  62. *% /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෼ׂ
  63. *% /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෼ׂ
  64. *% /BNF "UUBDL )1  ໦౛    ୹݋

       ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   *% /BNF "UUBDL )1  ໦౛    ୹݋    ϋϯϚʔ    φΠϑ   GSS෼ׂ
  65. *% /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  ދప    ଜӍ  
  66. GSS෼ׂ ࣮ࡍͷӡ༻ • GSS෼ׂऔΓࠐΈͷεΫϦϓτΛ༻ҙ • ※GSSࣗମʹ͜ͷ༷ͳػೳ͸͋Γ·ͤΜ • εΫϦϓτΛchat botܦ༝Ͱ࣮ߦͰ͖Δঢ়ଶʹ •

    ϓϥϯφʔ/ϨϕϧσβΠφʔ͸ChatͰσʔλ ͷऔΓࠐΈΛߦ͏
  67. GSS෼ׂ ࣮ࡍͷӡ༻ #BTF ෼ׂ

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

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

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

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

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

  73. GSS෼ׂ ࣮ࡍͷӡ༻

  74. GSS෼ׂ ࣮ࡍͷӡ༻

  75. • Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍ • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ
 ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ
 ˠ ඞཁͳγʔτΛࣗ෼Ͱ࡞੒͢Δ͚ͩ
 ଞࣾͷ࡞ۀΛ΄ͱΜͲҙࣝͤͣʹ࡞ۀՄೳʹ • ໰୊͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ


    ˠ ϕʔεͱͳΔγʔτΛमਖ਼͢Δ͚ͩͰOK GSS෼ׂ ࣮ࡍͷӡ༻
  76. • ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ
 όοΫΤϯυΤϯδχΞͷෛՙ૿
 ˠ ΄ͱΜͲͷ৔߹௥Ճ͞ΕͨσʔλΛௐࠪ͢Ε͹ղܾ • chatopsͰ΄ͱΜͲΤϯδχΞͷखΛआΓͳͯ͘΋Մೳʹ • εϓϨουγʔτͷ௥Ճ •

    σʔλͷऔΓࠐΈ • σʔλͷߋ৽ GSS෼ׂ ࣮ࡍͷӡ༻
  77. ͦΕ΋ଋͷؒ

  78. ৽ͨͳ՝୊

  79. ෳ਺ͷ։ൃ؀ڥͷχʔζ • ฒߦͯ͠࡞ۀ͕Ͱ͖Δ؀ڥʹͳͬͨ͜ͱͰ
 σʔλͷߋ৽εϐʔυ͕UP • ֬ೝ༻ͷ؀ڥ͕ෳ਺ඞཁʹ

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

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

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

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

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

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

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

  87. Ҏલͷ֬ೝ؀ڥ • ։͍͍ͯΔ؀ڥΛ୳͢ͷ͕஍ຯʹखؒ • ࠷ॳ͸֬ೝස౓͕গͳ͔͕ͬͨ
 ঃʑʹ૿͍͑ͯͬͨ • ։ൃͰ΋APIͷͭͳ͗ࠐΈ΍QAʹαʔόʔΛ
 ඞཁͱ͢ΔͨΊӨڹ͕େ͖͘ͳ͖ͬͯͨ

  88. docker × mirage 
 Λ࢖༻ͨ͠։ൃ؀ڥͷߏங

  89. What's docker ? • ίϯςφܕͱݴΘΕΔ
 ΞϓϦέʔγϣϯ࣮ߦ؀ڥ • Πϝʔδͱݺ͹ΕΔΞϓϦέʔγϣϯͷ਽ܗ ͔ΒΞϓϦέʔγϣϯΛߴ଎ʹىಈՄೳ
 


    ˞dockerʹؔͯ͠͸ࠓճ͸ৄ͘͠৮Ε·ͤΜ
  90. What's mirage ? • ήʔϜٕݚϝϯόʔ͕։ൃͨ͠ϛυϧ΢ΣΞ • subdomainͱbranch໊ΛηοτͰϦΫΤετ • ίϯςφΛىಈ͠ɺbranch৘ใ͕؀ڥม਺ͱͯ͠౉Δ •

    ίϯςφ಺ʹ౉͞ΕͨbranchͰΞϓϦέʔγϣϯΛىಈ • ࢦఆͨ͠υϝΠϯ໊ͰϦΫΤετ͢Δͱ
 ର৅ͷίϯςφ΁Proxy͢Δ
  91. What's mirage ? 8FC4FSWFS

  92. What's mirage ? 8FC4FSWFS

  93. What's mirage ? 8FC4FSWFS NJSBHF

  94. What's mirage ? 8FC4FSWFS NJSBHF

  95. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB

  96. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB

  97. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB HBDIB

  98. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO
 ϒϥϯνpYXFBQPO HBDIB

  99. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO
 ϒϥϯνpYXFBQPO HBDIB

  100. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO
 ϒϥϯνpYXFBQPO HBDIB pYXFBQPO

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

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

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

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

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

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

  107. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB HBDIB pYXFBQPO

  108. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB HBDIB pYXFBQPO

  109. What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB
 ϒϥϯνHBDIB HBDIB pYXFBQPO HBDIB

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

  111. docker × mirage • ֬ೝ༻ͷ؀ڥ͕ෳ਺ඞཁʹ
 ˠඞཁͳ࣌ʹɺඞཁͳ෼͚ͩ؀ڥ͕ىಈՄೳʹ ※ϚγϯϦιʔεͷ্ݶ͸͋Δ • ։͍͍ͯΔ؀ڥΛ୳͢ͷ͕஍ຯʹखؒ
 ˠ୭͕࢖͍ͬͯΔ͔֬ೝ͢Δඞཁ΋͍Βͳ͍


    ࣗ෼ͷඞཁͳ؀ڥΛඞཁͳཱ͚ͩͯΕ͹Α͍
  112. docker × mirage • chat bot ʹ͢Δ͜ͱͰ
 ؀ڥߏங΋ΤϯδχΞ͍Βͣ ※ Software

    Design 2017೥2݄߸ͷಛूͰ
 mirage΍͜ͷลͷ࿩Λॻ͍͍ͯ·͢[એ఻]
  113. ͜ΕͰશͯղܾʂ

  114. ͔ͱࢥ͍͖΍

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

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

  117. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘ • ෳ਺ͷΞΠςϜλΠϓ͕෇༩Ͱ͖ΔΑ͏ͳ
 Ϛελʔσʔλ͕͋Γ·ͨ͠ • item_type • item_id • item_amount

    • item_typeͰ͸
 Ϛωʔɺਫথɺ෢ث ༷ʑͳ΋ͷ͕ઃఆͰ͖·͢
  118. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘ • item_type: 1 Ϛωʔ • item_type: 2 ਫথ •

    item_type: 3 ෢ث • ͱఆٛ͞Ε͍ͯ·͢
  119. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘ • ϚωʔΛ1000͋͛Δࢪࡦ͕ܾఆ • item_type: 1 • item_id: 0 •

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

    item_amount: 1000 • ͱઃఆ͢Δͱ͜ΖΛ…
  121. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘ • ޡͬͯitem_typeΛ2(ਫথ)ͱࢦఆ • ೉͍͠ઃఆͰ͸ͳ͍ͷͰνʔϜνΣοΫ͚ͩͰ
 QAνΣοΫ͸εΩοϓ • ໰୊ͳ͘ΪϑτϘοΫεʹೖ͍ͬͯΔͷΛ֬ೝ • νʔϜνΣοΫ΋ແࣄ௨ա

    • ͦͷ··ɺσϓϩΠ͞Ε·ͨ͠
  122. ͱ͋ΔήʔϜӡ༻ͷҰ৔໘ • ࢪࡦ౰೔ • ͳ͔ͥ๭ܝࣔ൘΍twitter͕૽͕͍͠ • ֬ೝͯ͠ΞϓϦΛىಈͯ͠ϝοηʔδΛ։෧͢Δͱ • ͳ͔ͥਫথ͕1000ݸ෇༩͞ΕΔ •

    ճऩ͢Δͷ͔ɺͲ͏͢Δͷ͔… ϝϯςೖΕΔʁʁ
  123. ා͍Ͱ͢Ͷ

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

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

  126. ؓ࿩ٳ୊

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

  128. ϚελʔσʔλͷCI

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

  130. CIͬͯιʔείʔυʹ
 ΍Δ΋ͷ͡Όͳ͍ͷʁ

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

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


    ઃఆ͞Εͯͳ͍ͳ͔ͬͨώϠϦɾϋοτͷ࠶ൃ๷ࢭ ϚελʔσʔλͷCI
  133. • ઃఆ͞ΕͨΨνϟͱରԠ͢ΔϚΠϖʔδόφʔ͕
 ઃఆ͞Ε͍ͯΔ͔ • → Ψνϟ͚ͩ/όφʔ͚ͩ ઃఆ͞Ε͍ͯͨෆ۩߹ͷ
 ࠶ൃ๷ࢭࡦ • ෇༩ΞΠςϜʹਫথ͕ઃఆ͞Ε͍ͯΔ৔߹͸̑ݸҎ಺͔

    • → QAͰൃ֮ͨ͠ItemTypeϛεͷ࠶ൃ๷ࢭࡦ ϚελʔσʔλͷCI
  134. ϚελʔσʔλͷCI • ࣮ࡍͷςετίʔυ

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

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

  137. ϚελʔσʔλͷCI • JenkinsͰઐ༻ͷδϣϒΛઃఆ • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖͸
 ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ

  138. ϚελʔσʔλͷCI • JenkinsͰઐ༻ͷδϣϒΛઃఆ • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖͸
 ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ

  139. ࣗಈԽͷऔΓ૊Έ ·ͱΊ • GSSΛ෼ׂ͢Δ͜ͱͰෳ਺ਓ͕ฒߦͰฤूՄೳʹ • chat botͰ֤ਓ͕ΤϯδχΞͷखΛआΓͣʹ
 & ଴ͪ࣌ؒͳ͘σʔλͷ൓ө͕Մೳʹ •

    docker×mirageΛ࢖༻͢Δ͜ͱͰ֤ਓ͕
 ࣗ༝ʹ։ൃ/֬ೝͰ͖Δ؀ڥΛߏஙՄೳʹ • ϚελʔσʔλΛCI͢Δ͜ͱͰ҆શͳӡ༻ج൫Λߏங
  140. None
  141. தن໛νʔϜΛࢧ͑ΔࣗಈԽ ͱϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

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

  144. νʔϜ಺Ͱͷ
 ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

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

  147. Ξνʔϒϝϯτγʔτͱ͸ʁ • “୭”͕ɺ”Կ͕Ͱ͖Δͷ” ͔Λදʹͨ͠΋ͷ • ॎ࣠ʹλεΫ • ԣ࣠ʹνʔϜͷϝϯόʔ • λεΫͷଐਓੑΛແͨ͘͢ΊͷऔΓ૊ΈͷҰ؀

    • ࣅͨΑ͏ͳ΋ͷʹ εΩϧϚοϓɺ੕औද ͳͲ
  148. Ξνʔϒϝϯτγʔτͱ͸? • λεΫ • ॏཁ౓×ස౓ͰॏΈ෇͚͕͞Ε͍ͯΔ • ֤ϝϯόʔ͕Ͱ͖Δ/Ͱ͖ͳ͍Λೖྗ

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

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

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

  152. ϝϦοτ • ֤ϝϯόʔͷεΩϧͷݟ͑ΔԽ • ଐਓੑͷՄࢹԽ • λεΫͷৼΓ෼͚࣌ʹ୲౰ऀ͕
 ݻఆ͠ͳ͍Α͏ׂΓৼΔ • ଘࡏ͢ΔλεΫͷݟ͑ΔԽ/਺஋Խ

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

  154. σϝϦοτ • ࠷ॳ࡞Δ͕࣌େม • γʔτΛϝϯςφϯε͍ͯ͘͠ඞཁ͕͋Δ • ݱঢ়ͷӡ༻Ͱ͸ࣗ෼ͷओ؍Ͱ͚͍ͭͯΔ
 ΋ͷ΋͋ΔͷͰݫີͰ͸ͳ͍ • ओ໨త͕ଐਓੑͷՄࢹԽͷͨΊࠓͷͱ͜Ζ

    ໰୊ʹ͸ͳͬͯ͸͍ͳ͍
  155. Ξνʔϒϝϯτγʔτͷӡ༻ • ৽ػೳ͕௥Ճ͞ΕͨλΠϛϯά • ৽όʔδϣϯΛϦϦʔεͨ͠λΠϛϯά • ৽͍͠ਓ͕δϣΠϯͨ͠λΠϛϯά • etc •

    અ໨અ໨Ͱ֤νʔϜߋ৽Λߦ͍ͬͯΔ
  156. ෛՙࢼݧ

  157. ෛՙࢼݧ • όοΫΤϯυΤϯδχΞ޲͚ͷऔΓ૊Έ • ຊ൪؀ڥͱ͸ผʹ
 ຊ൪؀ڥͱಉ༷ͷ؀ڥΛߏங • ຊ൪ಉ༷ͷϢʔβʔͷϑϩʔͰ
 ର৅ͷαʔόʔʹෛՙΛ͔͚Δ

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

  159. ͳͥෛՙࢼݧʁ • ຊ൪؀ڥ͸ϦϦʔεޙ
 େ͖͘؀ڥΛม͑Δ͜ͱ͸গͳ͍ • σϓϩΠ΍ઃఆϑΝΠϧͷมߋ͚ͩͰ͸
 શ๴Λ೺Ѳ͠ʹ͍͘ • େ͖͘มߋ͠ͳ͍ͷͰ
 ຊ൪؀ڥΛ೺Ѳ͍ͯ͠Δϝϯόʔ͕ภͬͯ͠·͏

  160. ͳͥෛՙࢼݧʁ • ෛՙࢼݧͷ४උΛ௨ͯ͠ຊ൪؀ڥͷશମ૾Λ೺Ѳ • ࣗ෼ͰෛՙΛ͔͚Δ͜ͱʹΑͬͯ
 Ϣʔβʔͷಈ࡞͕Ͳ͏Өڹ͕͋Δͷ͔Λཧղ͢Δ

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

  162. ෛՙࢼݧ • ΧϠοΫͰ͸ো֐࣌͸جຊ
 ΠϯϑϥνʔϜͱόοΫΤϯυΤϯδχΞ͕୲౰ • ো֐ͷݪҼڀ໌/෮چ͸
 ࠷୹ͰͷରԠ͕ٻΊΒΕΔ • ΍ΕΔਓ/΍Γ׳ΕͯΔਓ͕ରԠ͢Δࣄ͕ଟ͘ͳΔ

  163. ো֐ରԠه࿥

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

    ো֐ରԠ͢Δ্Ͱͳʹ͕෼͔Βͳ͍ͷ͔
  165. ো֐ରԠه࿥ • Ͳ͏΍ͬͯো֐ͷ͋ͨΓΛ෇͚͍ͯΔͷ͔ • ௐࠪ࣌ʹԿΛݟ͍ͯΔͷ͔ • Կͷ஋ΛΈͯΔͷ͔ • ͲΜͳίϚϯυΛ࢖͍ͬͯΔ͔ •

    ͲΜͳίϚϯυΛ૊Έ߹ΘͤͯΔ͔ • etc
  166. ো֐ରԠه࿥ • ͲͷΑ͏ʹͯ͠ো֐ΛରԠ͔ͨ͠Λه࿥ • ͍ͭ • Կ͕ى͖ͨ • Өڹ͸ •

    Ͳ͏΍ͬͯݪҼΛಛఆͨ͠ • ͲͷΑ͏ʹͯ͠ରԠͨ͠
  167. ো֐ରԠه࿥

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


    Ͱ͖Δಛघೳྗతͳ෺͕ඞཁͩͱࢥ͍ͬͯ·ͨ͠
  169. νʔϜؒͰͷ
 ϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

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

    • ෆ۩߹ͷ಺༰ͱରԠ಺༰ͷڞ༗
  172. ৬ೳ͝ͱͷि࣍KPT • ಉ͡Α͏ͳ໰୊/՝୊ʹ௚໘͢Δࣄ͕… • ंྠͷ࠶ൃ໌Λ๷͙ • ଞνʔϜ΁ͷܯࠂ

  173. ͬ͘͟͹ΒΜձ • ि࣍KPT͚ͩͰ͸͕࣌ؒ଍Γͳ͍େ͖Ίͷ
 τϐοΫΛ֤νʔϜͲͷΑ͏ʹ΍͍ͬͯΔ͔Λڞ༗ • ৽نλΠτϧ্ཱͪ͛࣌΍ӡ༻։࢝௚ޙʹ։͔ΕΔࣄ͕ଟ͍ • ֎෦αʔϏεͷ࿈ܞํ๏ • AssetBundleͷӡ༻ํ๏

    • KPTͷ΍Γํ • etc
  174. ϊ΢ϋ΢ڞ༗ ·ͱΊ • ΞνʔϒϝϯτγʔτΛ࡞ͬͯଐਓੑͷՄࢹԽ • ଐਓੑΛແ͘͢Α͏λεΫͷׂΓৼΓ • ෛՙࢼݧͱো֐ରԠه࿥Ͱ
 ࣮ફͰͷܦݧ͕ੵΈͮΒ͍஌ࣝͷڞ༗ •

    ि࣍KPTɺͬ͘͟͹ΒΜձ౳Λߦ͍
 νʔϜؒͰ΋ϊ΢ϋ΢Λڞ༗
  175. ·ͱΊ • தن໛νʔϜͷߏ੒ • Ϛελʔσʔλӡ༻ͷͨΊͷࣗಈԽͷ࢓૊Έ • νʔϜ಺/νʔϜؒͰͷϊ΢ϋ΢ڞ༗ͷ࢓૊Έ

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

  177. ͝੩ௌ͋Γ͕ͱ͏
 ͍͟͝·ͨ͠

  178. Q&A

  179. ࢀߟ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/
  180. ࢀߟ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