- Amazon.co.jp ・本 (312ページ)
- / ISBN・EAN: 9784048687157
感想・レビュー・書評
-
ものすっごい面白かった。
Rubyやるなら絶対読んだ方がいいと思う。
たとえ普段メタ語を話さないとしても読んだ方がいいと思う。
この本は、クラスを作ってメソッドを定義したりできるレベルならば十分読める。
だけど、第2部は結構難しかった。というか半分くらい分からなかった・・・。それでも読んでよかったと思える一冊。詳細をみるコメント0件をすべて表示 -
いろいろな人にオススメされたので読んでみる事に。
いわゆるRuby初心者脱却には非常にいい本。物語形式で読み進められるし、最後にまとめもあって素敵。
ActiveRecordのソースを読むところは結構斜め読み。これをちゃんと読めるように精進せねば。 -
Ruby リハビリ本の第2弾。メタ・プログラミングというと Java の reflection のようなものを想像するが、しかし、Ruby のそれはコア言語と密接に結びついているという点でその趣を大きく異にする。メタプログラミングが、言語の裏道ではなく、本道そのものなのだ。こんな抽象的な書き方をしてしまうと何のことかまったく判らないだろうけれど、要はメタプログラミングこそが Ruby を正しく理解するための最も簡単な方法であり、それゆえメタプログラミングは Ruby プログラミングそのものでもある、ということなのだ。
前半は Ruby におけるメタプログラミングの(つまり、Ruby の)基礎講座、後半は ActiveRecord や ActionController といった Rails のコードを読みながら、前半で学んだ知識が実際のコードの中でどのように使われているかを紹介する。これであの奇怪な ActiveRecord のコードが読めるようになった……かな? -
ブログにレビューを書きました。http://irohiroki.com/2010/09/09/metaprogramming_ruby
-
メタプログラミングはRubyのオマケではない。
むしろRubyの本領である。
Rubyを深く知りたい、もっと使いこなしたい人には本書がオススメです。 -
メタプログラミング Ruby
-
メタプログラミング Ruby
-
読書メモ: メタプログラミングRuby
2012/11/06(火)〜2012/12/13(木) 中断有り 7日間200分程度
Railsなどのフレームワークで使われるテクニックの本質を解説してくれる。
まだ自分が理解できるレベルに達していないので半分程度しかわからなかった。
Railsを触った後にまた読み直したい。
ストーリー形式なので理解しやすいが購入するほどでは無いな。
[more]
・メタプログラミング:コードを記述するコードを記述する こと
静的メタプログラミング: コードジェネレータやC++テンプレート
動的メタプログラミング: Rubyのメタプログラミング RailsのActiveRecordが有名
・movie.title = \"x\" は title=()メソッド呼び出し def title=(value) で定義する
・ActiveRecordはクラス名からデータベース名(複数形)、カラム名からアクセサメソッドを生成する。
・Rubyのclassキーワードは、クラス宣言と言うよりもスコープ演算子のよう。
・オープンクラス クラスを再度オープンして定義を追加する。
・ルートクラス: Ruby1.8まで Objectクラス。1.9から BasicObjectクラス
・send() 第一引数にシンボルを入れることでメソッド呼び出し。privateもよびだせるので危険。public_send()が安全
・シンボル コロンをつけるとシンボル イミュータブル to_sym() , to_s()で相互変換
・dispatch 振り分け
・define_method() 動的にメソッドを定義する
・ミミックメソッド かっこが無いときに擬態のように返送しているメソッド。
obj.my_attribute=() や puts() など
メソッド呼び出しの括弧を省略するのは熟練プログラマがよく使っている。キーワードのように見える。※訳者はミミックが好きらしいので誇張されているかも。
・Object#method_missing() メソッドが見つからないときにたどり着くメソッド
・Object#const_missing() 定数が見つからないときにたどり着く
・シンボルと文字列 シンボルはイミュータブル=変更出来ない。実際は使い分けは慣習。「物」の名前はシンボル。例えばsend()はシンボルでも文字列でも受け付けられるが、シンボルの方が適切とされる。to_sym() <-> to_s() で相互変換可能
・Rails バックエンドにデータベースの或るWebアプリをRubyで開発するためのMVCフレームワーク
・SymbolのProc変換 mapやinjectに&:funcを渡すと簡単にかける。Ruby1.9のSymbol#to_proc()実装のお陰。 -
Rubyist必携の書。RubyやRailsのバージョンが古く、一部情報が古くなっているが、バージョンに関わらないRubyのなんたるかを学ぶことができる。
表題どおりRubyでどのようにメタプログラミングを行うかだけでなく、Rubyがどのような言語で、どのように書いていけばいいのか指針も見つかる。
中級技術者向けと書いてあるが、プログラミング未経験でないなら、Ruby初心者にもぜひとも読んでほしい、そんな一冊である。