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
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Akira Suenami
July 25, 2025
Programming
2.7k
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.7k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.1k
値と属性の話
a_suenami
0
340
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.5k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5.1k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Programming
See All in Programming
Workers Cache を知る
syumai
0
370
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
720
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
400
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
680
ジョジョの世界をXRで再現する
mofurune
0
170
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
490
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
820
最近”作らせてる” ローカルAIアプリの話
akit37
0
480
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Speed Design
sergeychernyshev
33
2.2k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
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 パターン カスタマー側(料金計算)はインターフェースにのみ依存となり、料 金設定の具体的構造へは非依存となる。
まとめ • ソフトウェアシステムがユーザーの活動や事業活を支える基盤 的な役割を担うようになるにつれて、多くの可変点を持つように なる。 • 同様に、そのシステムを利用するアクターも多様化する。 • 可変性そのものの分析・設計ももちろん重要であるが、それを バインディングするタイミングとアクターの分析も同様に重要で
ある。 • おまけ: キャッシュ戦略も考えやすい。
一句 誰がいつ バインドするのか 考えよう