Submit Search
Upload
Tackling Complexity
•
6 likes
•
2,920 views
Yoshitaka Kawashima
Follow
設計ナイト2022 「トランザクションスクリプト」でのディスカッション枠スライドです。
Read less
Read more
Report
Share
Report
Share
1 of 16
Recommended
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
2021/11/24 「イミュータブルでゆこう」イベントの資料です。 データをリソースとイベントに場合分けして考えようという至極単純な話を1時間ほどしました。
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
更新日時を排除していくことでそこそこのモデルを書けるようになる手法です。
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
アーキ部 #12 「複雑さ」について語り合う会 の参考資料です
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
第1回 しょぼべん ( http://connpass.com/event/10849/ ) で話しした、イミュータブルデータモデル(世代編)です。
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
アーキ部#13で使ったスライドです。 サンプルコードはこちらです。 https://github.com/kawasima/revisiting-domain-model
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
アプリ「ニュースパス」をマイクロサービスで開発してみた泥臭い体験談です。
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
Recommended
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
2021/11/24 「イミュータブルでゆこう」イベントの資料です。 データをリソースとイベントに場合分けして考えようという至極単純な話を1時間ほどしました。
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
更新日時を排除していくことでそこそこのモデルを書けるようになる手法です。
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
アーキ部 #12 「複雑さ」について語り合う会 の参考資料です
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
第1回 しょぼべん ( http://connpass.com/event/10849/ ) で話しした、イミュータブルデータモデル(世代編)です。
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
アーキ部#13で使ったスライドです。 サンプルコードはこちらです。 https://github.com/kawasima/revisiting-domain-model
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
アプリ「ニュースパス」をマイクロサービスで開発してみた泥臭い体験談です。
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
エヴァンス本を読んだことがない人、ネット上の情報を聞きかじったことがある程度の人、そんな人たちを対象に、ドメイン駆動設計について、わかりやすく説明してみました。
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
オブジェクト指向では、モデリング(分析)、設計、実装は、切れ目のない一体の活動。初期の分析は初期の設計であり、初期の実装。毎日分析し、毎日設計し、毎日実装しながら、一歩一歩、モデルも実装も進化させていく。
例外設計における大罪
例外設計における大罪
Takuto Wada
例外設計における大罪 Jun 27, 2012 @ java-ja
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 Domain-Driven Design ( DDD ) 準備 / スタートアップ / ブラッシュアップ / チャレンジ / 参考書籍 /
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
関西DDD.java 勉強会 2016-3-5 (DDD Alliance 勉強会 2016-1-21 @東京の京都再演版)
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ CQRSはDDDと切り分けて単独でも適用することができるので、DDDについてご存知ない方もご覧いただけます。日本語の文献は意外と少ないので、この辺りの分野に興味がある人の参考になれば幸いです。
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 のための オブジェクト指向設計 の基本と実装技法。
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
LayerX社内の定例でつかった資料です。
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
Yoshitaka Kawashima
受託開発を生業とするものにとって、見積もり根拠を正しく示すことは死活問題だ、という話です。
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
ドメイン駆動設計の4つの基本活動、Springのプログラミングモデル、ドメイン駆動設計のためのSpringの使い方
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
アーキ部#15の資料です。
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
社内勉強会発表用 内容 ・モジュールの凝集度 ・モジュール結合度 ・オブジェクト指向 ・インタフェース
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
関西地区PostgreSQL勉強会の発表スライドです
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
質問への回答(35件)を、ブログにまとめているのでこちらご覧ください https://little-hands.hatenablog.com/entry/2019/08/31/genba_de_ddd 「Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス」登壇資料 ブログ:https://little-hands.hatenablog.com/ Twitter:https://twitter.com/little_hand_s 質問箱:https://peing.net/ja/little_hands
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計の考え方、3原則、基本テクニック 1章から7章
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ドメイン駆動設計でなぜ作るのか? ドメイン駆動設計の考え方 ドメイン駆動設計を実践するための6つの問い 事例研究 ドメイン駆動設計を現場に導入する 体験的に学ぶ エヴァンス本をちゃんと読む
Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
2024/6/5のアーキ部で話したスライドです。 Stratified Designの目的を中心に、そのメリットを考えてみます。
Are Design Patterns Dead?
Are Design Patterns Dead?
Yoshitaka Kawashima
吉祥寺.pm32で話したスライドです。 邦題: デザインパターンは死んだ(のか)?
More Related Content
What's hot
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
エヴァンス本を読んだことがない人、ネット上の情報を聞きかじったことがある程度の人、そんな人たちを対象に、ドメイン駆動設計について、わかりやすく説明してみました。
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
オブジェクト指向では、モデリング(分析)、設計、実装は、切れ目のない一体の活動。初期の分析は初期の設計であり、初期の実装。毎日分析し、毎日設計し、毎日実装しながら、一歩一歩、モデルも実装も進化させていく。
例外設計における大罪
例外設計における大罪
Takuto Wada
例外設計における大罪 Jun 27, 2012 @ java-ja
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
ドメイン駆動設計 Domain-Driven Design ( DDD ) 準備 / スタートアップ / ブラッシュアップ / チャレンジ / 参考書籍 /
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
関西DDD.java 勉強会 2016-3-5 (DDD Alliance 勉強会 2016-1-21 @東京の京都再演版)
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ CQRSはDDDと切り分けて単独でも適用することができるので、DDDについてご存知ない方もご覧いただけます。日本語の文献は意外と少ないので、この辺りの分野に興味がある人の参考になれば幸いです。
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 のための オブジェクト指向設計 の基本と実装技法。
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
LayerX社内の定例でつかった資料です。
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
Yoshitaka Kawashima
受託開発を生業とするものにとって、見積もり根拠を正しく示すことは死活問題だ、という話です。
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
ドメイン駆動設計の4つの基本活動、Springのプログラミングモデル、ドメイン駆動設計のためのSpringの使い方
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
アーキ部#15の資料です。
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
社内勉強会発表用 内容 ・モジュールの凝集度 ・モジュール結合度 ・オブジェクト指向 ・インタフェース
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
関西地区PostgreSQL勉強会の発表スライドです
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
質問への回答(35件)を、ブログにまとめているのでこちらご覧ください https://little-hands.hatenablog.com/entry/2019/08/31/genba_de_ddd 「Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス」登壇資料 ブログ:https://little-hands.hatenablog.com/ Twitter:https://twitter.com/little_hand_s 質問箱:https://peing.net/ja/little_hands
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計の考え方、3原則、基本テクニック 1章から7章
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ドメイン駆動設計でなぜ作るのか? ドメイン駆動設計の考え方 ドメイン駆動設計を実践するための6つの問い 事例研究 ドメイン駆動設計を現場に導入する 体験的に学ぶ エヴァンス本をちゃんと読む
What's hot
(20)
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
例外設計における大罪
例外設計における大罪
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
More from Yoshitaka Kawashima
Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
2024/6/5のアーキ部で話したスライドです。 Stratified Designの目的を中心に、そのメリットを考えてみます。
Are Design Patterns Dead?
Are Design Patterns Dead?
Yoshitaka Kawashima
吉祥寺.pm32で話したスライドです。 邦題: デザインパターンは死んだ(のか)?
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
吉祥寺.pm #26でお話したソフトウェア開発における『知の高速道路』の話です。 将棋や数学とのソレには程遠い。主にサッカーの戦術的ピリオダイゼーションを参考に考えてみました。が結論は、まだありません。
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
Yoshitaka Kawashima
JaSST Review 2020の発表資料です。
本番障害に至る病
本番障害に至る病
Yoshitaka Kawashima
吉祥寺.pm #24の発表資料です。
システムダウンのひみつ
システムダウンのひみつ
Yoshitaka Kawashima
吉祥寺.pm #23の発表資料です。 Test Harnessを使って、仕様外のふるまいをテストしましょうというお話です。 https://github.com/kawasima/rodriguez
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
JJUG CCC 2019 fall g3のセッション資料です。 「ちょっと凝ったことをしようとすると大量のXMLを書かなきゃいけない」「プラグインを並べてもうまく動いてくれない」など、Mavenは誤解され敬遠され、Gradleなどの他のビルドツールにシェアを奪われてきました。 が、依然としてMavenはJavaのデファクトスタンダードなビルドツールに位置づけられており、マスターする価値は十分にあります。そして良く学んでみると、そもそもXMLで過度なカスタマイズしようというのが誤った使い方だったのに気づきます。そこへ至るにも、タスクランナーの延長線上にある他のビルドツールと異なり、Maven独特なライフサイクルとプラグインの関係性もきちんと理解しておかなければなりません。
アンチフラジャイルの世界
アンチフラジャイルの世界
Yoshitaka Kawashima
NoOps Meetup Tokyo #8での発表資料です。
Atomic Architecture
Atomic Architecture
Yoshitaka Kawashima
すえなみチャンス暑気払い 2019夏で話した、設計要素を分解して理解してみようという話です。 Simplicity makes easy to understand.
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
JJUG CCC 2018 Fall #ccc_e3
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
おもにエンタープライズの開発において「アジャイルってどうなの?」という方への説明資料です。
How to find tech books
How to find tech books
Yoshitaka Kawashima
技術書の見つけ方です。
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
Yoshitaka Kawashima
How to building an antifragile system using Java.
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
2017/2/17のアーキ部の資料です。 異文化理解力に関して思うところをまとめました。
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Yoshitaka Kawashima
SIerの方が本質的にオープンにいけると思うのですよ。
Antifragile Clojure
Antifragile Clojure
Yoshitaka Kawashima
nishi-shinju-clojure #0のLTスライドです。
Boilerplate vs Magic
Boilerplate vs Magic
Yoshitaka Kawashima
BoilerplateとMagic論争をStruts1を交えて考えてみました。
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
Yoshitaka Kawashima
既婚プログラマの時間捻出術です
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
Java Day Tokyo 2016 のセッション3-Eの資料です。 Java8, Java9の新機能がシステムの設計にどういう影響があるのかを考えてみました。
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
JJUG CCC 2016 Spring CD-7 のセッションスライドです。
More from Yoshitaka Kawashima
(20)
Grokking Simplicity探訪
Grokking Simplicity探訪
Are Design Patterns Dead?
Are Design Patterns Dead?
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
本番障害に至る病
本番障害に至る病
システムダウンのひみつ
システムダウンのひみつ
Mavenの真実とウソ
Mavenの真実とウソ
アンチフラジャイルの世界
アンチフラジャイルの世界
Atomic Architecture
Atomic Architecture
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
How to find tech books
How to find tech books
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Antifragile Clojure
Antifragile Clojure
Boilerplate vs Magic
Boilerplate vs Magic
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Tackling Complexity
1.
Tackling Complexity kawasima 設計ナイト 2022
2.
ドメインモデルは「複雑さ」に対応するものである 複雑 シンプル Theorem ファウラーのあやまち ドメインモデルパターンを「An object model
of the domain that incorporates both behavior and data」って定義しちゃっているため、オブ ジェクト指向パラダイムに縛られている。
3.
では「複雑さ」とは何なのか? Simple Made Easy https://github.com/tallesl/Rich-Hickey-fanclub
4.
シンプルの反対の意味である「複雑」とは…? 1つの塊に複数のものが混在している状態 ● 複数の役割 ● 複数のタスク ●
複数の概念 ● 複数の次元 構造の複雑さ (凝集度に関連)
5.
「複雑」は別の意味で用いられることもある パーツの数が多く、それらが関連していること NetflixのMicroservices構成
6.
2種類の「複雑さ」 構造の複雑さ ● 分解可能 ○ 分解するとパーツが増え、関 係性の複雑さが増す ●
凝集度の話 ○ データにもfunctionにも存在す る 関係性の複雑さ ● 業務を変えない限りは、不可避 ● サブドメイン分割など、分割統治で 立ち向かう ● 構造の複雑さと解消しないと、見え にくい Out of the tar pit だと Accidental Complexity Essential Complexity
7.
Kent BeckのSimple Design 1.
全てのテストがパスする (Passes the tests) 2. 意図が明確である (Reveals intention) 3. 重複がない (No duplication) 4. 最小の構成要素 (Fewest elements) https://martinfowler.com/bliki/BeckDesignRules.html これは「関係性の複雑さ」についての言及 今必要ないものを作り込んで、設計要素を増やすな (YAGNI)
8.
ドメインモデルというからには 構造の「複雑さ」を解消してなくてはならない
9.
00年代によく見られたドメイン層の実装
10.
実態として、構造の複雑さが解消されていない
11.
「あちこちで料金計算していたロジックを、料金の クラスにまとめました。」 \\高凝集// \\ドメインモデル// ってなりかねない… ドメインモデリングでは「構造の複雑さ」をどう減らすか、 もっとフォーカスされなくてはならない \\脱トランザクションスクリプト//
12.
構造の「複雑さ」を別のレイヤ に押し込めることじゃなく https://github.com/kawasima/kata
13.
構造の複雑さをシンプルに
14.
渡辺幸三さんの「データモデリング入門」より ここでは「複雑さ」に構造と関係性両方を含んで の話だが、上の図は構造の複雑さを含んだ データモデルは、処理系の構造も複雑にしてし まう、ことを表している データとプロセスの複雑さの関係
15.
Wrap up ● 「複雑さ」は2種類あるので、分けて考えよう ●
「構造の複雑さ」はSimple Made Easy - wayで分解する ● 「関係性の複雑さ」は「構造の複雑さ」を解消しないと見えにくい ● 「複雑さ」に対処するのが、ドメインロジックのパターンの本質 ○ なんだけど、パターンそのものは、構造の複雑さ解消の土台を作っているだけに過ぎない ○ 地道に構造の複雑さを解消していかない限りは「複雑さ」が移動しているだけになる
16.
参考文献 ● Scott Wlaschin
“”Reinventing the Transaction Script ● Scott Wlaschin “Domain Modeling Made Functional” ● Rich Hickey “Simple Made Easy” ● 渡辺幸三 “データモデリング入門” ● Eric Normand “Grokking Simplicity” ● kawasima “https://scrapbox.io/kawasima/ドメインモデル貧血症” ● kawasima “https://scrapbox.io/kawasima/イミュータブルデータモデル”