UMLは開発のデザインでプロダクトマネージャとエンジニアがコンテキストを共有するのに有効なツールです。
そのUMLを軽量マークアップ言語で記述できるPlantUMLはテキストエディタを選ばないのでとても便利です。
しかし、UMLのダイアグラム以外にもプロダクトマネージャとエンジニアで共有したいダイアグラムがあります。
それはデータの構造と意味です。これがおたがいに正確に共有されていると開発がスムーズに進みます。
モデリングの手法は多数ありますが、佐藤正美氏のT字形ER手法(TM)を軽量マークアップ言語で表現しました。
個人的に軽量マークアップ言語したもので、公式に認められたものではありません。
T字形ER手法(TM)
TMはデータ構造を作りながら同時に事業を解析し、実装の生産性向上を実現する目的で作られました。
(この手法は理論に基づいたルールがあります。そのルールを理解してご利用ください。)
Entity(個体)
-
entity
(個体)は認知された事実的対象のことで、identifier
(認知番号)が付与される。 - entityは
event
(出来事・行為)とresource
(行為に関与するもの)の2種類に分類される。- eventは関係は非対称性で、性質として日付が帰属する。
- resourceは関係は対称性で、event以外のentityである。
記法
- 簿記の T字勘定 と同じように、entityの仕訳をする。
- 左側には認知番号(主語)が記入され、右側には性質(述語)が記入される。
- 性質は名称や日・数量、および区分コードなど
- 個体名称の右側に分類のeventなら
E
、resourcenならR
が記入される。
個体名称 | 分類
---------------
認知番号 | 性質
例
顧客 | R
-------------------
顧客番号 | 顧客名称
受注 | E
-----------------
受注番号 | 受注日
| 受注数
軽量マークアップ
- Markdown記法の拡張の テーブル のマークアップで表現する。
- 分類はeventなら
Event
、resourcenならResource
が記入される。
個体名称 | 分類 |
---|---|
認知番号 | 性質 |
例
顧客 | Resource |
---|---|
顧客番号 | 顧客名称 |
受注 | Event |
---|---|
受注番号 | 受注日 |
| 受注数
Relation(関係)
- entity(個体)の間には関係が成立する。
- 関連には4種の対応性がある。
- One-to-one(1 対 1)
- One-to-many(1 対 複数)
- Many-to-one(複数 対 1)
- Many-to-many(複数 対 複数)
記法
1
複数
例
One-to-one
One-to-many
Many-to-many
Recursive
軽量マークアップ
- PlantUMLの Use Case に似たマークアップで表現する。
1
|
複数
<
Entity
[ ]
- event
[ :E]
- resourcen
[ :R]
例
One-to-one
- [顧客] has one [住所]
- [住所] belongs to [顧客]
[顧客:R] -|-|- [住所:VE]
One-to-many
- [顧客] has many [受注]
- [受注] belongs to [顧客]
[顧客:R] -|-<- [受注:E]
- [顧客] has many [商品] through [対照表]
- [商品] has many [顧客] through [対照表]
Many-to-many
[顧客:R] ->+<- [商品:R]
|
[対照表]
Recursive
- [受注] has many [再帰表]
- [再帰表] belongs to [受注]
[受注:E] =|+<- [再帰表]
Tips
ケーキを生地(batter
)から作るのに、大きさ(size
)を決めたり、クリーム(cream
)でデコレーションをします。
Entityの構造はホールケーキやロールケーキなど作り方の工程でいくつも存在します。
こんな構造の違いをプロダクトマネージャとエンジニアが認識して正確に共有することが大切です。
- ホールケーキ
[batter:R] ->+|- [size:R]
|
[batter,size] ->+|- [cream:R]
|
[batter,size,cream]
- ロールケーキ
[batter:R] ->+|- [cream:R]
|
[batter,cream] ->+|- [size:R]
|
[batter,cream,size]
ドキュメントはGit Serverで管理され、会話はSlackなどのチャットが使われるようになりました。
そこで軽量マークアップ言語はプレーンテキストで記述できるのでコミュニケーションに役立ちます。