SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
Rubyでやる
メタプログラミング
存在しないメソッドを呼んでやるよ
● メタプログラミングとは
● 様々なメタプログラミング
● method_missingの力
アジェンダ
メタプログラミングとは
メタプログラミングとは
● メタプログラミングとは、コードを記述するコー
ドを記述する事。
● Rubyの場合、存在しないメソッドやクラスを実
行時に生成したりできる→魔術のようだ
● エレガントである一方、理解しずらいところが
ある。コードが追いにくい
様々なメタプログラミング技法
● 動的メソッド
● method_missging(ゴーストメソッド)
● オープンクラス
● フラットスコープ
● 特異メソッド/特異クラス
● eval
などなど
様々なメタプログラミング技法
method_missingの力
● 存在しないメソッドを呼び出した時に、このメ
ソッドが実行される
● method_missing(name , *args)
● railsのfind_by_~メソッドで使われている
● 動的プロキシとして使ったりもできる。
method_missing(ゴーストメソッド)
class Man
def method_missing(name , *args)
puts "#{name} method exec"
puts args.join('==')
end
end
@man = Man.new
@man.hogehoge('one' , 'two' , 'three')
$ hogehoge method exec
$ one==two==three
class Man
def exec(name , args)
puts "#{name} Call"
puts "http://hogehoge/api/#{name}/#{args[0] || 'test'} exec"
end
def method_missing(name , *args)
puts "method missing exec"
exec name , args
end
end
$ @man = Man.new
$ @man.ugo
method missing exec
ugo Call
http://hogehoge/api/ugo/ exec
● method_missingでキャッチする予定のメソッ
ドが継承チェーンの上の方で既に定義され
ている場合、method_missingは実行されな
い。
● 処理速度的には、直接呼ぶよりも遅い。
method_missingの注意点
以上です。

Más contenido relacionado

La actualidad más candente

Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのかHaskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
 

La actualidad más candente (9)

運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのかHaskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
 
簡単!Groovy入門
簡単!Groovy入門簡単!Groovy入門
簡単!Groovy入門
 
Students.rb #1 資料
Students.rb #1 資料Students.rb #1 資料
Students.rb #1 資料
 
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
 
Monad tutorial
Monad tutorialMonad tutorial
Monad tutorial
 
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
 

Destacado

Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
T T
 
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
Rikie Ishii
 
社内Gtd勉強会 20101022
社内Gtd勉強会 20101022社内Gtd勉強会 20101022
社内Gtd勉強会 20101022
tosch0718
 
マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512
tosch0718
 
DXライブラリのすゝめ
DXライブラリのすゝめDXライブラリのすゝめ
DXライブラリのすゝめ
Daisuke Nikura
 
NetBSDとは
NetBSDとはNetBSDとは
NetBSDとは
miwarin
 

Destacado (20)

さんをつけろよデコ助野郎
さんをつけろよデコ助野郎さんをつけろよデコ助野郎
さんをつけろよデコ助野郎
 
たった10年でbとvが聞き分けられるようになる方法
たった10年でbとvが聞き分けられるようになる方法たった10年でbとvが聞き分けられるようになる方法
たった10年でbとvが聞き分けられるようになる方法
 
IGDA_Sig-BoardGame_ワークショップ用資料
IGDA_Sig-BoardGame_ワークショップ用資料IGDA_Sig-BoardGame_ワークショップ用資料
IGDA_Sig-BoardGame_ワークショップ用資料
 
GTD 残業を減らす方法
GTD 残業を減らす方法GTD 残業を減らす方法
GTD 残業を減らす方法
 
Unix2
Unix2Unix2
Unix2
 
バージョン管理入門
バージョン管理入門バージョン管理入門
バージョン管理入門
 
X hago3
X hago3X hago3
X hago3
 
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
 
Unix1
Unix1Unix1
Unix1
 
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
 
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告
 
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~
 
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
 
ふり返りハック ~ ライフをハッキングするために
ふり返りハック ~ ライフをハッキングするためにふり返りハック ~ ライフをハッキングするために
ふり返りハック ~ ライフをハッキングするために
 
社内Gtd勉強会 20101022
社内Gtd勉強会 20101022社内Gtd勉強会 20101022
社内Gtd勉強会 20101022
 
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
 
ユーザ目線の実践的BPM
ユーザ目線の実践的BPMユーザ目線の実践的BPM
ユーザ目線の実践的BPM
 
マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512
 
DXライブラリのすゝめ
DXライブラリのすゝめDXライブラリのすゝめ
DXライブラリのすゝめ
 
NetBSDとは
NetBSDとはNetBSDとは
NetBSDとは
 

method_missingの紹介(2013 3Qカジュアル勉強会資料)