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
710
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
Оптимизируем производительность блока Казначейство
lamodatech
0
880
return文におけるstd::moveについて
onihusube
1
1.4k
Findy Team+ Awardを受賞したかった!ベストプラクティス応募内容をふりかえり、開発生産性向上もふりかえる / Findy Team Plus Award BestPractice and DPE Retrospective 2024
honyanya
0
130
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
140
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
270
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
360
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
980
月刊 競技プログラミングをお仕事に役立てるには
terryu16
1
1.1k
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.3k
create_tableをしただけなのに〜囚われのuuid編〜
daisukeshinoku
0
330
Kaigi on Railsに初参加したら、その日にLT登壇が決定した件について
tama50505
0
140
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
44
13k
Documentation Writing (for coders)
carmenintech
67
4.5k
Scaling GitHub
holman
459
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Writing Fast Ruby
sferik
628
61k
We Have a Design System, Now What?
morganepeng
51
7.3k
GitHub's CSS Performance
jonrohan
1030
460k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Fireside Chat
paigeccino
34
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
171
50k
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 ʣ
ʻͬͨ͜ͱʼ ʣεςʔλεΛ࠶ཧ ʣ༏ઌ͚ ʣݟੵʹΑΔ͚۠ɾʮվળʯ͔Β֎͢அ νέοτͷఆظతͳϝϯςφϯεͱج४͚
มΘͬͨ͜ͱ
ɾվળνέοτͷফԽ্͕͕ͬͨʂ ɾνέοτ͕ཧ͞Εͯɺணखͷ༏ઌॱҐ͕͔Γ͘͢ͳͬͨʂ ɾ։ൃ෦͔ΒʮͬͱվળʹऔΓΈ͍ͨʂʯͱ্͕͕ͬͨ
·ͱΊ
·ͱΊ ɾʮվળʯແ͘ͳΒͳ͍ɻαʔϏε͕֦ு͍ͯ͘͠ͱڞʹ૿͑ଓ͚Δ ɾʮվળʯΛΔΒͳ͍ͷஅ৳͍͍͕ͯ͠ɺ ɹఆظతʹݟ͠Λߦ͍ɺ ɹͦͷλΠϛϯάͰ࠷৽ͷஅʹΞοϓσʔτ͍ͯͬͨ͠ํ͕͍͍ ɾཁΛཷΊࠐΈ͗͢Δͱɺ༏ઌ͕͔Βͳ͘ͳΔͷͰɺ ɹӨڹΛؑΈͯஅͰ͖Δج४Λ࡞Γɺɹ ɹৗʹࠓɺԿΛΔ͖͔ʁΛݟ͑ΔԽΛ͢Δ
ɾࣾͷ͔͚ɺϑϩʔඋେ
Ҏ্ʹͳΓ·͢ɻ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ