<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Clean Architecture on 設計で、迷わなくなるために | 奥田智紘</title><link>https://design.okuda-studio.com/tags/clean-architecture/</link><description>Recent content in Clean Architecture on 設計で、迷わなくなるために | 奥田智紘</description><generator>Hugo -- 0.159.2</generator><language>ja</language><lastBuildDate>Thu, 02 Apr 2026 13:00:00 +0900</lastBuildDate><atom:link href="https://design.okuda-studio.com/tags/clean-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>リポジトリがドメインに依存しすぎた話</title><link>https://design.okuda-studio.com/posts/0022-repository-depends-on-domain/</link><pubDate>Thu, 02 Apr 2026 13:00:00 +0900</pubDate><guid>https://design.okuda-studio.com/posts/0022-repository-depends-on-domain/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E9%A1%8C%E6%9D%90"&gt;題材&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%8C%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%82%E3%82%8A%E3%81%8B"&gt;リポジトリがドメインに依存するのはありか？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%99%E3%81%8E%E3%81%9F%E5%AE%9F%E8%A3%85"&gt;ドメインを知りすぎた実装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%99%E3%81%8E%E3%81%AA%E3%81%84%E5%AE%9F%E8%A3%85"&gt;ドメインを知りすぎない実装&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;今回は、リポジトリがドメインに依存しすぎた話を書きたいと思います。&lt;/p&gt;
&lt;h2 id="題材"&gt;題材&lt;/h2&gt;
&lt;p&gt;題材は、口座振替管理アプリで、ローカルの DB にデータを保存する場合の話です。&lt;/p&gt;
&lt;p&gt;支払情報編集画面という画面があり、この画面では、データの新規登録と既存データの更新が可能になっています。&lt;/p&gt;
&lt;p&gt;この「新規登録」処理と「更新」処理を行う際に、リポジトリはどこまでドメインを知っていていいのか？という話になります。&lt;/p&gt;
&lt;h2 id="リポジトリがドメインに依存するのはありか"&gt;リポジトリがドメインに依存するのはありか？&lt;/h2&gt;
&lt;p&gt;まず、クリーンアーキテクチャ的には、リポジトリがドメインに依存することは間違ってはいません。&lt;/p&gt;
&lt;p&gt;ただし、どこまで知っていてよいのかは検討の余地があるというのが今回の学びです。&lt;/p&gt;
&lt;h2 id="ドメインを知りすぎた実装"&gt;ドメインを知りすぎた実装&lt;/h2&gt;
&lt;p&gt;まずは、ドメインを知りすぎた良くない実装を紹介します。&lt;/p&gt;
&lt;p&gt;以下は、支払情報を表す &lt;code&gt;Payment&lt;/code&gt; オブジェクトです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;sealed&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;interface&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Payment&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; name: PaymentName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; payerId: PayerId
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;data&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Persisted&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; id: PaymentId,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; name: PaymentName,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; payerId: PayerId = &lt;span style="color:#a6e22e"&gt;PayerId&lt;/span&gt;.NONE,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) : Payment
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;data&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;InMemory&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; name: PaymentName,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; payerId: PayerId = &lt;span style="color:#a6e22e"&gt;PayerId&lt;/span&gt;.NONE,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) : Payment
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;編集の場合は、すでにデータが永続化されているため、 &lt;code&gt;Persisted&lt;/code&gt; オブジェクトで表現します。永続化済みのデータは ID を持っています。&lt;/p&gt;
&lt;p&gt;新規登録の場合は、 ID を持っていないため &lt;code&gt;InMemory&lt;/code&gt; オブジェクトで表現します。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;リポジトリ側には、この &lt;code&gt;Payment&lt;/code&gt; オブジェクトが渡され、このオブジェクトの実態が &lt;code&gt;Persisted&lt;/code&gt; なのか、 &lt;code&gt;InMemory&lt;/code&gt; なのかによって、新規作成か、更新かを分けています。&lt;/p&gt;</description></item><item><title>なぜクリーンアーキテクチャはドメインを守るのか</title><link>https://design.okuda-studio.com/posts/0002-why-clean-architecture-guard-domain/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0900</pubDate><guid>https://design.okuda-studio.com/posts/0002-why-clean-architecture-guard-domain/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E3%81%AA%E3%81%9C%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%81%AF%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E5%AE%88%E3%82%8B%E3%81%AE%E3%81%8B"&gt;なぜクリーンアーキテクチャはドメインを守るのか&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB"&gt;はじめに&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%B8%8D%E5%A4%89%E6%9D%A1%E4%BB%B6%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B"&gt;不変条件とは何か&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E4%BE%8B"&gt;例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%B8%8D%E5%A4%89%E6%9D%A1%E4%BB%B6%E3%81%AF%E5%88%A4%E6%96%AD%E3%81%9D%E3%81%AE%E3%82%82%E3%81%AE%E3%81%A7%E3%81%82%E3%82%8B"&gt;不変条件は「判断」そのものである&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%B8%8D%E5%A4%89%E6%9D%A1%E4%BB%B6%E3%81%8C%E6%9B%96%E6%98%A7%E3%81%A0%E3%81%A8%E8%A8%AD%E8%A8%88%E3%81%AF%E5%A3%8A%E3%82%8C%E3%82%8B"&gt;不変条件が曖昧だと、設計は壊れる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%B8%8D%E5%A4%89%E6%9D%A1%E4%BB%B6%E3%82%92%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AB%E9%96%89%E3%81%98%E8%BE%BC%E3%82%81%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E5%88%A4%E6%96%AD"&gt;不変条件をドメインに閉じ込める、という判断&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E3%81%AA%E3%81%9C%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AA%E3%81%AE%E3%81%8B"&gt;なぜドメインなのか&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E5%AE%88%E3%82%8B%E3%81%A8%E3%81%AF%E4%BD%95%E3%82%92%E5%AE%88%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B"&gt;「ドメインを守る」とは、何を守っているのか&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ui-%E3%82%84%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%81%AB%E4%B8%8D%E5%A4%89%E6%9D%A1%E4%BB%B6%E3%82%92%E7%BD%AE%E3%81%8F%E3%81%A8%E4%BD%95%E3%81%8C%E8%B5%B7%E3%81%8D%E3%82%8B%E3%81%8B"&gt;UI やインフラに不変条件を置くと何が起きるか&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%81%BE%E3%81%A8%E3%82%81"&gt;まとめ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E9%96%A2%E9%80%A3%E6%9B%B8%E7%B1%8D%E7%84%A1%E6%96%99"&gt;おすすめの関連書籍（無料）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="なぜクリーンアーキテクチャはドメインを守るのか"&gt;なぜクリーンアーキテクチャはドメインを守るのか&lt;/h1&gt;
&lt;p&gt;クリーンアーキテクチャはドメインを守っているが、その本質は「判断」を守ることである&lt;/p&gt;
&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;「クリーンアーキテクチャでは、ドメインを守ることが重要だ」&lt;/p&gt;
&lt;p&gt;この説明を、これまで何度も目にしてきましたし、自分でも何となく理解しているつもりでした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI から独立させるため&lt;/li&gt;
&lt;li&gt;フレームワークに依存させないため&lt;/li&gt;
&lt;li&gt;テストしやすくするため&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どれも間違ってはいません。&lt;/p&gt;
&lt;p&gt;ただ、実務で設計に向き合えば向き合うほど、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;それで結局、何が一番大事なのか？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という疑問が残りました。&lt;/p&gt;
&lt;p&gt;最近、その答えが少しはっきりしてきました。&lt;/p&gt;
&lt;p&gt;クリーンアーキテクチャの本質は、&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;「判断をどこに閉じ込めるか？」を決める構造である&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;という考え方です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;どの判断は UI に任せてよいのか&lt;/li&gt;
&lt;li&gt;どの判断はユースケースで行うべきか&lt;/li&gt;
&lt;li&gt;どの判断は、絶対に外に漏らしてはいけないのか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この「判断の置き場所」を曖昧にしたまま設計すると、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;責務が混ざり&lt;/li&gt;
&lt;li&gt;修正のたびに迷いが生まれ&lt;/li&gt;
&lt;li&gt;変更に弱い構造&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;になっていきます。&lt;/p&gt;
&lt;p&gt;では、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;絶対に外に出してはいけない判断とは何なのか？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;その答えを整理するための言葉が、&lt;strong&gt;不変条件&lt;/strong&gt; でした。&lt;/p&gt;
&lt;p&gt;（不変条件という言葉は、英語では invariant という言葉でよく使用されます）&lt;/p&gt;
&lt;p&gt;この記事では、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クリーンアーキテクチャを「判断の置き場所」という視点で捉え直し&lt;/li&gt;
&lt;li&gt;その中で不変条件がどんな役割を持つのか&lt;/li&gt;
&lt;li&gt;なぜ不変条件をドメインに閉じ込めるのか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を、実務の感覚に近い形で説明します。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="不変条件とは何か"&gt;不変条件とは何か&lt;/h2&gt;
&lt;p&gt;不変条件とは、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;どれだけ仕様や実装が変わっても、絶対に破ってはいけない前提&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;です。&lt;/p&gt;
&lt;p&gt;UI が変わっても
API が変わっても
DB が変わっても&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;これが壊れたら、そのシステムは成立しない&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;そういう条件を指します。&lt;/p&gt;
&lt;h3 id="例"&gt;例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ログインしていないユーザーは、保護された操作をできない&lt;/li&gt;
&lt;li&gt;残高は常に 0 以上である&lt;/li&gt;
&lt;li&gt;同じ支払いは二重に確定しない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらは&lt;/p&gt;</description></item><item><title>クリーンアーキテクチャの本質をわかりやすく解説</title><link>https://design.okuda-studio.com/posts/0001-clean-architecture-core/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0900</pubDate><guid>https://design.okuda-studio.com/posts/0001-clean-architecture-core/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%81%A8%E3%81%AF"&gt;アーキテクチャとは&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%81%A8%E3%81%AF"&gt;依存関係とは&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E7%89%A9%E7%90%86%E7%9A%84%E3%81%AA%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82"&gt;物理的な依存関係&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E6%84%8F%E5%91%B3%E7%9A%84%E3%81%AA%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82"&gt;意味的な依存関係&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A8%E3%81%AF"&gt;ドメインとは&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E4%BB%A5%E5%A4%96"&gt;ドメイン以外&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%90%8C%E5%BF%83%E5%86%86%E7%8A%B6%E3%81%AE%E5%9B%B3%E3%81%AE%E6%84%8F%E5%91%B3"&gt;同心円状の図の意味&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E6%84%8F%E5%91%B3%E7%9A%84%E3%81%AA%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%81%A8%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3"&gt;意味的な依存関係とクリーンアーキテクチャ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E5%85%B7%E4%BD%93%E4%BE%8B"&gt;具体例&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%81%AE%E9%80%86%E8%BB%A2%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%B1%E3%83%BC%E3%82%B9"&gt;依存関係の逆転が必要なケース&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%82%92%E9%80%86%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E6%96%B9%E6%B3%95"&gt;依存関係を逆転させる具体的な方法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E8%A8%98%E4%BA%8B"&gt;おすすめの記事&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9C%AC%E7%84%A1%E6%96%99"&gt;おすすめの本（無料）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;クリーンアーキテクチャという言葉はよく聞くけれど、「わかったようでわからない」という人が多いのではないでしょうか？&lt;/p&gt;
&lt;p&gt;クリーンアーキテクチャを解説した記事は、探せばすぐに出てきますが、あまり本質について語られている記事は少ないように感じます。&lt;/p&gt;
&lt;p&gt;そこで、この記事でそれを簡潔に語っていこうと思います。&lt;/p&gt;
&lt;h1 id="アーキテクチャとは"&gt;アーキテクチャとは&lt;/h1&gt;
&lt;p&gt;まず、そもそも「アーキテクチャ」とは何でしょうか？簡潔に説明したいので、どんどん答えを書いていきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的
&lt;ul&gt;
&lt;li&gt;壊れにくいソフトウェアを作る&lt;/li&gt;
&lt;li&gt;チーム内で統一した方針でソフトウェアを作る&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;実現方法
&lt;ul&gt;
&lt;li&gt;部品 (※1) 同士の依存関係 (※2) を整える&lt;/li&gt;
&lt;li&gt;部品が果たす役割・責務を明確にする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(※1) 「部品って具体的に何？」と思われた方は、一旦、クラスだと思っていただければ大丈夫です。
(※2) 後述します。&lt;/p&gt;
&lt;p&gt;めちゃくちゃシンプルに書くとこうなると思います。&lt;/p&gt;
&lt;h1 id="依存関係とは"&gt;依存関係とは&lt;/h1&gt;
&lt;p&gt;クリーンアーキテクチャの本質を知るためには、このセクションがめちゃくちゃ大事です！！
「そんなの知ってるわ」という方も、クリーンアーキテクチャについての理解が「モヤッ」としている方は読んでください。&lt;/p&gt;
&lt;p&gt;依存関係には、二種類の依存関係があります。&lt;/p&gt;
&lt;h2 id="物理的な依存関係"&gt;物理的な依存関係&lt;/h2&gt;
&lt;p&gt;まずは、物理的な依存関係について説明します。これは、多くの人が最初に思い浮かぶ依存関係の方だと思われます。&lt;/p&gt;
&lt;p&gt;すなわち、「どの部品 (クラスなど) がどの部品のことを知っているか」という関係性のことです。&lt;/p&gt;
&lt;p&gt;(このドキュメントのサンプルコードは Kotlin で記述させていただきます。ご了承ください。)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;A&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; b: B
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;B&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上記のサンプルでは、クラス A がクラス B を知っているので、これを「 A が B に依存している」と言います。&lt;/p&gt;
&lt;p&gt;これが、物理的な依存関係です。 (超ざっくり)&lt;/p&gt;
&lt;h2 id="意味的な依存関係"&gt;意味的な依存関係&lt;/h2&gt;
&lt;p&gt;次に、意味的な依存関係について説明します。ここで、クリーンアーキテクチャの記事でよく出てくる同心円状の図を見て下さい。 (探せばすぐに出てくるのでここには載せません。笑)&lt;/p&gt;</description></item></channel></rss>