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
2.3k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Akira Suenami
June 14, 2024
Tweet
Share
More Decks by Akira Suenami
See All by Akira Suenami
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
6.1k
値と属性の話
a_suenami
0
210
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.4k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
3.8k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.3k
ドメインモデルのつくり方 #5000dai
a_suenami
16
4.8k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
11k
すえなみチャンスからの重要なお知らせ #すえなみチャンス暑気払い
a_suenami
0
820
Other Decks in Technology
See All in Technology
AIエージェント完全に理解した
segavvy
4
270
モノリスの認知負荷に立ち向かう、コードの所有者という思想と現実
kzkmaeda
0
110
大規模アジャイル開発のリアル!コミュニケーション×進捗管理×高品質
findy_eventslides
0
560
コンソールで学ぶ!AWS CodePipelineの機能とオプション
umekou
2
120
OPENLOGI Company Profile for engineer
hr01
1
22k
ペアーズにおけるData Catalog導入の取り組み
hisamouna
0
180
新卒エンジニア研修の試行錯誤と工夫/nikkei-tech-talk-31
nishiuma
0
200
初めてのPostgreSQLメジャーバージョンアップ
kkato1
0
440
SpannerとAurora DSQLの同時実行制御の違いに想いを馳せる
masakikato5
0
570
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.6k
セマンティックレイヤー入門
ikkimiyazaki
8
3.3k
モンテカルロ木探索のパフォーマンスを予測する Kaggleコンペ解説 〜生成AIによる未知のゲーム生成〜
rist
4
1.1k
Featured
See All Featured
Navigating Team Friction
lara
184
15k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Bash Introduction
62gerente
611
210k
Optimising Largest Contentful Paint
csswizardry
35
3.2k
How to train your dragon (web standard)
notwaldorf
91
5.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Typedesign – Prime Four
hannesfritz
41
2.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
29
2k
Music & Morning Musume
bryan
46
6.4k
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 の夢を見るか
ご清聴ありがとうございました。