Development Guidelines - bpmbox/fastapi_django_main_lives GitHub Wiki
🛠️ 開発ガイドライン - Laravel風アーキテクチャ統一
🎯 プロジェクト目標
Laravel風の構成に統一して、開発者参加を容易にする
Laravel経験者なら説明不要で参加できる構造を目指す
🏗️ アーキテクチャ変更計画
📁 現在の課題
mysite/asgi.py
にルーティング処理が混在- Laravel風構造が不完全
- 開発者にとって特殊な説明が必要
🎯 目標構成 (Laravel準拠)
📁 プロジェクト構造
├── routes/
│ ├── web.py ← 全WebルーティングをここにAGGURIGATE
│ ├── api.py ← API専用ルーティング
│ └── gradio.py ← Gradio専用ルーティング
├── app/Http/Controllers/
│ ├── WebController.py ← Web画面処理
│ ├── GradioController.py ← Gradio統合処理
│ └── ApiController.py ← API処理
├── mysite/
│ └── asgi.py ← アプリケーション起動のみ (ルーティング除去)
└── controllers/ ← 機能別コントローラー (現在のまま)
🔄 移行ステップ
Step 1: 設計・計画
- Wikiドキュメント作成 ✅ (このページ)
- GitHub Issue作成
- テストケース設計
Step 2: 自動テスト実装
-
Artisanコマンド拡張
python artisan test:routing # ルーティングテスト python artisan test:gradio # Gradio統合テスト python artisan test:laravel # Laravel構造テスト
-
テストケース追加
- 全ルートの動作確認
- Gradio個別アクセステスト
- 統合ダッシュボードテスト
Step 3: コード移行
-
routes/web.py 拡張
asgi.py
からルーティング移行- 個別Gradio
/gradio/{機能名}
ルート追加 - 統合ダッシュボード
/gradio/dashboard
追加
-
Controllers 強化
- Laravel風Controller完全実装
- Gradio自動検出・マウント機能
-
asgi.py 簡素化
- ルーティング処理を完全除去
- アプリケーション初期化のみに特化
Step 4: CI/CD統合
- GitHub Actions設定
name: Laravel-Style Architecture Test on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Python - name: Install dependencies - name: Run Laravel Structure Tests run: python artisan test:all - name: Run Gradio Integration Tests run: python artisan test:gradio
🎯 期待される効果
👨💻 開発者参加の容易化
- Laravel経験者: 即座に理解・参加可能
- 新規開発者: Laravel資料で学習可能
- AI協働: Laravel標準パターンで指示可能
📚 ドキュメント簡素化
- 特殊な説明不要: Laravel標準説明で十分
- 学習コスト削減: 既存知識で理解可能
- 保守性向上: 一般的なパターンで保守容易
🔧 開発効率向上
- ルーティング一元化:
routes/web.py
で全体把握 - 責務分離: 各ファイルの役割明確化
- テスト容易化: 標準的なテスト手法適用可能
🧪 テスト戦略
📋 テストケース設計
1. ルーティングテスト
def test_individual_gradio_routes():
"""個別Gradioルートの動作確認"""
routes = [
"/gradio/chat",
"/gradio/database",
"/gradio/files",
"/gradio/github"
]
for route in routes:
response = client.get(route)
assert response.status_code == 200
def test_unified_dashboard():
"""統合ダッシュボードテスト"""
response = client.get("/gradio/dashboard")
assert response.status_code == 200
assert "統合ダッシュボード" in response.text
2. Controller統合テスト
def test_gradio_auto_discovery():
"""Gradio自動検出機能テスト"""
from app.Http.Controllers.GradioController import discover_gradio_interfaces
interfaces = discover_gradio_interfaces()
assert len(interfaces) > 0
assert all(hasattr(interface, 'gradio_interface') for interface in interfaces)
3. Laravel構造テスト
def test_laravel_structure_compliance():
"""Laravel構造準拠テスト"""
# 必要なディレクトリ存在確認
assert os.path.exists("routes/web.py")
assert os.path.exists("app/Http/Controllers/")
# ルーティング分離確認
with open("mysite/asgi.py") as f:
content = f.read()
assert "@app.get" not in content # ルーティングがないことを確認
🔧 Artisanコマンド拡張
新規追加コマンド
# テスト実行
python artisan test:routing # ルーティングテスト
python artisan test:gradio # Gradio統合テスト
python artisan test:laravel # Laravel構造準拠テスト
python artisan test:all # 全テスト実行
# 開発支援
python artisan make:controller WebController # Controller生成
python artisan make:route gradio # ルート生成
python artisan route:list # ルート一覧表示
# 構造確認
python artisan structure:check # Laravel構造確認
python artisan gradio:list # Gradio機能一覧
📊 成功指標
✅ 完了条件
- 全テストPASS: 自動テストで100% PASS
- GitHub Actions: CI/CDでテスト成功
- 構造準拠: Laravel標準構造完全準拠
- 機能維持: 既存機能の完全動作保証
📈 改善指標
- 開発者参加時間: 30分以内でプロジェクト理解
- 新機能追加時間: 従来の50%時間短縮
- 保守作業効率: 問題特定・修正時間半減
🚀 実装スケジュール
Week 1: 設計・テスト準備
- Wikiドキュメント作成
- GitHub Issue作成
- テストケース設計
- Artisanコマンド実装
Week 2: コード移行
- routes/web.py 拡張
- Controller実装
- asgi.py 簡素化
- テスト実行・修正
Week 3: CI/CD・最終テスト
- GitHub Actions設定
- 統合テスト
- ドキュメント更新
- リリース
作成者: miyataken999 + GitHub Copilot
作成日: 2025年06月14日
ステータス: 🚧 計画中 → 実装準備
🎯 Laravel経験者なら即参加可能な、わかりやすいアーキテクチャを目指します