clean-code-principles について
ソフトウェアの設計、レビュー、リファクタリングに使える言語非依存のスキルです。SOLID、基本原則、デザインパターンに沿った指針と、コード監査結果の書式を提供します。
主な機能
- 01SOLID 原則の指針
- 02基本的な設計原則
- 03一般的なデザインパターンのルール
- 04コード監査結果の書式
活用シーン
- 01ソフトウェアアーキテクチャのレビュー
- 02既存コードのリファクタリング
- 03SOLID 原則に照らしたコード評価
- 04コード品質の問題の報告
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ asyrafhussin/ agent-skills --skill clean-code-principlesインストール後、Claude Code で/clean-code-principlesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mdcore-composition.mdcore-dry-extraction.mdcore-dry-single-source.mdcore-dry.mdcore-encapsulation.mdcore-fail-fast.mdcore-kiss-readability.mdcore-kiss-simplicity.mdcore-law-demeter.mdcore-separation-concerns.mdcore-yagni-abstractions.mdcore-yagni-features.mdpattern-repository.mdsolid-dip-abstractions.mdsolid-dip-injection.mdsolid-isp-clients.mdsolid-isp-interfaces.mdsolid-lsp-contracts.mdsolid-lsp-preconditions.mdsolid-ocp-abstraction.mdsolid-ocp-extension.mdsolid-srp-class.mdsolid-srp-function.md詳細
クリーンコードの原則
ソフトウェア設計の基本原則、SOLID、デザインパターン、クリーンコードの実践方法です。保守性と拡張性に優れたソフトウェアを書くための、言語に依存しないガイドラインです。
適用するタイミング
次のような場合に、これらのガイドラインを参照してください。
- 新しい機能やシステムを設計するとき
- コードアーキテクチャをレビューするとき
- 既存のコードをリファクタリングするとき
- 設計上の決定について話し合うとき
- コードの品質を向上させるとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | SOLID の原則 | 重大 | solid- |
| 2 | 基本原則 | 重大 | core- |
| 3 | デザインパターン | 高 | pattern- |
| 4 | コード構成 | 高 | org- |
| 5 | 命名と可読性 | 中 | name- |
| 6 | 関数とメソッド | 中 | func- |
| 7 | コメントとドキュメント | 低 | doc- |
クイックリファレンス
1. SOLID の原則(重大)
solid-srp- 単一責任の原則solid-ocp- オープン・クローズドの原則solid-lsp- リスコフの置換原則solid-isp- インターフェース分離の原則solid-dip- 依存性逆転の原則
2. 基本原則(重大)
core-dry- 繰り返しを避けるcore-kiss- シンプルに保つcore-yagni- 必要になるまで実装しないcore-separation-of-concerns- 異なる責務を分離するcore-composition-over-inheritance- 継承よりコンポジションを優先するcore-law-of-demeter- 知識を最小限にする原則core-fail-fast- エラーを早期に検出して報告するcore-encapsulation- 実装の詳細を隠す
3. デザインパターン(高)
pattern-factory- オブジェクト生成にファクトリーパターンを使うpattern-strategy- アルゴリズムにストラテジーパターンを使うpattern-repository- データアクセスにリポジトリーパターンを使うpattern-decorator- 振る舞いの拡張にデコレーターパターンを使うpattern-observer- イベント処理にオブザーバーパターンを使うpattern-adapter- インターフェースの変換にアダプターパターンを使うpattern-facade- インターフェースの簡素化にファサードパターンを使うpattern-dependency-injection- 疎結合を実現するために DI を使う
4. コード構成(高)— 予定
org-feature-folders- レイヤーごとではなく、機能ごとに整理するorg-module-boundaries- モジュールの境界を明確にするorg-layered-architecture- レイヤーを適切に分離するorg-package-cohesion- 関連するコードをまとめるorg-circular-dependencies- 循環インポートを避ける
5. 命名と可読性(中)— 予定
name-meaningful- 意図が伝わる名前を使うname-consistent- 一貫した命名規則を使うname-searchable- マジックナンバーやマジック文字列を避けるname-avoid-encodings- ハンガリアン記法を使わないname-domain-language- ドメインの用語を使う
6. 関数とメソッド(中)— 予定
func-small- 関数を小さく保つfunc-single-purpose- 1つのことだけを行うfunc-few-arguments- パラメーターを制限するfunc-no-side-effects- 副作用を最小限にするfunc-command-query- コマンドとクエリーを分離する
7. コメントとドキュメント(低)— 予定
doc-self-documenting- コード自体で説明するdoc-why-not-what- 何をするかではなく、なぜするかを説明するdoc-avoid-noise- 冗長なコメントを避けるdoc-api-docs- 公開 API をドキュメント化する
重要なガイドライン
詳しい例と説明については、ルールファイルを参照してください。
- core-dry.md - 繰り返しを避ける原則
- pattern-repository.md - データアクセスに使うリポジトリーパターン
SOLID の原則(概要)
| 原則 | 定義 |
|---|---|
| Single Responsibility | クラスが変更される理由は1つだけであるべきです |
| Open/Closed | 拡張に対して開かれ、変更に対して閉じている |
| Liskov Substitution | サブタイプは基底型と置換可能でなければなりません |
| Interface Segregation | クライアントに未使用のインターフェースへの依存を強制しない |
| Dependency Inversion | 具象ではなく、抽象に依存する |
基本原則(概要)
| 原則 | 定義 |
|---|---|
| DRY | 同じことを繰り返さない ― 信頼できる唯一の情報源 |
| KISS | シンプルに保つ ― 過度な設計を避ける |
| YAGNI | 今は必要ない ― 必要なものだけを構築する |
簡単な例
// Single Responsibility - one class, one job
class UserService {
constructor(
private validator: UserValidator,
private repository: UserRepository,
) {}
createUser(data) {
this.validator.validate(data);
return this.repository.create(data);
}
}
// Dependency Inversion - depend on abstractions
interface Repository<T> {
find(id: string): Promise<T | null>;
save(entity: T): Promise<T>;
}
class OrderService {
constructor(private repository: Repository<Order>) {}
}
// DRY - single source of truth
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
const isValidEmail = (email: string) => EMAIL_REGEX.test(email);
// Meaningful names over magic numbers
const MINIMUM_AGE = 18;
if (user.age >= MINIMUM_AGE) { }
出力形式
コードを監査するときは、次の形式で指摘事項を出力します。
file:line - [principle] Description of issue
例:
src/services/UserService.ts:15 - [solid-srp] Class handles validation, persistence, and notifications
src/utils/helpers.ts:42 - [core-dry] Email validation duplicated from validators/email.ts
src/models/Order.ts:28 - [name-meaningful] Variable 'x' should describe its purpose
使用方法
詳細な説明については、個々のルールファイルをお読みください。
rules/solid-srp-class.md
rules/core-dry.md
rules/pattern-repository.md
参考資料
このスキルは、確立されたソフトウェアエンジニアリングの原則に基づいています。
主な書籍
- Clean Code(Robert C. Martin 著)― クリーンコードの実践の基礎
- Design Patterns(Gang of Four 著)― 古典的なデザインパターンのカタログ
- Refactoring(Martin Fowler 著)― コード構造の改善
- The Pragmatic Programmer(Hunt & Thomas 著)― 実践的な知恵
オンラインリソース
- Refactoring Guru ― デザインパターンとコードの臭い
- Martin Fowler's Refactoring Catalog ― 包括的なリファクタリング手法
- Uncle Bob's Clean Coder Blog ― ソフトウェア職人技に関する記事
パターンカタログ
メタデータ
バージョン: 1.0.2 ステータス: アクティブ 対象範囲: 3 つの実装済みカテゴリ(SOLID、基本原則、デザインパターン)にわたる 23 のルール、計画中 4 件 最終更新日: 2026-03-07
ルールの統計
- SOLID 原則:10 ルール
- 基本原則:12 ルール
- デザインパターン:1 ルール
コメント
Markdown 対応