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
広告配信管理システムを支えるPHP - レガシーシステムからの段階的移行戦略 / phpcon...
Search
Kenta Suzuki
October 08, 2017
Technology
10
20k
広告配信管理システムを支えるPHP - レガシーシステムからの段階的移行戦略 / phpcon2017
。PHPカンファレンス2017での発表資料です。
Kenta Suzuki
October 08, 2017
Tweet
Share
More Decks by Kenta Suzuki
See All by Kenta Suzuki
Go at fluct
suzuken
0
4k
小さな機能、大きな仕事 PHPカンファレンス沖縄2019 / phpcon-okinawa-2019
suzuken
2
2.2k
ADエンジニアがみたre:Invent 2018
suzuken
0
5.3k
ディスプレイ広告の基礎とセキュリティ
suzuken
18
3.9k
How to use AWS Lambda in Document Processing Pipeline
suzuken
0
3.8k
Other Decks in Technology
See All in Technology
日本語プログラミングとSpring Bootアプリケーション開発 #kanjava
yusuke
2
350
まだ間に合う! エンジニアのための生成AIアプリ開発入門 on AWS
minorun365
PRO
3
290
Tokyo RubyKaigi 12 - Scaling Ruby at GitHub
jhawthorn
2
220
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
460
extensionとschema
yahonda
1
110
Site Reliability Engineering on Kubernetes
nwiizo
6
4.5k
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
19
7k
Grid表示のレイアウトで Flow layoutsを使う
cffyoha
1
150
ChatGPTを使ったブログ執筆と校正の実践テクニック/登壇資料(井田 献一朗)
hacobu
1
170
AWSでRAGを実現する上で感じた3つの大事なこと
ymae
1
220
パフォーマンスとコスト改善のために法人データ分析基盤をBigQueryに移行した話
seiya303
1
110
Amazon Location Serviceを使ってラーメンマップを作る
ryder472
2
170
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Adopting Sorbet at Scale
ufuk
74
9.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
A better future with KSS
kneath
238
17k
It's Worth the Effort
3n
184
28k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
The Invisible Side of Design
smashingmag
299
50k
Side Projects
sachag
452
42k
Writing Fast Ruby
sferik
628
61k
Gamification - CAS2011
davidbonilla
80
5.1k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Transcript
ࠂ৴ཧγεςϜ Λࢧ͑Δ1)1 ϨΨγʔγεςϜ͔Βͷஈ֊తҠߦઓུ !TV[V@W70:"(&(3061 QIQDPO
ࢲʹ͍ͭͯ ͚ͣ͢ΜHJUIVCTV[VLFO!TV[V@W qVDU441IUUQTqVDUKQΛ࡞͍ͬͯ·͢ BKJUPGNͱ͍͏ϙουΩϟετΛ͍ͬͯ·͢
͜Μͳέʔεɺ͋Γ·ͤΜ͔ʁ ݪҼΛ͑ͳ͍ϩάʮॲཧ͕ਖ਼ৗʹྃ͠·ͤΜͰͨ͠ʯ ʹΑͬͯॻ͔ΕํͷҟͳΔίʔυͨͪ ͳͥಈ͍͍ͯΔͷ͔Θ͔Βͳ͍͕ଟಈ͍͍ͯΔ શମΛѲͰ͖ͳ͍͘Β͍ҭͬͯ͠·ͬͨ ͦͯ͠ɺ͜ΕΒͷίʔυՁ͕͋ΔʢʹՔ͍Ͱ͍Δʣ
IUUQTVQMPBEXJLJNFEJBPSHXJLJQFEJBDPNNPOTC+FOHB@EJTUPSUFEKQH
Ձ͋ΔίʔυΛ ΑΓྑ͍ͨ͘͠
ΞδΣϯμ എܠɺݱঢ়ɺن ݻΊྫ֎ج൫ͱϞχλϦϯά վળίʔυΛফ͢ɺίʔσΟϯάΨΠυϥΠϯ ·ͱΊ
ݱঢ়ͷྑ͍ѱ͍ w ྑ͍Ձग़ͯ͠Δɾςετ͋Δ w ѱ͍ػೳՃʹ͕͔͔࣌ؒΔɾϝϯςφϯε ͮ͠Β͍ɾಡΈͮΒ͍
ن w Ϟσϧ w ίϯτϩʔϥ w ςʔϒϧ w ։ൃظؒ͝Ζ͔Β w
ςετΫϥεɻओʹϞσϧͱࣗࣾϥΠϒϥ Ϧ͚ɺͦͷଞʹओཁػೳͷ౷߹ςετ͕͋Δɻ
ͦΕͰෳࡶʹͳΔʜ ୯ମςετɺ౷߹ςετͯ͢$*Ͱࣗಈ࣮ߦ͞ΕΔ ίʔυϨϏϡʔ͞Εͳ͚ΕNBTUFSʹϚʔδ͠ͳ ͍ɻςετͷແ͍ίʔυ΄΅Ϛʔδ͞Εͳ͍ɻ ϦϞʔτϒϥϯν͝ͱʹ֬ೝ༻ཧը໘্ཱ͕͕ͪ Δɻ֬ೝ͍͢͠ɻ
Լ४උ w ੩తղੳͰେ·͔ʹෳࡶͦ͏ͳͱ͜ΖΛݟ͚ͭΔ QIQNE QIQDQE QIQEDE 1)1@$PEF4OJ⒏FS QIBOFUD w
ͦͯ͠HSFQͰॏෳίʔυΛચ͍ग़͢
ಥવͰ͕͢͜Μͳίʔυ͕ Օॴ͋Γ·ͨ͠
ಥવͰ͕͢͜Μͳίʔυ͕ Օॴ͋Γ·ͨ͠ ϩάΤϥʔը໘ಉ͡ϝοηʔδ ͱΓ͋͑ͣϧʔτྫ֎ΛUISPX ͦͯ͠ϧʔτྫ֎ͰDBUDI
ಥવͰ͕͢͜Μͳίʔυ͕ Օॴ͋Γ·ͨ͠ ϩάΤϥʔը໘ಉ͡ϝοηʔδ /05*$&5 &YDFQUJPOXJUINFTTBHFૢ࡞͕ෆਖ਼Ͱ͢ JOQBUIUPGPPQIQ ը໘ग़ྗ ϩά
ಥવͰ͕͢͜Μͳίʔυ͕ Օॴ͋Γ·ͨ͠ ϩάΤϥʔը໘ಉ͡ϝοηʔδ /05*$&5 &YDFQUJPOXJUINFTTBHFૢ࡞͕ෆਖ਼Ͱ͢ JOQBUIUPGPPQIQ ը໘ग़ྗ ϩά Կ͕͏·͍͔͘ͳ͔ͬͨͷ͔
Θ͔Βͳ͍ා͍
ݪҼΛ͑ͳ͍ϩάʮॲཧ͕ਖ਼ৗʹྃ͠·ͤΜͰͨ͠ʯ ʹΑͬͯॻ͔ΕํͷҟͳΔίʔυͨͪ ͳͥಈ͍͍ͯΔͷ͔Θ͔Βͳ͍͕ଟಈ͍͍ͯΔ શମΛѲͰ͖ͳ͍͘Β͍ҭͬͯ͠·ͬͨ ͦͯ͠ɺ͜ΕΒͷίʔυՁ͕͋ΔʢʹՔ͍Ͱ͍Δʣ ࠶ܝ͜Μͳέʔεɺ͋Γ·ͤΜ͔ʁ
ΞδΣϯμ എܠɺݱঢ়ɺن ݻΊྫ֎ج൫ͱϞχλϦϯά վળίʔυΛফ͢ɺίʔσΟϯάΨΠυϥΠϯ ·ͱΊ
ྫ֎ͱϋϯυϦϯά ΞϓϦέʔγϣϯϕʔεྫ֎Λఆٛ͢Δ ΞϓϦέʔγϣϯάϩʔόϧͳྫ֎ϋϯυϥΛ ࣮IUUQQIQOFUTFU@FYDFQUJPO@IBOEMFS ϩΪϯάͱΤϥʔදࣔΛ͍͍ײ͡ʹ͢Δ
TFU@FYDFQUJPO@IBOEMFS ྫ֎ා͘ͳ͍
1)1ͷඪ४ྫ֎ΞϓϦέʔγϣϯϕʔεྫ֎ʹ͍Εͳ͍ 'MVDU5ISPXBCMFΠϯλϑΣʔεʹͯ͠ඪ४ྫ֎Ωϟο νͰ͖ΔΑ͏ʹ͠Α͏͔ʁͱߟ͕͑ͨΊͨ ݁Ռ'MVDU&YDFQUJPOͰDBUDI͢ΕΑ͠ɻγϯϓϧɻ a&YDFQUJPO JNQMFNFOUT5ISPXBCMF 'MVDU&YDFQUJPO ΞϓϦέʔγϣϯϕʔεྫ֎ 1)1ͷϧʔτྫ֎ #BE3FRVFTU
&YDFQUJPO 6O"VUIPSJ[FE &YDFQUJPO 'MVDU3VOUJNF &YDFQUJPO ʜ FYUFOET FYUFOET ΞϓϦέʔγϣϯϕʔεྫ֎֊
ΞϓϦέʔγϣϯϕʔεྫ֎ Ϣʔβ͚ʹ දࣔ͢Δϝοηʔδ ϧʔτྫ֎
None
ྫ֎ಋೖલͦͷ͠ͷ͗ͷϩΪϯάͱΤϥʔϖʔδදࣔ ྫ֎ಋೖޙྫ֎ΛUISPX͢Ε0,
ྫ֎ίʔυʹΑͬͯ )551ϨεϙϯείʔυΛม͑Δ Τϥʔද͍͍ࣔײ͡ʹΔ ʢςϯϓϨʔτίϯςφ͔Βࠩ͠ࠐΉʣ ྫ֎ϋϯυϥ ελοΫτϨʔε ϩάʹՃ
Τϥʔϖʔδग़ྗͱϩΪϯά͕ڞ௨Խ͞ΕͨͷͰ USZDBUDIͷॏෳίʔυΛ҆શʹআՄೳʹ
ϞχλϦϯά /FX3FMJD"1.
/FX3FMJD&SSPST
ϞχλϦϯά/FX3FMJD࠾༻ ྫ֎ج൫Λͭͬͨ͘͜ͱͰɺͲͷը໘Ͱ͍ͭͲΜ ͳྫ֎͕ͲΕ͘Β͍ൃੜ͔ͨ͠Θ͔Γ͘͢ͳͬͨ /FX3FMJDΞϥʔτʹؚ·ΕΔใ͕ྫ֎Λϕʔ εʹ͓ͯ͠ΓɺͷΓ͚͕͘͢͠ͳͬͨ ͍ΫΤϦɺ͍ը໘Θ͔ΔΑ͏ʹͳΓʮ͜͜ ΛΈΕඞཁͳใू·͍ͬͯΔʯঢ়ଶʹͳͬͨ
ΞδΣϯμ എܠɺݱঢ়ɺن ݻΊྫ֎ج൫ͱϞχλϦϯά վળίʔυΛফ͢ɺίʔσΟϯάΨΠυϥΠϯ ·ͱΊ
࠶ܝ͜Μͳέʔεɺ͋Γ·ͤΜ͔ʁ ݪҼΛ͑ͳ͍ϩάʮॲཧ͕ਖ਼ৗʹྃ͠·ͤΜͰͨ͠ʯ ʹΑͬͯॻ͔ΕํͷҟͳΔίʔυͨͪ ͳͥಈ͍͍ͯΔͷ͔Θ͔Βͳ͍͕ଟಈ͍͍ͯΔ શମΛѲͰ͖ͳ͍͘Β͍ҭͬͯ͠·ͬͨ ͦͯ͠ɺ͜ΕΒͷίʔυՁ͕͋ΔʢʹՔ͍Ͱ͍Δʣ
1IQ4UPSN w 1)1͚ͩͲɺ1)1͡Όͳ͘ͳΓ·͢ w ͷ͍͢͝ڧ͍*OTQFDUJPOػೳɻ!QSPQFSUZ !WBSͰڍಈΛյͣ͞ܕΛ͚ͭΒΕ·͢ɻ w EFBEDPEFআSFGBDUPSJOHʹେ׆༂ɻνʔϜ Ͱͬͯ·͢ɻ
એIUUQTBKJUPGN
1)1ʜ w QIQDT QIQDDͰચ͍ग़ͭͭ͠جຊ1)1Ϛ χϡΞϧΛಡΜͰॗʑͱ͢ w ͳʹ͔͋Ε/FX3FMJDͰΘ͔Δ w ϑϨʔϜϫʔΫͷίΞ1)1͚ʹमਖ਼ QIQDTTUBOEBSE1)1$PNQBUJCJMJUZMJC
ࢀߟIUUQFO[PMVUJPOTDPNBSUJDMFTIPXUPDIFDLQIQDPNQBUJCJMJUZ
ͲΜͲΜফ͢ w (PPHMF"OBMZUJDTͰͬͯͳ͍ը໘Λ୳Δ ୲ ऀʹௌ͍͔ͯ֬ΊΔɻͬͯͳ͍ͳΒ·Δͬ ͱফ͢ w VOVTFEDPEFΛͻͨ͢Βಓʹফ͢ ʢ1IQ4UPSNͷJOTQFDUJPOʣ w
ཁΒͳ͍ςετέʔεΛফ͢ʢ͍ςετੜ࢈ ੑΛམͱ͢ʣ
3FEBTIʹཔΓɺফ͢ w ࣾͰ42-͔͚Δਓ͕૿͖͑ͯͨ w ʮͦΕ3FEBTIͰΑ͘ͳ͍ʁ͜ͷΫΤϦͰͬ͘͞ ͱσʔλग़ͤ·͢Αʯ w ར༻සͷগͳ͍ը໘3FEBTIʹΫΤϦ͚ͩҠ ߦͯ͠୲ऀʹҊ ·Δͬͱআ
࠷ྑͷίʔυɺίʔυͳ͠ w /FX3FMJD (PPHMF"OBMZUJDT 3FEBTIFUD w ֎෦πʔϧʹ͏·͘པΖ͏ɻ͍Βͳ͍ίʔυ ͲΜͲΜফͦ͏ɻ IUUQTCMPHDPEJOHIPSSPSDPNUIFCFTUDPEFJTOPDPEFBUBMM “It's
painful for most software developers to acknowledge this, because they love code so much, but the best code is no code at all.”
࣮ΨΠυϥΠϯΛ࡞Δ w 143 ४ڌ QIQDTpYFSͷ$*ΈࠐΈ w Ϋϥε໊໊ؔͳͲͷ໋໊ϧʔϧΛܾΊΔ w 1)1%PD!QBSBN!SFUVSOΛਪɻಈతͳΫ ϥεϩʔμʔ!QSPQFSUZ!WBSͰิॿɻ
w !EFQSFDBUFEΛ͔͓ͭ͏ ͳͲͳͲ
ಓʹফ͢ qVDUίʔσΟϯάΨΠυϥΠϯΑΓൈਮ
ͦͯ͠ϖΞϓϩάϥϛϯά w ΨΠυϥΠϯΛ͑ͨΒɺϖΞϓϩάϥϛϯά w ϖΞϓϩάϥϛϯάͰॻ͖ํΛ͑ΔʢϨϏϡʔ ͩͱͿ͔ͭΓ͍͢ͱ͖ʹಛʹ༗༻ʣ w Ͱɺڧ੍͍͚ͯ͠ͳ͍
ΞδΣϯμ എܠɺݱঢ়ɺن ݻΊྫ֎ج൫ͱϞχλϦϯά վળίʔυΛফ͢ɺίʔσΟϯάΨΠυϥΠϯ ·ͱΊ
Ձ͋ΔίʔυΛ ΑΓྑ͍ͨ͘͠
୭ͩͬͯෆ҆͋Δ ͔ͩΒɺकΓΛ·ͣݻΊΔɻ ͦ͏͢Εվળ͘͢͠ͳΔɻ ʮ͜ͷมߋͰڍಈΛյͨ͠ΒͲ͏͠Α͏ʯ
ίʔυΛ ࣗͨͪͷखʹऔΓ͢