Designer meets Domain-Driven-Design サービスデザインからUXデザイン・分析、UIデザインなど、Domain-Driven-Designの事を非エンジニアも知れるようにまとめました。 * Standard Inc & Fablic Incで開催された非エンジ…
1年前くらいにRailsの設計にDDD(ドメイン駆動設計)のService層を導入し、Modelの肥大化対策をしました。 この記事では、まずどのようなルールでService層が組み込まれているかと、1年間運用してみて良かったところ、悪かったところの感想を書きます。 [2018/05追記] 最近ではサービス層の導入は賛否両論あるようなので、導入する際は自分のプロジェクトに合っているかどうかを十分にご検討ください! Service層を導入するきっかけになった問題点 Modelの肥大化 Model間の複雑な依存関係 多数のミドルウェアの導入による複雑さの倍増 これらにより.. メンテナンスやテストがしにくい コードが整理されていないのでとにかく読みづらい Model複雑化の例 <ユーザがECサイトの商品をお気に入り(like)にするメソッドを書く場合> 処理に関連するテーブル my_itemsテ
DDDではリポジトリに対してDIPを利用し、インターフェースと実装を切り離す傾向にある。 これはいわゆる「抽象に依存せよ」ってやつなので、 DDDというよりは既存のプログラミングテクニックになる。 で、これを実現するためにリポジトリを以下のようにインターフェースで実装する。 コードはTypeScriptです。 interface UserRepo { insert(user: User, master: DbMasterConnection): Promise<User>; findByName(name: string, con: DbConnection): Promise<User>; findById(id: number, con: DbConnection): Promise<User>; }リポジトリの実装自体はインフラレイヤに置く。 「データを取得する」ということなので、個
単方向にする DDD には一方向の関係性が適しています。Eric Evans は、「可能な限り関係性を制限することが重要です」、そして「ドメインを理解することで自然な方向性が明らかになります」と助言しています。 - データ ポイント - ドメイン駆動設計のコーディング: データを重視する開発者のためのヒント (第 3 部) DDDにおいては 関連を極力排除する のが正しいようだ。たとえば「伝票」と「明細」からなるaggregateについて。まずaggregate rootである「伝票」が グローバルなIDをもつ 。関連は「伝票」から「明細」の向きにある。つまり「伝票」オブジェクトが「明細」オブジェクト(のコレクション)を参照する。逆はしない。「伝票」は「伝票リポジトリ」にある(リポジトリから取得する)。 class Slip { UUID id; List<Detail> details
2015 - 10 - 08 JavaScriptでDDD(ドメイン駆動設計) その2 ドメイン知識を分離する ドメイン 知識を分離する ドメイン 知識とは、関心領域の知識のことです。 例えば弊社の扱う領域は医療 / 医学です。 「患者さんに運動療法を提案したい。ただ、 高度の腎機能障害、 心不全 徴候がある場合は提案しないようにしたい。」 という要件があったとします。 悪いコードの例は、 if ( patient . sex is 'male' and patient . sCr >= 2.5 ) or ( patient . sex is 'female' and patient . sCr >= 2 ) or patient . BNP > 100 notify '運動は控えましょう。' else notify '運動しましょう。' 重要な ドメイン 知識が手続きの一部に埋まってしま
2016 - 01 - 24 ドメイン駆動設計(DDD)とは結局何なのか?言葉の意味を踏まえて考えてみる DDD こんにちは id:momotas210 です。 最近は仕事で ドメイン 駆動設計の思想に基づいた設計を Scala で実装に落とし込むといった事をしているのですが、そもそも設計に関しては全て上司が1人でやってしまっていたので実装していくなかで 「ServiceがあってReposirtoyがあって(以下略)ここにはこういう内容の処理を書いていくのかフム(゚Д゚)フム」 と受け入れつつも僕自身が ドメイン 駆動設計がどこまで分かっているのかも分からない状態であるのに加え、DDD Allianceの勉強会では 「分析・設計・実装の担当者を別にしない」 という話もお聞きしたのでDDDについて調べて考えてみました。 (勉強会の資料はこれです) ドメイン駆動設計のためのオブジェクト指向入門
2018年4月25日をもちまして、 『CodeIQ』のプログラミング腕試しサービス、年収確約スカウトサービスは、 ITエンジニアのための年収確約スカウトサービス『moffers by CodeIQ』https://moffers.jp/ へ一本化いたしました。 これまで多くのITエンジニアの方に『CodeIQ』をご利用いただきまして、 改めて心より深く御礼申し上げます。 また、エンジニアのためのWebマガジン「CodeIQ MAGAZINE」は、 リクナビNEXTジャーナル( https://next.rikunabi.com/journal/ )に一部の記事の移行を予定しております。 今後は『moffers by CodeIQ』にて、 ITエンジニアの皆様のより良い転職をサポートするために、より一層努めてまいりますので、 引き続きご愛顧のほど何卒よろしくお願い申し上げます。 また、Cod
1. ドメイン駆動設計 ユーザー、モデル、エンジニアの 新たな関係 PHPメンターズセミナー in PHPカンファレンス Oct.3, 2015 杉本 啓 twitter: @sugimoto_kei http://www.fusions.co.jp 2. 自己紹介 • 会計事務所系コンサルティング会社(アクセンチュア/アンダーセン)出身。 • 生産管理/会計系基幹システム構築 (スクラッチ開発, SAP R/3等) ~ 会計・経営管理領域の制度設計・業務改革 ~ パッケージソフト(連結会計)開発など。 • 2003年独立、経営管理基盤ソフトウェア「fusion_place」の開発販売・導入支援。 http://www.fusions.co.jp • 現役 Java プログラマ。OOPラブ × XPラブ × DOAラブ。 • 全然アップデートしていないブログあり。 http://hot-h
2015/06/26にアラタナさんとチャットワークとでDDD×Scalaの合同勉強会を開催しました。 アラタナさんの宮崎本社とチャットワークの東京オフィスをビデオ通話でつないでの合同勉強会でした。 この勉強会はクローズドイベントだったので、参加したくてもできない方がたくさんいたと思います。なので、Web開発部のチバがレポートをします。めちゃくちゃ楽しかったので、参加したくてもできなかった方たちのためにめちゃくちゃ楽しかったことをレポートします。 アラタナさんも当日の様子を「僕らの継続的ビール摂取型ドメイン駆動設計(ChatWork ✕ アラタナ合同勉強会)」という記事に書いてくれました! 準備 宮崎と東京でインターネットを使って勉強会…なんてインターネットっぽい勉強会なんだ…!と思っていたら、アラタナさんが来社。しかも勉強会中に食べる食事を持って来てくれました!!! DDDおじさんが突然の
2020-06-29 【オンラインMeetup イベントレポート】ZOZOテクノロジーズの大規模データ活用 イベントレポート GCP Elasticsearch 検索 機械学習 こんにちは、ZOZOテクノロジーズ CTO室の池田(@ikenyal)です。 ZOZOテクノロジーズでは、6/22にZOZO Technologies Meetup -ZOZOテクノロジーズの大規模データ活用-を開催しました。 zozotech-inc.connpass.com 「ZOZOテクノロジーズの大規模データ活用に興… 【オンラインMeetup イベントレポート】ZOZOテクノロジーズの大規模データ活用 2020-06-26 IIASの列レベルセキュリティ機能で実現する、個人情報マスクの仕組み Database DWH こんにちは!那須どうぶつ王国でスナネコの赤ちゃんの一般公開が開始された1ことに喜びを感じ
ツイート ブックマーク 設計やオブジェクト指向は理解したつもりなのに、実は違うというような事の繰り返しのような気もしますが、それにしても僕はなにも理解できていないんですよね。 DomainKataを少し使って理解した気になっていんですが、ただの勘違いでした・・・。 DDDを解ったつもりになっていて、すごく恥ずかしくて、すごく悔しくて、毎日悩んでいます。 だから、今わからない事をこの記事に残しておこうと思いました。 たとえばカテゴリ一覧を表示するということに関して カテゴリ一覧を表示するページなんてのWebアプリによくある実装内容だと思います。 このような場合どうしたらいいのか悩んでいます。 エンティティの候補として カテゴリ カテゴリ一覧(コレクション的な) このような感じになるかと思います。 カテゴリ一覧ってサービスじゃないの? 「カテゴリ一覧」をエンティティとして表現するのはありかと思
2020-07-01 ZOZOTOWNのインハウス広告運用を支援するデータと仕組みの話 BigQuery データ マーケティング 広告 本記事では、ZOZOのマーケティング部門の広告運用のインハウス化に伴って、これまで取り組んできた広告データの収集と活用、その仕組みにフォーカスして事例をご紹介します。 ZOZOTOWNのインハウス広告運用を支援するデータと仕組みの話 2020-06-29 【オンラインMeetup イベントレポート】ZOZOテクノロジーズの大規模データ活用 イベントレポート GCP Elasticsearch 検索 機械学習 こんにちは、ZOZOテクノロジーズ CTO室の池田(@ikenyal)です。 ZOZOテクノロジーズでは、6/22にZOZO Technologies Meetup -ZOZOテクノロジーズの大規模データ活用-を開催しました。 zozotech-inc
このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年10月時点の調査。
DCIとDDD DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticismを読んだり、DCI meetup w/ @jcoplien for Rubyistsに参加したりして、DCIアーキテクチャについて考えてきた。 DCIはメッセージパッシング指向だ。そのSmalltalk的なオブジェクト指向の原理はいいけど、実装が嫌だ。 そもそも、DCIアーキテクチャ提唱の目的は、メンタルモデルのセマンティクス・ギャップを埋めることだ。DDDの「ユビキタス言語」も、メンタルモデルのセマンティクス・ギャップを埋めるための要素であり手法だ。だから、ふつうにDDD(ドメイン駆動設計)をやればいいと思った。 DCIへの疑問 DCIでは、「オブジェクトのアイデンティティ」にこだわりすぎていることで、アーキテクチャが複雑になって
このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 コンテキストが限定されるドメイン駆動設計でのデータ共有パターン Julie Lerman コード サンプルのダウンロード 私はプログラミング人生の中で、コードとデータを再利用できるようにすることを自分を駆り立てる目標としてきました。そのため、ドメイン駆動設計 (DDD) の学習を始めた当初、コンテキストを限定して強制的に分離し、コードはもちろんデータまでコピーすることがある DDD の手法は理解に苦しみました。DDD 業界の優秀な開発者数人の手を借りて、私の古いやり方が招く潜在的な問題が明らかになったときは、卒倒するような気分でした。最終的には、どこで複雑さという犠牲を払うかを選択することが必要だと Eric
井上です。 現在、ドメイン駆動設計(Domain Driven Desing . 以下 DDD)を用いて開発を行っています。 DDDの参考書籍といえば、もちろん「エリック・エヴァンスのドメイン駆動設計 ソフトウェアの核心にある複雑さに立ち向かう」(以下 DDD本)ですが、その著者であるエリック・エヴァンスが最近(2014/9/22)「Domain-Driven Design Reference: Definitions and Pattern Summaries」という新しい本(以下 DDDリファレンス本)を出していることに気がつきました。 DDDリファレンス本とは 早速DDDリファレンス本を取り寄せてみました。88ページと非常にコンパクトな本になっています。 内容的には、以下で公開されているPDFに新しい図や写真を追加してペーパーバックとして出版したもののようです。 DDD REFERE
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く