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
メタプログラミングと生産性 / meta-programming
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
erukiti
February 21, 2018
Programming
8
3k
メタプログラミングと生産性 / meta-programming
メタプログラミングを生産性向上手段の一つとして知っておくと、プログラマ人生が捗るかもしれません!
erukiti
February 21, 2018
Tweet
Share
More Decks by erukiti
See All by erukiti
Codex時代の新たなバイブコーディングワークフロー/ after Codex workflow
erukiti
8
3.4k
Claude Codeを使って不確実性と戦う / claude-code-fights-uncertainty
erukiti
10
4.2k
Claude Code活用において、メンタルモデルを変える必要がある / rethinking-claude-code-mental-models
erukiti
20
14k
AIとの対話で加速する学び / ai learnig
erukiti
1
810
コーディングエージェントを作ってるけどうまくいかなかった話 ~あるいは二ヶ月本気でコーディングエージェントと向き合った話~ / Two Month Agent Struggle
erukiti
40
20k
Gemini 2.0 Flashで実現する高コスパAI開発 〜実践的プロンプトエンジニアリングと文書管理システムの実装例〜/gemini-2.0-flash-prompt-engineering
erukiti
17
6.9k
LLMをねじ伏せる/Conquer the LLM
erukiti
0
250
鮮度が高すぎて世界で誰も正解を見つけてない課題に取り組んでいる/ Freshness issues
erukiti
1
930
実演TypeScript + GitHub Copilot
erukiti
9
4.6k
Other Decks in Programming
See All in Programming
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
Oxlint JS plugins
kazupon
1
780
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
990
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
150
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
170
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
590
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
4
330
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
250
AI巻き込み型コードレビューのススメ
nealle
0
130
CSC307 Lecture 03
javiergs
PRO
1
490
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
0
2k
The Limits of Empathy - UXLibs8
cassininazir
1
210
Into the Great Unknown - MozCon
thekraken
40
2.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
63
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
62
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
How to Ace a Technical Interview
jacobian
281
24k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
64
How to make the Groovebox
asonas
2
1.9k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
90
Transcript
ϝλϓϩάϥϛϯάͱ ੜ࢈ੑͷ NFUBQSP@FT !FSVLJUJ
ࣗݾհ w FSVLJUJ 5XJUUFS (JUIVC 2JJUB .FEJVNͳͲ w Ҿ͖͜ΓؾຯϑϦʔϥϯεΤϯδχϟʔ
ڭࡐ࡞ͱ͔ ϥΠλʔͬΆ͍ײ͡ͷ͜ͱʜ w όοΫΤϯυϝΠϯ ϑϩϯτΤϯυɾΠϯϑϥͳͲ w ͖ͳݴޠ5ZQF4DSJQU ͱ͍͏͔ܕͷ͋Δ&$."4DSJQU w ಉਓࢽಉਓࢽۀԽಉਓࢽಉਓࢽ ߹ಉࢽ ۀԽਐߦத߹ಉࢽࣥචதˍಉਓࢽࣥචத
+4FSͱͯ͠৽ࢀऀ w &MFDUSPOͷҝʹ+BWB4DSJQUΛ࢝ΊΔ w $P⒎FF4DSJQU&45ZQF4DSJQU &4&4 'MPX5ZQF4DSJQU w %0.$44ͳͲͷݟ͕গͳ͍
͖ͬΆ͍ح৺Ԣ w ڈޙ͔ΒͷྲྀΕ ϑϨʔϜϫʔΫ࡞ϝ λϓϩάϥϛϯά҉߸௨՟ɾϒϩοΫνΣʔ ϯɾίϯϐϡʔλϏδϣϯ w ࠷ۙͪΐͬͱϝλϓϩάϥϛϯά͔ΒΕ͍ͯ ͨʜɻʢ"45ຊͷۀԽ͕ετοϓதʜʜ
w కΊΓۦಈ։ൃɺకΊΓۦಈࣥචɺษڧձۦ ಈษڧ
NFUBQSP@FT w ڈळࠒͷ+BWB4DSJQUࡇΓͷ࣌ʹQPUBUPE͞Μͱ ॳΊͯ͋ͬͯɺͦͷ͋ͱʮͳΜ͔ษڧձ։࠵͠· ͤΜ͔ʁʯͱ͓͕͚ͯ͠Βͬͨ w ͪΐͬͱ͍ͨͨͯͯ͠ɺ݁ہ݄ʹೖͬͯϝλ ϓϩͷษڧձΓ͍ͨͰ͢ʂͱݴͬͨΒ։࠵͕ܾ ఆ͠·ͨ͠ɻ w
৭ʑ͍͚ͬͯͨͩͯ΄Μͱ͋Γ͕͍ͨݶΓͰ͢ʂ
͘͞ΒΠϯλʔωοτ͞Μ ձͷ͝ఏڙ ͋Γ͕ͱ͏͍͟͝·͢ʂʂ
ΞδΣϯμ w ϝλϓϩάϥϛϯάͱԿ͔ w ੜ࢈ੑ w దͳબࢶͷҰͭͱͯ͠ͷϝλϓϩάϥϛ ϯά
None
ྫ w %#εΩʔϚఆ͔ٛΒɺσʔλϞσϧϦϙδ τϦύλʔϯΛࣗಈੜ w σʔλϞσϧ͔Β42-จΛࣗಈੜ w %4-Λݩʹύʔαʔ ߏจղੳث
Λੜ w ؔΛड͚औͬͯ߹͢Δؔ
ྫ w -JTQΈ͍ͨʹߏจΛࣗͰఆٛͰ͖Δݴޠ w 4DBMBͷϚΫϩ w ςϯϓϨʔτݴޠ ಛʹνϡʔϦϯάશͳ ͭ
w ϦϑϨΫγϣϯ ಈతʹใΛऔಘͨ͠Γॻ͖ ͑ͨΓ
˞ͨͩ͠ɺҙ͠ͳ͍ͱ ؆୯ʹࠇຐज़ ෛͷҨ࢈ʹͳΓ·͢
ͦͦϝλͱʁ
None
༷ʑͳϝλ w ࡞தͷΩϟϥ͕࡞ͷ֎ʹݴٴ͢Δʮϝλ ൃݴʯ w σʔλຊମʹରͯ͠σʔλΛཧ͢ΔͨΊͷ ใΛ༩͢Δʮϝλσʔλʯ w ྲྀߦΓͷσοΩΛલఏͱͨ͠ಛघͳઓུΛલ ఏͱ͢ΔσοΩߏஙʮ˓˓ϝλσοΩʯ
None
நͱ۩ w ϓϩάϥϛϯά ཁ݅ఆ͔ٛΒίʔσΟϯά· Ͱશ෦ؚΊΔ ɺେମநͱ۩ͷߦ͖དྷ ਓؒ χʔζϏδωεϩδοΫɺཁ݅ ઃܭ ΞʔΩςΫνϟͳͲେ͖ͳઃܭ
ৄࡉઃܭ ͬͱৄࡉʹ;Έ͜Μͩઃܭ ൚༻࣮ ൚༻ͷߴ͍ίʔυ ݸผ࣮ ৄࡉͳࣄʹ౿ΈࠐΜͩίʔυ
நͱϝλϓϩάϥϛϯά w ந͕ߴ͍ɺߴϨϕϧϓϩάϥϛϯάͬͯ ੑೳ͕མͪͦ͏͚ͩͲɺϝλϓϩάϥϛϯά Ͱίʔυੜ͢Εʜ w ϝλϓϩάϥϛϯάͬͯͦ͠͏ʹࢥ͑Δ͚ ͲɺৗతʹநԽͱ͔ͬͯΔϓϩάϥϚ ʹͱͬͯ͞΄Ͳқͷߴ͍ͷͰͳ͍ ͷͰʁʁ
None
None
ϓϩάϥϚͷੜ࢈ੑ w ͔͔ͬͨ࣌ؒ ίετ ʹର͢ΔɺՌͩͱࢥ ͏͕ɺࢦඪ͕͍͠ ίʔυͷߦʁ͍͡Γ ͢͞ʁ࣭ʁṶֹ͔ͬͨۚʁ w
Ͱ૬ରతʹࢉग़Ͱ͖Δ ಉ͜͡ͱΛୡ ͢Δͷʹཁ͢Δ࣌ؒͷࠩ w ഒʙഒͷࠩΛ࣋ͭਓ͕͍Δͱ͍ΘΕΔ
ͦͦ ͳͥੜ࢈ੑʹେ͖ͳ͕ࠩ͋Δʁ w ݸʑਓͷೳྗࣗମ͕ഒͷࠩΛੜΈग़ ͢ͷ͔ʁ w ಉ͡ࢥߟํ๏ͳΒ ࢥߟ͕ഒͷਓ͕ؒ ͍Δͱߟ͑ʹ͍͘ w
εϖοΫͷҧ͍ΑΓɺΓํͷҧ͍ͷํ͕ ܾఆతͳࠩʹͳΔͷͰʁ
తୡʹͱͬͯ࠷ݶͳ ఔ͚ͩΛಥ͖٧ΊΕ ͦΕ͕࠷ͳͷͰʁ
Α͋͘Δແବ w ͦͷ࣌ͰΒͳ͍͍ͯ͘͜ͱΛ͍ͬͯΔ w ͦͷ࣌Ͱͬͯͳ͍ͱ͍͚ͳ͍͜ͱΛ͍ͬͯͳ ͍ w ࣺͯͨํ͕ૣ͍࣌ʹɺແཧʹ࠶ར༻ w ෆඞཁʹ
ͳઃܭɺίʔυ w ΑΓΑ͍ख๏ɾಓ۩͕͋ΔͷʹΒͳ͍ɺ͑ͳ͍
ແବΛ͙ w ਖ਼͍͠ఔཧ ಛʹઓུͷޡΓΛઓज़ͰऔΓ ͞ͳ͍͜ͱ͕ॏཁ w ΑΓޮతͳखஈΛબΔΑ͏ʹखࡳΛ૿ ͢ w
ͦͷத͔ΒదͳબΛ͢Δ
ແବΛ͙ w ਖ਼͍͠ఔཧ ಛʹઓུͷޡΓΛઓज़ͰऔΓ ͞ͳ͍͜ͱ͕ॏཁ w ΑΓޮతͳखஈΛબΔΑ͏ʹखࡳΛ૿ ͢ w
ͦͷத͔ΒదͳબΛ͢Δ ༩͑ΒΕͨࡋྔ͕গͳ͗͢Δ߹ స৬Λߟ͑ͨํ͕͍͍͔͠Ε·ͤΜ ἤΓ
None
ϝλϓϩάϥϛϯάʹ ͍͔ͭ͘छྨ͕͋Δ
ϦϑϨΫγϣϯػೳ w ϝιουݺͼग़͠ϓϩύςΟΞΫηεΛIBDL ͢Δ w ຊདྷΒͳ͍͍ͯ͘ใΛऔಘͨ͠Γॻ͖ ͑ͨΓ
None
$ cat test.js class Hoge {} const hoge = new
Hoge() const fuga = new Proxy(hoge, { get(target, name) { console.log(`${target}の${name}をgetしにきやがりました`) return 'みせねーよ!' }, set(target, name, value) { console.log(`${target}の${name}に${value}をsetしにきやがりました。ふてえ やろうだ!`) } }) console.log(fuga.x) fuga.y = 10 $ node test.js [object Object]のxをgetしにきやがりました みせねーよ! [object Object]のyに10をsetしにきやがりました。ふてえやろうだ!
੩తͳͷ߹Θٕͤ w #BCFMͱ͔ w 8FCQBDLͱ͔ w QFHKTͱ͔ w CBCFMSFHJTUFS SFRVJSFIBDL
ϦϑϨΫγϣϯΛΘͳͯ͘ w ؔܕݴޠͷઃܭࢀߟʹͳΔ w ݴޠ%4- +4ͩͱදݱͮ͠Β͍͔ͳʜ w 03Ϛούʔͱ͔ʁ
ϝλϓϩάϥϛϯάΛؚΊͯ ݸʑͷख๏બࢶͷҰͭ
ݸਓతײ w ۩తͳίʔυΛ͍͍ײ͡ʹݮΒͭͭ͠ɺແବͳநԽΛ ͠ͳ͍ͱ͍͏όϥϯεײ͕֮؊ w ߴϨϕϧϓϩάϥϜʹੑೳతແବ͕͋Δͱ͍ΘΕΔ͚Ͳ ϝλϓϩάϥϛϯάʹΑΔίʔυੜͰ͋Δఔ͛Δ w ۩తͳίʔυΛݮΒ͢खஈͱͯ͠ϝλϓϩ͕ͬͱධՁ ͞Ε͍͍ͯͱࢥ͏Μͩʜʜ
w %3: ,*44 :"(/*͋ͨΓͷݪଇେ͖Ͱ͢
·ͱΊ w ϝλϓϩάϥϛϯάϓϩάϥϜΛѻ͏ϓϩάϥϜ w ͦ͠͏͚ͩͲͦ͏Ͱͳ͍ ߹ʹΑͬͯ໘ͩͬͨΓ ࠇຐज़ʹͳΓ͕ͪͰ͋Δ͚Ͳ w நͱ۩Λߦ͖དྷ͢Δͷ͕ϓϩάϥϚ
w ੜ࢈ੑͦͷόϥϯεͷऔΓํʹେ͖͘ࠨӈ͞ΕΔ ࣋ w ϝλϓϩάϥϛϯάόϥϯεͷྑ͍நԽΛΔखஈͷ ͻͱͭ
͝ΊΜͳ͍͞ DPOOQBTTϖʔδʹॻ͍ͯͨ ਅͷ%3:࣍ͷωλʹ͠·͢ʂʂ ࣍ɺ͋Εʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠