石橋秀仁です。

> けいじゅ@日本ラショナルソフトウェアです.

> ># だから啓蒙活動は重要ですね。
> 
> それは言えますね.

Object Dayとなると、オブジェクトコミュニティへのインパクトが
期待できますよね。客観的に見まして。アンテナを張っている人達が
集まって来ますから。

やっぱり本が出たというのは大きいです。あと、本を書くような
人達もRubyに注目しているという事実。"The Pragmatic Programmer"が
ruby-talkにいる、というのも、ぼくのようなミーハーには効きます(^^;
自身をもって人に勧めることができますから。
# でも、あんまり著名人の名前を出すのも嫌われるかな・・・ (^^;;;

> インターフェイスはあくまで仕様ですからRubyのモジュールとは違いますよね.
> 
> UML的に言えばRubyのmoduleは<<module>>とか<<mixin>>とかのステレオタイプを
> 持つクラスってことになると思います. で, includeは実現でなく<<mixin>>汎化っ
> てことになるのではないかと. 

<<mixin>>ってステレオタイプは知りませんでした(^^;;
いちおうRuby+UMLで細い記述も可能なのですね。ぼくも
http://www.rr.iij4u.or.jp/~hideto-i/rb/index.html#graphlib
にクラス図を描いたんですが、これも勉強して書き直さなければ (^^;

> >* デザインパターンがライブラリ
> >* Rubyスクリプトの抽象度が設計言語なみに高い
> 
> >  「思いたったらRuby」
> >
> >という感じで、作りたいものをすぐに実現できるのが嬉しい。
> 
> ですね. 当然, その辺りも今回は強調したいと思っています. それに, 
> 
>   「思いたったらRuby」
> 
> って標語もなかなかすばらしい(^^;;;

(みなさん)どうぞ使ってやってください。この場で著作権放棄しますから:-)

> ># やっぱ動的プログラミングとオブジェクト指向の組み合わせはすごいす

> 動的ってところがUMLにとってはつらいところではあるんですよね(^^;;;
> 
> Rubyでは, 厳密に言えばUMLでいうところの属性も操作も実行時に決まるもので
> すので, この辺りをUMLで正確に表現するのは結構難しいというか面倒ですよね.
> 
> UMLからみたRubyの特徴
> 
> * <<module>>クラス と <<mixin>>汎化
>   + moduleのinclude
> * 状態限定クラス(class-in-state)
>   + 動的なmoduleのinclude
>   + 動的なインスタンス変数/メソッドの定義
> * 動的クラス分類(dynamic classification)と多重クラス分類(multiple
>   classification)と<<extendedBy>>依存関係
>   + オブジェクトに対するmoduleのextend
> 
> めったに出てこない概念がいっぱい出てきますね(^^;;;

おぉ、すごい(^^;;; UMLにはそんなのもあるんですね。さすがUML。
# さすが専門家のかたはすごい。勉強になります m(__)m

ところで、動的な属性という点でいえば、たとえばobserver.rbを使って、
% ruby -w xxx.rb
とすると、"instance var @observer_peers not initialized"と
でます。こういうのが、静的型の好きな人や、コンパイル原理主義な人が、
「だからスクリプト言語なんてよー」って言いたくなるところですかね。
# これに関しては、module定義内で"attr"すれば済むにしても。

あと、{a = eval "Foo#{bar}.new"}みたいに、クラス名さえ動的に
変えちゃうと、一部の人は怒るかもしれない。
# どんな人がだ (^^;;;

--
Hideto "rubyholic" ISHIBASHI