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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sosuiiii
October 19, 2023
Technology
0
34
具体例から学ぶ、循環参照の怖さとその対策
ご指摘あればお願いします。
sosuiiii
October 19, 2023
Tweet
Share
More Decks by sosuiiii
See All by sosuiiii
AmebaにおけるQAコスト改善施策〜テスト項目の整理とAutify for Mobileによる自動化
sosuiiii
0
470
Other Decks in Technology
See All in Technology
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
190
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
150
Claude Code for NOT Programming
kawaguti
PRO
1
110
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
The agentic SEO stack - context over prompts
schlessera
0
650
Un-Boring Meetings
codingconduct
0
200
Speed Design
sergeychernyshev
33
1.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Curious Case for Waylosing
cassininazir
0
240
GraphQLとの向き合い方2022年版
quramy
50
14k
Mobile First: as difficult as doing things right
swwweet
225
10k
Making Projects Easy
brettharned
120
6.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
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ͱ͔Ͱ͋Εɺ ࠶ར༻࣌ʹίϯύΠϧΤϥʔʹͳΔ