Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Akira Suenami
June 14, 2024
Technology
3.7k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
Akira Suenami
June 14, 2024
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.8k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.2k
値と属性の話
a_suenami
0
350
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.5k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.6k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5.1k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Technology
See All in Technology
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
210
田んぼの見回りをIoTで減らしたい!水位監視から電池駆動カメラまでの試行錯誤
itosoft
1
100
超⼩型・多⾔語検索モデル Bekko Embedding
hotchpotch
1
140
JAWSコミュニティに 参加して1年経った結果
ssakita
0
120
「いつか使う」の「いつか」は来ない 〜AI駆動開発における「作らない」判断について〜
ikki0006
0
180
SREのためのFinOps入門
muziyoshiz
2
1k
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
6
1.4k
AIコーディングはじめました
miso
0
160
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
270
81天的 AI Agent 軟體開發團隊治理實務分享
regionbbs
0
150
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
310
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.5k
The Cult of Friendly URLs
andyhume
79
7.1k
Speed Design
sergeychernyshev
33
2.2k
Design in an AI World
tapps
1
390
The Curious Case for Waylosing
cassininazir
1
610
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
60k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
Docker and Python
trallard
47
4.3k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
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 の夢を見るか
ご清聴ありがとうございました。