Java EE勉強会
MenuBar
編集
添付
凍結
新規
最終更新
一覧
単語検索
議事録
/
第53回
Menu
Top
JavaEE勉強会
参加するには
FAQ
MakingSenseofStreamProcessing
MicroservicesVsSOA
ModernJavaEEDesignPatterns
BSA
EIP
DSL
DDD
議事録
最新の20件
2023-11-24
MicroservicesVsSOA/The World of Service-Based Architectures
2020-11-14
DDD/Knowledge-Rich Design
MakingSenseofStreamProcessing/Example Implementing Twitter
2020-10-28
EIP/Aggregator
2019-12-18
EIP/Publish-Subscribe Channel
2018-06-10
FrontPage
2017-07-08
MakingSenseofStreamProcessing/Materialized Views Self-Updating Caches
MakingSenseofStreamProcessing/Summary Four Database-Related Ideas
MakingSenseofStreamProcessing/The Unbundled Database
MakingSenseofStreamProcessing/Conclusion
MakingSenseofStreamProcessing/Streaming All the Way to the User Interface
MakingSenseofStreamProcessing/4. Materialized Views
2017-06-11
MakingSenseofStreamProcessing/1. Replication
MakingSenseofStreamProcessing/Bringing the Unix Philosophy to the Twenty-First Century
MakingSenseofStreamProcessing/2. Secondary Indexes
MakingSenseofStreamProcessing/3. Caching
MakingSenseofStreamProcessing/How Databases Are Used
MakingSenseofStreamProcessing/Composability Requires a Uniform Interface
2017-03-25
MakingSenseofStreamProcessing/Unix Architecture versus Database Architecture
MakingSenseofStreamProcessing/Turning the Database Inside Out
議事録
第53回 Java EE勉強会
†
日時: 2009年04月25日(土) 13:20〜
ポジペ: 次の書籍候補
†
Enterprise Integration Patterns
(4票)
メッセージング中心 p736
Programming in Scala
(3票)
p736
Java仮想マシン仕様
Development of Futher Patterns of EAA
http://martinfowler.com/eaaDev/
Webなので買わなくていい。
Effective Java 第2版
Java Generics and Collections
集合知イン・アクション
アナリシスパターン―再利用可能なオブジェクトモデル
SOA Design Patterns
p865
Pattern Oriented Software Architecture: A Pattern Language for Distributed Computing
Volume 4
p636 (薄・・・くない)
未出版書籍
Domain-Specific Languages
書き途中なのでフィードバックを
Analysis Patterns 2
(2票)
PofEAA 2
Conversation Patterns
Workflow Patterns
(これは出版予定なし)
題材の希望
Hadoop The Definitive Guide
Scala, VM, Android
Flex 3 Cookbook Code-Recipes, Tips and Tricks for RIA Developers
Agile系の本
Clean Code アジャイルソフトウェア達人の技
軽めなのが行ければ
ネットワーク系の本(クラウドとか流行ってるから)
Database Management System
(表紙はかわいらしい)
P936。教科書的なので学生が低めの評価つけてるけど。
Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery
厚い p800くらい?
Software Cost Estimation With Cocomo II
p300くらい読めば大丈夫そう。残りp200がCDのマニュアルらしい
Learning the Yahoo! User Interface library: Get Started and Get to Grips With the Yui Javascript Development Library
ソースコードリーディングから学ぶJavaの設計と実装
PostgreSQLやS2ソースコードリーディングにも繋げられる?
DDD
をもう一度
その数学が戦略を決める
定量分析実践講座―ケースで学ぶ意思決定の手法
小
ネタ
†
Anotation Processor
アノテーションからクラスを自動生成とかassertionとか
Slim3-Genで作成のデモ
Slim3-Genで制約のデモ
Eclipse はインクリメンタルなビルド
AbstractProcessor
?
を実装すればいい。Messengerでメッセージ出したり。
JPA2.0でも使ってるようだ
DDD
読書会 (Chapter FIFTEEN. P397-414)
†
Distillation
†
そんなに複雑な内容ではない
コアに人的リソースを
フレームワークに人的リソースを入れがち
ビジネスロジックが新人とか中国とか
アプリケーションをユースケースごとに分解するのはよくない(後で出てくる)
ユースケースから出すんじゃないの? ユースケースで分離しないって、どうやるのか
もっと粒度が大きそう。コンテキストとかのレベルでは。アプリ同士の政治?
内容にはプログラムよりだけども
でも、アウトソース、パッケージ、なので、それくらいの粒度ではないか
前の章との関連がイマイチわからない。BOUNDED CONTEXTとどう関連するんだろう
14章は"統合"(粒度のあるものの結びつけ)、15章はまとまりから重要な物を取り出す
14章と15章の粒度の関連が。15章もBOUNDED CONTEXT単位なのか
背表紙やp.485の図を見る限りは、1 CONTEXT - 1 DOMAIN(= CORE DOMAIN)じゃないか
SEGREGATED COREではMODULEを切り出すだけで、別のCONTEXTにはなってない
MODULEとCONTEXTは同一粒度? →
DDD
のMODULEだと、複数で一つのCONTEXT
アプリケーション内でのコアとcontextのコアがあるんじゃないか
粒度は、システムによって異なりそう
ユースケースが理解を邪魔している気がする
ドメインモデルとユースケースは直交する
Core Domain
†
DDD
はアプリケーションデベロッパのためのもの
よくあるパターン
年長の業務わかってるひと(技術わかってない) / 仕様決め
技術ができる中堅 / フレームワーク
新人 / ビジネスロジック
Developerは、日本でいうコーダーとは違うかもしれない
書籍とズレてるのかもしれない
向こうではプログラマは業界のTOP
アメリカでは、アーキテクトは哀れまれるらしい(可哀想なことがあってコーディングできなくなった人)
プロマネとかも
バランスが難しい
フレームワークは新人でいいの??
3割はチャレンジ要素で割り当てている ←勉強意欲
ここで言う技術 = オブジェクト指向設計。フレームワークがすごい出来る人、とはちょっと違いそう
モデリングの技術が高いと、テクノロジーの技術も高いんじゃないか
コーディングができない人とか・・・それはドメイン専門家??
技術のある人は、火を噴いた後に来る
言語としての技術とモデリングはちょっと違う
コアが抽出できるくらいまで設計が煮詰まってれば、誰でもできるのでは
画面の使い方、項目の定義も必要ではないか
コアかどうかわけるのは、もうちょっとアバウトなんじゃないか
"一つの企業として定義" → アプリを超えている。重い。
競争優位性がなければ、外に出してもいい
流出しちゃいけない技術はコア。人事系とか一般的なのはコアじゃなくていい
ソフトウェアとしてより、ビジネスとして、かもしれない
コアドメインがないアプリもあるんじゃないか
自分たちで作らなくていいと言うことだろう
Distinguish ← 差別化、と言うよりは明確にする
チーム(企業)の"point of view"に依存する
↑Evans的には、開発者も企業も同じユビキタスランゲージを共有してるはずなので
汎用的であれば、コアとはならない
海外はSIerって概念が少ないので、開発と経営が近いのかも
"making your CORE distinctive" は、「独特」なのか「明確」なのか
genericとの対比? make CORE original とかでは
"distinguishing"は、「明確に」取り出しなさい
→「特徴づける」ではないか
独特じゃないのであれば、パッケージを持って来てもよい
アプリケーションを作る目的となる中核
competitive advantage
業務改革なレベル
業務改善的な利点?
SOA的な話にも片足を突っ込んでそう
スコープでコアは違う
ユビキタスランゲージを実行してれば、コード的にコアは経営的にコア
ドメインはそこにある = competitive advantage
それをどう整理していくのか。はっきりさせていく
どこに人員を配置すべきか、と言うのがCOREを考えることではないか
COREをきれいに小さく保てば、リファクタリングがしやすくなる
Q. Deep Model と Core Domainの違いは?
ドメインはそこにあるもの。モデルはそれを表現したもの。
Deep Modelは、モデルが深まって行くこと
Core Domain は、重要な部分
An Escalation of Distillations
†
今後出てくるパターンのMap
飛ばします
GENERIC SUBDOMAINS
†
DOMAINなのかインフラ層 → COHESIVE MECHANISMS参照
技術的な層の問題と、ドメイン的な周辺ドメインの問題がある
単にsubdomain ではなく "Generic" → 結局COREが大事
アウトソーシング はコミュニケーション負荷が多過ぎるのでは?
オフショアでもレベルが高いことがある
コストが安いから使う。トータルで見ると3割安くならないと使う意味がない
インドは英語得意だから、英米圏だといい。中国・日本だと厳しい
海外では特に顕著 → ブリッジSE(現地派遣) / 効率悪そう。でも安い。
中国人には「バグ」より「仕様変更」と言った方がいい
「品質」のためにオフショアと言う考え方もある
例えば、インドのTOPの人達なので
北米圏が駄目で、ウクライナの安い優秀な人を雇ったことがある
GENERIC SUBDOMAIN なので、失敗しても害は少ないでしょう
In House Implementationって家でやる内職?
いいえ。自社開発。
外部の論文に「supporting domain(s)」ってのがあるが、なんなんだろう
DDD
を北欧のガス会社で適用した例の論文らしい
supporting role ってのは本に出ている
GENERIC SUBDOMAIN っぽいけど?
GENERIC じゃないSUBDOMAINはないんだろうか
それをsupporting domainと呼んでいるのかも
COREはコンテキストな気もする
複数のコンテキストに散らばっていてもいいのかも
motivation : プロジェクトの動機 となっているのが面白い
"generic models of these subdomains"となってるので、SUBDOMAINから genericなものを抽出しなさいと言うこと
SUBDOMAIN = GENERIC ではなさそう
緻密に決められてはいなさそう
自社開発の欠点のメンテナンス負荷って?
自社でやるので。SaaSとかだと、法改正の追従
なぜ楽観的見積もりに? → 契約がないから、なあなあになるのではないか
4つのオプションがあるのが面白い
Off the Shelf と Published Modelの違いは?
実装までできてるか、モデルまでなのかの違い
Generic Doesn't Mean Reusable が面白い
Generic はコードの再利用って意味じゃない
再利用に注力するのはもったいない。メインがCORE。
Leave no trace of your specialities in them
一番リスクが高いとこから手をつける
技術的なとこに捕われがちだが、そうではない
スイーツ(笑)
†
どらやき(うさぎや)
DDD
読書会 (Chapter FIFTEEN. P415-437)
†
DOMAIN VISION STATEMENT
†
設計書に書く「はじめに」的なもの
新しく入った人のためにいいかも
これさえ書いてれば
DDD
やってると言えるかも! 「えーーー」
HIGHLIGHTED CORE
†
CORE DOMAINの短いドキュメントを作る
ドキュメントにないものは自由に変えてよい
抽象度を計るツールにもなる
Highlighted coreとしてファイリングするのか
そうでしょう。虎の巻的
文章的な物なのか?
技術者じゃない人も読めるように
UMLとかはOK
作った人しか読まない、と言うのが難しいところ
このパターンはパターンの記法から逸脱してて読みにくい
最後の太字の部分はなに・・・?
コンサルはIBMとかなのかなあ・・・
COHESIVE MECHANISMS
†
これってS2
DomainModel
?
??
GOFのStrategyパターンを思い出した
MACHANISMがモデルの中核になりうる可能性があるってのは、実体験から来てるかもしれない
銀行のアルゴリズムはCOREだが、実際にはCOREすぎて誰もアクセスできなかったらしい(p425)
CORE DOMAIN や SUBDOMAIN から COHESIVE MECHANISMが使われるイメージ
モデルとCOHESIVE MECHANISMSを分けて行くかが費用対効果の部分
CONTEXTなんだろうか? → 違いそう
再利用は? - CORE DOMAINと結びついてるなら、再利用できなそう
例: Graph なので、グラフ構造なら何でも使える
アルゴリズムならありものなら 持って来れる?
形式化されているものがあれば、自信も持てるし、専門家に任せられる
ドメインモデルに現れるもの??
P.424に、"does not represent the domain."
SEGREGATED CORE
†
一言で言うと・・・?
COREを洗練する。分離する。
ゴミを除く
今までの話は、元々分離されてるものの仕分け。ここでは、COREを作り出していくプロセス。
p434 で、タグがついてないのがsupporting
雰囲気がわかりやすい例
結局、COREとGENERICとSUPPORTEDの3つになりそう
リファクタリングのステップはわかりやすい
「凝集性が高いクラスとの関連が曖昧になったり複雑になったり」することがコスト
COREをいじるのは怖いと思う
やると、全体をいじることになるかも。存在してるモジュールが壊れるかも。でもやれ。
Abstract Core
†
distinct classes は抽象の層に居る
COREを認識しやすくするために、抽象にする
依存関係を少なくする
OSSのインタフェースが定義されてるパッケージのドメイン版
Deep Models Distill
†
can change は、いい意味(軌道修正ができる)
Choosing Refactoring Targets
†
pain-driven
hurt, pain : 目に余る部分、重要な部分、ではないか
「痛みを伴う」? 副作用が出やすい?
pain-driven と言う言葉としては、painは結論ではなく起点
"If there is a pain ..." っぽい。
TRYへ
上の1が下の2、上の2が下の1に対応している
次回
†
2009年5月23日(土)
次回ポジペ「技術系以外のメディア(本/blog/TV/ラジオetc)」
[次回以降]最近出ている勉強会・カンファレンス
次回は 16章から
Menu
Top
JavaEE勉強会
参加するには
FAQ
MakingSenseofStreamProcessing
MicroservicesVsSOA
ModernJavaEEDesignPatterns
BSA
EIP
DSL
DDD
議事録
最新の20件
2023-11-24
MicroservicesVsSOA/The World of Service-Based Architectures
2020-11-14
DDD/Knowledge-Rich Design
MakingSenseofStreamProcessing/Example Implementing Twitter
2020-10-28
EIP/Aggregator
2019-12-18
EIP/Publish-Subscribe Channel
2018-06-10
FrontPage
2017-07-08
MakingSenseofStreamProcessing/Materialized Views Self-Updating Caches
MakingSenseofStreamProcessing/Summary Four Database-Related Ideas
MakingSenseofStreamProcessing/The Unbundled Database
MakingSenseofStreamProcessing/Conclusion
MakingSenseofStreamProcessing/Streaming All the Way to the User Interface
MakingSenseofStreamProcessing/4. Materialized Views
2017-06-11
MakingSenseofStreamProcessing/1. Replication
MakingSenseofStreamProcessing/Bringing the Unix Philosophy to the Twenty-First Century
MakingSenseofStreamProcessing/2. Secondary Indexes
MakingSenseofStreamProcessing/3. Caching
MakingSenseofStreamProcessing/How Databases Are Used
MakingSenseofStreamProcessing/Composability Requires a Uniform Interface
2017-03-25
MakingSenseofStreamProcessing/Unix Architecture versus Database Architecture
MakingSenseofStreamProcessing/Turning the Database Inside Out