SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Rubicureに学ぶ 
メタプログラミング 
#WDGVDQ
お前 is 誰よ 
żƋƵƇljƕ#WDGVDQ 
ǢȇÁDZǾǒȜ܃ƇƤ$3,ƞƁ§SL[LYQHWƤ 
ޚƁźƞƉǃƤ࠿ੈࡿপLjૃுƏǁҁƋlj 
3+3ƕƤƍźЁ಻܈ƃƠǯȜȀȕÁDZǑȜǡȜƝƏ 
࡮฀Ɲƥ5XELj࣌ƅƉƞƂŸǁƾ¯ 
ވتࡏఋƝƥ*Rƞ6FDODƤϊ໨Ƃ݅ƴƙƜƚƿź
·।।।।।।।।।।।।।।· 
é¦ƕƴơƥ࡮฀Ƥ༺LjƍƴƏ¦è 
¶AAAAAAAAAA¶
Rubyの文法 
obj.methƞobj.meth()ƤϪ฀ƥ௚Ǝ 
3+3ƺ3WKRQƞƥϰƠǁ्ഴ
Rubyの文法 
ǘȒǢƥǓǿǡǐǘDZ 
class Obj 
def foo; :instance_foo; end 
def self.foo; :class_foo; end 
end
メタプログラミングとは 
۲ӃLjƀƓǂƐơƌƙƅǀৗฝƏǁƞ§ 
ÛȀȖǙȒȉLjޯǁȀȖǙȒȉLjޯǁƉƞÜ 
'5Ljߵ܃ƍƜࢠൄLj೗Ƈ੤Ƈǁƞ§ 
।໹ƥźƚƍƁȊǨȀȖǙȒȈȜǙơࠉǁ 
नơވ୷ƠૹखҎࡧචƝŸǁƞƥۇƿƠź 
5XERQ5DLOVƥ5XEơƀƇǁ'6/ƞ 
ȊǨȀȖǙȒȈȜǙ֦ࢬƤॿLj࢓Ʒƕڒࣶ
趣味 
·।।।।।।।।।।।।।· 
é¦5XEơƀƇǁખഀ୵Ơ¦è 
馦ȀȓǖȎNj࠿ੈ¦¦è 
¶AAAAAAAAA¶
·।।।।।।।।।।।।।· 
é¦5XEơƀƇǁખഀ୵Ơ¦è 
馦ȀȓǖȎNj࠿ੈ¦¦è 
¶AAAAAAAAA¶
·।।।।।।।।।।· 
é¦ȀȓǖȎNj࠿ੈ¦è 
¶AAAAAAA¶
Rubicureとは 
VXHࠀƂӚಔƍƕ5XEJHPȒǍǿȒȓ 
gem install rubicureƝ௜ధƝƃǁ 
֚ۀƥ൭ơŸǁ 
3HUOAcme::PrettyCureDQG3WKRQpycure 
$3,ƥAcme::PrettyCureƁƿ׸źй؊LjࡲƇƜǁ
経緯 
޳శӚކƋǂƕÛȀȓǖȎNjǸǬǔǦȜÜƝ 
GULOOELWVƋljƂ3WKRQƝÛ3FXUHÜLj࠿ੈ 
ǸǬǔǦȜࡤކࡑƤVXHࠀƂǸǬǔǦȜ۪ơ 
5XEƝÛ5XELFXUHÜLj࠿ੈ 
ݤశƤȀȓǖȎNjǸǬǔǦȜĻƝ෌Ƃ3+3ƝU 
ƝƸॡପƝƠƁƙƕƤƝ§ƞƙƞƞƀżƗơ 
֍ƙƜƁƿ5XELFXUHơ3XOO5HTXHVWLj੊ƙƕ
Rubicureとは 
ݤƤȀȓǖȎNjƙƜƠljƖƙƇƞ߶ƙƕƞƏǁ 
ruby -rubicure -e'p Precure.now' 
DzǖDzǖ¯ȀȓǖȎNjƤปਃLj૝ǀƕźƞƏǁ 
p Precure.dokidoki.girls.map(:name) 
ǽǔȓȜƎƹljƇlj 
Cure.peace.pikarin_janken
実装の特徴 
ǰÁǨƤࣃຸƥൄ߇ƠȖǡǬǘLj࣌ƁƐ§ 
ߑँƝӃڏƝƃǁƸƤƥ$0/੗ƝӃڏƍƜǁ 
ǑǍȓNjǢƠƟ
ȀȓǖȎNjGirlǓǿǡǐǘDZ
ƥǠȜǙȔDZȜ 
ƞƍƜǖȌǬǠȎƋǂǁ 
ॎƍźȀȓǖȎNjƥ$0/ơǰÁǨLjଶҔƏǁ
method_missing 
5XEƤખഀ୵ƠȊǨȀȖǙȒȈȜǙࡧච 
Cure.peaceƞ࣌ƅƞǖȎNjǽÁǢLjࡥ௩Ɲƃǁ 
Ƃ§def peaceƵƕźƠୗ֬ƂǜÁDzञơ੩ޠ 
ƏǁDžƇƝƥƠź 
ǓǿǡǐǘDZơȊǦǬDzƂ੩ޠƍƠƁƙƕƞƃ 
method_missing(name, args) ƂۋƦǂǁ
特異メソッド 
ǖȎNjǽÁǢƞǽǔȓȜƎƹljƇljLjƍƕź¯ 
ǓǿǡǐǘDZی๨ƤȊǦǬDzLjୗ֬Ɲƃǁ 
ȀȓǖȎNjƥਇƜGirlǓǿǡǐǘDZƖƂ§ 
ǖȎNjǽÁǢƤǍȜǢǨȜǢƤƵơ 
pikarin_jankenȊǦǬDzLjୗ֬Əǁ
変身 
൲य़ƥȀȓǖȎNjǠȓÁǣƊƞơϰƠǁ 
ǰȎNjȔǓÁȖȒǏǐÁǿ§ȊǨȋȔǾǒÁǥ 
ਃࢭƤହǀAcme::PrettyCureƤ$3,Ljٸ࣮ƍƜǁ 
ƤƝ§ǰǾǒȔDZƤ൲य़ȊǬǤÁǡȊǦǬDz
ƥtransform!ƝŸǁ
·।।।।।।।।।।· 
é¦DZȒȜǢǾǒÁȉ¯¦è 
¶AAAAAAA¶
変身 
ƓljƠȀȓǖȎNjƥ੩ޠƍƠź 
ȀȓǖȎNjƥメタモルフォーゼƋƑƕźƍ§ 
ǾȕǬǠȎƥチェインジƋƑƕź 
ȀȓǖȎNjƊƞơ$0/Ɲ൲य़ǜÁȔLjୗ֬ 
Girl#method_missingƝۋƦǂƕȊǦǬDzปƂ 
ی๨Ƥ൲य़ǜÁȔƞЁ૦ƏǂƦtransform!Əǁ
ruby -rubicure 
തହƥrequire rubicureƝ௲Ƶݡƶ 
ǠǐȔƁƿruby -rubicureƺirb -rubicureƝ 
֚௙ƏǁƉƞƂƝƃǁ 
ruby -r jsonƝ§-621ȒǍǿȒȓƂȖÁDzƋ 
ǂƕमઇơƠǁƤƝ§ȘȜȒǍdzÁơ൹ຳ 
-r jsonƤգƤǢȃÁǢƥःƅƉƞƂƝƃǁ
ruby -rubicure 
ŸƞƥÉDžƁǁƠ 
ƉƤNjǍǰnjNjƥ൭ơی๨ƤƸƤƝƥƠź 
5XEOLEUDUXQ 
೻ࢻ୵Ơ8QL[ഺȏÁǯnjȓǯnj 
ruby -run -e rm './*.rb' 
޹ӿLjຳຌƍƕ।գơઁƏǁȊǨȀȖǙȒȈȜǙ
むりやりなまとめ 
ȊǨȀȖǙȒȈȜǙƝಶ߇Ơ೗Ƈƿǂǁ 
ÉƉƞƂŸǁ 
ڦ޸ঢƂ୐ƅƠǁƤƝ§ȔÁȔƂ଼ƷƠźƞ੯ 
ƤƨƞƂǜÁDzLj௲ljƖǀƍơƅƅƠǁ 
Ɗຳຌƥپҹ୵ơ 
*LW+XEƤȀȔȓǘǑǢDZơƥԇƩƂŸǁ

Mais conteúdo relacionado

Mais de Kenta USAMI

DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
Kenta USAMI
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
 

Mais de Kenta USAMI (18)

なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇
 
たのしい独自フレームワーク
たのしい独自フレームワークたのしい独自フレームワーク
たのしい独自フレームワーク
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
 
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
 
はじめてのUser-Agent文字列
はじめてのUser-Agent文字列はじめてのUser-Agent文字列
はじめてのUser-Agent文字列
 
php.js
php.jsphp.js
php.js
 
近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSL
 
札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか
 
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
 
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
 
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
 
セキュリティ&プログラミングキャンプに行こう!
セキュリティ&プログラミングキャンプに行こう!セキュリティ&プログラミングキャンプに行こう!
セキュリティ&プログラミングキャンプに行こう!
 
セキュリティ&プログラミングキャンプに行こう!
セキュリティ&プログラミングキャンプに行こう!セキュリティ&プログラミングキャンプに行こう!
セキュリティ&プログラミングキャンプに行こう!
 

Último

Último (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Rubicureに学ぶメタプログラミング