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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
erukiti
February 21, 2018
Programming
3k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
メタプログラミングと生産性 / meta-programming
メタプログラミングを生産性向上手段の一つとして知っておくと、プログラマ人生が捗るかもしれません!
erukiti
February 21, 2018
More Decks by erukiti
See All by erukiti
Codex時代の新たなバイブコーディングワークフロー/ after Codex workflow
erukiti
9
3.9k
Claude Codeを使って不確実性と戦う / claude-code-fights-uncertainty
erukiti
10
4.6k
Claude Code活用において、メンタルモデルを変える必要がある / rethinking-claude-code-mental-models
erukiti
20
14k
AIとの対話で加速する学び / ai learnig
erukiti
1
930
コーディングエージェントを作ってるけどうまくいかなかった話 ~あるいは二ヶ月本気でコーディングエージェントと向き合った話~ / Two Month Agent Struggle
erukiti
40
21k
Gemini 2.0 Flashで実現する高コスパAI開発 〜実践的プロンプトエンジニアリングと文書管理システムの実装例〜/gemini-2.0-flash-prompt-engineering
erukiti
17
7k
LLMをねじ伏せる/Conquer the LLM
erukiti
0
280
鮮度が高すぎて世界で誰も正解を見つけてない課題に取り組んでいる/ Freshness issues
erukiti
1
960
実演TypeScript + GitHub Copilot
erukiti
9
4.6k
Other Decks in Programming
See All in Programming
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
さぁV100、メモリをお食べ・・・
nilpe
0
150
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
350
A2UI という光を覗いてみる
satohjohn
1
140
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
550
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
210
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
120
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
890
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
Technical Leadership for Architectural Decision Making
baasie
3
420
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Bash Introduction
62gerente
615
220k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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:࣍ͷωλʹ͠·͢ʂʂ ࣍ɺ͋Εʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠