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
natacon
April 19, 2023
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
契約による設計の「契約」とは何を指しているか
natacon
April 19, 2023
More Decks by natacon
See All by natacon
"個"の集まりに"チームというフィクション"をデザインしてみた ― 認知とつながりが変わると、アウトカムの捉え方も変わる ―
natacon
0
150
Backend LT フェーズ変化、プロダクトの成長に伴う技術的変遷
natacon
0
200
課題解決ではなく、価値創造を求めるVoicyの開発チームの組織設計と立ち上げの勘所
natacon
5
1.9k
DDDにどう立ち向かう?リファクタリングのあれこれ
natacon
1
1.3k
DDD導入にどう立ち向かう? 開発現場への適用方法あれこれ②
natacon
1
570
DDD導入にどう立ち向かう? 開発現場への適用方法あれこれ①
natacon
1
460
Other Decks in Programming
See All in Programming
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
200
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
210
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.3k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
15
11k
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.8k
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
230
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
540
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
140
Distance field of Julia set
kinakomoti321
0
300
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
Featured
See All Featured
Building an army of robots
kneath
307
47k
Building Applications with DynamoDB
mza
96
7.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
510
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
550
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
sira's awesome portfolio website redesign presentation
elsirapls
0
500
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
First, design no harm
axbom
PRO
2
1.4k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
400
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
390
Transcript
契約による設計の「契約」とは 何を指しているか 2023/04/18 株式会社Voicy 灘脇裕一 (@natacoon) Voicy Tech Bar
自己紹介 灘脇 裕一 Backend Engineer 機能開発チームリーダー スクラムマスター 2012.04 - HRTech
2020.07 - Voicy 本日はよろしくお願いします! @natacoon 好きなモノ: 服とねことスプラトゥーン 株式会社Voicy
本日のアジェンダ 事前条件と事後条件の関係 1 2 契約による設計とは?
契約による設計とは?
契約による設計とは?
契約による設計とは? Wikiより 「契約による設計」(DbC)における 中心的な概念は、クライアントとサプ ライヤの契約 (contract) である。
契約による設計とは? キーワード - 事前条件(preconditions) - 事後条件(postconditions) - 不変条件(class invariant)
契約による設計とは? 今日の焦点 - 事前条件(preconditions) - 事後条件(postconditions) - 不変条件(class invariant)
契約による設計とは? 事前条件 関数の引数が適切であることを保証し、バグや予期しない動作を未然に防ぐため に、関数が呼び出される前に守らないといけない条件のこと。
契約による設計とは? 事前条件 大抵の場合、関数の最初で引数の値を検 証する。 コンストラクタ(またはそれに該当する もの)で検証することが多い。 条件に違反する場合はエラーを返す。
契約による設計とは? 事前条件 恩恵として - 入力の不備による正しくないインスタンスが出来上がってしまうことを未 然に防ぐことができる。 - ドメイン上で定義される正しい状態のインスタンスのみを作れることを保 証できる。
契約による設計とは? 事後条件 関数やクラスが呼び出された後に満たすべき状態を指定し、使われる側が、使う側 に対してこれだけは必ず守りますよということを示します。
契約による設計とは? 事後条件 関数やクラスを抜けるときに、返却値に 対して守られていなければならない状態 を確認する。 条件に違反する場合はエラーを返す。
事前条件と事後条件の関係
事前条件と事後条件の関係 雑に言うと 「呼び出し側が事前条件を満たしてくれるなら、事後条件を満たす状態を実現するこ とを約束するよ」 ということ
事前条件と事後条件の関係 なんらかのやりとりにおいて事前条件と事後条件を定義するということそのものに対 して「契約」という言葉を使っている 置き換えてイメージすると、顧客と提供者の関係において「こういうようにしてくれ るなら、こうするよ」ってことを約束(契約)する感じ。 Client Supplier 事前条件を守る 事後条件を守る
事前条件と事後条件の関係 なんらかのやりとりにおいて事前条件と事後条件を定義するということそのものに対 して「契約」という言葉を使っている 置き換えてイメージすると、顧客と提供者の関係において「こういうようにしてくれ るなら、こうするよ」ってことを約束(契約)する感じ。 Client Supplier 事前条件を守る 事後条件を守る 約束してる(契約してる)
まとめ - 使う側と使われる側での取り決めに対して「契約」という言葉を使っている - 契約を守れないなら、Fail Fastしよう - 事後条件が守られるのは事前条件が満たされているという前提に立っている - 事前条件が守られていなければ事後条件は守られず、表明(検証)する意
味がなくなってしまうため、その場合は関数やクラスの事前条件とセット で見直しましょう
お知らせ Meetyでカジュアル面談をやってます! 転職関係ない話もウェルカムなのでお話しましょう
お知らせ VoicyでエンジニアのVoicyのエンジニアメンバーが テックニュースや日々の活動をお届けしています! 私は水曜日に配信しています💡