Rubyは宇宙戦艦ヤマト

少し慣れてくるとiteratorをじゃんじゃん使うようになったのですが、iteratorインターフェースの両側、つまりブロック側とブロックを渡される側の両方でプログラミングできるのが非常に強力であることに気づきました。

今までインターフェースと言えばAPI的な発想しかなく、呼び出し側でプログラミングするものと考えてしまっていたのですが、iteratorを多用し始めたことで両側を使うスタイルに変わりました。リファクタリングの幅が劇的に広がった感じです。

そんな中ふと思い出したのが、宇宙戦艦ヤマト波動砲と波動エンジン。波動エネルギーを後方に出力するとヤマトの推進力となり、「エネルギー充填120%」で艦首方向に噴出すると波動砲となる。なんとなく、iteratorとブロックの関係に思えてきませんか♪