ユビキタス言語とドメインモデル
Domain-Driven Designが共有されたユビキタス言語と豊かなドメインモデルを使い、SaaSシステムのコードをビジネスに沿わせる方法を学びます。
「ユビキタス言語とドメインモデル」はCoddyKit上の無料SaaS Architecture & Startup Engineeringレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSaaS Architecture & Startup Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SaaS Architecture & Startup Engineeringコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
The Communication Gap
Software fails when developers and domain experts speak different languages. A developer says 'record', the expert says 'invoice', and subtle meaning is lost in translation.
Domain-Driven Design closes this gap with a shared vocabulary baked into the code.
Ubiquitous Language
The ubiquitous language is a single, shared vocabulary used by everyone — business and engineering — in conversation, documentation, and code.
If the business calls it a 'Subscription', the class is named Subscription, not UserPlanRecord.
Language Lives in Code
The point is that the language is reflected directly in the model. Method and class names mirror how experts speak.
class Subscription {
renew() { /* ... */ }
cancel(reason) { /* ... */ }
}
// matches business verbs: renew, cancelAnemic vs Rich Models
An anemic model is just data with no behavior; logic leaks into services. A rich domain model puts behavior and rules inside the objects that own the data.
DDD favors rich models that protect their own invariants.
Entities
An entity has a distinct identity that persists over time, even as its attributes change. A customer is the same customer after changing their email.
Entities are compared by ID, not by their field values.
class Customer {
constructor(id) { this.id = id; }
equals(other) { return this.id === other.id; }
}Value Objects
A value object has no identity and is defined entirely by its attributes. Money, a date range, or an address are value objects.
Two value objects with the same values are interchangeable, and they should be immutable.
class Money {
constructor(amount, currency) {
this.amount = amount;
this.currency = currency;
Object.freeze(this);
}
}Invariants
An invariant is a rule that must always hold true, such as 'an order total can never be negative'. The domain model enforces invariants so invalid states are impossible.
Validation lives inside the model, not scattered across the app.
Domain Services
Some logic does not naturally belong to a single entity. A domain service holds such operations, like transferring funds between two accounts.
Domain services are named in the ubiquitous language too, expressing business actions.
Repositories
A repository provides the illusion of an in-memory collection of domain objects, hiding the database details.
The domain talks to subscriptions.findById() without knowing about SQL or tables.
interface SubscriptionRepository {
findById(id);
save(subscription);
}Keeping the Language Alive
The ubiquitous language evolves. As understanding deepens, terms change — and the code must change with them. Renaming is a feature, not a chore.
A model that drifts from how the business speaks becomes a liability.
Why It Matters for SaaS
SaaS domains (billing, subscriptions, entitlements) are complex and ever-changing. A clear domain model and shared language let teams reason about, extend, and refactor the system with confidence.
It turns business rules into first-class, maintainable code.
Quick Check
Test your DDD modeling knowledge.
Recap
You learned core DDD building blocks:
- Ubiquitous language shared by business and code
- Rich models with entities, value objects, and enforced invariants
- Domain services and repositories
Together they keep complex SaaS domains aligned with the business.
よくある質問
「ユビキタス言語とドメインモデル」レッスンは無料ですか?
はい。「ユビキタス言語とドメインモデル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SaaS Architecture & Startup Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SaaS Architecture & Startup Engineeringコースには全4レッスンが含まれています。
「ユビキタス言語とドメインモデル」で何を学びますか?
Domain-Driven Designが共有されたユビキタス言語と豊かなドメインモデルを使い、SaaSシステムのコードをビジネスに沿わせる方法を学びます。 ブラウザで直接実行するハンズオンコードでSaaS Architecture & Startup Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SaaS Architecture & Startup Engineeringを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSaaS Architecture & Startup Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ユビキタス言語とドメインモデル」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSaaS Architecture & Startup Engineeringレッスンでコードを書いて実行できますか?
はい。すべてのSaaS Architecture & Startup Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。