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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
4k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5k
ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
a_suenami
46
12k
Other Decks in Programming
See All in Programming
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.3k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
270
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
150
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
170
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
410
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
570
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
660
Featured
See All Featured
From π to Pie charts
rasagy
0
210
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Bash Introduction
62gerente
615
220k
The Limits of Empathy - UXLibs8
cassininazir
1
360
The Cost Of JavaScript in 2023
addyosmani
55
10k
GitHub's CSS Performance
jonrohan
1033
470k
Designing for humans not robots
tammielis
254
26k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Building AI with AI
inesmontani
PRO
1
1.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
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 パターン カスタマー側(料金計算)はインターフェースにのみ依存となり、料 金設定の具体的構造へは非依存となる。
まとめ • ソフトウェアシステムがユーザーの活動や事業活を支える基盤 的な役割を担うようになるにつれて、多くの可変点を持つように なる。 • 同様に、そのシステムを利用するアクターも多様化する。 • 可変性そのものの分析・設計ももちろん重要であるが、それを バインディングするタイミングとアクターの分析も同様に重要で
ある。 • おまけ: キャッシュ戦略も考えやすい。
一句 誰がいつ バインドするのか 考えよう