日経電子版アプリ 穴のあいたバケツ開発

日経電子版アプリ 穴のあいたバケツ開発

140年の歴史を持つ会社の、高速内製アジャイル開発への挑戦

84b1af6e25bb32231d2de864353f4961?s=128

Taishi Takeichi

October 18, 2016
Tweet

Transcript

  1. 1 ೔ܦిࢠ൛ΞϓϦ݀ͷ͍͋ͨόέπ։ൃ ʙ೥ͷྺ࢙Λ࣋ͭձࣾͷɺߴ଎಺੡ΞδϟΠϧ։ൃ΁ͷ௅ઓʙ ೔ຊܦࡁ৽ฉࣾɹ෢ࢢେࢤ ΤϯλʔϓϥΠζΞδϟΠϧษڧձ

  2. 2 ࣗݾ঺հ ෢ࢢେࢤʢ5BJTIJ5BLFJDIJʣ ೥݄ੜ·Ε"#ܕࡕਆϑΝϯ ೔ຊܦࡁ৽ฉࣾσδλϧฤ੒ہฤ੒෦ ೔ܦిࢠ൛ϞόΠϧΞϓϦνʔϜͷϦʔμʔ ʢϓϩμΫτϚωʔδϟʔɾϓϩδΣΫτϚωʔδϟʔʣ

  3. 3 ࣗݾ঺հ େֶଔۀޙɺ̑೥΄Ͳ͸ɾɾɾ ೥ɺ8FC։ൃձࣾʹೖࣾ 8FCΤϯδχΞͱͯ͠ಇ͘ '9औҾͷ8FCΞϓϦ։ൃͳͲʹैࣄ ೥ɺ೔ຊܦࡁ৽ฉࣾ ຊࣾ ʹೖࣾ αʔϏε։ൃͷϞόΠϧΞϓϦνʔϜʹ഑ଐ

    J04ΞϓϦ։ൃʹैࣄɺͦͷޙϞόΠϧΞϓϦ։ൃશൠΛ୲౰
  4. 4 ೔ܦͱ͸ ৽ฉ ࡶࢽ ์ૹ σʔλ ΠϯσοΫε

  5. 5 ೔ຊܦࡁ৽ฉͱ͸ ɾ೔ܦͷϝΠϯϓϩμΫτ ɾ೥ʢ໌࣏೥ʣ஀ੜ ɹࠓ೥Ͱप೥ʂ ɾສ෦ൃߦ

  6. 6 ༗ྉձһʢ4,200ԁ/݄ʣ ໿48ສਓ ແྉձһ ໿300ສਓ ඇొ࿥ ໿2500ສUB ೔ܦిࢠ൛ͱ͸ ɾ2010೥3݄૑ץ ɾ݄ؒΞΫηε

    3ԯ݅ ɾຖ೔໿ 900 ຊͷهࣄΛ഑৴ ɾPCɾϞόΠϧαΠτɺ
 ɹiOS, Android ΞϓϦͳͲʹରԠ
  7. 7 ೔ܦిࢠ൛ͱ͸ ேץɾ༦ץ ೔ຊܦࡁ৽ฉͷ͢΂ͯͷهࣄ 8FCץ 8FCݶఆͷهࣄ .Zχϡʔε ޷͖ͳ࿈ࡌ΍ΩʔϫʔυͳͲΛ΋ͱʹύʔιφϥΠζ

  8. 8 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄ΢ΦονͳͲ

  9. 9 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄ΢ΦονͳͲ

  10. 10 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄ΢ΦονͳͲ

  11. 11 ిࢠ൛ΞϓϦ

  12. ࠓ೔͓࿩͍ͨ͜͠͠ͱ

  13. 13 ʮ݀ͷ͍͋ͨόέπʯ CZਂ௡و೭ࢯ

  14. 14 ऄޱΛଠ͘͢Δʹ ɾϓϩϞʔγϣϯ ɾΞΫΠδγϣϯ ɾ4&0ɾ෼ࢄܕϝσΟΞͳͲ ʮ݀ͷ͍͋ͨόέπʯ

  15. 15 όέπΛେ͖͘͢Δʹ ɾϚʔέοτن໛Λ֦େ ɾίϯςϯπΛ֦ॆɾແྉ։์ ɾ͓ࢼ͠ࢪࡦͳͲ ʮ݀ͷ͍͋ͨόέπʯ

  16. 16 όέπͷ݀Λ࠹͙ʹ ɾϦςϯγϣϯ ɾάϩʔεϋοΫ ɾϓϩμΫτͷϒϥογϡΞοϓͳͲ ʮ݀ͷ͍͋ͨόέπʯ

  17. 17 ଠ͍ऄޱΛશ։ʹͯ͠ਫΛྲྀͯ͠΋ɺ ɾখ͍͞όέπͰ͸͙͢ʹᷓΕͯ͠·͏ ɾ͕݀ͨ͘͞Μ͍͍͋ͯͨΒஷ·Βͳ͍ ࣮ߦͷॱ൪͕େࣄ

  18. 18 ࠓ೔͓࿩͍ͨ͜͠͠ͱ ɾΠέͯΔόέπ։ൃνʔϜΛ࡞ΔͨΊʹ΍ͬͨ͜ͱ ɾόέπΛେ͖͘͢ΔͨΊʹ΍ͬͨ͜ͱ ɾόέπͷ݀Λ࠹͙ͨΊʹ΍ͬͨ͜ͱ

  19. ΠέͯΔόέπ։ൃνʔϜΛ࡞Δ

  20. 20 ͜Ε·Ͱͷ։ൃ ɾ΢ΥʔλʔϑΥʔϧ։ൃ ɾ׬શ֎஫ ɾʮ஗ͯ͘ɺ͍͍ͪͪେ͖͍ϓϩδΣΫτʯ

  21. 21 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ

  22. 22 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ

  23. 23 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ ɾ࢓༷ɾཁ݅ఆٛॻ࡞੒ ɾࣾ಺આ໌ɾௐ੔ ɾ։ൃձࣾͱଧͪ߹Θͤɾൃ஫ॻ࡞੒ ɾςετέʔε࡞੒ ɾ࣮૷ ɾडೖςετɾσόοά ɾਃ੥ɾϦϦʔε

  24. 24 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ ɾϘλϯͻͱͭ௥Ճ͢Δ͚ͩͰɺ ɹͻͱͭͷϓϩδΣΫτʹͳͬͯ͠·͏ ɾૉૣ͘ੈʹఏڙ͠ɺϑΟʔυόοΫΛಘΔ͜ͱ͕Ͱ͖ͳ͍ ɾ։ൃ్தͰͷॊೈͳ࢓༷มߋ͕Ͱ͖ͳ͍ ɾٕज़తͳϊ΢ϋ΢͕ࣾ಺ʹͨ·Βͳ͍

  25. 25 όέπ։ൃʹٻΊΒΕΔ͜ͱ ɾ୹͍αΠΫϧͰͷϦϦʔεɺΞδϟΠϧ։ൃ ɾڝ߹ͷొ৔΍؀ڥͷมԽʹॊೈʹରԠ ɾऔҾίετͷ࠷খԽ ɾʮ଎ͯ͘ɺͳΔ΂͘খ͍͞ϓϩδΣΫτʯ

  26. 26 όέπ։ൃʹٻΊΒΕΔ͜ͱ ɾ୹͍αΠΫϧͰͷϦϦʔε ɾڝ߹ͷొ৔΍؀ڥͷมԽʹॊೈʹରԠ ɾऔҾίετͷ࠷খԽ ɾʮ଎ͯ͘ɺͳΔ΂͘খ͍͞ϓϩδΣΫτʯ ͦ͏ͩɺ಺੡Խ͠Α͏ʂ

  27. 27 Ͳ͔͜ΒखΛ͚ͭΔ͔ ɾϢʔβʔʹ͍ۙɺϑϩϯταΠυͷ։ൃΛ಺੡Խ ɾଞࣾʹઈରෛ͚ΒΕͳ͍΋ͷɺ೔ܦʹ͔͠࡞Εͳ͍΋ͷΛɺ ɹ֎ͷਓʹ࡞ͬͯ΋ΒͬͯͲ͏͢Δ

  28. ϓϩμΫτϚωʔδϟʔɿ1ਓ σβΠφʔɿ1ਓ iOSΤϯδχΞɿ3ਓ AndroidΤϯδχΞɿ3ਓ WebΤϯδχΞɿ2ਓ ʢQAɿ3ਓʣ 28 ϝϯόʔ σδλϧฤ੒ہʢ໿ਓʣ αʔϏε։ൃʢ໿ਓʣ

    ϞόΠϧΞϓϦνʔϜ
  29. 29 ϝϯόʔ ɾඞͣ͠΋ࣾһͰ͋Δඞཁ͸ͳ͍ ɾࣗ෼ࣄͱͯ͠ଊ͑ΒΕΔਓͳΒɺڠྗձࣾͷਓͰ΋͍͍

  30. 30 ֎෦ͷίϯαϧλϯτ ٕज़ސ໰ɿҏ౻௚࠸ࢯʢ!OBPZB@JUPʣ 6*69ίϯαϧλϯτɿਂ௡و೭ࢯʢ!qBEEJDUʣ ʙ

  31. 31 ໾ׂ෼ࢄͱνʔϜҙࣝ ɾਓϓϩμΫτ ɾ໾ׂΛ໌֬ʹɺ੹೚Λ໌֬ʹ ɾ໨ͷલͷϓϩμΫτ։ൃʹूதͰ͖Δ؀ڥ

  32. 32 ໾ׂ෼ࢄͱνʔϜҙࣝ ɾνʔϜͱͯ͠ڞ௨ͷΰʔϧΛ࣋ͭ ɾϓϩμΫτ͸ผͰ΋ɺ ɹαʔϏεͱͯ͠ಉ͡ํ޲Λ޲͘ ɾڞ༗͢΂͖ϊ΢ϋ΢͸ଞϓϩμΫτ΁దٓγΣΞ ɾνʔϜ໊Λ෇͚ͯΈͨΓ

  33. 33 ϓϩμΫτΦʔφʔΛ໌֬ʹ ɾ෦ॺͱͯ͠ͷܾఆݖͱ͸ผʹɺνʔϜ಺ͷܾఆݖΛ໌֬ʹ ɾܾఆݖΛ࣋ͭਓ͸ɺ࣌Λݟͯ൑அ͢Δ ɾϦʔμʔ͸͍ͯ΋ɺҙ֎ͱܾఆݖ͕ᐆດͩͬͨΓɺ ɹܾఆݖΛ࣋ͭਓ͕൑அ͠ͳ͔ͬͨΓ͢Δ ɾΞδϟΠϧ։ൃͰ͸൑அͷ࿈ଓɺຖ೔͕൑அ

  34. 34 πʔϧɾ؀ڥͷ੔උ ɾίϛϡχέʔγϣϯɾ৘ใڞ༗ ɾιʔε؅ཧ ɾܭଌ

  35. 35 -FU`Tίϛϡχέʔγϣϯʂ ɾ੮ସ͑ ɾேձ ɾिҰͷϓϩμΫτఆྫ ɾPO ʢ࣌ʹ͸ҿΈʹʣ

  36. 36 ʮ؅ཧͰ͸ͳ͘ࢧԉʯ ɾΤϯδχΞ͕։ൃʹूத͠΍͍͢؀ڥΛ ɾձٞ͸ͳΔ΂͘ݮΒͯ͠ɺ ɹπʔϧ΍੮ͰͷίϛϡχέʔγϣϯͰิ͏ ɾΤϯδχΞ͕ҙݟΛݴ͍΍͍ؔ͢܎ੑ ɾࣗΒͷגΛԼ͛Δߦҝ͸μϝμϝ

  37. 37 ࣾ಺Ͱ΋ࣾ֎Ͱ΋ϓϨθϯεΛ্͛Δ

  38. 38 ࣾ಺Ͱ΋ࣾ֎Ͱ΋ϓϨθϯεΛ্͛Δ

  39. όέπΛେ͖͘͢Δ

  40. 40 શ໘ϦχϡʔΞϧ

  41. 41 શ໘ϦχϡʔΞϧ ɾ೥݄ʹిࢠ൛ΞϓϦΛશ໘ϦχϡʔΞϧ ɾεΫϥονͰ಺੡։ൃ ɾ6*͚ͩͰͳ͘ɺίϯςϯπɾର৅Ϣʔβʔ΋֦େ

  42. 42 ୭Ͱ΋࢖͑ΔΞϓϦʹ ɾ༗ྉձһݶఆ ɾேץɾ༦ץ ɹʴ8FCץͷҰ෦ ɾແྉձһɺ·ͨ͸ ɹొ࿥ͯ͠ͳͯ͘΋Ұ෦ӾཡՄೳ ɾேץɾ༦ץ ɹʴ8FCץ͢΂ͯ ɾແྉձһͳΒແ৚݅Ͱ̍िؒɺ

    ɹશίϯςϯπɾશػೳ͕ ɹར༻Մೳʹ
  43. 43 ϖʔύʔϓϩτλΠϓ͔Βஸೡʹ ਂ௡͞ΜͱҰॹʹ͔݄͔͚ͯϓϩτλΠϓΛ࡞੒

  44. 44 Πϯϑϥ΋ॊೈʹ ΦϯϓϨ͔ΒΫϥ΢υ΁ S3 EC2 CloudFront SNS

  45. 45 "QQ4UPSFͷϕετ৽ண"QQʹ ɾ͓͢͢ΊͷτοϓΧςΰϦʹܝࡌ ɾτοϓΧςΰϦ๒ͰΠϯετʔϧ਺ܹ૿ ɾݱࡏ΋χϡʔεΧςΰϦͷ ɹϕετχϡʔε"QQʹ

  46. 46 ͨͩ͠ɺϦχϡʔΞϧ͸ਏ͍Ͱ͢

  47. 47 Πϯετʔϧ਺㱠৽نΞΫςΟϒϢʔβʔ਺ ɾΠϯετʔϧ਺෼ɺΞΫςΟϒϢʔβʔ͕૿͔͑ͨͱ͍͏ͱɾɾɾ ɾϦςϯγϣϯࢪࡦ͕ඞཁ ɾ૑ץҎདྷͷϓϩμΫτͷෛ࠴΋ղফ͠ͳ͚Ε͹

  48. όέπͷ݀Λ࠹͙

  49. 49 ஍ಓͳάϩʔεϋοΫ ɾϦςϯγϣϯͱ͸খ͍͞ΧΠθϯͷ܁Γฦ͠ ɾඞͣ͠΋৽ػೳ௥ՃͰ͸ͳ͍ ɾͰ΋ɺ୺͔ΒݟͯΔͱԿ΍ͬͯΔ͔Θ͔ΓͮΒ͍ʢࣾ಺ʣ

  50. 50 ʮ࣍͸Կ΍Δͷʁʯ ʮهࣄμ΢ϯϩʔυߴ଎ԽͰ͢ʢ͖Γͬʣʯ ʮ;ʔΜɻ͋ͱ͸ʁʯ ʮɾɾɾʯ

  51. 51 ৽ػೳ௥Ճ͹͔Γ΍ͬͯΔͱ͜͏ͳΔ ʢඦಙφΠϑɹCZਂ௡و೭ࢯʣ

  52. 52 ϞόΠϧΞϓϦνʔϜ͚ͩͰͰ͖Δ͜ͱ ɾىಈɾμ΢ϯϩʔυߴ଎Խ ɾαΫαΫͷૢ࡞ײ ɾσβΠϯɾ6*ΧΠθϯ ɾϢʔβʔΧελϚΠζػೳ ɾΞϓϦͷ҆ఆԽʢΫϥογϡϑϦʔ཰Ξοϓʣ

  53. 53 ϦϦʔεεέδϡʔϧ J04ిࢠ൛ "OESPJEిࢠ൛ J04ࢴ໘ "OESPJEࢴ໘ ϞόΠϧ8FC ϞόΠϧ"1*

  54. 54   ʢ,FZOPUFಈըͰ͢ɻ̍೥Ͱ͍͔ʹαΫαΫʹͳ͔͕ͬͨΘ͔Γ·͢ʣ

  55. 55 ϞόΠϧΞϓϦνʔϜ͚ͩͰͰ͖ͳ͍͜ͱ ɾଞνʔϜ؅׋ͷ"1*վम ɾίϯςϯπʹؔΘΔվम

  56. 56 શ֯ӳ਺ͷ൒֯ม׵

  57. 57 ϦϦʔε·Ͱͷεςοϓ ɾίϯςϯπ୲౰ऀʹݸผʹ૬ஊ ɾવΔ΂͖ձٞͰఏҊ ɾଞνʔϜͷ"1*ͰରԠՄೳ͔૬ஊ ɾ֬ೝ༻ͷϓϩτΞϓϦΛ࡞੒ ɾϓϩτΞϓϦΛΠϯετʔϧ࣮ͨ͠ػΛ̎୆༻ҙͯ͠ɺ ɹίϯςϯπ୲౰ऀʹ਺೔ؒ֬ೝͯ͠΋Β͏ɻஸೡͳσϞͰ৴པΛಘΔ ɾ0,͕ग़ͨͷͰ"1*ͷཁ݅Λ٧Ί࣮ͯ૷Λґཔ ɾϞόΠϧΞϓϦνʔϜͰ࠷ऴςετ

    ɾϦϦʔε
  58. 58 ͪΐͬͱ࿩୊ʹͳͬͨ

  59. 59 ͪΐͬͱ࿩୊ʹͳͬͨ

  60. 60 ਺஋ʹ௚݁͠ͳ͍ͱ͜ΖͰ΋۪௚ʹ

  61. 61 ੒Ռ ɾΞΫςΟϒϢʔβʔ਺͕ϦχϡʔΞϧ౰ॳ͔Β໿ഒʹ ɾϨϏϡʔͷධՁ΋্͕͖ͬͯͨ

  62. ՝୊

  63. 63 2"ͷෛ୲૿ ɾਝ଎ͳ։ൃମ੍Ͱ͋Δ͕Ώ͑ʹɺςετͷෛ୲͕૿͑ͨ ɾςετ͕ؒʹ߹ΘͣɺϦϦʔε͕஗ΕΔ͜ͱ΋ ɾॊೈͳ࢓༷มߋ͕2"ʹ఻Θ͍ͬͯͳ͍୯७ͳϛε΋

  64. 64 2"ͷෛ୲૿ ɾϢχοτςετ૿ɺFFςετ΋ ɾཁ݅ΛͳΔ΂͘γϯϓϧʹ ɾλεΫ؅ཧπʔϧͪΌΜͱ࢖͏ʴ΋ͬͱίϛϡχέʔγϣϯ

  65. 65 ͦ΋ͦ΋ԿΛ΍Δͷ͔ ɾϦχϡʔΞϧ౰ॳͷ࢒՝୊͸͍͍ͩͨ௵ͨ͠ ɾઈର΍Δ΂͖λεΫ΋ঃʑʹݮ͖ͬͯͨ ɾ࣍ʹԿΛ΍Ε͹͍͍ͷ͔

  66. 66 ΠϯϓοτΛ૿΍ͦ͏ ɾ͝ҙݟ͝ཁ๬ϑΥʔϜΛઃ͚ͯɺϢʔβʔͷཁ๬Λฉ͘ ɾ4UPSFͷϨϏϡʔ ɾνʔϜ಺΍ࣾ಺ɺਂ௡͞Μ͔ΒͷఏҊ ϦΞϧλΠϜͰTMBDL΁௨஌ʴ#BDLMPHʹλεΫͱͯ͠ొ࿥

  67. 67 աڈͷࢪࡦΛৼΓฦͬͯΈΔ

  68. 68 ݀ͷେ͖͞ͱ࠹͗΍͢͞ ɾॏཁ౓ʢ݀ͷେ͖͞ʣͱ ɹ΍Γ΍͢͞ʢ࠹͗΍͢͞ʣΛ࣠ʹ ɹࢪࡦҊΛϓϩοτ͢Δ ɾӈ্Λ࠷༏ઌλεΫͱͯ͠ɺ ɹ࣮૷͍ͯ͘͠

  69. 69 ٕज़తͳτϥΠ΋ ɾ3FBMNͷ࠾༻ ɾΦϑϥΠϯͰ΋χϡʔε͕ಡΊΔΑ͏ʹ ɾ8FCQϑΥʔϚοτͷ࠾༻ʢࢴ໘ϏϡʔΞʔΞϓϦʣ ɾαʔόʔϨεΞʔΩςΫνϟʢࢴ໘ϏϡʔΞʔΞϓϦʣ

  70. ·ͱΊͱ͜Ε͔Β

  71. 71 ·ͱΊ ɾ·ͣ͸ମ੍࡞Γ ɾ݀ͷۭ͍ͨόέπ͸ɺ࣮ߦͷॱ൪͕େࣄ ɾ஍ಓͳΧΠθϯ͸ઈରʹࢭΊͯ͸͍͚ͳ͍

  72. 72 ·ͱΊ ɾ·ͣ͸ମ੍࡞Γ ɾ݀ͷۭ͍ͨόέπ͸ɺ࣮ߦͷॱ൪͕େࣄ ɾ஍ಓͳΧΠθϯ͸ઈରʹࢭΊͯ͸͍͚ͳ͍ ɾ΋͏΍Δ͜ͱ͕ͳ͍ͱࢥͬͯ΋ɺͦΜͳ͜ͱ͸ͳ͍ ɾτϨϯυ΍पғͷ؀ڥ͸ɺΏͬ͘ΓͰ΋ৗʹಈ͍͍ͯΔ

  73. 73 ͜Ε͔Β ɾྑ͍จԽɾश׳ͷҡ࣋ͱԣల։ ɾͦΖͦΖऄޱΛଠ͘͢ΔͨΊʹͰ͖Δ͜ͱ ɾ஍ಓͳΧΠθϯ͸ઈରʹࢭΊͳ͍

  74. 74 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠