Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
日経電子版アプリ 穴のあいたバケツ開発
Search
Taishi Takeichi
October 18, 2016
Technology
94
78k
日経電子版アプリ 穴のあいたバケツ開発
140年の歴史を持つ会社の、高速内製アジャイル開発への挑戦
Taishi Takeichi
October 18, 2016
Tweet
Share
More Decks by Taishi Takeichi
See All by Taishi Takeichi
日経電子版 プロダクトアウトからの脱却
taishiblue
10
10k
プロダクトマネジメントとは[新卒研修]
taishiblue
25
9.3k
日経電子版 レガシーな基礎の上に建つ旅館
taishiblue
15
7.3k
日経電子版 穴のあいたバケツ開発[加筆・修正版]
taishiblue
6
3.7k
日経電子版アプリが高速化のためにやったこと
taishiblue
16
10k
日経電子版 新聞アプリとしてのUI/UX
taishiblue
13
15k
Other Decks in Technology
See All in Technology
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
140
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
410
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
440
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.4k
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
3
540
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
150
サンドボックス技術でAI利活用を促進する
koh_naga
0
200
2025年になってもまだMySQLが好き
yoku0825
8
4.6k
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
370
roppongirb_20250911
igaiga
1
210
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
540
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Six Lessons from altMBA
skipperchong
28
4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Balancing Empowerment & Direction
lara
3
620
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
A designer walks into a library…
pauljervisheath
207
24k
We Have a Design System, Now What?
morganepeng
53
7.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Code Review Best Practice
trishagee
70
19k
Unsuck your backbone
ammeep
671
58k
A Tale of Four Properties
chriscoyier
160
23k
Transcript
1 ܦిࢠ൛ΞϓϦ݀ͷ͍͋ͨόέπ։ൃ ʙͷྺ࢙Λ࣋ͭձࣾͷɺߴΞδϟΠϧ։ൃͷઓʙ ຊܦࡁ৽ฉࣾɹࢢେࢤ ΤϯλʔϓϥΠζΞδϟΠϧษڧձ
2 ࣗݾհ ࢢେࢤʢ5BJTIJ5BLFJDIJʣ ݄ੜ·Ε"#ܕࡕਆϑΝϯ ຊܦࡁ৽ฉࣾσδλϧฤہฤ෦ ܦిࢠ൛ϞόΠϧΞϓϦνʔϜͷϦʔμʔ ʢϓϩμΫτϚωʔδϟʔɾϓϩδΣΫτϚωʔδϟʔʣ
3 ࣗݾհ େֶଔۀޙɺ̑΄Ͳɾɾɾ ɺ8FC։ൃձࣾʹೖࣾ 8FCΤϯδχΞͱͯ͠ಇ͘ '9औҾͷ8FCΞϓϦ։ൃͳͲʹैࣄ ɺຊܦࡁ৽ฉࣾ ຊࣾ ʹೖࣾ αʔϏε։ൃͷϞόΠϧΞϓϦνʔϜʹଐ
J04ΞϓϦ։ൃʹैࣄɺͦͷޙϞόΠϧΞϓϦ։ൃશൠΛ୲
4 ܦͱ ৽ฉ ࡶࢽ ์ૹ σʔλ ΠϯσοΫε
5 ຊܦࡁ৽ฉͱ ɾܦͷϝΠϯϓϩμΫτ ɾʢ໌࣏ʣੜ ɹࠓͰपʂ ɾສ෦ൃߦ
6 ༗ྉձһʢ4,200ԁ/݄ʣ 48ສਓ ແྉձһ 300ສਓ ඇొ 2500ສUB ܦిࢠ൛ͱ ɾ20103݄ץ ɾ݄ؒΞΫηε
3ԯ݅ ɾຖ 900 ຊͷهࣄΛ৴ ɾPCɾϞόΠϧαΠτɺ ɹiOS, Android ΞϓϦͳͲʹରԠ
7 ܦిࢠ൛ͱ ேץɾ༦ץ ຊܦࡁ৽ฉͷͯ͢ͷهࣄ 8FCץ 8FCݶఆͷهࣄ .Zχϡʔε ͖ͳ࿈ࡌΩʔϫʔυͳͲΛͱʹύʔιφϥΠζ
8 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄΦονͳͲ
9 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄΦονͳͲ
10 ిࢠ൛ͷϓϩμΫτ 1$αΠτ ϞόΠϧαΠτ ిࢠ൛ΞϓϦ ʢJ04"OESPJEʣ ࢴ໘ϏϡʔΞʔΞϓϦ ʢJ04"OESPJEʣ ଞɾ/*,,&*45:-&ɾ-JTT/ɾਓࣄΦονͳͲ
11 ిࢠ൛ΞϓϦ
ࠓ͓͍ͨ͜͠͠ͱ
13 ʮ݀ͷ͍͋ͨόέπʯ CZਂو೭ࢯ
14 ऄޱΛଠ͘͢Δʹ ɾϓϩϞʔγϣϯ ɾΞΫΠδγϣϯ ɾ4&0ɾࢄܕϝσΟΞͳͲ ʮ݀ͷ͍͋ͨόέπʯ
15 όέπΛେ͖͘͢Δʹ ɾϚʔέοτنΛ֦େ ɾίϯςϯπΛ֦ॆɾແྉ։์ ɾ͓ࢼ͠ࢪࡦͳͲ ʮ݀ͷ͍͋ͨόέπʯ
16 όέπͷ݀Λ࠹͙ʹ ɾϦςϯγϣϯ ɾάϩʔεϋοΫ ɾϓϩμΫτͷϒϥογϡΞοϓͳͲ ʮ݀ͷ͍͋ͨόέπʯ
17 ଠ͍ऄޱΛશ։ʹͯ͠ਫΛྲྀͯ͠ɺ ɾখ͍͞όέπͰ͙͢ʹᷓΕͯ͠·͏ ɾ͕݀ͨ͘͞Μ͍͍͋ͯͨΒஷ·Βͳ͍ ࣮ߦͷॱ൪͕େࣄ
18 ࠓ͓͍ͨ͜͠͠ͱ ɾΠέͯΔόέπ։ൃνʔϜΛ࡞ΔͨΊʹͬͨ͜ͱ ɾόέπΛେ͖͘͢ΔͨΊʹͬͨ͜ͱ ɾόέπͷ݀Λ࠹͙ͨΊʹͬͨ͜ͱ
ΠέͯΔόέπ։ൃνʔϜΛ࡞Δ
20 ͜Ε·Ͱͷ։ൃ ɾΥʔλʔϑΥʔϧ։ൃ ɾશ֎ ɾʮͯ͘ɺ͍͍ͪͪେ͖͍ϓϩδΣΫτʯ
21 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ
22 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ
23 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ ɾ༷ɾཁ݅ఆٛॻ࡞ ɾࣾઆ໌ɾௐ ɾ։ൃձࣾͱଧͪ߹Θͤɾൃॻ࡞ ɾςετέʔε࡞ ɾ࣮ ɾडೖςετɾσόοά ɾਃɾϦϦʔε
24 ϦϦʔε·Ͱʹ̎ि͔͔ؒͬͨྫ ɾϘλϯͻͱͭՃ͢Δ͚ͩͰɺ ɹͻͱͭͷϓϩδΣΫτʹͳͬͯ͠·͏ ɾૉૣ͘ੈʹఏڙ͠ɺϑΟʔυόοΫΛಘΔ͜ͱ͕Ͱ͖ͳ͍ ɾ։ൃ్தͰͷॊೈͳ༷มߋ͕Ͱ͖ͳ͍ ɾٕज़తͳϊϋ͕ࣾʹͨ·Βͳ͍
25 όέπ։ൃʹٻΊΒΕΔ͜ͱ ɾ͍αΠΫϧͰͷϦϦʔεɺΞδϟΠϧ։ൃ ɾڝ߹ͷొڥͷมԽʹॊೈʹରԠ ɾऔҾίετͷ࠷খԽ ɾʮͯ͘ɺͳΔ͘খ͍͞ϓϩδΣΫτʯ
26 όέπ։ൃʹٻΊΒΕΔ͜ͱ ɾ͍αΠΫϧͰͷϦϦʔε ɾڝ߹ͷొڥͷมԽʹॊೈʹରԠ ɾऔҾίετͷ࠷খԽ ɾʮͯ͘ɺͳΔ͘খ͍͞ϓϩδΣΫτʯ ͦ͏ͩɺԽ͠Α͏ʂ
27 Ͳ͔͜ΒखΛ͚ͭΔ͔ ɾϢʔβʔʹ͍ۙɺϑϩϯταΠυͷ։ൃΛԽ ɾଞࣾʹઈରෛ͚ΒΕͳ͍ͷɺܦʹ͔͠࡞Εͳ͍ͷΛɺ ɹ֎ͷਓʹ࡞ͬͯΒͬͯͲ͏͢Δ
ϓϩμΫτϚωʔδϟʔɿ1ਓ σβΠφʔɿ1ਓ iOSΤϯδχΞɿ3ਓ AndroidΤϯδχΞɿ3ਓ WebΤϯδχΞɿ2ਓ ʢQAɿ3ਓʣ 28 ϝϯόʔ σδλϧฤہʢਓʣ αʔϏε։ൃʢਓʣ
ϞόΠϧΞϓϦνʔϜ
29 ϝϯόʔ ɾඞͣࣾ͠һͰ͋Δඞཁͳ͍ ɾࣗࣄͱͯ͠ଊ͑ΒΕΔਓͳΒɺڠྗձࣾͷਓͰ͍͍
30 ֎෦ͷίϯαϧλϯτ ٕज़ސɿҏ౻࠸ࢯʢ!OBPZB@JUPʣ 6*69ίϯαϧλϯτɿਂو೭ࢯʢ!qBEEJDUʣ ʙ
31 ׂࢄͱνʔϜҙࣝ ɾਓϓϩμΫτ ɾׂΛ໌֬ʹɺΛ໌֬ʹ ɾͷલͷϓϩμΫτ։ൃʹूதͰ͖Δڥ
32 ׂࢄͱνʔϜҙࣝ ɾνʔϜͱͯ͠ڞ௨ͷΰʔϧΛ࣋ͭ ɾϓϩμΫτผͰɺ ɹαʔϏεͱͯ͠ಉ͡ํΛ͘ ɾڞ༗͖͢ϊϋଞϓϩμΫτదٓγΣΞ ɾνʔϜ໊Λ͚ͯΈͨΓ
33 ϓϩμΫτΦʔφʔΛ໌֬ʹ ɾ෦ॺͱͯ͠ͷܾఆݖͱผʹɺνʔϜͷܾఆݖΛ໌֬ʹ ɾܾఆݖΛ࣋ͭਓɺ࣌Λݟͯஅ͢Δ ɾϦʔμʔ͍ͯɺҙ֎ͱܾఆݖ͕ᐆດͩͬͨΓɺ ɹܾఆݖΛ࣋ͭਓ͕அ͠ͳ͔ͬͨΓ͢Δ ɾΞδϟΠϧ։ൃͰஅͷ࿈ଓɺຖ͕அ
34 πʔϧɾڥͷඋ ɾίϛϡχέʔγϣϯɾใڞ༗ ɾιʔεཧ ɾܭଌ
35 -FU`Tίϛϡχέʔγϣϯʂ ɾ੮ସ͑ ɾேձ ɾिҰͷϓϩμΫτఆྫ ɾPO ʢ࣌ʹҿΈʹʣ
36 ʮཧͰͳ͘ࢧԉʯ ɾΤϯδχΞ͕։ൃʹूத͍͢͠ڥΛ ɾձٞͳΔ͘ݮΒͯ͠ɺ ɹπʔϧ੮ͰͷίϛϡχέʔγϣϯͰิ͏ ɾΤϯδχΞ͕ҙݟΛݴ͍͍ؔ͢ੑ ɾࣗΒͷגΛԼ͛Δߦҝμϝμϝ
37 ࣾͰࣾ֎ͰϓϨθϯεΛ্͛Δ
38 ࣾͰࣾ֎ͰϓϨθϯεΛ্͛Δ
όέπΛେ͖͘͢Δ
40 શ໘ϦχϡʔΞϧ
41 શ໘ϦχϡʔΞϧ ɾ݄ʹిࢠ൛ΞϓϦΛશ໘ϦχϡʔΞϧ ɾεΫϥονͰ։ൃ ɾ6*͚ͩͰͳ͘ɺίϯςϯπɾରϢʔβʔ֦େ
42 ୭Ͱ͑ΔΞϓϦʹ ɾ༗ྉձһݶఆ ɾேץɾ༦ץ ɹʴ8FCץͷҰ෦ ɾແྉձһɺ·ͨ ɹొͯ͠ͳͯ͘Ұ෦ӾཡՄೳ ɾேץɾ༦ץ ɹʴ8FCץͯ͢ ɾແྉձһͳΒແ݅Ͱ̍िؒɺ
ɹશίϯςϯπɾશػೳ͕ ɹར༻Մೳʹ
43 ϖʔύʔϓϩτλΠϓ͔Βஸೡʹ ਂ͞ΜͱҰॹʹ͔݄͔͚ͯϓϩτλΠϓΛ࡞
44 Πϯϑϥॊೈʹ ΦϯϓϨ͔ΒΫϥυ S3 EC2 CloudFront SNS
45 "QQ4UPSFͷϕετ৽ண"QQʹ ɾ͓͢͢ΊͷτοϓΧςΰϦʹܝࡌ ɾτοϓΧςΰϦ๒ͰΠϯετʔϧܹ૿ ɾݱࡏχϡʔεΧςΰϦͷ ɹϕετχϡʔε"QQʹ
46 ͨͩ͠ɺϦχϡʔΞϧਏ͍Ͱ͢
47 Πϯετʔϧ㱠৽نΞΫςΟϒϢʔβʔ ɾΠϯετʔϧɺΞΫςΟϒϢʔβʔ͕૿͔͑ͨͱ͍͏ͱɾɾɾ ɾϦςϯγϣϯࢪࡦ͕ඞཁ ɾץҎདྷͷϓϩμΫτͷෛ࠴ղফ͠ͳ͚Ε
όέπͷ݀Λ࠹͙
49 ಓͳάϩʔεϋοΫ ɾϦςϯγϣϯͱখ͍͞ΧΠθϯͷ܁Γฦ͠ ɾඞͣ͠৽ػೳՃͰͳ͍ ɾͰɺ͔ΒݟͯΔͱԿͬͯΔ͔Θ͔ΓͮΒ͍ʢࣾʣ
50 ʮ࣍ԿΔͷʁʯ ʮهࣄμϯϩʔυߴԽͰ͢ʢ͖Γͬʣʯ ʮ;ʔΜɻ͋ͱʁʯ ʮɾɾɾʯ
51 ৽ػೳՃ͔ΓͬͯΔͱ͜͏ͳΔ ʢඦಙφΠϑɹCZਂو೭ࢯʣ
52 ϞόΠϧΞϓϦνʔϜ͚ͩͰͰ͖Δ͜ͱ ɾىಈɾμϯϩʔυߴԽ ɾαΫαΫͷૢ࡞ײ ɾσβΠϯɾ6*ΧΠθϯ ɾϢʔβʔΧελϚΠζػೳ ɾΞϓϦͷ҆ఆԽʢΫϥογϡϑϦʔΞοϓʣ
53 ϦϦʔεεέδϡʔϧ J04ిࢠ൛ "OESPJEిࢠ൛ J04ࢴ໘ "OESPJEࢴ໘ ϞόΠϧ8FC ϞόΠϧ"1*
54 ʢ,FZOPUFಈըͰ͢ɻ̍Ͱ͍͔ʹαΫαΫʹͳ͔͕ͬͨΘ͔Γ·͢ʣ
55 ϞόΠϧΞϓϦνʔϜ͚ͩͰͰ͖ͳ͍͜ͱ ɾଞνʔϜͷ"1*վम ɾίϯςϯπʹؔΘΔվम
56 શ֯ӳͷ֯ม
57 ϦϦʔε·Ͱͷεςοϓ ɾίϯςϯπ୲ऀʹݸผʹ૬ஊ ɾવΔ͖ձٞͰఏҊ ɾଞνʔϜͷ"1*ͰରԠՄೳ͔૬ஊ ɾ֬ೝ༻ͷϓϩτΞϓϦΛ࡞ ɾϓϩτΞϓϦΛΠϯετʔϧ࣮ͨ͠ػΛ̎༻ҙͯ͠ɺ ɹίϯςϯπ୲ऀʹؒ֬ೝͯ͠Β͏ɻஸೡͳσϞͰ৴པΛಘΔ ɾ0,͕ग़ͨͷͰ"1*ͷཁ݅Λ٧Ί࣮ͯΛґཔ ɾϞόΠϧΞϓϦνʔϜͰ࠷ऴςετ
ɾϦϦʔε
58 ͪΐͬͱʹͳͬͨ
59 ͪΐͬͱʹͳͬͨ
60 ʹ݁͠ͳ͍ͱ͜ΖͰ۪ʹ
61 Ռ ɾΞΫςΟϒϢʔβʔ͕ϦχϡʔΞϧॳ͔Βഒʹ ɾϨϏϡʔͷධՁ্͕͖ͬͯͨ
՝
63 2"ͷෛ୲૿ ɾਝͳ։ൃମ੍Ͱ͋Δ͕Ώ͑ʹɺςετͷෛ୲͕૿͑ͨ ɾςετ͕ؒʹ߹ΘͣɺϦϦʔε͕ΕΔ͜ͱ ɾॊೈͳ༷มߋ͕2"ʹΘ͍ͬͯͳ͍୯७ͳϛε
64 2"ͷෛ୲૿ ɾϢχοτςετ૿ɺFFςετ ɾཁ݅ΛͳΔ͘γϯϓϧʹ ɾλεΫཧπʔϧͪΌΜͱ͏ʴͬͱίϛϡχέʔγϣϯ
65 ͦͦԿΛΔͷ͔ ɾϦχϡʔΞϧॳͷ՝͍͍ͩͨ௵ͨ͠ ɾઈରΔ͖λεΫঃʑʹݮ͖ͬͯͨ ɾ࣍ʹԿΛΕ͍͍ͷ͔
66 ΠϯϓοτΛ૿ͦ͏ ɾ͝ҙݟ͝ཁϑΥʔϜΛઃ͚ͯɺϢʔβʔͷཁΛฉ͘ ɾ4UPSFͷϨϏϡʔ ɾνʔϜࣾɺਂ͞Μ͔ΒͷఏҊ ϦΞϧλΠϜͰTMBDL௨ʴ#BDLMPHʹλεΫͱͯ͠ొ
67 աڈͷࢪࡦΛৼΓฦͬͯΈΔ
68 ݀ͷେ͖͞ͱ࠹͗͢͞ ɾॏཁʢ݀ͷେ͖͞ʣͱ ɹΓ͢͞ʢ࠹͗͢͞ʣΛ࣠ʹ ɹࢪࡦҊΛϓϩοτ͢Δ ɾӈ্Λ࠷༏ઌλεΫͱͯ͠ɺ ɹ࣮͍ͯ͘͠
69 ٕज़తͳτϥΠ ɾ3FBMNͷ࠾༻ ɾΦϑϥΠϯͰχϡʔε͕ಡΊΔΑ͏ʹ ɾ8FCQϑΥʔϚοτͷ࠾༻ʢࢴ໘ϏϡʔΞʔΞϓϦʣ ɾαʔόʔϨεΞʔΩςΫνϟʢࢴ໘ϏϡʔΞʔΞϓϦʣ
·ͱΊͱ͜Ε͔Β
71 ·ͱΊ ɾ·ͣମ੍࡞Γ ɾ݀ͷۭ͍ͨόέπɺ࣮ߦͷॱ൪͕େࣄ ɾಓͳΧΠθϯઈରʹࢭΊ͍͚ͯͳ͍
72 ·ͱΊ ɾ·ͣମ੍࡞Γ ɾ݀ͷۭ͍ͨόέπɺ࣮ߦͷॱ൪͕େࣄ ɾಓͳΧΠθϯઈରʹࢭΊ͍͚ͯͳ͍ ɾ͏Δ͜ͱ͕ͳ͍ͱࢥͬͯɺͦΜͳ͜ͱͳ͍ ɾτϨϯυपғͷڥɺΏͬ͘ΓͰৗʹಈ͍͍ͯΔ
73 ͜Ε͔Β ɾྑ͍จԽɾश׳ͷҡ࣋ͱԣల։ ɾͦΖͦΖऄޱΛଠ͘͢ΔͨΊʹͰ͖Δ͜ͱ ɾಓͳΧΠθϯઈରʹࢭΊͳ͍
74 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠