DIとコンポーネント化についての議論

3
非実在naka aki @naka_aki_spl

class A implements B, C; interface D extends B,C; class E implements D; ここでAとEは互換じゃないよねjavaって。これが互換になってくれないと、ここでのDのような中間i/fの管理が爆発する。

2011-06-05 21:17:58
非実在naka aki @naka_aki_spl

@ryoasai74 あ。やっぱり大きい粒度かつ「自分らで作った」部品を扱う流れになりますよねえ。んで、個人的にはここでコンポーネントという言葉が出てくると、delphiの思い出とコンフリクトしますww。あっちだと「世間に流通する」部品をコンポと呼んでた(自作も出来るが)

2011-06-05 21:19:36
非実在naka aki @naka_aki_spl

delphiだとコンポというか部品化が「結局うちわに閉じる」という心配をあまりせずに済んだ印象が有るんだわ。javaを見てると何通りかの部品化のやりかたの流れ(EJBもDIも)がどれも「うちわに閉じる」のばかりになってるように見受けて、もにょるんだ俺。

2011-06-05 21:20:57
非実在naka aki @naka_aki_spl

で、やっぱりなんかおかしいんじゃね?と思うわけ。javaの「部品化」は。技術的問題と言い切れる(例:static)か、それとも風習の問題なだけなのか、は、俺も未だに断言できないけどさ。

2011-06-05 21:21:49
非実在naka aki @naka_aki_spl

まあ流通部品を作れなかったからといって即滅びないとならないわけじゃないので、それはそれでまたどうでもいい話なんだが。

2011-06-05 21:22:24
Ryo Asai @ryoasai74

@naka_aki_spl そういう意味だとJavaBeanはDelphiやVBのコンポーネントを意識していたもので、SpringのDIももともとはBeanを対象にしていたからつながりはあるのですけどね。EJBコンテナとかはDelphiなどのパネルのようなメタファーでは。

2011-06-05 21:22:33
非実在naka aki @naka_aki_spl

@ryoasai74 Beans自体の仕組みは(あまり深入りしてないという意味ででも)VBとかの部品ぽくなる余地はいっぱい有ると思います。ただ、その後、その余地があまり活用されてない感じなのかなあとは思う。

2011-06-05 21:23:35
非実在naka aki @naka_aki_spl

javaのたとえばclassメソッド=staticとかといった制約は、部品流通にとっては脚引っぱりだと思ってる。致命的なほど強い引っぱりかどうかはまだちょっと俺も判ってないけど。

2011-06-05 21:26:49
非実在naka aki @naka_aki_spl

リフレクションAPI使えば最終的になんでも叩けるわけだけど、「何を叩くべきか」「どの叩き方を共通流通方式の道具として採用するか」は直接縛れなくなるわけで、そういう意味では流通への脚引っぱりになると思う。

2011-06-05 21:28:00
非実在naka aki @naka_aki_spl

delphiだと「複数作れるけどそのうちこういうシグネチャのコンストラクタだけを部品化において要請する」があり、かつそれを「virtualによって字面だけじゃなくバイナリ互換性/型安全性も押さえる」ことで、部品のバイナリ配布の容易性を確保してる。

2011-06-05 21:29:14
非実在naka aki @naka_aki_spl

delphiだとさらに、その要請されたコンストラクタのシグネチャの具体的な姿もまた、部品というか「GUIデザイナと連携させるために特化」したユースケースwwを突きつけてる。つまり「それを貼られる親画面の参照」を引数としろと。これで嫌でもww全ての「部品」が画面に貼れる。

2011-06-05 21:31:36
非実在naka aki @naka_aki_spl

javaの場合はそこまでGUIと心中する気がないので、たとえばdelphiのと同じコンストラクタシグネチャが要求されたら火祭りになってしまう。まあそれはそれでいいんだが、じゃあ何か枠は無くていいのか?ってのは疑問と言えば疑問。

2011-06-05 21:32:43
非実在naka aki @naka_aki_spl

半ば繋がりがある気もする疑問の1つとして、なんでjavaは「メインアプリというクラス/オブジェクトが無い」のかなってのは有る。これまたdelphiの連想で言うなら、もしアプリobjの仕様が有るなら、それに部品を統括させるという世界も描けたはずで。

2011-06-05 21:33:56
非実在naka aki @naka_aki_spl

@ryoasai74 もしコンテナがパネルだったとしたら、ちょっと無理が有るかなと思います。delphiのパネルはあくまでアプリの一部ですが、コンテナがアプリの一部かどうかは色々回り道があったような。(って理解でいいんしたっけ>java歴史

2011-06-05 21:36:24
非実在naka aki @naka_aki_spl

javaとdelphi見てると、部品の裏返しというかお相手としての「アプリ本体という物の定義」がしっかりしてるかどうか、ってのが有るような気がしてます。delphiは公式に定めてしまってるので部品がそれに集る。javaはフリーダムなので「何を部品とするか」がずっと流動的…?

2011-06-05 21:37:54
Ryo Asai @ryoasai74

@naka_aki_spl AWTだとContainerというクラスがあってFrameやPanelが継承していて、ButtonなどのBeanを配置できるけど、EJBコンテナとかは用語上はこの辺のメタファが起源ではと思うのですが。 http://bit.ly/j2ZRgQ

2011-06-05 21:40:47