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
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Search
Akira Suenami
June 14, 2024
Technology
5
3.3k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Akira Suenami
June 14, 2024
Tweet
Share
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.3k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
6.9k
値と属性の話
a_suenami
0
290
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.5k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.3k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.4k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Technology
See All in Technology
AI駆動開発を事業のコアに置く
tasukuonizawa
1
1.4k
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
140
Prox Industries株式会社 会社紹介資料
proxindustries
0
190
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
74k
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
1
200
ZOZO.swift #2
zozotech
PRO
0
180
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
3
390
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
430
"共通化"と"Embed"のブレンドでスケール可能な運用を!M&Aを支えるGENDA SREの実践 / GENDA Tech Talk #3
genda
0
150
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
190
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
290
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
320
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
140
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Mind Mapping
helmedeiros
PRO
1
93
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Visualization
eitanlees
150
17k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
160
Transcript
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜 2024/06/14 設計ナイト2024 末並 晃 @a_suenami
自己紹介 • 末並 晃 @a_suenami • 生息している界隈: DDDとか、TDDとか、RDBとか ◦ 基本エンジニアが集まってるところならどこへでも
• お仕事で使ってる技術スタック: Rails, React (Next.js), Node.js, Java ◦ 最近は terraform おじさんです • 好きな RDBMS: PostgreSQL • 好きな制約: チェック制約 • 好きな焼肉の部位: ハラミ • 好きな(ry
インターネット上での立場
インターネット上での立場 焼肉をタカられるという エンターテイメントをインターネットに提供し ています。 (焼肉を奢るとは言ってない)
2年前
2年前 https://speakerdeck.com/a_suenami/toransakusiyonsukurihutohatokokaralai-tafalseka-toransakusiyonsukurihu tohahe-zhe-ka-toransakusiyonsukurihutohatokohexing-kufalseka-number-sekkeinight
というわけで、(実は)前回の続編です。
今日話すこと DCI とかロール指向設計とかについて話します
DCI (2年前のスライド再び) 手続きやアルゴリズムの境界とデータの境界は異なり、伝統的なオブジェクト指 向ではそれを共通の機構で実現しようとしている(という問題提起) https://digitalsoul.hatenadiary.org/entry/20100131/1264925022
ロールとオブジェクト
What the system is? or does? • What the system
is ◦ それは何であるか ◦ データ(コプリエン氏はこれを「クラス」と呼ぶ) • What the system does ◦ それはどのように振る舞うか ◦ ロール https://www.amazon.com/dp/0470684208
OOram https://en.wikipedia.org/wiki/Object-oriented_role_analysis_and_modeling
異なる抽象機構 • The “object” is the “is” abstraction. • The
“role” is “why” abstraction. • The “type” is “what” abstraction. • The “class” is the “how” abstraction.
モデリング言語として
ここまでのまとめ • オブジェクトはロールを合成した結果である。 • UML がそうであるように、ロールを手がかりにすることで対象の さまざまな見方(ビュー)をすることができる。 • すべてのロールを事前に合成する方法もあるし、インスタンス生 成時、あるいはランタイムで動的にロールを付与する方法もある
◦ インスタンス生成時: Scala の trait ◦ 実行時: Ruby の module extend • …
事前にすべてのロール合成
インスタンス生成時にロールを指定 & 実装
実行時に動的にロールを指定
我々はここから何を学ぶべきか
ロール指向は何の役に立つか • 実装モデルとして(先述) ◦ トリグヴェ氏は言語機能に依存しない手法だと言っている。 ◦ コプリエン氏がサンプルコードを書いていることもあり、実装手 法と見られがちである。 • モデリング言語として(先述)
• アプリケーションアーキテクチャ、あるいはシステムアーキテク チャとして • …
再掲
データモデルとロールモデル • イミュータビリティを重視する現代的なプログラミングスタイル ◦ What the system is は永続化データストアを前提に設計され る(≒データモデル)
• 短命なオブジェクト ◦ Web システムの場合、オブジェクトがランタイムに存在するの はリクエストからレスポンスの間という極めて短い時間である 場合が多い ◦ この場合、オブジェクトはもっぱら What the system does の みを表現する
None
まとめ • オブジェクト指向で設計したから手続きがなくなるというわけでは ない(in 設計ナイト2022) ◦ むしろ、オブジェクトの表現力があればこそ、より手続きの記 述のセマンティクスの次元が上がると言える • 手続きやアルゴリズムの境界とデータの境界は異なる(ことがあ
る) ◦ 境界が一致している部分はデータ抽象によるオブジェクト指 向はよく機能する ◦ そうでない場合、ロールを手がかりに設計をしてみるとよいの ではないか
夢ではなく、すでに僕たちはその世界にいる タイトル回収: 人類は再び DCI の夢を見るか
ご清聴ありがとうございました。