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
30
具体例から学ぶ、循環参照の怖さとその対策
ご指摘あればお願いします。
sosuiiii
October 19, 2023
Tweet
Share
More Decks by sosuiiii
See All by sosuiiii
AmebaにおけるQAコスト改善施策〜テスト項目の整理とAutify for Mobileによる自動化
sosuiiii
0
430
Other Decks in Technology
See All in Technology
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
120
Geminiとv0による高速プロトタイピング
shinya337
0
220
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
220
Connect 100+を支える技術
kanyamaguc
0
170
asken AI勉強会(Android)
tadashi_sato
0
160
GitHub Copilot の概要
tomokusaba
1
150
Zephyr RTOSを使った開発コンペに参加した件
iotengineer22
1
180
KubeCon + CloudNativeCon Japan 2025 に行ってきた! & containerd の新機能紹介
honahuku
0
120
作曲家がボカロを使うようにPdMはAIを使え
itotaxi
0
410
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
2
340
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
180
KubeCon + CloudNativeCon Japan 2025 Recap Opening & Choose Your Own Adventureシリーズまとめ
mmmatsuda
0
250
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Building Applications with DynamoDB
mza
95
6.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Unsuck your backbone
ammeep
671
58k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Agile that works and the tools we love
rasmusluckow
329
21k
Side Projects
sachag
455
42k
Music & Morning Musume
bryan
46
6.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Statistics for Hackers
jakevdp
799
220k
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ͱ͔Ͱ͋Εɺ ࠶ར༻࣌ʹίϯύΠϧΤϥʔʹͳΔ