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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Akira Suenami
June 14, 2024
Technology
3.5k
5
Share
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Akira Suenami
June 14, 2024
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.5k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7k
値と属性の話
a_suenami
0
310
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.4k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
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
大学職員のための生成AI最前線 :最前線を、AIガバナンスとして読み直すためのTips
gmoriki
2
4k
ESP32 IoTを動かしながらメモリ使用量を観測してみた話
zozotech
PRO
0
110
Shiny New Tools Won't Fix Your Problem
trishagee
1
120
「強制アップデート」か「チームの自律」か?エンタープライズが辿り着いたプラットフォームのハイブリッド運用/cloudnative-kaigi-hybrid-platform-operations
mhrtech
0
180
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
170
古今東西SRE
okaru
2
180
20260516_SecJAWS_Days
takuyay0ne
2
300
ボトムアップ限界を越える - 20チームを束る "Drive Map" / Beyond Bottom-Up: A 'Drive Map' for 20 Teams
kaonavi
0
180
Digital Independence: Why, When and How
wannesrams
0
310
Building Production-Ready Agents Microsoft Agent Framework
_mertmetin
0
160
なぜ、私がCommunity Builderに?〜活動期間1か月半でも選出されたワケ〜
yama3133
0
120
エンタープライズの厳格な制約を開発者に意識させない:クラウドネイティブ開発基盤設計/cloudnative-kaigi-golden-path
mhrtech
0
390
Featured
See All Featured
Paper Plane
katiecoart
PRO
1
50k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
560
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
240
A designer walks into a library…
pauljervisheath
211
24k
Tell your own story through comics
letsgokoyo
1
920
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
210
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
Faster Mobile Websites
deanohume
310
31k
Design in an AI World
tapps
1
210
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 の夢を見るか
ご清聴ありがとうございました。