|
| 1 | +[EpisodicRAG](../../README.md) > [Docs](../README.md) > LEARNING_PATH |
| 2 | + |
| 3 | +# Learning Path - EpisodicRAGで学ぶエンタープライズPython開発 |
| 4 | + |
| 5 | +このドキュメントでは、EpisodicRAGプラグインのコードベースを通じて学べるエンタープライズPython開発のベストプラクティスを紹介します。 |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## このプロジェクトで学べること |
| 10 | + |
| 11 | +### 1. Clean Architecture(4層構造) |
| 12 | + |
| 13 | +EpisodicRAGは依存関係ルールに基づく4層構造を採用しています。 |
| 14 | + |
| 15 | +| レイヤー | ディレクトリ | 責務 | |
| 16 | +|----------|-------------|------| |
| 17 | +| Domain | `scripts/domain/` | ビジネスロジックの純粋な定義(外部依存なし) | |
| 18 | +| Infrastructure | `scripts/infrastructure/` | 外部I/Oの抽象化(JSON、ファイル、ログ) | |
| 19 | +| Application | `scripts/application/` | ユースケースの実装 | |
| 20 | +| Interfaces | `scripts/interfaces/` | エントリーポイント | |
| 21 | + |
| 22 | +**学習ポイント**: |
| 23 | +- `scripts/domain/` を読む → 外部依存のない純粋な定義を理解 |
| 24 | +- `scripts/application/` を読む → 依存関係ルールの実践を確認 |
| 25 | +- 参照: [ARCHITECTURE.md](ARCHITECTURE.md#clean-architecture) |
| 26 | + |
| 27 | +### 2. Single Source of Truth (SSoT) |
| 28 | + |
| 29 | +情報の重複を避け、一元管理する原則を徹底しています。 |
| 30 | + |
| 31 | +| 対象 | SSoT | 実装 | |
| 32 | +|------|------|------| |
| 33 | +| 用語定義 | `README.md` | 用語集として機能 | |
| 34 | +| バージョン | `plugin.json` | 他ファイルはここを参照 | |
| 35 | +| 設定仕様 | `docs/dev/api/config.md` | 詳細は1箇所のみ | |
| 36 | + |
| 37 | +**学習ポイント**: |
| 38 | +- `README.md` → 用語集としての機能を確認 |
| 39 | +- `plugin.json` → バージョンSSoTの実装を確認 |
| 40 | +- `docs/dev/API_REFERENCE.md` → リンク集としてSSoT違反を回避する設計 |
| 41 | +- 参照: [CONTRIBUTING.md](../../CONTRIBUTING.md#single-source-of-truth-ssot-原則) |
| 42 | + |
| 43 | +### 3. デザインパターン実践 |
| 44 | + |
| 45 | +実際の問題解決に適用されたデザインパターンを学べます。 |
| 46 | + |
| 47 | +| パターン | 実装箇所 | 学習ポイント | |
| 48 | +|---------|---------|-------------| |
| 49 | +| Facade | `DigestConfig`, `ShadowUpdater` | 複雑なサブシステムの隠蔽 | |
| 50 | +| Repository | `ShadowIO`, `GrandDigestManager` | データアクセスの抽象化 | |
| 51 | +| Singleton | `LevelRegistry` | 設定の一元管理 | |
| 52 | +| Strategy | `LevelBehavior` | 振る舞いの交換可能性 | |
| 53 | +| Builder | `RegularDigestBuilder` | 複雑なオブジェクト構築 | |
| 54 | +| Factory | `get_level_registry()` | オブジェクト生成の抽象化 | |
| 55 | + |
| 56 | +**学習ポイント**: |
| 57 | +- 各パターンの実装ファイルを読む |
| 58 | +- 参照: [API_REFERENCE.md](API_REFERENCE.md#デザインパターン) |
| 59 | +- 参照: [DESIGN_DECISIONS.md](DESIGN_DECISIONS.md) |
| 60 | + |
| 61 | +### 4. テスト設計 |
| 62 | + |
| 63 | +層別テストと高いカバレッジを実現するテスト設計を学べます。 |
| 64 | + |
| 65 | +| 観点 | 実装 | |
| 66 | +|------|------| |
| 67 | +| 層別テスト | `scripts/test/` 配下でレイヤーごとにテストを分離 | |
| 68 | +| フィクスチャ | `conftest.py` で共通フィクスチャを定義 | |
| 69 | +| マーカー | `@pytest.mark.slow` 等でテスト実行戦略を制御 | |
| 70 | + |
| 71 | +**学習ポイント**: |
| 72 | +- `scripts/test/` のファイル命名規則を確認 |
| 73 | +- 参照: [CONTRIBUTING.md](../../CONTRIBUTING.md#テスト) |
| 74 | + |
| 75 | +### 5. ドキュメント設計 |
| 76 | + |
| 77 | +オーディエンス別に整理されたドキュメント構造を学べます。 |
| 78 | + |
| 79 | +| 観点 | 実装 | |
| 80 | +|------|------| |
| 81 | +| オーディエンス分離 | `docs/user/` vs `docs/dev/` | |
| 82 | +| パンくずナビ | 各ファイル先頭に配置 | |
| 83 | +| SSoT準拠 | 相互リンクで詳細を1箇所に集約 | |
| 84 | + |
| 85 | +**学習ポイント**: |
| 86 | +- `docs/` のディレクトリ構造を確認 |
| 87 | +- 各ファイルの先頭パンくずを確認 |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +## 推奨学習順序 |
| 92 | + |
| 93 | +``` |
| 94 | +1. README.md → プロジェクト概要と用語を把握 |
| 95 | + ↓ |
| 96 | +2. ARCHITECTURE.md → 技術構造を理解 |
| 97 | + ↓ |
| 98 | +3. domain/ → 純粋なビジネスロジックを読む |
| 99 | + ↓ |
| 100 | +4. application/ → ユースケース実装を読む |
| 101 | + ↓ |
| 102 | +5. DESIGN_DECISIONS.md → 設計判断の理由を理解 |
| 103 | + ↓ |
| 104 | +6. test/ → テスト設計を学ぶ |
| 105 | +``` |
| 106 | + |
| 107 | +--- |
| 108 | + |
| 109 | +## 関連ドキュメント |
| 110 | + |
| 111 | +- [ARCHITECTURE.md](ARCHITECTURE.md) - 技術仕様 |
| 112 | +- [DESIGN_DECISIONS.md](DESIGN_DECISIONS.md) - 設計判断 |
| 113 | +- [API_REFERENCE.md](API_REFERENCE.md) - API仕様 |
| 114 | +- [CONTRIBUTING.md](../../CONTRIBUTING.md) - 開発ガイド |
0 commit comments