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
sosuiiii
October 19, 2023
Technology
0
14
具体例から学ぶ、循環参照の怖さとその対策
ご指摘あればお願いします。
sosuiiii
October 19, 2023
Tweet
Share
More Decks by sosuiiii
See All by sosuiiii
AmebaにおけるQAコスト改善施策〜テスト項目の整理とAutify for Mobileによる自動化
sosuiiii
0
290
Other Decks in Technology
See All in Technology
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
480
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
1
110
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.7k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
190
Building Dashboards as a Hobby
egmc
0
330
ルーターでプレゼンする
puhitaku
1
3.1k
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.4k
One engineer company with Ruby on Rails
rstankov
2
390
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
320
いいたいことちゃんという
tkengo
0
130
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
130
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
260
Featured
See All Featured
RailsConf 2023
tenderlove
7
550
Why Our Code Smells
bkeepers
PRO
331
56k
Optimising Largest Contentful Paint
csswizardry
11
2.4k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Statistics for Hackers
jakevdp
790
220k
Building Your Own Lightsaber
phodgson
100
5.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
Faster Mobile Websites
deanohume
300
30k
Practical Orchestrator
shlominoach
183
9.7k
The Mythical Team-Month
searls
216
42k
Infographics Made Easy
chrislema
238
18k
Transcript
۩ମతͳ൵͔ܶΒֶͿɺ ॥ࢀরͷා͞ͱͦͷରࡦ
ࣗݾհ ໊લɿాதᰜࢤ ೖࣾɿ৽ଔͰ$"ೖࣾ ෦ॺɿλοϓϧ ɹɹɿ4PTTVJ@4XJGU
࣍ ֓ཁ ۩ମྫ ϝϞϦʹ͍ͭͯ Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ σόοά ରࡦ
֓ཁ "3$ͷొʹΑͬͯɺΤϯδχΞ͕ϝϞϦΛҙࣝ͢Δ͜ͱͳ͘ͳͬͨɻ ͨͩɺ ࠒ͔Β<XFBLTFMG>Λ͍ͬͯΔΑ͏ʹ શ͕ͯ"3$ʹΑͬͯ୲อ͞Ε͍ͯΔΘ͚Ͱͳ͍ɻ ॥ࢀরʹΑͬͯͲΜͳ൵͕ܶى͜ΓಘΔͷ͔ɺ Ͳ͏ͯ͠ى͍ͬͯ͜Δͷ͔ ϝϞϦΫϩʔδϟͷੑ࣭ʹ৮Εͳ͕ΒɺཧղΛਂΊ͍͖ͯ·͠ΐ͏ʂ
࣍ ֓ཁ ۩ମྫ👈 ϝϞϦʹ͍ͭͯ Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ σόοά ରࡦ
۩ମྫ λοϓϧͰɺϢʔβʔͷϓϩϑΟʔϧཝʹσʔτϓϥϯͷΧʔυ͕͋Δ
۩ମྫ λοϓϧͰɺϢʔβʔͷϓϩϑΟʔϧཝʹσʔτϓϥϯͷΧʔυ͕͋Δ ͔͜͜Β͍͍͔Λ͢Δͱɺ Ͳͷσʔτϓϥϯ͔Β͍͍͔͔͕͔ͨ͠Δ
۩ମྫ ॥ࢀরΛىͨ͜͜͠ͱͰ ͔͜͜Β͍͍͔Λ͢Δͱɺ Ͳͷσʔτϓϥϯ͔Β͍͍͔͔͕͔ͨ͠Δ
۩ମྫ ॥ࢀরΛىͨ͜͜͠ͱͰɻɻ શͯͷΧʔυ͕ ͍͍͔͞Εͯ͠·͏ ˞ϦϦʔεલʹൃݟɾमਖ਼͍ͯ͠Δ
۩ମྫ ΧϧʔηϧͰදࣔ͞ΕͨɺϢʔβʔҰཡʹͯɻɻ Ϣʔβʔ"ͷৄࡉΛ։͍ͯ Δ Ϣʔβʔ#Λ͍͍͔
۩ମྫ ΧϧʔηϧͰදࣔ͞ΕͨɺϢʔβʔҰཡʹͯɻɻ Ϣʔβʔ"ͷৄࡉΛ։͍ͯ Δ Ϣʔβʔ#Λ͍͍͔ Ϣʔβʔ"ɺ#ʹ͍͍͔͕ૹΒΕͯ͠·͏ ˞ϦϦʔεલʹൃݟɾमਖ਼͍ͯ͠Δ
Ͳ͏ͯ͠॥ࢀরͨ͠ͷ͔ 'PSNBUUFSʹΑΔࣗಈϑΥʔϚοτºώϡʔϚϯΤϥʔ PXOFSΛࢀর͍ͯ͠ΔίʔυΛফ͢ͱɺ 'PSNBUUFSʹΑͬͯఆ͕ٛʮ@ʯʹলུ͞ΕΔ
Ͳ͏ͯ͠॥ࢀরͨ͠ͷ͔ 'PSNBUUFSʹΑΔࣗಈϑΥʔϚοτºώϡʔϚϯΤϥʔ ෆҙʹPXOFS͕লུ͞Εͨͱ͜Ζʹɺ ӈͷࣸਅͷΑ͏ͳTIPXϝιουΛ࠶ར༻͢Δ ॥ࢀর͢Δ
॥ࢀরͷڪ͞ ͠લʹݴͬͨΑ͏ͳόά͕ϦϦʔε͞Ε͍ͯͨΒɻɻ ᶃϢʔβʔͷࠞཚɻ͓͍߹Θͤ૿Ճ ᶄ"1*௨৴͕Oഒʹɻαʔόෛՙͷ૿Ճ ᶅᶄͷ૿ՃʹΑΔΠϯϑϥίετͷ૿Ճ
࣍ ֓ཁ ۩ମྫ ϝϞϦʹ͍ͭͯ👈 Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ σόοά ରࡦ
ϝϞϦʹ͍ͭͯ ઌ΄Ͳͷڍಈɺ ॥ࢀরʹΑͬͯϝϞϦͷղ์͕ग़དྷͳ͘ͳΔ͜ͱ͕ݪҼ ϝϞϦͷղ์ɻɻʁ ͏ͪΐͬͱϝϞϦʹ͍ͭͯਂ΅͓͖͍ͬͯͨ
ϝϞϦʹ͍ͭͯ ϝϞϦʹɺׂʹԠͯͭ͡ͷछྨ͕͋Δ ɾϓϩάϥϜྖҬɿ3&"%ͷΈɻؔఆ ɾελοΫྖҬɿϩʔΧϧม ɾ੩తྖҬɿTUBUJDάϩʔόϧม ɾώʔϓྖҬ ಈతϝϞϦ ɿNBMMPDGSFFͰಈతʹ֬อ͢Δ˞$ݴޠ ϝϞϦͷ֬อͷํɺͦΕͧΕҟͳΔ
ελοΫྖҬ ઌೖޙग़͠ํࣜͷཧɻϝιουͷϩʔΧϧมͳͲׂ͕ΓͯΒΕΔ ྫ͑ϝιου"ͷதͰϝιου#ΛݺͿ࣌ɺ ϝιου#͕ऴ͔ྃͯ͠Βϝιου"͕ऴྃ͢Δɻ ϝϞϦ্Ͱಉ͡Α͏ͳ͜ͱ͕ى͖͍ͯΔɻ GVODQBSFOU \ WBSQBSFOU DIJME
^ GVODDIJME \ WBSDIJME ^
ελοΫྖҬ GVODQBSFOU \ WBSQBSFOU DIJME ^ GVODDIJME \ WBSDIJME
^ ᶃ ᶄ ᶅ ᶆ ᶃ QBSFOU Λݺͼग़͠ɺϩʔΧϧมͷQBSFOUׂ͕ΓͯΒΕΔ ᶄ QBSFOU ͷதͷDIJME Λݺͼग़͠ɺDIJMEׂ͕ΓͯΒΕΔ ᶅ DIJME ͷॲཧ͕ऴΘΓɺDIJMEͷϝϞϦ͕ղ์͞ΕΔ ᶆ QBSFOU ͷॲཧ͕ऴΘΓɺQBSFOUͷϝϞϦ͕ղ์͞ΕΔ
੩తྖҬ ϓϩάϥϜ͕࣮ߦ͞ΕΔͱɺऴྃ͢Δ·Ͱอ࣋͞Εଓ͚ΔྖҬ ˠΞϓϦͷϥϯλΠϜதอ࣋͞ΕΔ อ࣋͞Εଓ͚Δੑ࣭ʹΑͬͯɺ4XJGUͰ γϯάϧτϯͱͯ͠TIBSFE ڞ༗ ͰσʔλΛڞ༗͢ΔΘΕํ ϝϞϦͷ֬อͱղ์ͳͷͰɺ͜ͷྖҬͰͷ॥ࢀরى͜͞ͳ͍ʁ
ಈతྖҬ ੩తྖҬͱҧ͍ɺ ΞϓϦͷϥϯλΠϜதʹϝϞϦͷ֬อͱղ์Λ܁Γฦ͢ $ݴޠͰɺNBMMPD͕ؔϝϞϦ֬อɺGSFF͕ؔϝϞϦͷղ์Λ୲͍·͢ɻ 4XJGUʹ͓͍ͯ"3$͕ϝϞϦͷ֬อͱղ์Λཧ͓ͯ͠Γɺ ։ൃऀ͕ҙࣝ͢Δ͜ͱ͋Γ·ͤΜɻ
ಈతྖҬ ͭ·Γɻɻʁ ಈతʹϝϞϦΛ֬อɾղ์͢ΔػߏͰ͕ى͖Δ ॥ࢀরʹΑͬͯ"3$ʹΑΔղ์࿙ΕΛى͜͠ɺ ϝϞϦ͕ੵΈ্͕͍ͬͯ͘ ˞"3$ͷઆ໌ׂѪ ॥ࢀরΛى͜͞ͳ͍ͨΊʹɺΫϩʔδϟͷੑ࣭Λ֬ೝ͠Α͏
࣍ ֓ཁ ۩ମྫ ϝϞϦʹ͍ͭͯ Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ👈 σόοά ରࡦ
Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ ॥ࢀরɺڧࢀর͕॥͢Δ͜ͱͰى͖Δɻ ˠࢀরܕಉ࢜Ͱى͜ΓಘΔɻ 4XJGUͰɺΫϩʔδϟΫϥε͕͜Εʹ֘͠ɺ ߏମ TUSVDU ͕ܕʹͳΔɻ ˠσϦήʔτ Ϋϥεؒ ΫϩʔδϟºΫϥεؒʹҙ⚠
αϯϓϧίʔυᶃ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ
αϯϓϧίʔυᶃ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ ॥ࢀর͠ͳ͍
αϯϓϧίʔυᶄ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ
αϯϓϧίʔυᶄ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ ॥ࢀর͠ͳ͍ ͷΫϩʔδϟ͕Ωϟϓνϟͨ͠ ऑࢀরͷTFMGΛҾ͖ܧ͍Ͱ͍Δ
αϯϓϧίʔυᶄ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ ॥ࢀর͠ͳ͍ ࢠͷΫϩʔδϟɺΦϓγϣφϧͷTFMGΛࢀর͍ͯ͠Δ ˠͷΫϩʔδϟ͕Ωϟϓνϟͨ͠ ऑࢀরͷTFMGΛҾ͖ܧ͍Ͱ͍Δ
αϯϓϧίʔυᶅ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ
αϯϓϧίʔυᶅ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ ॥ࢀর͠ͳ͍ ࢠͷΫϩʔδϟɺ ͷΫϩʔδϟ͕Ωϟϓνϟͨ͠ ڧࢀরͷTFMGΛҾ͖ܧ͍Ͱ͍ͨ
αϯϓϧίʔυᶆ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ
αϯϓϧίʔυᶆ Ϋϩʔδϟ⁵Ϋϥεؒͷ॥ࢀর ݺͼग़͠ଆͷςϯϓϨ ॥ࢀর͠ͳ͍ ੩తϝϞϦºಈతϝϞϦͰ॥ࢀরى͜ΓಘΔ
αϯϓϧίʔυᶇ Ϋϥε⁵Ϋϥεͷ॥ࢀর <XFBLTFMG>Ͱͳ͘ɺ<XFBLWJFX$POUSPMMFS>ͱͯ͠ҾΛऑࢀর͢Δ
࣍ ֓ཁ ۩ମྫ ϝϞϦʹ͍ͭͯ Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ σόοά👈 ରࡦ
σόοά ͜Μͳ࣌॥ࢀরΛٙ͏ ᶃૢ࡞Λଓ͚͍ͯΔͱ͕͘ͳΔɺॏ͘ͳΔ ᶄϢʔβʔͷૢ࡞ͰෆՄೳͳִؒͰϩά͕ൃՐ͍ͯ͠Δ ɹଟॏʹॲཧ͕࣮ߦ͞Ε͍ͯΔ σόοάखஈ ᶃࢹ ᶄ9DPEFͷσόοάػೳ
ϝϞϦάϥϑ 9DPEFͷσόοάػೳͷͭʹɺʮϝϞϦάϥϑʯ͕͋Δ ϝϞϦΛ֬อ͍ͯ͠ΔΠϯελϯε͕ӾཡՄೳ ϝϞϦάϥϑ
ϝϞϦάϥϑ 9DPEFͷσόοάػೳͷͭʹɺʮϝϞϦάϥϑʯ͕͋Δ ϝϞϦΛ֬อ͍ͯ͠ΔΠϯελϯε͕ӾཡՄೳ Πϯελϯεͷ ʓʓ7JFX$POUSPMMFS ʓʓ7JXF.PEFM ෦Ұகݕࡧ͕Մೳ
࣍ ֓ཁ ۩ମྫ ϝϞϦʹ͍ͭͯ Ϋϩʔδϟͷੑ࣭ͱαϯϓϧίʔυ σόοά ରࡦ👈
ରࡦ ᶃςετίʔυ ᶄΫϩʔδϟͷੑ࣭ཧղ ᶅةػҙࣝ ɾϝϞϦϦʔΫͷҝʹɺςετίʔυΛॻ͘ͷίετ͕ߴ͍ ɾΫϩʔδϟͰTFMGΛऑࢀর͍ͯ͠Δ͔ ɾ<XFBLTFMG>ɺTFMGҎ֎ͷ໋໊ͰΞϯϥοϓ͢Δ
TFMGҎ֎ͷ໋໊ͰΞϯϥοϓ͢Δ 'PSNBUUFSʹΑΔࣗಈϑΥʔϚοτºώϡʔϚϯΤϥʔ ෆҙʹPXOFS͕লུ͞Εͨͱ͜Ζʹɺ ӈͷࣸਅͷΑ͏ͳTIPXϝιουΛ࠶ར༻͢Δ ॥ࢀর͢Δ TFMGͰͳ͘PXOFSͱ͔Ͱ͋Εɺ ࠶ར༻࣌ʹίϯύΠϧΤϥʔʹͳΔ