松江Ruby会議05でライブコーディングをすることになったが、「Module#prependとRefinementsで遊ぶ」というタイトルだけ出して、実は内容を考えてなかった。以下のようなAspectJ風のコードを書くためのaspect.rbを実装しようと思う。BackupJob.new]jobs.each(&:run)実質20分くらいの持ち時間で上手く書けるかどうか。松江Ruby会議05松江Ruby会議05に参加してきた。参加されたみなさん、おつかれさまでした。ライブコーディングがテーマだったので色んな人のコードを見られて楽しかった。まつもとさんも珍しく書き下ろしのコードを紹介してたし。圧巻だったのはDXRuby作者のmirichiさんのライブコーディングで、15分程度(?)でその場で一からブロック崩しを作られていた。スプライトの衝突判定にSprite#===を使われていたのが印象的だったけど、たぶんcaseやgrepで使えるようにという設計なんだろう。自分がライブコーディングで書いたコードは以下のURLに置いておいた。:baz)みたいなpointcutの指定(Fooの中のBar#bazの呼び出しだけにアスペクトを織り込む)ができると使いやすそう。Module#prependだとメソッドの呼び出し側でなく呼び出されるメソッドの側を置き換えるので、Fooから呼び出されたかどうかの判定に呼び出し元のクラスの情報が必要になるが、Rubyレベルではその情報を取るAPIがない。気が向いたらrb_debug_inspector_open()とかを濫用して作るかもしれないけど、呼び出し元のクラスくらいは普通にRubyレベルで取れてもいいように思う。[私は宮崎で木工作家をしている宮国と申します。現在は仕事の傍ら、以下のウェブサイトを運営しております。[コメントありがとうございます。レポートを興味深く拝見しましたが、問題意識に共感いただけたことを嬉しく思います。[見ていただいてありがとうございました。コメントもありがとうございます。