clean-architecture について
アプリ開発で Clean Architecture を適用するためのスキルで、Flutter と Go の指針を含みます。内向きの依存関係、レイヤー分離、テスト可能なインターフェース、業務ロジックの整理を重視します。
主な機能
- 01ドメイン、アプリケーション、インフラ、プレゼンテーション層
- 02Flutter の機能別プロジェクト構成
- 03flutter_bloc の状態管理パターン
- 04Go バックエンドのハンドラー、サービス、リポジトリ
- 05インターフェース駆動のテストと依存性注入
活用シーン
- 01機能ごとの Flutter アプリ構成
- 02Go の業務ロジックとデータアクセスの分離
- 03レイヤー間の依存境界の設計
- 04モックを使ったユニットテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill clean-architectureインストール後、Claude Code で/clean-architectureを入力して読み込まれたか確認します。
詳細
クリーンアーキテクチャ
アプリケーション開発におけるクリーンアーキテクチャのパターンに精通しています。
コア原則
クリーンアーキテクチャでは、依存関係が内側を向く独立したレイヤーを通じて、関心事を分離します。
- ドメインレイヤー(最内層) - ビジネスロジックとエンティティ
- アプリケーションレイヤー - ユースケースとアプリケーション固有のロジック
- インフラストラクチャレイヤー - 外部要素(データベース、API、フレームワーク)
- プレゼンテーションレイヤー(最外層) - UI とユーザーとのやり取り
基本ルール:内側のレイヤーは外側のレイヤーに依存してはいけません。
Flutter + クリーンアーキテクチャ
アーキテクチャレイヤー
- プレゼンテーション:ウィジェット、BLoC、UI コンポーネント
- ドメイン:エンティティ、ユースケース、リポジトリインターフェース
- データ:リポジトリの実装、データソース、モデル
機能優先の構成
feature/
data/
datasources/
models/
repositories/
domain/
entities/
repositories/
usecases/
presentation/
bloc/
pages/
widgets/
flutter_bloc による状態管理
- 状態管理には flutter_bloc を使用します
- Freezed を使って不変な状態を実装します
- 適切なパターンでイベントと状態を処理します
- BLoC の責務を単一のものに絞ります
エラー処理
- Dartz の Either<Failure, Success> パターンを実装します
- 例外を使わず、関数型のエラー処理を使用します
- さまざまなエラー状況に対応する明確な Failure 型を定義します
主なライブラリ
flutter_bloc- 状態管理freezed- 不変クラスとユニオン型get_it- DI 用サービスロケーターdartz- 関数型プログラミングユーティリティ
Go バックエンドのクリーンアーキテクチャ
レイヤーの分離
- ハンドラー - HTTP/gRPC リクエストの処理
- サービス - ビジネスロジックとユースケース
- リポジトリ - データアクセスの抽象化
- ドメインモデル - 中核となるビジネスエンティティ
インターフェース駆動開発
- すべての依存関係に対してインターフェースを定義します
- コンストラクターを通じて依存性注入を実装します
- インターフェースは小さく、責務を明確に保ちます
- テスト用のモックを簡単に作成できるようにします
プロジェクト構成
project/
cmd/ # Application entry points
internal/
domain/ # Business entities and interfaces
service/ # Business logic implementation
repository/ # Data access implementation
handler/ # HTTP/gRPC handlers
pkg/ # Shared utilities
テスト戦略
- モックを使ったテーブル駆動のユニットテストを作成します
- 高速なユニットテストと統合テストを分けます
- インターフェースを使ってテストダブルを注入します
- ビジネスロジックの高いカバレッジを達成します
コメント
Markdown 対応