普段はROMの村山です。

> Ruby 上で Javaの interface のようなものものを実現するには、どうしたらよ
> いのでしょうか?
> 
> Rubyは型を宣言しないので機能的には interface は不要ですが。
> クラスを実装する人に、あるクラスに実装しなければいけないメソッドを伝える
> (強制する)目的としての interface 的な使い方をしたいのです。

interfaceというよりはabstractクラスなのかも知れませんが、いずれにせよ
Rubyではコンパイルという概念はないですよね?だからせいぜい次のような
対応しかできないのではないでしょうか。

・「スーパークラス」で必要なメソッドを全部定義し、例外を投げるように記述する。
(それらのメソッドはサブクラスで適切にオーバーライドすることが前提。)

初回呼び出し時に例外が出ればいいというのであれば、これで終わり。

・起動時に、そのクラスのサブクラス一覧を取得し(これの取得方法はアプリ依存?
それともリフレクションとかで可能?)、それらサブクラス全てについて上記に該当する
メソッドを全て呼び出し、例外が出ないことを確認させる。(コンパイルエラーに相当。)

或いはそれを確認するオプションを用意して、開発者にそのオプションを使用して
確認することを義務づけるなどする。


他にもっといい方法があるかもしれませんが、とりあえず思いつくのはこういうものです。
-- 
murayama <locutus / pg8.so-net.ne.jp>