Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPe...
Search
Akira Suenami
February 09, 2020
Technology
4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
Akira Suenami
February 09, 2020
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.6k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.5k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7k
値と属性の話
a_suenami
0
320
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.4k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Technology
See All in Technology
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
420
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
220
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
130
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
300
Chainlitで作るお手軽チャットUI
ynt0485
0
280
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
170
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
180
AIチャット検索改善の3週間
kworkdev
PRO
2
140
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.3k
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
140
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
230
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Un-Boring Meetings
codingconduct
0
320
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
440
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
290
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Test your architecture with Archunit
thirion
1
2.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The SEO Collaboration Effect
kristinabergwall1
1
490
Navigating Team Friction
lara
192
16k
It's Worth the Effort
3n
188
29k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 2020/02/09 PHPer Kaigi 2020 末並 晃 @a_suenami
自己紹介 • 末並 晃 @a_suenami • 生息している界隈: DDDとか、TDDとか、RDBとか • お仕事で使ってる技術スタック:
Rails, React, Java, PHP • 好きな RDBMS: PostgreSQL • 好きな制約: チェック制約 • 好きな焼肉の部位: ハラミ • 好きな(ry
インターネット上での立場
インターネット上での立場 ひたすら焼肉をタカられるという エンターテイメントをインターネットに提供し ています。 (焼肉を奢るとは言ってない)
今日話すこと • オブジェクトとは何か • その他のモデリングパラダイムの紹介 • 複数のモデリングパラダイムを用いた設計の勘所 • PHPの詳細な話はしません(重要) ◦
そもそも最近は私自身がレガシーなPHPしか触ってません
オブジェクトとは ※メッセージパッシングの話はしません!
歴史を振り返る 構造化プログラミング モジュラープログラミング データ抽象 抽象データ型 クラス
データ抽象とその手段としての抽象データ型 // point.h struct Point; struct Point* makePoint(double x, double
y); double distance(struct Point *p1, struct Point *p2); // point.c #include “point.h” #include <stdlib.h> #include <math.h> struct Point { double x, y; }; struct Point* makePoint(double x, double y) { struct Point* p = malloc(sizeof(struct Point)); p->x = x; p->y = y; return p; } double distance(struct Point* p1, struct Point* p2) { double dx = p1->x - p2->x; double dy = p1->y - p2->y; return sqrt(dx*dx+dy*dy); } 『Clean Architecture』第5章 オブジェクト指向プログラミング
データ抽象とその手段としての抽象データ型 • 抽象データ型とは、データ抽象を実現する手段のひとつとして提 案され、その具体的実装としてクラスが多くの機能に導入された。 • クラスとはモジュール化の手法のひとつと言える。 • つまり、クラスベースのオブジェクト指向におけるソフトウェア構築 は、抽象データ型の構造化された集合としてシステムを構築する ことである。
マルチパラダイム・モデリング • 現在では多くのプログラミング言語で関数がファーストクラスオ ブジェクトであり、関数を他のデータ型と同等に扱うことによって モジュール間の依存関係を適切にできる可能性がある。 ◦ ポリシーパターン、サービスパターンなどは関数に他ならな い。 • 抽象データ型はその名の通りデータ構造を隠蔽するため、デー
タモデルの理解は必要不可欠である。
マルチパラダイム・モデリング モジュール モジュール モジュール モジュール モジュール モジュール 抽象化されたモデル(モジュール構造)の世界 実際のデータ構造/アルゴリズムの世界 関数適用
関数合成 関係演算 (SQL) グラフ演算 手続き処理 有限オートマトン
計算モデル • 抽象機械型計算モデル ◦ チューリングマシン、有限オートマトン • 命令型計算モデル ◦ フローチャート •
関数型計算モデル ◦ 帰納的関数、ラムダ計算 • 論理型計算モデル ◦ 述語論理 『計算モデルとプログラミング』
計算モデルとしてのデータモデル • 一般にデータモデルと呼ばれるものも、それを用いることで特定 の計算を行いやすくなるという意味で計算モデルと見なすことも できる ◦ 例: リレーショナルモデル => リレーショナル演算
• ただし、チューリング完全であるとは限らない。
リレーショナルモデルとERモデル • リレーショナルモデルは述語論理を背景とし、何らかの命題を満 たす事実の集合と捉えるデータモデル。 ◦ 例: “識別子 $id の会員の名前は $name
、年齢は $age であ る” ◦ 関係演算によるデータ操作が可能になる。 • ERモデルは複数のデータモデルの包括的なビューとして提案さ れ、それ自体は計算体系を持たない。
ERモデルからその他のデータモデルへの変換 ネットワークモデル リレーショナルモデル エンティティセットモデル
まとめ • 現代のソフトウェア開発はほとんどの場合マルチパラダイムでの 設計が可能である。 • 構築するソフトウェアを抽象化されたモジュールの集合と捉え、そ れらの間の依存関係をどのように設計するかがモデリングの重 要な観点である。 • それぞれのパラダイムの得手・不得手を理解し、最適なモデルを
選択することが設計者には求められる。
ご清聴ありがとうございました。