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
4.1k
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.7k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.6k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.1k
値と属性の話
a_suenami
0
330
ドメインモデラーにとって受託開発であることは制約なのか?
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
強化学習「理論」入門
enakai00
3
3.6k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
My broken English still works: speaking at global OSS events
naruoga
0
120
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
130
【GCC2026】TrueHDRIを用いたルックデブ環境とライティングテクニック
bandainamcostudios
PRO
0
120
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
390
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
650
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
26k
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
2
460
自宅NWにISR4331を導入してみた話
okaits
0
120
MIXIで活躍できるエンジニアを 若手社員目線で考えてみる
mixi_engineers
PRO
0
100
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
410
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
From π to Pie charts
rasagy
0
310
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
For a Future-Friendly Web
brad_frost
183
10k
Google's AI Overviews - The New Search
badams
0
1.1k
Code Reviewing Like a Champion
maltzj
528
40k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Leo the Paperboy
mayatellez
8
2.2k
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モデルからその他のデータモデルへの変換 ネットワークモデル リレーショナルモデル エンティティセットモデル
まとめ • 現代のソフトウェア開発はほとんどの場合マルチパラダイムでの 設計が可能である。 • 構築するソフトウェアを抽象化されたモジュールの集合と捉え、そ れらの間の依存関係をどのように設計するかがモデリングの重 要な観点である。 • それぞれのパラダイムの得手・不得手を理解し、最適なモデルを
選択することが設計者には求められる。
ご清聴ありがとうございました。