たなかこういちの開発ノート

システム開発に携わる筆者が、あれこれアウトプットするブログ

モデリング

「犬と猫の話」のまとめから得られた、OOPに関する課題感のメモ

先日、OO論でTLが盛り上がったので、可能な範囲でまとめた。 "犬と猫の話(または、オブジェクト指向とか型とか型クラスとかの話)": https://togetter.com/li/1462076 まとめを読んで、いくつか課題感を整理できそうだったので、メモっておく。なお、本記事…

Intentional ProgrammingとIntentional Software社についてメモ

(この記事執筆時点からだいぶ前になるが、)PHPメンターズな方面の方々のツイート等を見ていて、「Intentional Programming」なる用語を知った。 Wikipedia, "Intentional Programming": https://en.wikipedia.org/wiki/Intentional_programming Wikipedia…

データ制約に統一され得る、型、契約、バリデーション

◆まとめ◆ プログラミング言語では「型」がドメインモデルを表現する重要ツールである。一方、モデリング観点からはデータ値に対する制約こそがある意味本質で、(主にNominal Subtypingが想定されるところの)型も制約の一手段なのだと気付く。 制約一般を型…

サロゲート単独主キー vs 複合主キー問題、復習編

こちらの会に参加いたしました。 「単独主キー主義」の是非を問う<超高速開発コミュニティ&第57回IT勉強宴会in東京> ※“予習編”の記事もご覧ください。 ◇ 懇親会含め活発に意見交換がなされ、いわゆる“学びしかなかった”会となりました。 このテーマ立ては…

サロゲート単独主キー vs 複合主キーの話、予習編

6月28日開催の下記のイベントに参加させていただく予定です。 「単独主キー主義」の是非を問う<超高速開発コミュニティ&第57回IT勉強宴会in東京> * 開催の経緯としては、まずは、渡辺幸三氏の以下の記事があって、 「単独主キー専用環境」と賢くつきあう…

業務プロセス全域をデザインするにおいて、境界付けられたコンテキストを如何に捉えるかという話

要約 エンタープライズ・システムでは、同じ用語でも、部門や担当が異なれば意味も異なっている、という状況は日常的です。各担当が各人のリアルとして見ている個々の"Fact"と、全ての担当の見解を統合的に説明できる“イデア”であり仮説である"Truth"には、…

「OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話」を補足する話、もしくはデータフロー・プログラミングの話

要約 動的振る舞いのモデル化には、単に関数型というよりも、純粋関数型の一つの適用と捉えられる「データフロー・プログラミング」としての理解が有用です。データフロー・プログラミングとは数値計算処理を関数型の概念で再構成したものです。データフロー…

OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話

要約 関心対象について分析し理解しようとしたら、多かれ少なかれ「要素分解していく方法」を取るでしょう。「要素分解していく方法」とは構造を捉えることに関してのアプローチです。 構造を捉えるに当たって、OOは「要素分解していく方法」をよく支援しま…

ドメインとデータ、サブジェクトとオブジェクト、および、事実は常に事実であり、真実は常に仮説である、という話

先日参加の「PHPメンターズセミナー」には相当に触発されました。本記事はその勢いのままに書いたエントリーとなります。 ※下記記事もご参照ください。 →《PHPメンターズセミナーに参加してきました》 〜・〜 突然ですが、下図は、視点Aから見ると対象物は四…

PHPメンターズセミナーに参加してきました

去る10月3日(土)、「PHPカンファレンス2015」に併設開催の「PHPメンターズセミナー」に参加してきました。 「PHP」関連のカンファレンスではあるのですが、メンターズセミナーの副題は「モデルを設計せよ!-ドメイン駆動設計を超えて」です。しかもツイッ…

モデリングとドメインについて

モデルおよびモデリングとは? 「モデル」とは「対象を如何に認識しているかを形式的に描いたもの」と説明できるでしょう。このことを分解していきます。まず、「対象の認識の仕方についての方法論」があるでしょう。どうやって対象を観測するか、観測結果を…

「サブジェクト指向」について(私的実践DDD、その4)(2 of 2)

(※前回からの続きです。) サブジェクトにおいてリポジトリーと集約はいかなる構造を取るか? ここまでで次のような疑問を持たれた方もいらっしゃるでしょう。 『サブジェクトの捉え方は理解したとして、その場合集約やリポジトリーはどのように設計される…

「サブジェクト指向」について(私的実践DDD、その4)(1 of 2)

(※前回からの続きです。) 「サブジェクト指向」の考え方は、オブジェクト指向分析・設計における「関心の分離」に関わる一つの方策として古くから提唱されているものです。人によって多少ニュアンスに違いがありますが、私はおおよそ下記記事が説明すると…

私的実践DDD、その3

(※前回からの続きです。) 「境界付けられたコンテキスト」は常に理想形を、「サブドメイン」はその時の現実を表す まず確認すると、「リポジトリー」や「集約」はシステムの設計・構築レベルの話でしたが、「境界付けられたコンテキスト」や「サブドメイン…

私的実践DDD、その2

(※前回からの続きです。) CQRSはモデリング上の本質的な課題への対応である CQRS(Command-Query Responsibility Segregation、コマンド・クエリ責務分離)の採用は、現代的なシステムではほぼ全て必然的にそこへ帰結すると考えた方がよいと思います。CQRS…

私的実践DDD、その1

ようやく「実践ドメイン駆動設計」を読み終わりました。 髙木正弘訳、ヴァーン・ヴァーノン著、「実践ドメイン駆動設計」 実際にありそうな開発プロジェクトのストーリーに沿うかたちで話が進められます。コードExampleが極めて具体的に示されて、どうすべき…

要件から設計する行為を、「Object」、「Subject」、「Attribute」、「Projection」で説明してみる

(Domain's) Objectとは? 業務プロセスに対する要求・要件の分析観点で抽出される、業務上のひとつの“管理対象”を認識したものを「(Domain's) Object」と、ここでは称することとします。「業務上のひとつの“管理対象”」とは、、業務プロセス内にひとつの部分…