機能 #47
完了機能 #38: [Phase0] 開発基盤の定義と管理ルールの実装
現在のシステム構成を解析するツール
説明
あなたに、今のシステムのディレクトリ構成を伝えたいのですが、ただのtreeじゃなくて、ディレクトリ毎に内容を調査しながら、それらがどんな役割のディレクトリなのかAIで判断するようなツールって作れるものですかね。¶
はい、作成できます。指定されたディレクトリ構造を解析し、各ディレクトリの役割を推測して説明するPythonスクリプトを作成しましょう。
このツールは以下の様な動作をします。
プロジェクト内のディレクトリを再帰的にスキャンします。
各ディレクトリに含まれるファイル名や拡張子(例: init.py, models.py, views.py, .md)を分析します。
分析結果に基づき、そのディレクトリが「Djangoアプリケーション」「ドキュメントフォルダ」「設定ファイル置き場」といった、どのような役割を持つかを推測します。
.gitや.venv、__pycache__のような一般的で分析が不要なディレクトリは無視します。
最終的に、ディレクトリ構造とそれぞれの役割をまとめたレポートを出力します。
このツールをtools/py_system/analyze_project_structure.pyという名前で作成します。作業を開始してもよろしいですか?
吉田 明 さんが2ヶ月前に更新
プロジェクト構造分析レポート
- プロジェクトの全体像
このプロジェクト(keinasystem01)の目的は、栽培と販売を統合管理する新しい「恵菜ファーム統合システム」を構築することです。
その中核的なタスクとして、既に存在し、実際に稼働していたDjango製の「お米販売システム (riceshop)」を、この新しい統合システムの一部として取り込む(=マイグレーションまたは再構築する)ことが計画されています。
この「新システムの構築」と「旧システムの統合」という2つの大きな目的を理解することが、ディレクトリ構造を正確に読み解く鍵となります。
- ディレクトリ別役割分析
. (ルートディレクトリ)
役割: プロジェクト全体に関わる設定ファイルが置かれています。
主要ファイル:
.env: データベース接続情報やAPIキーなど、環境に依存する秘密情報を格納します。
.gitignore: Gitのバージョン管理から除外するファイル(例: .venv)を指定します。
project_structure.txt, riceshop_structure.txt: 過去に作成された、構造確認用のメモやコマンド出力結果だと思われます。
docs/
役割: プロジェクトの全ドキュメントを格納する、設計と思想の宝庫です。
主要ファイル/ディレクトリ:
AboutThisSystem.txt: 最重要ドキュメント。これから作る新システムの全体像と目的を定義しています。
riceshop/: 旧システムである「お米販売システム」の、極めて詳細な要件定義書、設計書群です。新システムへ統合する際の仕様書として機能します。
roadmap/, tools/ など: 新システム開発のロードマップや、利用するツールに関するドキュメントが格納されていると考えられます。
reference/
役割: 統合対象となる旧システムの「現物」を保管する参照場所です。
主要ディレクトリ:
riceshop/: 旧システム「お米販売システム」の全ソースコードが格納されています。これは、これから作る新システムのコードではなく、分析・移行の対象となる参照用のコードです。
tools/
役割: 新システムの開発を効率化・自動化するための補助ツール群です。
主要ディレクトリ:
py_system/codebase_investigator/: 我々が今まさに作成している、このコードベース分析ツールの格納場所です。
reg_system/: doc_generator.py(ドキュメント生成)、merge_and_verify.py(マージ検証)といったファイル名から、reg_systemというサブシステムに関する開発補助ツール、特にAI(Dify)を活用した作業を支援するツール群と推測されます。
tests/
役割: 新システムの品質を担保するための自動テストコードが格納されます。
主要ディレクトリ:
reg_system/: toolsディレクトリにも登場した reg_system のためのテストが用意されています。これは、reg_system が新システムを構成する、独立してテスト可能なコンポーネントであることを強く示唆しています。
prompt/
役割: AI(大規模言語モデル)への指示(プロンプト)を保存する場所です。
内容: opening.txt や prompt_tmp.txt が存在することから、開発プロセスにおいてAIを補助的に活用していることがうかがえます。
.venv/, .vscode/, .gemini/
役割: 開発環境固有の設定ファイル群です。
.venv: プロジェクトのPythonライブラリを隔離する仮想環境です。
.vscode: エディタ「Visual Studio Code」用の設定です。
.gemini: Gemini CLIツール用の設定です。
吉田 明 さんが2ヶ月前に更新
プロジェクト構造分析レポート¶
1. プロジェクトの全体像¶
このプロジェクト(keinasystem01)の目的は、栽培と販売を統合管理する新しい「恵菜ファーム統合システム」を構築することです。
その中核的なタスクとして、既に存在し、実際に稼働していたDjango製の「お米販売システム (riceshop)」を、この新しい統合システムの一部として取り込む(=マイグレーションまたは再構築する)ことが計画されています。
この「新システムの構築」と「旧システムの統合」という2つの大きな目的を理解することが、ディレクトリ構造を正確に読み解く鍵となります。
2. ディレクトリ別役割分析¶
-
.(ルートディレクトリ)- 役割: プロジェクト全体に関わる設定ファイルが置かれています。
-
主要ファイル:
-
.env: データベース接続情報やAPIキーなど、環境に依存する秘密情報を格納します。 -
.gitignore: Gitのバージョン管理から除外するファイル(例:.venv)を指定します。 -
project_structure.txt,riceshop_structure.txt: 過去に作成された、構造確認用のメモやコマンド出力結果だと思われます。
-
-
docs/- 役割: プロジェクトの全ドキュメントを格納する、設計と思想の宝庫です。
-
主要ファイル/ディレクトリ:
-
AboutThisSystem.txt: 最重要ドキュメント。これから作る新システムの全体像と目的を定義しています。 -
riceshop/: 旧システムである「お米販売システム」の、極めて詳細な要件定義書、設計書群です。新システムへ統合する際の仕様書として機能します。 -
roadmap/,tools/など: 新システム開発のロードマップや、利用するツールに関するドキュメントが格納されていると考えられます。
-
-
reference/- 役割: 統合対象となる旧システムの「現物」を保管する参照場所です。
-
主要ディレクトリ:
-
riceshop/: 旧システム「お米販売システム」の全ソースコードが格納されています。これは、これから作る新システムのコードではなく、分析・移行の対象となる参照用のコードです。
-
-
tools/- 役割: 新システムの開発を効率化・自動化するための補助ツール群です。
-
主要ディレクトリ:
-
py_system/codebase_investigator/: 我々が今まさに作成している、このコードベース分析ツールの格納場所です。 -
reg_system/:doc_generator.py(ドキュメント生成)、merge_and_verify.py(マージ検証)といったファイル名から、reg_systemというサブシステムに関する開発補助ツール、特にAI(Dify)を活用した作業を支援するツール群と推測されます。
-
-
tests/- 役割: 新システムの品質を担保するための自動テストコードが格納されます。
-
主要ディレクトリ:
-
reg_system/:toolsディレクトリにも登場したreg_systemのためのテストが用意されています。これは、reg_systemが新システムを構成する、独立してテスト可能なコンポーネントであることを強く示唆しています。
-
-
prompt/- 役割: AI(大規模言語モデル)への指示(プロンプト)を保存する場所です。
-
内容:
opening.txtやprompt_tmp.txtが存在することから、開発プロセスにおいてAIを補助的に活用していることがうかがえます。
-
.venv/,.vscode/,.gemini/-
役割: 開発環境固有の設定ファイル群です。
-
.venv: プロジェクトのPythonライブラリを隔離する仮想環境です。 -
.vscode: エディタ「Visual Studio Code」用の設定です。 -
.gemini: Gemini CLIツール用の設定です。
-
-
役割: 開発環境固有の設定ファイル群です。
吉田 明 さんが約2ヶ月前に更新
- ステータス を フィードバック から 終了 に変更
claudeにtools\reg_system\project_analyzer.pyを作らせた
プロジェクト構造解析ツール - クイックガイド¶
🎯 何ができるか?¶
Before(手動でドキュメント作成)¶
😰 新しいプロジェクトに参加
↓
📁 ディレクトリを1つずつ開いて確認
↓
📝 手動でドキュメントを作成
↓
⏰ 数時間〜数日かかる
↓
😓 古くなったらまた更新作業
After(このツールを使用)¶
😊 新しいプロジェクトに参加
↓
⚡ python project_analyzer.py
↓
⏱️ 1-3分で完了
↓
📊 階層的なドキュメントが自動生成
↓
✅ いつでも再実行で最新化
🚀 クイックスタート(30秒)¶
1. 準備(初回のみ)¶
# 1. 必要なパッケージをインストール
pip install requests python-dotenv
# 2. .envファイルにAPIキーを設定
echo "GOOGLE_API_KEY=your_key_here" > .env
2. 実行¶
# プロジェクトルートで実行
python project_analyzer.py
3. 確認¶
# 生成されたドキュメントを確認
code docs/project_analysis/PROJECT_OVERVIEW.md
これだけ!
📊 生成されるもの¶
docs/project_analysis/
├── PROJECT_OVERVIEW.md ← プロジェクト全体の概要
├── README.md ← ルートディレクトリの説明
├── tools/
│ └── README.md ← tools/の説明
├── src/
│ └── README.md ← src/の説明
└── config/
└── README.md ← config/の説明
各ドキュメントの内容:
- 📋 概要(このディレクトリの役割)
- 🎯 目的(なぜ存在するか)
- 📂 構成(主要ファイルの説明)
- 🔍 詳細(技術的な説明)
- 💡 理解のポイント
🧠 クレバーな機能¶
1. 自動除外¶
.venv/ ← スキップ
node_modules/ ← スキップ
__pycache__/ ← スキップ
.git/ ← スキップ
src/ ← ✅ 解析
tools/ ← ✅ 解析
メリット: 無駄な処理を自動で省く
2. 重要度判定¶
README.md ← Critical(必ず解析)
requirements.txt ← Critical(必ず解析)
main.py ← High(優先的に解析)
utils.py ← Medium(選択的に解析)
test_*.py ← Low(深い階層では除外)
メリット: 重要な部分に集中
3. API最適化¶
1ディレクトリあたり最大5ファイル
↓
API呼び出し回数を削減
↓
実行時間を短縮
↓
コストを削減
メリット: 速くて安い
💡 使い分け¶
パターン1: プロジェクト全体を理解したい¶
# デフォルト設定で実行
python project_analyzer.py
こんな時に:
- 新しいプロジェクトに参加した
- プロジェクト構造の全体像を知りたい
- チームメンバーにプロジェクトを説明したい
パターン2: 特定のディレクトリを詳しく¶
# toolsディレクトリのみを深く解析
cd tools
python /path/to/project_analyzer.py . --depth 5
こんな時に:
- 特定のモジュールを深く理解したい
- サブプロジェクトを独立して解析したい
パターン3: 浅く広く¶
# トップレベルのみ
python project_analyzer.py --depth 1
こんな時に:
- プロジェクトの大枠だけ知りたい
- 実行時間を短縮したい
📈 実行例¶
小規模プロジェクト(Djangoアプリ)¶
$ python project_analyzer.py
======================================================================
🔍 プロジェクト解析ツール
======================================================================
プロジェクトルート: /home/user/my_django_app
出力先: docs/project_analysis
最大深度: 3
======================================================================
📊 ステップ1: プロジェクト構造をスキャン中...
📈 スキャン結果:
- 総ディレクトリ数: 8
- 総ファイル数: 47
- スキップ: 23ファイル
📝 ステップ2: プロジェクト概要を生成...
✅ プロジェクト概要を生成: docs/project_analysis/PROJECT_OVERVIEW.md
🔍 ステップ3: ディレクトリ解析を開始...
📁 root/
重要度: critical
ファイル数: 5
🔍 解析対象: 3ファイル
- README.md (critical)
- requirements.txt (critical)
- manage.py (high)
✅ ドキュメント生成: README.md
📁 my_app/
重要度: high
ファイル数: 12
🔍 解析対象: 5ファイル
- models.py (high)
- views.py (high)
- urls.py (high)
- admin.py (medium)
- apps.py (medium)
✅ ドキュメント生成: my_app/README.md
======================================================================
✅ 解析完了!
======================================================================
📊 統計情報:
- 解析ディレクトリ数: 5
- 解析ファイル数: 18
- API呼び出し回数: 6
- 実行時間: 42.3秒
📁 出力先: docs/project_analysis
======================================================================
⚙️ オプション一覧¶
# 基本
python project_analyzer.py
# 特定のディレクトリ
python project_analyzer.py /path/to/project
# 深度指定
python project_analyzer.py --depth 5
# 出力先指定
python project_analyzer.py -o custom_output/
# すべて組み合わせ
python project_analyzer.py /path/to/project --depth 4 -o docs/analysis/
🎁 生成されるドキュメントのサンプル¶
PROJECT_OVERVIEW.md の例¶
# プロジェクト概要
## 📝 プロジェクト名
keinasystem02 - 米農家向け販売管理システム
## 🎯 目的
農家が直接運営する米販売ECサイトのバックエンドシステム。
顧客管理、注文処理、在庫管理を統合的に行う。
## 🏗️ アーキテクチャ概要
- バックエンド: Django 4.2 + PostgreSQL
- インフラ: Docker + Traefik
- ドキュメント: Trilium Notes連携
## 📂 ディレクトリ構造
- riceshop/: Djangoメインアプリケーション
- tools/: 開発・運用ツール
- docs/: プロジェクトドキュメント
- config/: 設定ファイル
## 💻 技術スタック
- Python 3.12
- Django 4.2
- PostgreSQL 15
- Docker
- Gemini API(ドキュメント生成)
## 📌 注目ポイント
- カスタム認証システム(日本語対応)
- Trilium Notesとの自動同期
- AI活用のドキュメント自動生成
tools/README.md の例¶
# tools/
## 📋 概要
開発・運用を効率化するPythonスクリプト群。
ドキュメント生成、バックアップ、Trilium同期など。
## 🎯 目的
手作業を自動化し、開発者の生産性を向上させる。
## 📂 構成
### 主要ファイル
- doc_generator.py: Gemini APIを使ったドキュメント自動生成
- project_analyzer.py: プロジェクト構造解析
- sync_trilium_smart.py: Trilium Notes同期ツール
### サブディレクトリ
- py_system/: 共通ユーティリティ
## 🔍 詳細
このディレクトリのツールは、以下の3つの領域をカバー:
1. ドキュメント生成(doc_generator.py, project_analyzer.py)
2. データ同期(sync_trilium_smart.py)
3. 共通機能(py_system/)
各ツールは独立して動作し、.env経由でAPI Keyを管理。
## 💡 理解のポイント
1. すべてのツールがGemini APIを活用
2. .gitignoreで.envを除外してセキュリティ確保
3. モジュール化されており、個別に実行可能
4. エラーハンドリングを強化して信頼性向上
5. 詳細なドキュメント自動生成で保守性確保
🆚 他の方法との比較¶
手動でREADMEを書く¶
メリット:
- コストゼロ
- 自由な表現
デメリット:
- ❌ 時間がかかる(数時間〜数日)
- ❌ 古くなる
- ❌ 人によって品質がバラバラ
- ❌ 大規模プロジェクトでは現実的でない
tree コマンド¶
tree -L 3 -I 'node_modules|.venv'
メリット:
- 高速
- シンプル
デメリット:
- ❌ ディレクトリ構造だけ
- ❌ 説明がない
- ❌ 重要度が分からない
このツール¶
メリット:
- ✅ 自動生成(1-3分)
- ✅ 常に最新
- ✅ 重要度を自動判定
- ✅ 詳細な説明付き
- ✅ 階層的なドキュメント
デメリット:
- API Key が必要
- 実行に時間がかかる(1-5分)
💰 コスト¶
Gemini API(無料枠)¶
- 1分間: 60リクエスト
- 1日: 1,500リクエスト
実際の使用例¶
- 小規模プロジェクト: 5-10リクエスト → 無料
- 中規模プロジェクト: 10-20リクエスト → 無料
- 大規模プロジェクト: 20-40リクエスト → 無料
結論: ほとんどの場合、無料枠内で利用可能
🎓 学習曲線¶
1日目: 基本的な実行方法を理解
↓
2-3日目: オプションを使いこなす
↓
1週間: カスタマイズ方法を習得
↓
2週間: チーム全体で活用
学習コスト: 低い
まとめ¶
このツールが向いている人¶
✅ 新しいプロジェクトに頻繁に参加する人
✅ 大規模プロジェクトを扱う人
✅ ドキュメント作成が面倒な人
✅ チームでプロジェクト構造を共有したい人
このツールが向いていない場面¶
❌ 極小規模プロジェクト(5ファイル未満)
❌ API Keyを取得できない環境
❌ オフライン環境
推奨ワークフロー¶
# 1. プロジェクトクローン
git clone https://github.com/user/project.git
cd project
# 2. プロジェクト解析(まず全体を把握)
python /path/to/project_analyzer.py
# 3. ドキュメント確認
code docs/project_analysis/PROJECT_OVERVIEW.md
# 4. 必要に応じて個別ディレクトリを深掘り
cd src/important_module
python /path/to/project_analyzer.py . --depth 5
# 5. 開発開始!
これで、どんなプロジェクトも素早く理解できます!