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
Yappliの「改善」はどのようにして進化を歩んだか / How has the plat...
Search
Megumi Nakamichi
October 04, 2022
Programming
0
860
Yappliの「改善」はどのようにして進化を歩んだか / How has the platform Yappli's "improvements" evolved?
Yappli Tech Conference 2022 の発表資料です。
▼イベントページ
https://yappli.connpass.com/event/259001/
Megumi Nakamichi
October 04, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
290
ニーリーにおけるプロダクトエンジニア
nealle
0
870
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
700
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
3
350
The Niche of CDK Grant オブジェクトって何者?/the-niche-of-cdk-what-isgrant-object
hassaku63
0
160
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
20
8.2k
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
280
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
590
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
120
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
270
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Typedesign – Prime Four
hannesfritz
42
2.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Speed Design
sergeychernyshev
32
1k
BBQ
matthewcrist
89
9.7k
Fireside Chat
paigeccino
37
3.5k
4 Signs Your Business is Dying
shpigford
184
22k
Gamification - CAS2011
davidbonilla
81
5.4k
Side Projects
sachag
455
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Transcript
Yappliの「改善」は どのようにして進化を歩んだか SESSION 09
גࣜձࣾϠϓϦ ϓϩμΫτ։ൃຊ෦։ൃاը෦։ൃσΟϨΫλʔ ಓѪඒ Megumi Nakamichi
INDEX 01 02 03 04 05 ࣗݾհɾܦྺ Yappliの開発について 気になること 対応したこと
まとめ
ࣗݾհɾܦྺ
ࣗݾհɾܦྺ ৽ଔͰ*5ϕϯνϟʔاۀʹೖࣾ͠ɺ σβΠϯۀࣗࣾΞϓϦ։ൃͷσΟϨΫλʔΛ୲ɻ ʢϝΠϯσβΠφʔͰ͕ͨ͠ɺ༷ࡦఆɾ2"ɾࠂ੍࡞ͳͲ͍Ζ͍Ζͬͯ·ͨ͠ɻʣ ͦͷޙɺʹϠϓϦʹೖࣾ͠ɺ ΫϥΠΞϯτͷΞϓϦ੍࡞ߦΛ୲͏ΞϓϦσβΠφʔͱͯ͠ैࣄɻ ʹϓϩμΫτ։ൃຊ෦ࣾҠಈɻ Ҏ߱ɺ։ൃσΟϨΫλʔͱͯ͠ɺʮվળʯʹಛԽͯ͠ରԠ͢ΔνʔϜʹଐɻ
վળҊ݅ͷ༷ݕ౼ࣾ։ൃϑϩʔͷඋͳͲΛ୲͏ɻ גࣜձࣾϠϓϦ ϓϩμΫτ։ൃຊ෦։ൃاը෦։ൃσΟϨΫλʔ ಓѪඒ Megumi Nakamichi ࢲͷؾ࣋ͪΛหͯ͠ ͨ·ʹग़ͯ͘Δࣗ࡞ΩϟϥͰ͢
ࣗݾհɾܦྺɹ-ɹݱࡏͷॴଐ෦ॺͷհ 1E.ۀͳͲͷ։ൃɾվળͷ΄͔ɺ ։ൃάϧʔϓͷϑϩʔݟ͠Έͮ͘ΓͳͲΛ୲ ʢ˞࣍ϖʔδͰৄࡉͷઆ໌͠·͢ʣ ։ൃʹ͓͚Δ্ྲྀఔΛ୲͏ɻ ։ൃσΟϨΫλʔͷଞʹɺ69σβΠφʔςΫχΧϧϥΠλʔ͕ ॴଐ͍ͯ͠Δ෦ॺ ։ൃσΟϨΫλʔ ։ൃاը෦
ࣗݾհɾܦྺɹ-ɹ։ൃσΟϨΫλʔͷࣄ ͳͲ ˒୲͢ΔϓϩδΣΫτվળͷσΟϨΫγϣϯɾࣾௐ ɹˠଞ෦ॺͱ࿈ܞͯ͠ɺ՝ɾχʔζͷੳཧɺ༷ͷௐΛߦ͏ ɹˠϦϦʔεޙͷϓϨεϦϦʔεɺࣾ֎ใ༻ͷOPUFهࣄ࡞ʢIUUQTOFXTZBQQMJDPKQNNGBʣ ˒։ൃʹ·ͭΘΔ༷ॻͷ࡞ ɹˠʮ:BQQMJʯϓϥοτϑΥʔϜͷͨΊɺडୗ։ൃͱҟͳΓɺ൚༻ੑ͕ߴ͍࡞Γʹͳ͍ͬͯΔɻ
ɹɹɹͦͷͨΊɺ༷ෳࡶԽ༷͘͢͠ॻ·ͱΊ͕ॏཁʹͳ͍ͬͯΔ ɾΞοϓσʔτͷࣾڞ༗ ɾܰඍͳෆ۩߹ɾվળରԠͷΈԽϑϩʔվળ ɾ։ൃاը෦͕اը͢ΔࣾΠϕϯτͷӡӦ
࣮ࢲɺͭͷ෦ॺΛ݉ͯ͠·͢ɻ ࣗݾհɾܦྺ ɹओ ɹɾϓϩμΫτ։ൃຊ෦։ൃاը෦։ൃσΟϨΫλʔ ɹ݉ ɹɾΧελϚʔαΫηεຊ෦ΞϓϦσβΠϯ෦ΞϓϦσβΠφʔ ɹɾϐʔϓϧˍΧϧνϟʔຊ෦ϦϨʔγϣϯγοϓɾϚωδϝϯτࣨ ɹɹʮҪળͷ৯ʯνʔϜӡ༻୲ʢ˞:BQQMJͰ࡞ɾӡ༻͍ͯ͠ΔࣗࣾΞϓϦʣ
ओɹɹɹɹɹɹɹɹ݉ ࣗݾհɾܦྺ ೖࣾ࣌ ΞϓϦσβΠφʔɹɹͳ͠ ΞϓϦσβΠφʔɹʮҪળͷ৯ʯνʔϜ ΞϓϦσβΠφʔɹɹ։ൃσΟϨΫλʔɺʮҪળͷ৯ʯνʔϜ ։ൃσΟϨΫλʔɹɹΞϓϦσβΠφʔɺʮҪળͷ৯ʯνʔϜ ʙ ʙ ʙ
ɾΞϓϦσβΠφʔʮ:BQQMJʯΛͬͯΞϓϦΛ࡞͢Δ෦ॺɻ ɹσβΠϯίϯςϯπೖߘΫϥΠΞϯτͷϨΫνϟʔӡ༻ߦͳͲ ɹΞϓϦ੍࡞ʙΧελϚʔαΫηε·ͰɺଟذʹΘͨΔ ɾΞϓϦσβΠφʔɺࣗࣾΛͬͯʑΞϓϦ੍࡞Λߦͳ͍ͬͯΔͷͰɺ ɹཁෆ۩߹ʹؾ͖͍ͮ͢ ɾࠓ·ͰվળͷཁΛग़͢ଆ͕ͩͬͨɺ ʮ:BQQMJΛ͏ଆͷܦݧΛ։ൃʹੜ͔͍ͨ͠ʂʯͱࢥ͍ɺ ɹ࣌ͷ্ʹ૬ஊͯ͠ɺ։ൃاը෦ࣾҠಈͨ͠ ɾ։ൃຊ෦ͱଞ෦ॺͱͷڮ͠Λ͍ͨͨ͠Ίɺࠓ݉Λଓ͚͍ͯΔ
ࣗݾհɾܦྺ - ։ൃσΟϨΫλʔʹͳͬͨഎܠ
TODAY TOPIC :BQQMJͷʮվળʯ ͲͷΑ͏ʹͯ͠ਐԽΛาΜ͔ͩ
:BQQMJͷ։ൃʹ͍ͭͯ
Yappli ͷ։ൃʹ͍ͭͯ ৽ن։ൃ ʢઓུతͳ։ൃʣ อक ʢෆ۩߹ରԠʣ վળ ʢϓϥοτϑΥʔϜڧԽʣ
ɾ$.4ΞϓϦʹدͤΒΕΔཁɾΞΠσΟΞɾٕज़ෛ࠴ͳͲΛ ɹ૯ධͯ͠ʮվળʯͱݺΜͰ͍Δ ɾʮվળʯͱ͍ͬͯɺܰඍͳจݴௐɾௐࠪɾ෦։ൃͳͲɺ ɹରԠൣғɾن͕༷ʑ ɾνέοτཧɺ+*3"Λ͍ͬͯΔ Yappli ͷ։ൃʹ͍ͭͯ - ʮվળʯͷઆ໌
ʮYappliʯͷ։ൃʹ͍ͭͯ - ʮվળʯͷྺ࢙ ʑɺػೳΫϥΠΞϯτ૿͍͑ͯ͘தͰɺࣾཁ૿͖͑ͯͨʂ ʮվળʯ͕ࣾͰఆண͠ɺશࣾతʹେͳจԽͷͭʹͳͬͨʂ ɾվળʹूதతʹऔΓΉʮ:BQQEBUF%BZʢϠοϓσʔτσʔʣʯ͕Ͱ͖ͨʂ ɾվળʹؔ͢ΔΞΠσΟΞΛશࣾʹ͚ͯϓϨθϯ͢ΔΠϕϯτʮϠϓϦΫʯ͕Ͱ͖ͨʂ
ɾࠓͷ݄ʹʮ:BQQEBUF%BZʯճΛܴ͑ͨʂ ɾʮϠϓϦΫʯશࣾһͷˋҎ্͕ࢀՃ͢ΔΠϕϯτʹͳͬͨʂ
ʮYappliʯͷ։ൃʹ͍ͭͯ - ʮվળʯͷྺ࢙ ʮվળʯʹ·ͭΘΔࣾΠϕϯτɺͦΕͧΕOPUFʹهࣄ͕͋Γ·͢ʂ ϠϓϦΫ IUUQTUJNFTZBQQMJDPKQOOEGBD :BQQEBUF%BZʢϠοϓσʔτσʔʣ IUUQTUJNFTZBQQMJDPKQOOEEGE
خ͍͜͠ͱ͕ଓ͘த ͢͜͠ؾʹͳΔ͜ͱग़͖ͯͨ
ؾʹͳΔ͜ͱ ʮվળʯࣾͰ׆ੑԽ͖ͯͯ͠ɺ͞·͟·ͳϦϦʔε͕͞ΕΔதɺ ͡Θ͡Θͱ૿͑ଓ͚Δະணखͷվળνέοτɻ ʹɺຕۙ͘ͷվળνέοτ͕ཌʹਃ͠ૹΓʹɻ ͜Μͳʹվળͯ͠ΔͷʹɺͲ͏ͯ͠ݮΒͳ͍ΜͩΖ͏ɾɾɾʁ Ͳ͏ͯ͠ɾɾɾɾɾɾɾ ɾɾɾɾɾ ɾɾɾ ɾɾ վળͬͯͬͯ
ऴΘΔؾ͕͠ͳ͍ʜ
ͷະணखνέοτൃ۷Λ͖͔͚ͬʹ վળνέοτͷݱঢ়ௐࠪʹ౿ΈΔ
ʮվળʯͷݟ͑ΔԽ STEP 1 ʮվળʯͷঢ়گੳ STEP 2 ɹͬͨ͜ͱ STEP 3
ʮվળʯͷݟ͑ΔԽ STEP 1 ʮվળʯͷঢ়گੳ STEP 2 ɹͬͨ͜ͱ STEP 3
ݱঢ়ΛѲ͢ΔͨΊʹɺ·ͣཹ͍ͯ͠ΔνέοτΛͯ͢ूܭʂ +*3"ΛεϓϨουγʔτʹు͖ग़ͯ͠ɺ εςʔλεผɾػೳผͳͲʹࡉ͔͘ྨͯ͠ɺશମΛݟ͑ΔԽͨ͠ɻ STEP1ɹʮվળʯͷݟ͑ΔԽ ͚۠ͱ͔ख࡞ۀͰɻ ܗ͕ຊʹେมͩͬͨʜ
ʮվળʯͷݟ͑ΔԽ STEP 1 ʮվળʯͷঢ়گੳ STEP 2 ɹͬͨ͜ͱ STEP 3
ʣணख్தʹԿΒ͔ͷཧ༝Ͱࢭ·ͬͯ͠·ͬͨνέοτ͕ਐߦ͍ͯ͠ͳ͍ ɹɾҰ൪ݹ͍νέοτͰɺ࡞ͷͷ͋ͬͨɻ ɹɾ04ؔͷνέοτɺ࠷৽04Ͱղফ͍ͯ͠Δ͕ɺνέοτະରԠͷ··Γଓ͚ͯ͠·͍ͬͯͨɻ ʣվળر͕ଟ͋͘ΓɺʮԿΛ༏ઌͯ͠ணखͨ͠Β͍͍ͷ͔ʁʯ ɹΤϯδχΞ͕͔Βͳ͍ঢ়ଶʹͳ͍ͬͯͨ ɹɾ͝Ζ·ͰɺࣾͷվળཁΛͯ͢վળνέοτԽ͍ͯͨͨ͠Ίɺ ɹɹʑɺཹνέοτ͕૿͑ଓ͚ͯ͠·ͬͨɻ ʣվળνέοτʹݟੵ͕ͳ͘ɺ։ൃن͕͔Βͳ͍ ɹɾنΛߟྀͤͣɺ͍ܰνέοτʙॏ͍νέοτ͕ͯ͢ಉ͡վળϘʔυʹ֨ೲ͞Ε͍ͯͨɻ
STEP2ɹʮվળʯͷঢ়گੳ
ʻঢ়گੳʼ ʣணख్தʹԿΒ͔ͷཧ༝Ͱࢭ·ͬͯ͠·ͬͨνέοτ͕ਐߦ͍ͯ͠ͳ͍ ʣվળر͕ଟ͋͘ΓɺԿΛ༏ઌͯ͠ணखͨ͠Β͍͍ͷ͔ʁ ɹΤϯδχΞ͕͔Βͳ͍ঢ়ଶʹͳ͍ͬͯͨ ʣվળνέοτʹݟੵ͕ͳ͘ɺ։ൃن͕͔Βͳ͍ ͜ΕΒ͕ɺվળνέοτ͕ݮΒͳ͍ݪҼͱԾఆ
ʮվળʯͷݟ͑ΔԽ STEP 1 ʮվળʯͷঢ়گੳ STEP 2 ɹͬͨ͜ͱ STEP 3
ʣεςʔλεͷ࠶ཧ ɹɾεςʔλε͕ɺྃ4501ʹͳ͍ͬͯͳ͍աڈνέοτΛɺ·ͱΊͯ֬ೝཧ ɹɾνέοτ࡞ͷݱࡏͷεςʔλε͕͔Γ͘͢ͳΔΑ͏ʹɺվળνέοτҰཡͷදࣔΛௐ ɹɾࢭ·͍ͬͯΔνέοτʹରͯ͠ɺ։ൃ୲ऀͷνέοτཧΛΞφϯεश׳Խ ʣ༏ઌ͚ ɹɾཁΞΠσΟΞͯ͢νέοτԽͤͣɺඞͣ։ൃσΟϨΫλʔͷΛ௨͔ͯ͠Βɺ ɹʮվળʯͰରԠՄೳͳͷ͚ͩΛνέοτԽɺͦΕҎ֎ผͷʹҠಈ͢ΔΑ͏ʹมߋ ɹɾ:BQQMJͰఏڙ͍ͯ͠Δ֤छػೳΛɺΞϓϦ੍࡞Ͱͷར༻සͰྨ͠ɺվળͷzӨڹzΛઃఆ ʣݟੵʹΑΔ͚۠ɾʮվળʯ͔Β֎͢அ
ɹɾ:BQQEBUF%BZͰରԠݕ౼ɹɹɹˠখنɹɹɹɹɹɹʢʙϲ݄Ҏʣ ɹɾϠϓϦΫͰରԠݕ౼ɹɹɹɹɹɹɹˠখنʙதن·ͰʢʙҎʣ ɹɾ-,;/ʢϥʔδվળʣɹɹɹɹɹɹˠେنҎ্ɹɹɹɹʢҎ্ʙʣ˞ʮվળʯ͔Β֎͢ STEP3ɹͬͨ͜ͱ
STEP3ɹͬͨ͜ͱ - JIRAϘʔυʢ Before ʣ
STEP3ɹͬͨ͜ͱ - JIRAϘʔυʢ After ʣ
ʻͬͨ͜ͱʼ ʣεςʔλεΛ࠶ཧ ʣ༏ઌ͚ ʣݟੵʹΑΔ͚۠ɾʮվળʯ͔Β֎͢அ νέοτͷఆظతͳϝϯςφϯεͱج४͚
มΘͬͨ͜ͱ
ɾվળνέοτͷফԽ্͕͕ͬͨʂ ɾνέοτ͕ཧ͞Εͯɺணखͷ༏ઌॱҐ͕͔Γ͘͢ͳͬͨʂ ɾ։ൃ෦͔ΒʮͬͱվળʹऔΓΈ͍ͨʂʯͱ্͕͕ͬͨ
·ͱΊ
·ͱΊ ɾʮվળʯແ͘ͳΒͳ͍ɻαʔϏε͕֦ு͍ͯ͘͠ͱڞʹ૿͑ଓ͚Δ ɾʮվળʯΛΔΒͳ͍ͷஅ৳͍͍͕ͯ͠ɺ ɹఆظతʹݟ͠Λߦ͍ɺ ɹͦͷλΠϛϯάͰ࠷৽ͷஅʹΞοϓσʔτ͍ͯͬͨ͠ํ͕͍͍ ɾཁΛཷΊࠐΈ͗͢Δͱɺ༏ઌ͕͔Βͳ͘ͳΔͷͰɺ ɹӨڹΛؑΈͯஅͰ͖Δج४Λ࡞Γɺɹ ɹৗʹࠓɺԿΛΔ͖͔ʁΛݟ͑ΔԽΛ͢Δ
ɾࣾͷ͔͚ɺϑϩʔඋେ
Ҏ্ʹͳΓ·͢ɻ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ