メインコンテンツへ
開発技術開発プロセス・手法

クリーンアーキテクチャの主要な原則として、最も適切なものはどれか。

ア.UIやデータベースなどの外部要素に依存する形でビジネスロジックを実装し、フレームワークの機能を最大限に活用する
イ.ビジネスロジック(ドメイン層)を中心に置き、UIやDB・フレームワークなどの外部詳細に依存しないように依存関係の方向を内側(ビジネスロジック側)に向ける正解
ウ.MVC(Model-View-Controller)パターンを三層アーキテクチャに適用した実装パターンであり、Railsフレームワーク専用の設計手法
エ.データベースのテーブル構造をそのままクラス設計に反映させて、ORMを使わずに直接SQLを書くことを推奨するアーキテクチャ

解説

クリーンアーキテクチャは「ビジネスロジックを玉ねぎの芯に置いて、外の皮(DB・UI・フレームワーク)に影響されない設計」。データベースが変わっても、フレームワークが変わっても、ビジネスルールはそのまま——それが「クリーン」の意味です。

なぜ イ が正解か

クリーンアーキテクチャ(Robert C. Martin提唱)の核心原則:①依存関係ルール(Dependency Rule):依存の方向は常に内側(ドメイン・エンティティ層)へ向かう。外側の層が内側を知ってよいが、内側の層は外側を知ってはならない。②フレームワーク・DB・UI独立性:ビジネスロジックがフレームワークの詳細に依存しないため、テスト可能でDB交換が容易。③エンティティ→ユースケース→インタフェースアダプタ→フレームワーク層の同心円構造。

なぜ ア は間違いか

UIやDBなどの外部要素にビジネスロジックが依存するのはクリーンアーキテクチャの逆です。クリーンアーキテクチャはその依存関係を逆転させること(Dependency Inversion)が目的です。

なぜ ウ は間違いか

クリーンアーキテクチャはRailsフレームワーク専用でも、MVC専用でもありません。特定の技術スタックに縛られない汎用的なアーキテクチャ原則です。

なぜ エ は間違いか

テーブル構造をそのままクラスに反映するアプローチは「トランザクションスクリプト」や「テーブルモジュール」パターンに近く、クリーンアーキテクチャが避けることを推奨する設計です。クリーンアーキテクチャはドメインモデルを中心に置き、DBの都合をドメインに持ち込まないことを重視します。

出典: AI生成問題(学習用)