久保@茅ヶ崎市です。
# ruby-ext でははじめまして。普段は ROM の人です。

今、Ruby/GNOME の Canvas 部分を書いているのですが、重複して作業してい
る方はいるでしょうか?
# 重複してたらどうしよ。

今のところ、
   ・Gnome::Cavas ( affine transform 関連のメソッドは除外 )
   ・Gnome::Canvas::Item
   ・Gnome::Canvas::Group
   ・Gnome::Canvas::Rect
   ・Gnome::Canvas::Ellipse
   ・Gnome::Canvas::Text
ができています。

ところでちょっと迷っているところがあります。
GnomeCanvasRect を C API で作成するとき、
   gnome_canvas_item_new (group,   # GnomeCanvasGroup のインスタンス
                          gnome_canvas_rect_get_type (),
                          "x1", 20.0,
                          "y1", 30.0,
                          "x2", 70.0,
                          "y2", 60.0,
                          "outline_color", "red",
                          "width_pixels", 8,
                          NULL);
となります。これを ruby に翻案すると、

(1) 引数そのまま。返り値は Gnome::Canvas::Rect になる。
    Gnome::Canvas::Item.new(group,
                            Gnome::Canvas::Rect.type,
                            {"x1" => 20.0,
                             "y1" => 30.0,
                             "x2" => 70.0,
                             "y2" => 60.0,
                             "outline_color" => "red",
                             "width_pixels" => 8})
    # "x1", 20.0, ... の部分は Hash で対応。

(2) 返り値 Gnome::Canvas::Rect になるので、引数が変わっちゃうけど、
    Gnome::Canvas::Rect.new(group,
                            {"x1" => 20.0,
                             "y1" => 30.0,
                             "x2" => 70.0,
                             "y2" => 60.0,
                             "outline_color" => "red",
                             "width_pixels" => 8})

(3) Gnome::Canvas::* は root 以外は必ず Gnome::Canvas::Group の下に作
    成されるので、
    group.item_new(Gnome::Canvas::Rect.type,
                   {"x1" => 20.0,
                    "y1" => 30.0,
                    "x2" => 70.0,
                    "y2" => 60.0,
                    "outline_color" => "red",
                     "width_pixels" => 8})

の 3 つの API が考えられるのですが、どれが良いでしょうか?

今は (2) で作っています。
意味的には (2) がしっくりくるけど、元の API をなるべく変えないという原
則に従うとちょっと......。

# (3) は自分でも却下

では、再見
-- 
神奈川県茅ヶ崎市在住
久保 健洋
kubo-t / cx.airnet.ne.jp
http://terry.nikkeibp.co.jp/~kubo/