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.6k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #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
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
160
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
140
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
960
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
360
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
200
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
4
1.3k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
520
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
210
yield再入門 #phpcon
o0h
PRO
0
930
Claude Team Plan導入・ガイド
tk3fftk
0
250
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
HDC tutorial
michielstock
2
780
Git: the NoSQL Database
bkeepers
PRO
432
67k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
400
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
Accessibility Awareness
sabderemane
1
170
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
680
New Earth Scene 8
popppiees
3
2.5k
Deep Space Network (abreviated)
tonyrice
0
250
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 パターン カスタマー側(料金計算)はインターフェースにのみ依存となり、料 金設定の具体的構造へは非依存となる。
まとめ • ソフトウェアシステムがユーザーの活動や事業活を支える基盤 的な役割を担うようになるにつれて、多くの可変点を持つように なる。 • 同様に、そのシステムを利用するアクターも多様化する。 • 可変性そのものの分析・設計ももちろん重要であるが、それを バインディングするタイミングとアクターの分析も同様に重要で
ある。 • おまけ: キャッシュ戦略も考えやすい。
一句 誰がいつ バインドするのか 考えよう