SlideShare a Scribd company logo
1 of 50
Download to read offline
PHP Conference JAPAN 2015
October 3 2015
Frameworks We Live By
Design by day-to-day framework development:
Multi-paradigm design in practice
PHP Mentors
KUBO Atsuhiro @iteman
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Frameworks We Live By
1.ドメインモデルの設計
マルチパラダイムデザインによるドメイン駆動設計の実践
●
共通性と可変性
●
問題ドメインと解決ドメイン
●
ドメインモデルの設計
解決ドメインの抽象による問題ドメインの再定義
2.フレームワーク開発による設計
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
久保敦啓 (KUBO Atsuhiro)
●
Programmer, Mentor at @phpmentors,
@piece_framework Project Lead/Developer,
Business Owner.
●
A framework multi-paradigm guy
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
これまでに作ったフレームワーク
●
Net_UserAgent_Mobile(2003)
HTTP mobile user agent string parser
●
Piece_Unity(2006)
A Web application framework
●
Domain Kata(2014)
Kata for domain models
●
Workflower(2015)
A BPMN 2.0 compliant workflow engine for PHP
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
1.ドメインモデルの設計
〜マルチパラダイムデザインによるドメイン駆動設計の実践〜
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
優れた設計というものは、どのよう
な場合であろうと、審美眼、洞察、
経験に依存するのである。
― マルチパラダイムデザイン p.215
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Domain-Driven Design: DDD
(Evans 2003)
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
DDDのアクティビティ
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
DDDの問題点
●
モデル駆動設計は問題ドメインの概念に根ざした
分析、設計、実装における単一のモデルの開発を
目指すものだが、その実現方法が不明確である。
●
分析(モデリング)手法についての具体的な記述
がアナリシスパターンを適用する、責務のレイヤ
を除いて見つけられない。
●
ドメイン工学に関する記述がなく、ドメイン特化
言語についても不十分な記述に留まる。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Multi-Paradigm Design: MPD
(Coplien 1998)
MPDのアクティビティ
1.問題ドメインをサブドメインに分割する。
2.サブドメインの共通性・可変性を分析する。
3.解決ドメインの共通性・可変性を分析する。
4.解決ドメインの抽象を使ってドメインモデルを
設計する。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
MPDのアクティビティ
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
マルチパラダイムデザイン
●
James O. "Jim" Coplien氏が提唱するドメイン工学の設計手法
– アプリケーションを再利用可能な問題ドメインのアーキテクチャとそのインス
タンスという構図で認識し、そのリファレンスアーキテクチャの作成に主眼を
置く。ジェネレーティブプログラミングとオーバーラップする。
●
人間の認知モデルに基づく共通性と可変性という観点から問題ドメイ
ンを分析
●
ドメインとドメイン間の関係からなる構造(アーキテクチャ=ドメイ
ンモデル)として問題ドメインを組織化(第1段階のアーキテクチャ)
●
解決ドメインによって支援される抽象を使って問題ドメインの構造を
表現=設計(第2段階のアーキテクチャ)
解決ドメインの抽象を意図的に問題ドメインに組み込む!
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
マルチパラダイムデザイン
●
“MPD is predicated on analysis, and is rooted
in a model of commonality that concretely
guides choices”
― https://twitter.com/jcoplien/status/645654740911681536
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
MPDの重要性
●
設計者がモデルを設計することが中心的なアクティビティと
して明示的に位置づけられている。
●
人間の認知モデルに基づく共通性と可変性による設計原理ゆ
え高い普遍性を持つ。
●
現実にある多くの優れたフレームワークにその使用が認めら
れる。すなわち現実を説明できる力を持つ。
例:
●
Symfony(PHP)
●
Ruby on Rails(Ruby)
●
Spring Framework(Java)
●
Boost(C++)
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
パラダイム
●
世界に関するモデル
●
計算完全性モデル
●
共通性と可変性の配置に関するモデル
=マルチパラダイムデザイン
MPDのゴール
●
システムの構築方法をドメインの構造(アーキテ
クチャ=ドメインモデル)自身が示すようにする
こと
●
意図性(intentionality)
●
システムレベルにおけるソフトウェアの理解
●
進化の容易さの拡大
のサポートによって実現
●
ニーズを柔軟性に富む弾力ある構造(アーキテク
チャ=ドメインモデル)に変換すること
MPDとは何か?
●
共通性と可変性による設計パラダイム
– 人間の認知モデルに基づく共通性と可変性という観点から問題ドメ
インを分析する抽象モデル
– 共通性と可変性を管理する様式(style)という単一の観点から解決
ドメイン(パラダイム)をまとめる統一設計理論
●
設計者の経験と直観やドメインの歴史的意味を頼りに、共通
性と可変性によって問題ドメインが持つ本質的な構造を明ら
かにし、それに適合する解決ドメイン(パラダイム)を選択
可能にする。
●
分析(ドメイン知識の獲得)ではなく設計(ドメイン知識の
組織化)を指向する。
MPDの認知モデル
●
認知言語学に基づくモデル
●
概念メタファーを提唱するGeorge P. LakofとMark
Johnsonらによって切り開かれた新たな認知モデル
●
古典的なカテゴリー観だけでなく新しいカテゴリー理論
に基づく抽象のモデル
– 古典的なカテゴリー観:全成員に共通する属性によってカテゴ
リーを規定
– 新しいカテゴリー理論:プロトタイプ理論、基本レベルカテゴ
リー
●
負の可変性
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
“われわれが普段、ものを考えたり行動したり
する際に基づいている概念体系の本質は、根本
的にメタファーによって成り立っているのであ
る。”
― レトリックと人生 p.3
概念メタファー
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
概念メタファー
●
認知言語学の用語で「ある概念領域を別の概念領域を用
いて理解する事」
– 概念メタファー(conceptual metaphor)
●
構造のメタファー(structural metaphors)
●
方向づけのメタファー(orientational metaphors)
●
存在のメタファー(ontological metaphors)
– メトニミー(metonymy)
– シネクドキー(synecdoche)
●
“人間の概念体系がメタファーによって構造を与えら
れ、規定されている” ― レトリックと人生 p.7
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
概念メタファー
●
存在のメタファーの例:
THE MIND IS AN ENTITY
<知力(精神)はひとつの存在物である>
●
THE MIND IS A MACHINE
<知力は機械である>
– My mind just isn't operating today.
<私の頭は今日は全然作動して(=働いて)いない。>
― レトリックと人生 pp.41-42
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
“レイコフはここから発展して、人間の抽象的
な概念能力は、経験に基づいた具体的・身体的
な認知機構からのメタファー的拡張によって可
能になっていると主張し、心身二元論に基づい
た西洋哲学の伝統に対する批判を行ってい
る。”
― ジョージ・レイコフ - Wikipedia
概念メタファー
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
問題ドメイン
●
システムやソフトウェアの当面の関心のある領
域。
例:会計、販売管理、生産管理、ソースコード管
理、Webアプリケーション、オブジェクトリレー
ショナルマッピング、バリデーション、ワークフ
ロー
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
サブドメイン
●
問題ドメインの類似サブシステム群の共通性と可変性を表現する
抽象
– ドメインそのもの
●
よく知られたサブドメインは設計の優れたスタートポイント
●
アーキテクチャ=ドメインモデルの再利用単位
– サブドメインのフレームワーク
●
ドメインの階層化
– サブドメインはそのドメインの語彙が現れなくなるまで繰り返し分割さ
れ階層化される。
例:ワークフロードメインをどれだけ細分化してもステートマシンドメ
インは現れない。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
ワークフロードメインのサブドメイン分割
●
ワークフロー(Workflow)
●
プロセス(Process)
●
定義(Definition)
●
永続化(Persistence)
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
解決ドメイン
●
問題ドメインを解決するための抽象基盤となる
技術領域。
例:プログラミング言語、フレームワーク、ライブ
ラリ、デザインパターン、オブジェクト指向プログ
ラミング、ルールベースプログラミング、関数プロ
グラミング、リレーショナルモデル
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
共通性・可変性分析
●
演繹的共通性と帰納的共通性
●
共通性次元
データ構造、名前と振る舞い(識別子、シグネチャ、型)、アルゴリズム
●
共通性カテゴリ
– 共通性次元によってグループ化されるカテゴリ。ドメインの可変パラメーターと
なる。
●
空間的可変性と時間的可変性
– 変更されたアプリケーションはフレームワークの新たなインスタンスである。
●
機構と方針の分離(Separation of mechanism and policy)
– 機構は安定、方針は不安定
– インスタンスから見ると共通性は機構としてフレームワークに埋め込まれ、可変
性は方針としてインスタンス毎の定義の対象となる。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
問題ドメイン分析
●
アプリケーションではなくそのファミリの分析
– 共通性次元によって共通性をグルーピングしたもの
– ドメインを形成
– 可変パラメーターで可変性を表現
●
ドメイン分析のメリット
– 再利用をサポートする一般性
– 柔軟性=変更からの復元力(resilience)
●
グローバルに抽象化、ローカルに具象化
– 例:BPMN 2.0を限定的にサポートするワークフローエンジン
●
問題ドメイン分析=ドメイン駆動設計
●
可変性テーブル、可変性依存図として形式化
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
ワークフロードメインの可変性依存図
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
ワークフローサブドメインを分析する
OMGのBPMN 2.0ドキュメントを参考に第1段
階のアーキテクチャーを設計…
Workflow:
ConnectingObject:
- SequenceFlow
FlowObject:
Activity:
- Task
Event:
- StartEvent
- EndEvent
Gateway:
- ExclusiveGateway
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
解決ドメイン分析
●
問題ドメインの共通性・可変性に対応する解決
ドメインの抽象を分析する。
●
従来から設計者の暗黙知として存在
●
ファミリテーブルとして形式化(再利用可能)
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
ドメインモデルの設計
●
設計=変換分析(transformational analysis)
– 問題ドメインの構造と解決ドメインの構造のマッピ
ング
●
解決ドメインの抽象で問題ドメインの構造を再
定義、洗練(第2段階のアーキテクチャの作
成)
●
DDDのモデル駆動設計が目指す単一のモデルを
実現
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
ドメインモデルの設計
解決ドメインの構造が問題ドメインの構造を変化させ
る。
分析、設計の繰り返しが必要となる根拠となる。
例:
元の問題: 「これまで考えられてきた設計やプログラミング
の便法を可能なかぎり利用して、複雑な関数の導関数を計
算する。」
変更された問題: 「自動微分を使用して、複合関数の導関数
を計算する」
― マルチパラダイムデザイン p.207
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
ドメインモデルを設計する
●
型の共通性から組織化…
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
ドメインモデルを設計する
操作(振る舞い)の共通性から組織化…
MPDのアクティビティ
1.問題ドメインをサブドメインに分割する。
2.サブドメインの共通性・可変性を分析する。
3.解決ドメインの共通性・可変性を分析する。
4.解決ドメインの抽象を使ってドメインモデルを
設計する。
5.ドメイン特化言語を評価、設計する。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
MPDのアクティビティ
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
ドメイン特化言語
●
Domain-Specific Language: DSL
●
問題ドメインのインスタンスを定義するカスタ
ム言語。ドメインの可変性を表現する。
●
問題ドメインの共通性・可変性が既存のソ
リューションドメインの抽象に適合しない場合
に有用
●
1つの解決ドメインとなる。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
DSLを評価、設計する
●
ワークフロー定義はソースコードによる記述が
困難…
●
ワークフロー定義はOMGが定義するBPMN
2.0(XML)がデファクトスタンダード
– OMG提供のXMLスキーマファイルでバリデーショ
ンが可能
– 多数存在するBPMN 2.0対応のグラフィカルエディ
ターを利用可能
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Workflowerによる例:
DSLを評価、設計する
BPMN2 Modeler(Eclipseプラグイン)のエディター
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2.フレームワーク開発による設計
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Frameworks We Live By
Design by day-to-day framework development
フレームワーク
●
ソースコードとランタイムのオブジェクトによって
サブドメインの構造(アーキテクチャ=ドメインモ
デル)を表現するソフトウェアパッケージ
例:
●
Webアプリケーションフレームワーク
●
ORMフレームワーク
●
ワークフローエンジン
●
アーキテクチャ=ドメインモデルの再利用単位
●
問題ドメインからは1つのサブドメインとして利用
フレームワーク開発:MPDの実践
●
目の前にあるニーズから問題にアプローチするだけ(ア
プリケーション分析)では、広い領域に適用できるよう
な共通性を見つける機会が制限される。
●
あるアプリケーションを作る際に、そのアプリケーショ
ンをフレームワークとその最初のクライアントという構
成に意図的に持ち込むことで、共通性を見つける機会の
制約を打ち破り、広い領域に適用できるソリューション
を作り出そうということである。
●
フレームワークの作成では必然的にアプリケーションで
はなくドメインに対して設計を行うことになる。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Coding We Live By
Design by day-to-day coding
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
コーディング:MPDの実践
●
設計と実装、その活動の統合を目指して
– 設計してからの実装ではなく実装を通した設計を指向する。
●
開発環境・技術の進化により現実のものとなっている。
– 開発環境による高速なフィードバックがそれを可能にしている。
●
現在の実装(コーディング)は当時のCoplien氏の見通し以上
の活動になっている。
それゆえ:
プログラマーは設計者である。実装の中心的な関心を設計と
位置づけ、意図を持った設計(intentional design)を作り出
すこと。
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Coding We Live By
1.ドメインモデルの設計
マルチパラダイムデザインによるドメイン駆動設計の実践
●
共通性と可変性
●
問題ドメインと解決ドメイン
●
ドメインモデルの設計
解決ドメインの抽象による問題ドメインの再定義
2.フレームワーク開発による設計
3.コーディングによる設計
Copyright (c) 2015 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Code the Domain!
You are a Domain Coder!
参考文献
●
(Coplien 1998) Coplien, James O. Multi-Paradigm Design for C++ Reading, MA: Addision-
Wesley, 1998. 『マルチパラダイムデザイン』(金沢典子/羽生田栄一/平鍋健児訳、ピアソン
エデュケーション、2001、ISBN4894712989)
●
(Lakof and Johnson 1980) Lakof, George and Johnson, Mark Metaphors We Live By,
Chicago: University of Chicago Press, 1980. 『レトリックと人生』(渡部昇一/楠瀬淳三/下
谷和幸訳、大修館書店、1986、ISBN4469211257)
●
George Lakof - Wikipedia, the free encyclopedia
●
ジョージ・レイコフ – Wikipedia
●
認知言語学 - Wikipedia

More Related Content

What's hot

3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)増田 亨
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ増田 亨
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント増田 亨
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方増田 亨
 
RDRA DDD Agile
RDRA DDD AgileRDRA DDD Agile
RDRA DDD Agile増田 亨
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みhaljik Seiji
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門Takuya Kitamura
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会裕紀 重村
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Yoshimura Soichiro
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発Mao Ohnishi
 
某S社のddd(メイリオ)
某S社のddd(メイリオ)某S社のddd(メイリオ)
某S社のddd(メイリオ)kumake
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
 
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?これって、ドメイン駆動設計?
これって、ドメイン駆動設計?Michitaka Yumoto
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計増田 亨
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!増田 亨
 

What's hot (20)

3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方
 
RDRA DDD Agile
RDRA DDD AgileRDRA DDD Agile
RDRA DDD Agile
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
 
ドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩みドメイン駆動設計を実践するプログラマーの悩み
ドメイン駆動設計を実践するプログラマーの悩み
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発
 
某S社のddd(メイリオ)
某S社のddd(メイリオ)某S社のddd(メイリオ)
某S社のddd(メイリオ)
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?これって、ドメイン駆動設計?
これって、ドメイン駆動設計?
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!
 

Similar to Frameworks We Live By: Design by day-to-day framework development: Multi-paradigm design in practice

20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い βRyo RKTM
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘いRyo RKTM
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsModeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsKenji Hiranabe
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころJunya Hayashi
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計アシアル株式会社
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesHironori Washizaki
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218Akira Tanaka
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform惠 紀野
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-muchWhy-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-muchKoji SHIMADA
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Yasushi Ishikawa
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶShumpei Shiraishi
 
Eclipse modeling 勉強会 dslについて
Eclipse modeling 勉強会 dslについてEclipse modeling 勉強会 dslについて
Eclipse modeling 勉強会 dslについてAkira Tanaka
 

Similar to Frameworks We Live By: Design by day-to-day framework development: Multi-paradigm design in practice (20)

20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsModeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah models
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principles
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
EMF勉強会
EMF勉強会EMF勉強会
EMF勉強会
 
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-muchWhy-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
Eclipse modeling 勉強会 dslについて
Eclipse modeling 勉強会 dslについてEclipse modeling 勉強会 dslについて
Eclipse modeling 勉強会 dslについて
 

More from Atsuhiro Kubo

Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1Atsuhiro Kubo
 
Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2Atsuhiro Kubo
 
The Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applicationsThe Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applicationsAtsuhiro Kubo
 
Lean Architecture / DCI Evening Report
Lean Architecture / DCI Evening ReportLean Architecture / DCI Evening Report
Lean Architecture / DCI Evening ReportAtsuhiro Kubo
 
ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界Atsuhiro Kubo
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミングAtsuhiro Kubo
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous TestingAtsuhiro Kubo
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストAtsuhiro Kubo
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPAtsuhiro Kubo
 
Piece Framework 2.0 Background
Piece Framework 2.0 BackgroundPiece Framework 2.0 Background
Piece Framework 2.0 BackgroundAtsuhiro Kubo
 

More from Atsuhiro Kubo (15)

MPD Osaka Extra 5
MPD Osaka Extra 5MPD Osaka Extra 5
MPD Osaka Extra 5
 
Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1
 
Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2
 
The Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applicationsThe Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applications
 
Lean Architecture / DCI Evening Report
Lean Architecture / DCI Evening ReportLean Architecture / DCI Evening Report
Lean Architecture / DCI Evening Report
 
ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミング
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテスト
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
 
Piece Framework 2.0 Background
Piece Framework 2.0 BackgroundPiece Framework 2.0 Background
Piece Framework 2.0 Background
 

Frameworks We Live By: Design by day-to-day framework development: Multi-paradigm design in practice