bean

java beanはrubyになるとどうなるか。ですが
よくよく調べてみるとjavaからrubyへ移行してく人向けに日経ソフトウェア2006年10月号に詳しくのってました。
あと、ネットならkbmjとかにもありました。
下調べが足りてないわけですが、自分の勉強も兼ねてるので
なるべくネタが被らないようにマッタリとやってきます。


で、beanはrubyだとどうなるかですが、
今回はどらえもんの4次元ポケットを題材にしてみることにしました。


Pocket.java

public class Pocket {
	private String item;

	public String getItem() {
		return item;
	}

	public void setItem(String item) {
		this.item = item;
	}
}

implements Serializableがないとか、細かいことは言いっこなしで...
このポケットを使って未来の道具をやりとりするコードは、


Dora.java

public class Dora {

	public static void main(String[] args) {
		Dora dora = new Dora();
		dora.exec();
	}

	private void exec() {
		String smallright = "スモールライト";
		Pocket pocket = new Pocket();
		pocket.setItem(smallright);
		System.out.println(pocket.getItem() + "〜!");
	}
}


テレ朝からクレームが来ないか、ちょっと心配になってきました...
とりあえず、これでbeanを使うコードのできあがりです。


ruby版だと、いろんな所でかかれているように
ゲッター/セッターがなくなり、attr_accessorという定義を書きます。
これはどうやらメソッドのようです。


このattr_accessorを使って四次元ポケットを書くと


pocket.rb

class Pocket
  attr_accessor :item
end

このポケットを使うどらえもん側のコード、dora.rbです。

require "pocket"

class Dora
  def exec
    smallright = "スモールライト"
    pocket = Pocket.new
    pocket.item = smallright
    puts smallright + "〜!"
  end
end

dora = Dora.new
dora.exec


attr_accessorを使うとゲッター/セッターを使うよりコード量は減りますね。
eclipseとか使えば、自動生成ではあるんですが。


ただし、bean相当を操作する時にsetナニガシ("もごもご")と書かずに
プロパティを設定するような書き方ができるのが分かりやすいと思います。