タグ

dciに関するkomlowのブックマーク (14)

  • ドメインを巡るお話 | Uzzu::Blog

    Jan 4 2014Tags: dci ddd 昨年末にだらだらDCIに関する自分の考えを整理したくて身内で話していて、 結論としては「DDDとDCIどちらもメンタルモデルに近づけるために機能してる点は変わらない。その先DDDあるいはDCIをフレームワークにするか、あるいは一部に取り入れるのか、そこは取組むドメインによって取捨選択だよね」というところに落ち着いたのだけれど、勿体無い内容な気がするので改めてブログに書くことにする。 DDD脳から見たDCIの考察 DCIはFATなドメインモデルに対するアプローチというよりは、シナリオを明確にするためのアプローチなのかなと思う。 DDDを実践するような複雑な問題に直面した時、ドメインモデルは山のように増える。より知識を噛み砕いてドメインモデルにしたほうがより上層のロジックが簡潔になるので積極的にドメインモデルに落とし込む方がよく、結果として、シナ

  • 『DCI なんて面倒なだけで Service 使えばいい』への返答 - 鳩舎

    NOTE: 最下部に追記があります。 よく言われる話として、 DCI なんて実装が面倒な上に夢の実装の話をしており、現実解としては Service クラスを用いて実装すればシンプルな実装になるのだから、そういったものは必要ないのだ、というご意見への返答です。 こういった批判の文脈の際、 Service クラスというのがどこの Service クラスを指しているのか、が問題なのですが、 DDD における Service ではないように思えるので、おそらく PofEAA などで語られる Service Layer などを指していると思われます(違うならそう言ってください)。 PofEAA における Service Layer(以後、 Service と呼ぶものはこの PofEAA における Service です)はドメインオブジェクトからアプリケーションロジックを切り離すことを主目的としていま

    『DCI なんて面倒なだけで Service 使えばいい』への返答 - 鳩舎
  • ssig33.com - DCI の話 - Ruby On Rails Advent Calendar 乱入

    乱入します。そういうのあるのか調べてないけどどうせあるでしょ。あんまりまとりないです。 DCI か Concern かみたいな話です。 Rails のファットモデル対策 これの続き。 module に切り出す粒度はどうするかとかこれはこれで難しいとろはあるのですが という部分について適当に書いておく。 まず DCI というアプローチではモデルが肥大化するという問題は質的に一切解決していない。結局のところさまざまなコンテキストで責務が呼ばれた結果最終的に生成されるドメインモデルは極めて巨大なものであることに変わりはない。 結局のところ、改善されるのは「コードの見た目」に過ぎない。しかしながら我々プログラマーは「コードの見た目」が如何に重要であるか知っている。コードの見た目はプロダクトの品質のかなりの部分を占める。 DCI というアプローチは単純に Concern するという戦略と何が違うか

  • DCIが面白い件 - ヽ( ・∀・)ノくまくまー(2010-05-12)

    ● DCIが面白い件 DCI凄い!ヤバイ! 「DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien」(翻訳) http://d.hatena.ne.jp/digitalsoul/20100131/1264925022 前に読んだときは難しすぎて(長すぎて)途中で挫折したけど、今改めて読んだらDCIは凄いと気付いた。以下、まとめ。 今回、内容理解の決め手となったのは「前半部分を読まない」ことだった。 そんな無謀な読み方(読んでないのだけれど)をした私の理解なので、 もちろん間違いはあるはず。 という前提で、 ツッコミを入れる気満々なテンションでどうぞ。 古来からプログラムの中心は<データ>であった なぜなら、それが設計の中で一番変化しにくい要素(箇所)であるから そして、<データ構造>とそれに対する<処理>の2つで考えるようになった (手続き型

  • DCI Meetup (#dcimeetup)ツイートまとめ

    TechFeeds @JapanTechFeeds DCI meetup w/ @jcoplien for Rubyists #dcimeetup - kakutani: About This Meetup This is a meetup about DCI/Lean archit.. http://t.co/kCb4Cj5W 2013-01-14 09:34:47

    DCI Meetup (#dcimeetup)ツイートまとめ
    komlow
    komlow 2013/01/22
  • “DCI” in Ruby is completely broken

    January 2, 2013 “DCI” in Ruby is completely broken Rubyists are people who generally value elegance over performance. “CPU time is cheaper than developer time!” is a mantra Rubyists have repeated for years. Performance has almost always taken a second seat to producing beautiful code, to the point that Rubyists chose what used to be (but is no longer) the slowest programming language on earth in o

    “DCI” in Ruby is completely broken
  • DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism

    この記事はartima developerに掲載されている、Trygve Reenskaug氏とJames O. Coplien氏による記事「The DCI Architecture: A New Vision of Object-Oriented Programming」を、著作権者であるBill Bennrs氏の許可を得て翻訳したものです。文内の図の著作権はArtima, Inc.に帰属します。(原文公開日:2009年3月20日) 要約 オブジェクト指向プログラミングはプログラマとエンドユーザの視点をコンピュータコードにおいて統一するものと考えられていた。この恩恵はユーザビリティとプログラムの分かりやすさの両面にわたる。しかし、オブジェクトは構造をとらえるのに長けている一方で、システムの動作をとらえることができていない。DCIはエンドユーザのロールに関する認識モデルとロール間の関係を

    DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism
  • DCI を考える #2 - 鳩舎

    追記 まじで鳩さんのスライドでDCIについて理解したつもりになるの危険だからやめた方がいいです。せめて d.hatena.ne.jp/digitalsoul/20… を読みましょう。DCIはエンドユーザのメンタルモデルを実装に落とし込むための設計パラダイムです— Naoto Takai (@takai) December 27, 2012 ということで、以下の内容はすべて間違いである可能性が高いです。 元記事 これまでのあらすじ: ActiveStrategy はイマイチなアプローチだよね。 文脈によって可能な挙動が変わり、モデルは基的にデータのみを持つことでクリーンな状態を保とうといっているのに、便利な include を提供する ActiveStrategy はやはりイマイチなアプローチで、挙動の切り分けが容易になるのはいいことだけれど、それって今までの include 地獄から何も

    DCI を考える #2 - 鳩舎
  • DCI を考える - 鳩舎

    追記 まじで鳩さんのスライドでDCIについて理解したつもりになるの危険だからやめた方がいいです。せめて d.hatena.ne.jp/digitalsoul/20… を読みましょう。DCIはエンドユーザのメンタルモデルを実装に落とし込むための設計パラダイムです— Naoto Takai (@takai) December 27, 2012 ということで、以下の内容はすべて間違いである可能性が高いです。 元記事 Data - Context - Interaction いわゆる DCI が最近の人気らしい。 DCI そのものの説明をこのエントリでする気はないので、 Sapporo Ruby Kaigi の角谷さんのプレゼンなどを見るとよい。 Rails の場合、 Data はまぁ ActiveRecord / Mongoid などのいわゆる MVC におけるモデル、であっていると思う。これに

    DCI を考える - 鳩舎
  • #sprk2012 でDCIを日本のRubyistに紹介しました - 角谷HTML化計画(2012-09-16)

    ■1 #sprk2012 でDCIを日Rubyistに紹介しました 札幌Ruby会議2012に参加してきました(というか顧問だったんだけど)。 (写真はsora_hのを借りてます) 前門の@ursm、後門の@apotonick、大トリはクビ。さてどうする、という状況でスライド構成に弱気を見せてしまい、反省の多いトークとなってしまいました。が、話した後にフィードバックをいただけたことをありがたく思っております。その中には私のヒーロー達もいて(@eto, @m_seki そして @sumim!!)、全体としては話をさせてもらってほんとうに良かったです。貴重な機会をありがとうございました。 スライドはspeakerdeckに置いてます: いただいたフィードバックを元に、もうちょっと練り直した話を来年1月の東京Ruby会議10で話せたらいいな、と思ったのでリージョナルなオポチュニティへのプロポ

  • artima - The DCI Architecture: A New Vision of Object-Oriented Programming

    Object-oriented programming was supposed to unify the perspectives of the programmer and the end user in computer code: a boon both to usability and program comprehension. While objects capture structure well, they fail to capture system action. DCI is a vision to capture the end user cognitive model of roles and interactions between them. Objects are principally about people and their mental mode

    komlow
    komlow 2012/11/03
    ウ〜ム
  • Amazon.com: Lean Architecture: for Agile Software Development: Coplien, James O.: Books

    Amazon.com: Lean Architecture: for Agile Software Development: Coplien, James O.: Books
  • DCI (Data Context Interaction)

    3月19日(月)に要求開発アライアンスのセッション『Object-Functional Analysis and Design: 次世代モデリングパラダイムへの道標』を行いましたが、説明を端折ったところを中心にスライドの回顧をしています。 今回は「Data Context Interaction (DCI)」として用意した以下のスライドを説明します。 オブジェクト・モデリングの問題点の一つに、ユースケースからドメイン・オブジェクトへ真面目に責務の分散配備をしていくと、ドメイン・オブジェクトの実現が非常に重たくなってしまうという問題があります。 ドメイン・モデルそのものに由来するドメイン・ロジックをドメイン・オブジェクトで実現するのは、来のオブジェクト指向の趣旨にも則っており問題ありません。 論点となるのはユースケース由来のアプリケーション・ロジック。このアプリケーション・ロジックを、(1

    DCI (Data Context Interaction)
  • The Right Way to Code DCI in Ruby :: Mike Pack Development

    Note: This website has been deprecated and is no longer maintained. Many articles found in the Ruby community largely oversimplify the use of DCI. These articles, including my own, highlight how DCI injects Roles into objects at runtime, the essence of the DCI architecture. Many posts regard DCI in the following way: class User; end # Data module Runner # Role def run ... end end user = User.new #

  • 1