Submit Search
Upload
method_missingの紹介(2013 3Qカジュアル勉強会資料)
•
1 like
•
3,436 views
Shinichirou Nakamura
Follow
2013年3Qにやったカジュアル勉強会で使った資料。method_missingについて軽く話したので、一応資料を提出
Read less
Read more
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 12
Download now
Download to read offline
Recommended
Rubyのオブジェクト図をもう一度
Rubyのオブジェクト図をもう一度
ionis111
無名関数のすすめ
無名関数のすすめ
Shoichi Kakizaki
Ruby Introduction
Ruby Introduction
YushiroDodo
How to learn Rails
How to learn Rails
deeeki
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
Programming school 02
Programming school 02
Masato Nakajima
More Effective Feedback: Dashbozu
More Effective Feedback: Dashbozu
mallowlabs
SwiftSession5
SwiftSession5
裕人 一ノ瀬
Recommended
Rubyのオブジェクト図をもう一度
Rubyのオブジェクト図をもう一度
ionis111
無名関数のすすめ
無名関数のすすめ
Shoichi Kakizaki
Ruby Introduction
Ruby Introduction
YushiroDodo
How to learn Rails
How to learn Rails
deeeki
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
Programming school 02
Programming school 02
Masato Nakajima
More Effective Feedback: Dashbozu
More Effective Feedback: Dashbozu
mallowlabs
SwiftSession5
SwiftSession5
裕人 一ノ瀬
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Students.rb #1 資料
Students.rb #1 資料
Tetsunari Niina
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
宏治 高尾
Monad tutorial
Monad tutorial
Hideyuki Tanaka
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
akiko_pusu
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
hajikami
さんをつけろよデコ助野郎
さんをつけろよデコ助野郎
yoku0825
たった10年でbとvが聞き分けられるようになる方法
たった10年でbとvが聞き分けられるようになる方法
yamadan
IGDA_Sig-BoardGame_ワークショップ用資料
IGDA_Sig-BoardGame_ワークショップ用資料
Ryosuke Sugawara
GTD 残業を減らす方法
GTD 残業を減らす方法
Gaddict
Unix2
Unix2
Takaya Kotohata
バージョン管理入門
バージョン管理入門
Masafumi Yokoyama
X hago3
X hago3
YAMANE Toshiaki
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
T T
Unix1
Unix1
Takaya Kotohata
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
Rikie Ishii
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告
Yasuyuki Minamiyama
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~
Shuhei Hinoshita
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
Marika UCHIDA
More Related Content
What's hot
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Students.rb #1 資料
Students.rb #1 資料
Tetsunari Niina
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
宏治 高尾
Monad tutorial
Monad tutorial
Hideyuki Tanaka
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
akiko_pusu
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
hajikami
What's hot
(9)
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Pythonによる黒魔術入門
Pythonによる黒魔術入門
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
簡単!Groovy入門
簡単!Groovy入門
Students.rb #1 資料
Students.rb #1 資料
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
Monad tutorial
Monad tutorial
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る プラグインテスト初めの一歩(仮) -
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
Viewers also liked
さんをつけろよデコ助野郎
さんをつけろよデコ助野郎
yoku0825
たった10年でbとvが聞き分けられるようになる方法
たった10年でbとvが聞き分けられるようになる方法
yamadan
IGDA_Sig-BoardGame_ワークショップ用資料
IGDA_Sig-BoardGame_ワークショップ用資料
Ryosuke Sugawara
GTD 残業を減らす方法
GTD 残業を減らす方法
Gaddict
Unix2
Unix2
Takaya Kotohata
バージョン管理入門
バージョン管理入門
Masafumi Yokoyama
X hago3
X hago3
YAMANE Toshiaki
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
T T
Unix1
Unix1
Takaya Kotohata
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
Rikie Ishii
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告
Yasuyuki Minamiyama
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~
Shuhei Hinoshita
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
Marika UCHIDA
ふり返りハック ~ ライフをハッキングするために
ふり返りハック ~ ライフをハッキングするために
虹 父
社内Gtd勉強会 20101022
社内Gtd勉強会 20101022
tosch0718
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
hiroyuki Yamamoto
ユーザ目線の実践的BPM
ユーザ目線の実践的BPM
Shigeaki Wakizaka
マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512
tosch0718
DXライブラリのすゝめ
DXライブラリのすゝめ
Daisuke Nikura
NetBSDとは
NetBSDとは
miwarin
Viewers also liked
(20)
さんをつけろよデコ助野郎
さんをつけろよデコ助野郎
たった10年でbとvが聞き分けられるようになる方法
たった10年でbとvが聞き分けられるようになる方法
IGDA_Sig-BoardGame_ワークショップ用資料
IGDA_Sig-BoardGame_ワークショップ用資料
GTD 残業を減らす方法
GTD 残業を減らす方法
Unix2
Unix2
バージョン管理入門
バージョン管理入門
X hago3
X hago3
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
Unix1
Unix1
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」
ふり返りハック ~ ライフをハッキングするために
ふり返りハック ~ ライフをハッキングするために
社内Gtd勉強会 20101022
社内Gtd勉強会 20101022
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
ユーザ目線の実践的BPM
ユーザ目線の実践的BPM
マインドハック研究会 ライフハック編 20100512
マインドハック研究会 ライフハック編 20100512
DXライブラリのすゝめ
DXライブラリのすゝめ
NetBSDとは
NetBSDとは
method_missingの紹介(2013 3Qカジュアル勉強会資料)
1.
Rubyでやる メタプログラミング 存在しないメソッドを呼んでやるよ
2.
● メタプログラミングとは ● 様々なメタプログラミング ●
method_missingの力 アジェンダ
3.
メタプログラミングとは
4.
メタプログラミングとは ● メタプログラミングとは、コードを記述するコー ドを記述する事。 ● Rubyの場合、存在しないメソッドやクラスを実 行時に生成したりできる→魔術のようだ ●
エレガントである一方、理解しずらいところが ある。コードが追いにくい
5.
様々なメタプログラミング技法
6.
● 動的メソッド ● method_missging(ゴーストメソッド) ●
オープンクラス ● フラットスコープ ● 特異メソッド/特異クラス ● eval などなど 様々なメタプログラミング技法
7.
method_missingの力
8.
● 存在しないメソッドを呼び出した時に、このメ ソッドが実行される ● method_missing(name
, *args) ● railsのfind_by_~メソッドで使われている ● 動的プロキシとして使ったりもできる。 method_missing(ゴーストメソッド)
9.
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
10.
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
11.
● method_missingでキャッチする予定のメソッ ドが継承チェーンの上の方で既に定義され ている場合、method_missingは実行されな い。 ● 処理速度的には、直接呼ぶよりも遅い。 method_missingの注意点
12.
以上です。
Download now