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.2k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Akira Suenami
June 14, 2024
Tweet
Share
More Decks by Akira Suenami
See All by Akira Suenami
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
6k
値と属性の話
a_suenami
0
200
ドメインモデラーにとって受託開発であることは制約なのか?
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
810
Other Decks in Technology
See All in Technology
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
240
手を動かしてレベルアップしよう!
maruto
0
210
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
680
分解して理解する Aspire
nenonaninu
2
1.1k
What's new in Go 1.24?
ciarana
1
110
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
130
Active Directory攻防
cryptopeg
PRO
8
5.5k
php-conference-nagoya-2025
fuwasegu
0
150
AIエージェント入門
minorun365
PRO
31
18k
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
【Findy】「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly by findy
i35_267
5
880
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
Adopting Sorbet at Scale
ufuk
74
9.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
510
Optimising Largest Contentful Paint
csswizardry
34
3.1k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Applications with DynamoDB
mza
93
6.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Faster Mobile Websites
deanohume
306
31k
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 の夢を見るか
ご清聴ありがとうございました。