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
9k
日経電子版 レガシーな基礎の上に建つ旅館
taishiblue
15
7.2k
日経電子版 穴のあいたバケツ開発[加筆・修正版]
taishiblue
6
3.5k
日経電子版アプリが高速化のためにやったこと
taishiblue
16
9.9k
日経電子版 新聞アプリとしてのUI/UX
taishiblue
13
14k
Other Decks in Technology
See All in Technology
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
130
Reading Code Is Harder Than Writing It
trishagee
2
110
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
830
Perlの生きのこり - エンジニアがこの先生きのこるためのカンファレンス2025
kfly8
1
220
次世代KYC活動報告 / 20250219-BizDay17-KYC-nextgen
oidfj
0
360
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
150
デスクトップだけじゃないUbuntu
mtyshibata
0
550
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
180
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
130
AI エージェント開発を支える MaaS としての Azure AI Foundry
ryohtaka
6
630
RSNA2024振り返り
nanachi
0
620
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
260
Featured
See All Featured
Designing for humans not robots
tammielis
250
25k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
How STYLIGHT went responsive
nonsquared
98
5.4k
Embracing the Ebb and Flow
colly
84
4.6k
Typedesign – Prime Four
hannesfritz
40
2.5k
Scaling GitHub
holman
459
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Statistics for Hackers
jakevdp
797
220k
A Philosophy of Restraint
colly
203
16k
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 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠