A Day in the Life

2007-05-16

rp5g

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/dewdrop/20070513/p5r

実際に動かしてみた。JRuby + processing おもろいわー。irb だとメソッド補完がきくし、もうちょっと processing 用にカスタマイズした irb 用意するとより使いやすくダイナミックに制御できて面白そう。draw メソッドの書き換えは全部 class_eval で string 渡しで行えば draw 自体差し替えが簡単にできる履歴みたいなの作ったり。

最近なにかと JRuby に興味があるお年頃。はやく mxmlc がオプソにならないかなー。

Ruby のリフレクションはダークサイドか

ruby でのリフレクションはどれだけダークなんだろう.no title

型あり言語ハッカー視点からの興味深い記事。どれだけダークなんでしょうねぇ。個人的には eval 以外は使いまくる派だなぁ。高橋会長はなるべく使わない派だった気がする。結局は青木さんが書いているように使いすぎず何事もバランスなのでしょうけど。

リフレクションを使っているとまさに Ruby という感じがしますから、誰しも一度はリフレクションでプログラムを埋め尽してみたくなる時期があるものです。かく言うわたしもかつてリフレクションを使いすぎて自爆したことがありました。皆さんくれぐれもリフレクションの使いすぎには用心してください。no title

Rails のコードがリフレクション多用しまくっているので解りにくくなっているところが結構あるのも確か(特に Routes 周りとか読んでいて悶絶した)だけど、それも面白く感じてしまうのは Rubyist なんだろうか。

あと細かいですが、constantize はクラスじゃなくて定数を取得するメソッド(ruby はクラスはたいがい定数)でクラス以外にも定数化するときに時々便利だなぁ、とか思います。

でも String#to_const とか String#constantize がデフォルトで組み込まれてないのは、文字列から定数に変換されるのはなんか気持ち悪いからとか matz が思ってたりするのかなぁ。Object.const_get(klassname).new でクラスのインスタンス作れるなんて、あまり発想が思い浮かばなくて文字列から定数への変換の仕方に悩む人多そう。使い始めて一年ぐらい解らなかった。なら組み込みで解りやすいのがあってもいいのかなーとか思う。

自分は Object#instance_eval を必要以上に使いまくってしまう(たとえばとあるインスタンスの隠蔽されたインスタンス変数にどうしてもアクセスしたいときなどは、かなりの確率で instance_eval 使って取得してしまうとか。テストを書いてもダメかな(ダメなんじゃない?))ので、ダークサイドな気がする。あと今 ruby で一番好きなメソッドは instance_eval 。

いまいち確信がない. リフレクションが危険だと感じるのは型システムの支援を受けられなくなるから

ならIDEによる支援がほとんど無い Ruby なら一度ダークサイドに落ちてみるのもどうでしょうか:D

記事の一覧 >