RubyのDI、AOPフレームワーク

JavaからRubyへ』は第6章の途中まで読んだけど、技術面の話もやっぱり概念的な話しか出てこないので、具体的にDIの代わりにこうするみたいなのはわからなかった。
仕方がないのでGoogle先生に聞いてみると、「Ruby DI」で自分の記事が最初にきちゃったよ。。。
気を取り直して調べてみると、RubyにもそれなりにDIやAOPフレームワークはあるみたいだ。せっかくなので調べた範囲でリストアップしておこう。(今後検索でここにきちゃう人のためにもね)


まずはDIフレームワーク

Needleが有力そうな印象。
CoplandはNeedleの作者がNeedleの前に作ったDIフレームワークJavaのHiveMindベースらしい。CoplandのJavaっぽさをなくして新しく作ったのがNeedleってことになるみたい。
その誕生秘話がこれ。
http://www.rubygarden.org/index.cgi/Libraries/copland-to-needle.rdoc
この人はRailsのデプロイツールCapistrano(旧SwitchTower)も作ってる。


次はAOPフレームワーク

こちらはAspectRが有名みたい。CGIKit::Aspectも簡単に使えそうな印象。


で、RailsでもDIは検討されたけど、DIフレームワークに依存しない形で統合するように落ち着いたという話を発見。
http://andore.com/money/trans/railsInjected_ja.html

結局RubyでもDIとかAOPが有用な場面はあるしフレームワークもある。でもそれらを使って複雑にするほどメリットがないってことのようだ。
あとは実際にRubyでそれなりの規模のものを作ってみて本当にDIやAOPが必要かどうかは見定めてみよう。必要ならフレームワークがあるということがわかっただけでも今回はよかったと思う。

そのほかの参考記事も最後に挙げておく。
http://jp.rubyist.net/magazine/?0002-RLR
http://www.thinkit.co.jp/free/article/0608/12/4/

初心者マーク(ウォーミングアップ)終了

初心者マークのトレーニングが終わった。ここまではそれほど難しいものはなくすらすらと進められる。それでも熟語になった時の意味がわからないものもあった。ようは慣用句みたいな「How do you do?」がなぜ「はじめまして」なの?みたいなやつだ。
だいたい日本語にきっちり当てはまる言葉がないからしかたなく似ている意味の日本語を訳にしてるってこともあるだろう。こーゆーのは留学するとか映画見るとかでなんとなく覚えた方がニュアンスまでわかってくるんだろうなぁ。

OS自作入門−2日目

2日目はブートセクタに書いたアセンブラを解読するのがメイン。CPUのレジスタ、メモリとのやりとり、BIOSの呼び出しやら。
お恥ずかしい話、レジスタとかBIOS周りの知識はほとんどなかったわけだけど、動くものがあって説明されるのですごくわかりやすかった。リトルエンディアンでメモリに格納されるよ、とかの話もあって面白い。画面に"hello, world"って表示するだけのプログラムだけどそれがCPU、メモリ、BIOSでどうやりとりされて動くのかがだいたい把握できた。
機械語とほぼ1対1で対応するソースを書くって直接CPUを触ってる感があって楽しいなぁ。

OS自作入門−1日目

30日でできる! OS自作入門

30日でできる! OS自作入門

思い立ってやりはじめた。
1日目はバイナリエディタフロッピーディスク用イメージを書いて起動しちゃうという荒業(?)から始まる。次はそれをNASKというアセンブラで書く。ここまで。
いや〜、おもしろい。普段Javaとか書いてるとまったく意識しない部分をやっているのですごく新鮮。まだ起動部分のプログラムはブラックボックスのままただバイナリを書いてるという状態なんだけど、それでも自分が書いたものをフロッピーディスクに入れてPCを起動したらメッセージが出力されるってのはそれだけで感動モノ。
ずっとC++JavaRubyとかでプログラミングしてきたわけだけど、それが何で動いているのか漠然とは理解しているつもりでも実際のところよくわかってない気がしていた。それを解消すべくやってみようと思う。っていうのは建前で、ただ楽しそうだったからやってみるって感じ。他にやるべきことはたくさんあるわけだけど、今やりたいことがこれだったのでその気持ちを大事にしてみようと思う。
はてさて、30日目までたどり着くやら。

DIやAOP

今日JavaからRubyasin:4873113202を読み進めてたら第3章にこんなことが書いてあった。

Javaで言語を拡張するために(Dependency Injectionアスペクト指向プログラミングといったバズワードや、XMLベースの設定を利用するような)厄介で複雑な方式が必要不可欠なのは、動的言語のような方式ではJavaの拡張が難しいからです。

うひょ〜。バズワードって。。。
やっぱり動的言語ならそんなのいらないってことらしい。では具体的になぜいらないのかを知りたいわけだけど、5〜6章あたりが技術的な話らしいのでそれまで楽しみにしていよう。

JavaからRubyへ

JavaからRubyへ ―マネージャのための実践移行ガイド

JavaからRubyへ ―マネージャのための実践移行ガイド

読み始めました。まだ2章終わった導入部分ですが、Javaのいけてないところなんかが書いてあって面白いです。「シンプル」って大事だよなぁって改めて思わせてくれます。
ところでRubyだとS2が対象としてるDIやAOPってのはどーしてるんでしょうね?「DIでのロジック切り替えなんかはDuckTyping+クロージャで切り替えられるしAOPなんて特異メソッドでなんとかなるぜ」とかそんな感じでしょうか?(少しだけ考えて知ってる言葉並べただけですw)
3章以降を読めばわかってくるのかなぁ。

初心者マークの1終了

淡々と寝る前にちょこっとだけやってるえいご漬け。やっと初心者マークの1が終わり。普段のゲームの仕方なら間違いなく1日目で突破している量。まだ合計でも1時間もやってないんじゃないかな。
淡々と毎日やってみる取り組みは今のところ継続中。ってこの程度は熱中してても続けてるであろう日数だけどね。