- 1 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 23:29:27 ]
- 一部で話題になっている国産オープンソースDIコンテナSeasar V2(略してS2)。
ってどうよ?みんなもう使ってるの? 使用経験とか、実戦配備情報とか、つかえねーよボケ、とかいろいろ書いてね。 本家 seasar.org www.seasar.org/ Seasar Projectグループ seasarproject.g.hatena.ne.jp/ ひがやすをblog d.hatena.ne.jp/higayasuo/ 前スレ その1 pc5.2ch.net/test/read.cgi/tech/1092044210/ その2 pc5.2ch.net/test/read.cgi/tech/1098885253/ その3 pc8.2ch.net/test/read.cgi/tech/1102862221/ その4 pc8.2ch.net/test/read.cgi/tech/1119608621/ その5 pc8.2ch.net/test/read.cgi/tech/1135986150/ その6 pc8.2ch.net/test/read.cgi/tech/1148204750/ 関連スレ Java Spring Frameworkを語るスレ pc8.2ch.net/test/read.cgi/tech/1077465099/ Dependncy Injectionを語るスレ pc8.2ch.net/test/read.cgi/tech/1099827125/ Java⇔RDBのMapping-Frameworkを語るThre Vol.4 pc8.2ch.net/test/read.cgi/tech/1134701684/
- 944 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 13:08:27 ]
- 結局、計画的設計か進化的設計かって事だろ。
インタフェース不要派は進化的設計で、 「必要なものは必要になってから作ればいい。事前に用意しても複雑になるだけ。」 って考えてる。 インタフェース必要派は計画的設計で、 「将来発生し得る、様々な拡張に備えておく必要がある。」 って考えてる。 アジャイルの精神では進化的設計であるべきだけど、 そもそもDIってものが計画的設計の産物なんだと思う。
- 945 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 13:15:27 ]
- >>941
本質でない部分だからネタにしてんだろうがよw
- 946 名前:デフォルトの名無しさん [2006/12/06(水) 13:52:17 ]
- >>945
ごまかし乙w
- 947 名前:デフォルトの名無しさん [2006/12/06(水) 16:16:21 ]
- [Seasar-user:5402]
なんか噛みあってないんだよなw
- 948 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:29:42 ]
- >>944
逆だと思う、 インタフェース必要派は、 「将来発生し得る、様々な拡張に備えて」 あるインタフェースに対する実装を進化的に発展し得るが、 実装とインタフェースが同一な場合、 最初から全部計画的に設計を作っていかないと、 後から必要なものを付けたしつつ実装というのは難しい気がする。 動的言語(たとえばRuby)の場合も結局、 インタフェースは宣言しないだけで、暗黙的には存在するし、 Javaの場合はインタフェースを明示的に宣言しなければいけないから、 (本当なら暗黙的にできたものを)わざわざ書かなくてはいけなくて、 煩雑に感じるとか。
- 949 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:40:37 ]
- >>944と>>948、
どっちも気持ちはよくわかるけど 設計と実装でどっちを進化的とするかの 話ですれちがってる気がする。
- 950 名前:949 mailto:sage [2006/12/06(水) 16:45:34 ]
- ちょっとはしょりすぎた。
>>948って 実装を進化的に行えるようにするために 計画的に設計する、って読めたのです。 >>944の不要論の方は、 設計段階では実装を進化的に行ううんぬん 考えないで、必要になったら設計変えちゃえばいいじゃん って話。 でもさ、インタフェース作るくらいで計画的も何もないよな。
- 951 名前:944 mailto:sage [2006/12/06(水) 16:47:48 ]
- いや、事前にインタフェースを準備した時点で計画的設計だろ。
計画的…将来の拡張に備えて、実装の前に入念に設計する。 例えば、インタフェースを用意しておくなど。 進化的…将来の拡張は、拡張が必要なタイミングで設計からやり直す。 例えば、リファクタリングやリストラクチャリング、インタフェースの抽出など。
- 952 名前:944 mailto:sage [2006/12/06(水) 16:52:28 ]
- あ、間にレス入ってた。
>>951にリファクタリングって書いたけど、「リファクタリングは設計じゃないだろ」とか突っ込まないでねw >>950 その認識。 >でもさ、インタフェース作るくらいで計画的も何もないよな。 すまねぇ。ファウラーかぶれなんだ。
- 953 名前:950 mailto:sage [2006/12/06(水) 17:01:16 ]
- ああごめんごめん、計画的も何もないよなって
944を揶揄したわけじゃないんです。 悩むくらいなら作っちゃえばいいじゃんってのが 本音なので、そんな感じの意味です。
- 954 名前:948 mailto:sage [2006/12/06(水) 17:07:53 ]
- > でもさ、インタフェース作るくらいで計画的も何もないよな。
たしかに…。 どっちも拡張するときのやり方の問題って事ですか。 なんか、計画的と進化的という単語の意味の定義にずれがあるだけの気がしてきた。 ただ、この話が出てきたインタフェースを作るかどうかという話とはあまり関係ないような。 別にインタフェースから始めて、 拡張が必要なタイミングでインタフェースをリファクタリングしても良いわけですよね? 要するにインタフェースを書くのがめんどいか、めんどくさくないか? (インタフェースだけじ動かないけど実装なら書けば動くしね。)
- 955 名前:944 mailto:sage [2006/12/06(水) 17:09:43 ]
- >>953
把握。 漏れも、 「インタフェースが実装と1:1で対応してるのは、 無駄なものは作らないっていう本来のアジャイルの精神じゃないだろ?」 って一石を投じたかっただけだ。 インタフェースを事前に用意するのはたいした労力じゃないと思うし、 DIコンテナ使う上では用意するのが当たり前と受け入れてるお。 DIっていう機構に不信感が募り始めてるのは確かだけど。 従来のドメインモデルとは相性が悪いから、シンドメインモデルで!っていわれてもな…
- 956 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 17:43:39 ]
- しんどいモデルかと思った
- 957 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 19:06:32 ]
- DIコンテナ使うならとりあえずinterface作った方が良いよね、じゃダメなのかな。
実装・メンテのデメリットよりも得られるメリットの方が遥かに大きいし。 DIコンテナ使わないならまた話は別だが。
- 958 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:37:05 ]
- >>945
だから、本質では太刀打ちできないからそういう小ざかしいことするんだろ?
- 959 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 21:39:46 ]
- 2chで本質プゲラ
- 960 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 22:40:18 ]
- (^∀^)ゲラゲラ、シネヤ
- 961 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 01:12:30 ]
- いや、ていうか、小ざかしいことて…
切るって出てきたから、 切るは云々て下らんことを書いてみただけのただの通りすがりだ。 議論にも入ってねえ。
- 962 名前:デフォルトの名無しさん [2006/12/07(木) 06:09:53 ]
- プライドだけ一人前乙
- 963 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 09:27:12 ]
- 最近ただのつまらん書き込みに粘着するやつが多いな。
プライドって笑わせんな
- 964 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 12:36:23 ]
- 最近ただのつまらん書き込みするだけの粘着も多いな。
- 965 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:24:51 ]
- それ粘着か?
確かに粘着もいるが
- 966 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:31:19 ]
- なんとなく語感が良かっただけ。気にしないで。
- 967 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 15:56:30 ]
- 2ちゃん用語使いたがりかよ
↑ こういうのだよね、粘着って
- 968 名前:デフォルトの名無しさん [2006/12/07(木) 19:15:13 ]
- ひがたんの美声をボリューム大で聞きたいでつ。
- 969 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 22:18:25 ]
- うーみゅのブランド品を目の前で燃やしてみたい
- 970 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:03:27 ]
- インタフェース切るのって、ただ、
AOPの適用ポイント明確にするぐらいにしか使わなくね? Action - Logic - Dao構成なら、 どーせActionなんてテストしないんだから、 Logicのインタフェースは作成不要じゃね?
- 971 名前:デフォルトの名無しさん [2006/12/07(木) 23:13:31 ]
- 声がもっとしっかり聞こえればよかったけど、
Web放送勉強になりました。
- 972 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:25:49 ]
- >>970
とりあえず動くけどパフォーマンス的に問題があるロジッククラスがある場合に、 新しいロジッククラスに差し替えたいって要求が場合が他社と連携しての 開発ではあったりする。糞クラスを納品されたって訳だ。 そーゆー時に、俺らはチューニングされた新しいロジッククラスを設定ファイルを 書き換えるだけで投入できる。便利じゃないか? 俺らのチューニングしたロジッククラスは確かに早かった。 だが!ある特定の条件で発生する例外的な処理に対応しきれていなかった!! 修正するには根本的過ぎてかなり難しい! クラスに実装してたら、元ののバージョンを取得しようにも 他のクラスに手が入ってて入っている部分と切り出して チェックアウトするのがかなり難しいかもしれない!! そんな時、設定ファイルを書き換えるだけで、すばやくもとの実装に戻し、難を逃れる。 便利じゃないか?
- 973 名前:デフォルトの名無しさん [2006/12/07(木) 23:32:49 ]
- 便利!!!
- 974 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:37:37 ]
- >>973
分かってくれたか!!!!
- 975 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:52:47 ]
- テレビショッピングか何かを思い出したが、まさにそんな感じだな。
interface 作る・メンテするコストなんてたかが知れてる。 もともと実装クラスに存在する public なメソッドのいくつかを切り出すだけ。 修正する時の手間も本来の修正分(=実装クラスの修正)に interface のメソッドが増えるとか、シグネチャが変わる程度。 得られる効果は972氏のケースとか、 障害調査用実装とスイッチさせたりとか モック作ったりとか、そりゃもう夢は広がりんぐ。 もちろん、そういうことする必要に迫られない時も多々あるだろうけど、 せいぜい第二段落の作業が無駄になった程度。 僅かな手間をケチって何がそんなに嬉しいのか。 DIコンテナ使わなければそりゃ得るものは少ないだろうけど DIコンテナ使ってるなら問答無用でかけるべき手間。 定数が必要になった時、一箇所からしか使わないからって リテラルにマジックナンバー埋め込むかって話だ。
- 976 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:26:35 ]
- 最後の例がちょっと分かりやすいと感じた。
- 977 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:34:54 ]
- 超適当なインターフェイスの作り方
1.実装クラス〜Implを先に作る。 2.Eclipseでクラスを右クリック→リファクタリング→インターフェースの抽出を選択 3.インターフェイスに定義したいpublicメソッドを選んで、クラス名からImplを外して実行 4.パッケージが〜.implだった場合は、パッケージ名を修正して出来上がり だいたい15秒くらいでできるよw
- 978 名前:wildcats [2006/12/08(金) 00:39:36 ]
- >>975
別に手間をケチってる訳じゃないよ? インタフェイス抽出なんて僅かな手間だよね。
- 979 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:54:55 ]
- そもそも、この議論の起点になった奴が必要なときには
インターフェイスの抽出で済むじゃんって言ってるが、 多分、大体のときに必要になるのはインターフェイスを抽出する作業じゃなくて、 インターフェイスを残して、実装を退避させる作業なんだと思うけどなぁ。 それに、実クラスだとどうしても直接インスタンスを生成できちゃうから、 面倒なときにはDI使わずに自分で new しちゃったりするんよねぇ。 そーゆーのを後から抽出したインタフェイスに置き換えていくのって面倒じゃない? 「ぎょぎょ、業務で固有なロジック限定って言ったでしょ!!誤読厳禁!」 つってるけど、週次処理をこの場合には特別に実行するだとか、 そーゆー風に利用箇所が分散する観点がすっぽり抜け落ちてる。 多分Seasar全般に言えるんだろうけど、作り捨ての雰囲気が強いよな。 自分らの作ったシステムをしっかり保守していける体勢を作ろうという観点が 非常に欠けてる。 最近の迷走ぶりは今日早く家に帰れることを重視するあまり 将来困ろうが知っちゃこった無いって発想に近いと思う。
- 980 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 01:26:49 ]
- 改めて >>907 を読み返すと、
最後の意見はかなりの電波だな。 最初の意見は信仰する宗教の違いと思えなくも無いが。 二番目の意見は・・・Implって名前が嫌いなだけなのか?主張が分からん。
- 981 名前:970 mailto:sage [2006/12/08(金) 02:01:32 ]
- うーん、漏れは972みたいな状況になったことって一度もないんだが。
自分は、小さな開発規模しか経験してないってことなのかな。 だってさー、問題あったら、直接ロジックいじるじゃん? 別に協力会社が作ったソースであっても。
- 982 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 02:04:48 ]
- >>975
俺は一箇所しか使わない & 直接書いた方が判りやすい場合はわざわざ定数化するよりマジックナンバー書いちゃうけど、だめかな? なんでも定数だとかえって読みづらくなる気がするんだけど・・・。
- 983 名前:972 mailto:sage [2006/12/08(金) 02:26:15 ]
- >>981
おまいは、俺の発言をちゃんと理解したのか?(誤字が多すぎて読みにくかったと思うが) 現在正常に動いているものを変更すると変更後のものが動作の正常性を保障できないだろ? テストクラスが準備されていたとしてもそれが本当に十分に記述されてるのか分からない。 そーゆー場合には、実績として動くことが保障されているクラスはそのまま残しておいて、 そのクラスをコピペしてから内部実装に手を入れていくべきだと思う。 そして、コピペ元は新しいクラスが十分な動作実績を持ったと判断したときに削除する。 俺が書いてるのはあくまで開発だけで閉じた話ではなくて、 障害発生時の一次対応の迅速さまで考えた話だから 「ばぐっすか?はいはい〜、なおしました。これでどうすか?オッケーすよね」 っていうアジャイルな流れとは相容れないかもしれない。 年間システム停止時間1時間以内とか、そういう目標を課せられたプロジェクトに 密に関わってる人間じゃないとそーゆー視点は育たないのかなーとも思う。
- 984 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 02:26:58 ]
- 直接書いた方が判りやすい場合はそれで良いでしょ。
- 985 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 02:43:17 ]
- >>983
まぁ熱くならずに。 字面を追っただけで利点を実感できたら、そいつは多分天才。 一度でも「あの時 interface 作っとけば・・・」な経験した後じゃないと、 事例挙げられても「ふーん?」で終わりですよ。
- 986 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 03:53:49 ]
- >>972
>クラスに実装してたら、元ののバージョンを取得しようにも >他のクラスに手が入ってて入っている部分と切り出して >チェックアウトするのがかなり難しいかもしれない!! これって単にインターフェイスを定義するかどうかだけじゃなく、 ロジックを整理してクラス分割した上で、そのクラス同士を疎結合にできているかどうかまで 問われるよね? まぁ結局そこまで考えると、インターフェイスを使わずにクラス結合なんて考えられなくなるから 結果としては同じことになるんだけど ようするに、そもそもなんでインターフェイスを挟んでクラス間を疎結合にしようとしているのか 大元からしっかり考えないと、メリットを掴むのは難しいと思う。 単にインターフェイスを定義しても、そこで作ったロジッククラスが 一つだけのメソッドに1000行書いてるような巨大なトランザクションスクリプトだったりしたら 「設定ファイル一つで簡単に置き換える」とかいうわけにもいかないわけで・・・
- 987 名前:デフォルトの名無しさん [2006/12/08(金) 07:49:14 ]
- 次スレ
国産DIコンテナSeasar その8 pc8.2ch.net/test/read.cgi/tech/1165531719/
- 988 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 10:35:00 ]
- >>970
>Action - Logic - Dao ここでのLogicってなに? トランザクションスクリプト?ドメイン?サービス? 多分、層が1つ足りないぜよ。 >>977 いいけど、そうなるとTDDじゃなくね? >>986 例えば、もともとトランザクションスクリプトなクラスAがあったら、 コピーして修正を加えたA'クラス(もちろんトランザクションスクリプトだけど)をつくって、 差し替えるだけだろ。 トランザクションスクリプト>ドメインモデルの切り替えは、DI云々以前に高コスト&高リスクな作業だと思う。 >>987 乙
- 989 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 12:57:04 ]
- 結局、
>>985 これが真理
- 990 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 20:37:10 ]
- >>987
乙 なんでファウンデーションスレをテンプレに貼ってないのかと思ったら、 変なのの隔離場所になってるのね。
- 991 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 22:19:02 ]
- やることがいちいち姑息だよな
- 992 名前:981 mailto:sage [2006/12/08(金) 22:52:51 ]
- >>983
なるほどねー。 やはり、今までになかったですねー、そういうのは。 >>988 サービスですね。 Action - Logic - Daoは、S2JSFのEmployeeサンプルに倣って書きました。
- 993 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 00:28:21 ]
- そろそろ埋めるか
- 994 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 00:40:58 ]
- 埋める?S2Containerを?楽しそうだぜ!!
- 995 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 00:44:06 ]
- 沖縄の守り神の獣肉(゚д゚)ウマー
- 996 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 01:05:36 ]
- 食ったんかいw
- 997 名前:デフォルトの名無しさん [2006/12/09(土) 01:06:55 ]
- cap.from.tv/jlab-fat/s/fat1165514726432.jpg
- 998 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 01:55:49 ]
- ume
- 999 名前:デフォルトの名無しさん [2006/12/09(土) 02:43:00 ]
- 1000だったらS2Spring作る
- 1000 名前:デフォルトの名無しさん [2006/12/09(土) 02:54:13 ]
- 日テレはルパンにひどいことをしたよね(´・ω・`)
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|