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
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
Search
Akira Suenami
July 25, 2025
Programming
2.6k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
Akira Suenami
July 25, 2025
More Decks by Akira Suenami
See All by Akira Suenami
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.5k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7k
値と属性の話
a_suenami
0
320
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.4k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Programming
See All in Programming
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
340
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
0
120
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
290
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
190
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
450
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
280
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.2k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
280
数百円から始めるRuby電子工作
tarosay
0
120
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
630
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.8k
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Everyday Curiosity
cassininazir
0
270
The Invisible Side of Design
smashingmag
301
52k
The agentic SEO stack - context over prompts
schlessera
0
860
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Chasing Engaging Ingredients in Design
codingconduct
0
240
Six Lessons from altMBA
skipperchong
29
4.4k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Un-Boring Meetings
codingconduct
0
350
Transcript
可変性を制する設計 : 構造と振る舞いから 考える概念モデリングとその実装 2024/07/25 設計ナイト 2025 末並 晃 @a_suenami
自己紹介 • 末並 晃 @a_suenami • 業務システムの設計や開発が好き • データベースが好き •
お仕事でよく使う技術スタック : Rails, React (Next.js), Node.js, etc. • 好きな食べ物 : 焼肉 🍖
インターネット上での立場
インターネット上での立場 焼肉をタカられるという エンターテイメントをインターネットに提供しています。 (焼肉を奢るとは言ってない)
今日話すこと
キーワード : 可変性
参考書籍
可変性とは
可変性とは この場合、引数 n を「可変点」と呼ぶ。
可変性のバインディング • 可変点に対して具体的な値をいつ注入するか • バインディングタイム(バインディング時期)と言う。
バインディングタイムの種類 マルチパラダイムデザイン 一般的なWebアプリケーション 手法 ソースコード時 VCSコミット時 ベタ書き、設定ファイル コンパイル時 ビルド時 ビルドオプション
リンク時 (コンテナ)起動時 環境変数 実行時 実行時 永続化データストア
バインディングサイト • サイト = 「いつ」「どこで」「誰が」 • ジェネレーティブプログラミングで出てくる概念 • 「いつ」だけでなく「どこで」「誰が」をバインディング制御に用い る
2-sided platform / マルチテナントシステム
具体例: 料金設定 • 料金計算の要望が多かったの で!
想定環境 • レンタル事業者とそのユーザー向けシステム • 料金は商品ごとに設定できる ◦ 厳密にはSKUごとだが簡単のためにここでは商品と 呼ぶ • 簡単のため、レンタルする期間によって料金が変わると
仮定する ◦ 割引、クーポン利用、ダイナミックプライシングなどは ないものとする
料金設定の構造 • 階段料金制( Tiered Pricing )で設定できるものとする。
料金設定の構造
料金の計算(振る舞い)
商品のデータ構造 管理画面ユーザとカスタマーで期待する構造が異なる。
実装パターン : 関数の部分適用 実装としては関数の部分適用でバインディングサイトを分けること ができる。
実装パターン : Strategy パターン カスタマー側(料金計算)はインターフェースにのみ依存となり、料 金設定の具体的構造へは非依存となる。
まとめ • ソフトウェアシステムがユーザーの活動や事業活を支える基盤 的な役割を担うようになるにつれて、多くの可変点を持つように なる。 • 同様に、そのシステムを利用するアクターも多様化する。 • 可変性そのものの分析・設計ももちろん重要であるが、それを バインディングするタイミングとアクターの分析も同様に重要で
ある。 • おまけ: キャッシュ戦略も考えやすい。
一句 誰がいつ バインドするのか 考えよう