「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」の発表資料が素晴らしい #devsumi デブサミ2014の発表資料を読んでいて、僕の中では「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」が一番心に残った。 ラフなメモ書き。 以下の発表資料の文章を引用している。 【元ネタ】 Developers Summit 2014 で「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」という内容で発表してきました - sifue's blog 2014/02/14 デブサミ2014【14-A-6】Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所 #devsumiA - Togetterまとめ 【0
みなさん、こんにちは。グリーのかとじゅん(@j5ik2o)です。 このエントリは GREE Advent Calendar 2013 の 18日目の記事です。よろしくお願いします。 私がグリーに入社してやっていることは、プログラミング言語 Scalaとドメイン駆動設計(以下、DDD)の布教活動です。布教活動といっても宣伝するだけでは具体性に欠けるので、実際に開発チームに入ってScalaやDDDの技術支援を行っています。本エントリでは、Scalaを用いたDDDの設計と実装をどのように行っているかを、DDDを知らない人でもできるだけわかりやすく説明したいと思います(Scalaわかっていると読みやすいですが、あんまり複雑なコードは出てこないのでなんとなく読めるのではないかと思います)。なお、DDDの実践例は他にもあります。一例だと思って読んでいただければ幸いです(先日のSNSチームでのドメイン駆
この記事は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はエンドユーザのロールに関する認識モデルとロール間の関係を
みなさん、こんばんわ。 会社のアドベントカレンダーで、Scalaコードでわかった気になるDDDというブログを書いたのですが、最近、老害を防ぐためにDCIについても勉強中です。 DCIアーキテクチャ – Trygve Reenskaug and James O. Coplien とりあえず、これを読めということらしいですが、今ひとつ理解できなかったので、 Lean Architecture: for Agile Software Development を買って読んでます(巻末にScalaのコード例もあってなかなかよさげです)。 この本ではtraitのmix-in方式を紹介しているのですが、この方法はイマイチだと思っているので、別の方法を考えてみたのでさくっと紹介します。 暗黙的型変換と型クラスでの実装 今回は、ECサイトなどの、商品(Product)の購入(purchase)について考えて
この記事は Scala Advent Calendar 2013 12/11 の記事です。 昨日は @chiral さんの Sprayの簡単な紹介 - アドファイブ日記 でした。 ちゃんと見ましたか? 見てね! で、この記事は Scala で DDD の Repository の実装を書く場合どう書けばいいのか、その一例を考えてみたというお話しです。 (主軸が Scala より DDD な気がするがキニシナイ) ただし、書いてる人の関数型成分含有率は 1% 位な為、関数型ガチ勢から見た時いろいろ思うところがある可能性は高いです。 マサカリお待ちしております。 DDD 関連の概念については特に説明しないので適当にググってください。 実現したい要件 Repository の実装パターンを考えるにあたり、達成したい要件としては以下の2点。 ドメイン層(Repository)を特定の永続化技術から
こんにちは!グリープラットフォームでSNSの開発をしています、うきょーです! GREE Advent Calendar 2013 6日目です、よろしくお願いします! 今回は僕が所属するチームでの、ドメイン駆動設計を実践してきた過程をお話したいと思います。ドメイン駆動設計とは何か、については簡単に要所要所で説明していきますが、詳しくは本で!また、ドメイン駆動設計そのものについての話ではなく、実践の一例となります。 スマートUIパターンからのスタート 今回僕のチームが扱っていたものはJavaScript製のクライアントアプリケーションで、APIから取得した情報を表示し、ユーザーの操作によってAPIを呼び出す、というごく一般的なものです。 ドメイン駆動設計にはアンチパターンとして、スマートUIパターンと呼ばれるものが存在します。簡単に言えば「見た目都合から設計やモデルを考えてしまった」という状況
32. trait Entity[ID <: Identity[_]] { ! /** エンティティの識別子。 */ val identity: ID ! override final def hashCode: Int = 31 * identity.## ! override final def equals(obj: Any): Boolean = obj match { case that: Entity[_] => identity == that.identity case _ => false } ! } 33. trait Identity[+A] extends Serializable { ! def value: A ! } ! object EmptyIdentity extends Identity[Nothing] { ! def value = throw E
たとえばこんなモデルがあって、相互に依存しているケースを考えよう。 注意:説明を簡単にするために、varを利用しています。 従業員1 2 3 4 5 class Employee( val id: Long, val name: String, var depertment: Option[Depertment] = None ) 部署1 2 3 4 5 class Depertment( val id: Long, val name: String, var employees: Seq[Employee] = Seq.empty ) 利用例1 2 3 4 5 val employee = new Employee(1, "KATO") val depertment = new Depertment(1, "Dev") employee.depertment = Some(depertm
"Beautiful Develpment"(10/27 DevLOVE)の講演資料と原稿 はじめに 本日(10/27)、DevLOVE様主催で、"Beautiful Develoment"と題されたイベントが開催されました。これは「ドメイン駆動設計("DDD:Domain-Driven Design")」を題材に、入門から実践までを語り尽くすというコンセプトのものです。このイベントにおける講演のトップバッターとして、ドメイン駆動設計の根底にある基本的な考え方についてお話しさせて頂きましたので、講演資料と原稿を公開いたします*1。 スライドはこちら アジェンダは以下の通りです。 導入 オブジェクトとは? モデルとは? ドメイン駆動設計とは? まずは、ドメイン駆動設計のベースとなっている、「オブジェクト指向」や「モデル」について整理した上で、実際にドメイン駆動設計とはどういうものかを見ていき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く