すえなみチャンス暑気払い 2019夏で話した、設計要素を分解して理解してみようという話です。 Simplicity makes easy to understand.
![Atomic Architecture](https://cdn-ak-scissors.b.st-hatena.com/image/square/8852c9d91dca58c326201925e1e4ff93a94ecc97/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fatomicarchitecture-190803070619-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
※ 2019年7月27日に追記しました。 この記事の最後に、失敗談の補足を書いた記事へのリンクを追加しました。 システムの一部機能を改修するテーマが現在進行中です。テーマは他の箇所に影響がないくらいに分離できるものです。この大きさが丁度いい。チャンスとばかりにリファクタリングすることにしました。 アプリケーションはそれなりにレイヤー化されています。controllerとserviceとrepositoryがある。よくある3層構造です。何を見直して再設計するのか?それはドメインオブジェクトモデルの構築です。 現状のアプリケーションはビジネスロジックをモデリングしたものとは言えない状態です。自分がやったのだけれど。しかしだからでもあります。なぜこうなったかを振り返り、どのようにできたかを考えます。失敗から学べることもあるはずです。 参照側の層は薄く?本当に? 開発対象のシステムはある情報の検索
BPStudy#141〜DDD(Domain Driven Design)実践の現場 (2019/05/29 19:30〜) を聴講したときに、増田さんの発表がとても勉強になったのでまとめてみます。 簡単なこの記事のまとめ DDDは「ソフトウェアの変更を安全に楽にする」ことが目的。振り切っている DDDは、反復プロセスであって設計して終わりではない 勉強には、増田さんの本を読んだあとに、エヴァンス本がおすすめ。ほかには教材(GitHubのコード)などが用意してあり誰でも参照できる エヴァンス本は読みづらいが、コツがわかれば読みやすい 増田さんの資料 ドメイン駆動設計の正しい歩き方 from 増田 亨 ドメイン駆動設計の正しい歩き方 DDDの目的 進化するソフトウェアを手に入れる 現実世界の変更に追従するソフトウェア 動くだけではないソフトウェア ソフトウェアの変更を安全に楽にする もちろん
先日開催された吉祥寺.pm18で「ぼくがかんがえたさいきょうのSoR/SoEあーきてくちゃ」というテーマで発表をしてきました。 そのイベントレポート兼発表補足です。 イベント概要 kichijojipm.connpass.com スライド speakerdeck.com 発表内容の補足 Twitterやはてブ等でいくつかご意見いただいているので、それについて現時点で僕が考えていることを補足させていただこうと思います。ひとつ言い訳させてもらえるなら、今回は時間が短すぎたので結構前提となる説明(エヴァンスさんの DDD を僕がどう捉えているか、CQRS とは何か、等)を省略したところが多すぎたかなっていうのがあり、特に当日いらっしゃらずスライドだけを見ていただいた方には余計にわかりにくかったかもしれないので、ここで FAQ 形式で補足させてもらえればと思います。 整合性に関しては DDD でい
アプリケーションの分割のアプローチ ●4つのアプローチ - ビジネスファンクション - 動詞/ユースケース - 名詞/リソース - 境界づけられたコンテキスト ● トランザクションの分割 - パイプライン化 (VETRO) - コーディネート (Saga) - 状態更新の非同期化 ( Event History - State Materialize - Domain Specific Query ) Read less
2018年8月1日にアカウンティング・サース・ジャパン株式会社で開催した「Essential Scala 輪読会 #3」のスライドです。今回の内容は「第4章 トレイトによるデータモデリング」です。
genbade-ddd.connpass.com 上記のイベントにブログ枠で参加しまして、そのレポートとなります。 基本的には自分が書きたかったことを書いてるだけですが、特に登壇者のみなさまのフィードバックになれたら嬉しいです。 ソフトウェアの核心にある複雑さに立ち向かう ソフトウェアの核心にある複雑さに立ち向かう from 増田 亨 www.slideshare.net 増田さん(@masuda220)の発表で、何故DDDを使うのか、どんな問題を解決したいのか、その全体観を見事に解説させていらっしゃいました。 スライド資料に要点をよくまとめていらっしゃるので、内容についてはここでは特に触れません。 あの分かりづらいエヴァンス本に書かれている抽象的なコンセプトを、おそらくはあの会場にいるほとんどの人に届くように翻訳できるのは増田さんが長い間実践されてきたからこそだと思います。 エンティティ
きっかけ レガシーをぶっつぶせ。現場でDDD!に行ってきました。 genbade-ddd.connpass.com 正直、タイトル一本釣りな感じです。 こんな過激で魅力的なタイトルあります? 実際に現場でDDDに取り組んで、失敗とか反省とかあると思うんですよね。 それを共有してくれるとは、なんてありがたいんだ! 以下、参加時のメモです。 趣旨説明 DX(デジタルトランスフォーメーション) 2025年以降、最大12兆円/年(現在の約3倍)の経済損失が生じる可能性 DXレポート ~ITシステム「2025年の崖」克服とDXの本格的な展開~(METI/経済産業省) ここにもあるように、技術的負債に立ち向かうために、設計をちゃんとやろうということらしい。 しかし、特設サイトまであって気合入ってますね経済産業省。 www.meti.go.jp きれいな理論より、現場のドロドロ感 うん、こういうの大好き
概要 developers.cyberagent.co.jp こちらで 課金システムをマイクロサービス化した サービス自体の設計をDDDにした という対応をしました。 当時は試行錯誤の連続でしたが対応から1年程経ち、ある程度設計もfixされてきたので知見をまとめます。 知見 前提 Clean Architectureの図は多くの人が目にしているように以下の通りです。 今回話す内容は青色の部分を除いた ドメイン層:黄色の部分 ユースケース層:赤色の部分 インタフェース層:緑色の部分 です。 ディレクトリ構成 goのリポジトリの構成は以下のようにしています。 . ├── Dockerfile ├── Makefile ├── README.md ├── cmd/ ├── codes/ ├── config/ ├── docker-compose.yml ├── domain/ ├── go.m
こんばんは、kuwana-kbです。 今回はソフトウェア設計に関する書評です。 最近、チームの開発タスクで「○○機能を実装する」というタスクをこなせるようになってきました。 どんなタスクか具体化すると、仕様書にある「入力」と「出力」に基づいた実装を書くことです。 これができるようになってきたのは、大変喜ばしいことです。これができるということは、自分の手でプログラムを作って動かせるということを意味します。 例えば、Lambdaなどで日常のタスクを自動化したりなんかもできますね。 しかし、喜ばしいのと同時に新たな課題を感じています。 それは設計です。どうしたら変更に強くて可読性の高いソースコードになるのか、といった課題を感じています。 「作れるようになったのはいいけど、この作り方でどれくらい運用できるだろうか…他の人からみたら読みづらくないだろうか…」という不安に駆られる感じですね…。 そこで
Java/Spring Boot/MyBatis/Thymeleafを使った、ドメイン駆動設計のサンプルコード。ビジネスルールに焦点を合わせ、計算モデルで複雑さを整理し、型指向のプログラミングで実装する、その具体例。Read less
ここ最近の仕事は、かなり硬直化した自社サービスをリファクタリングしている。 そのなかでアプローチのひとつとして、ドメイン駆動設計を勉強して、取り組んでいる。 エバンスDDD本を手に取り、ネットで様々な知見を調べながらも、理解が定着してきている。 ここらでいちど、ドメイン駆動設計について、理解をアウトプットしておく。 ドメイン駆動設計は「ビジネスの複雑さ」に立ち向かう 「ドメイン駆動」の設計とは、ドメインに特化した型設計 ドメイン駆動設計の導入の決め手はドメインロジックが複雑かどうか レイヤードアーキテクチャは、ドメイン層を隔離する 自社サービスをグロースさせていくためにも、ドメインの洞察・抽出・再設計を繰り返す おすすめの書籍・資料 エバンスDDD本や実践DDD本は初学はとても苦しんだ。 入門するなら、これらの本を手に取る前に、増田さんの素晴らしい資料たちがおすすめ。 増田さんのスライド,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く