|
# 🏗️ システムアーキテクチャ |
|
|
|
## 🎯 システム概要 |
|
|
|
**FastAPI Django Main Live**は、**AI協働開発**により構築された自動成長型Webアプリケーションです。 |
|
|
|
### 🌟 核心コンセプト |
|
- **動的機能拡張**: AIの指示だけで新機能を自動追加 |
|
- **命名規則による自動統合**: 特定の名前を使うだけで機能統合 |
|
- **プラグイン式アーキテクチャ**: 既存機能に影響せずに機能追加 |
|
- **ゼロ設定ファイル**: 複雑な設定なしで即座に動作 |
|
|
|
## 🏢 アーキテクチャ全体像 |
|
|
|
``` |
|
┌─────────────────────────────────────────────────────────┐ |
|
│ 🌐 Web ブラウザ │ |
|
└─────────────────────┬───────────────────────────────────┘ |
|
│ HTTP/WebSocket |
|
┌─────────────────────┴───────────────────────────────────┐ |
|
│ 🚀 FastAPI Core │ |
|
│ ┌─────────────────┬─────────────────┬─────────────────┐ │ |
|
│ │ 📊 Gradio │ 🔄 Django │ 🤖 AI Core │ │ |
|
│ │ WebUI │ Backend │ OpenAI/Groq │ │ |
|
│ └─────────────────┴─────────────────┴─────────────────┘ │ |
|
└─────────────────────┬───────────────────────────────────┘ |
|
│ |
|
┌─────────────────────┴───────────────────────────────────┐ |
|
│ 🔄 動的ルーターインポートシステム │ |
|
│ ┌─────────────────────────────────────────────────────┐ │ |
|
│ │ controllers/ スキャナー (mysite/routers/gradio.py) │ │ |
|
│ │ • gradio_interface 自動検出 │ │ |
|
│ │ • router 自動検出 │ │ |
|
│ │ • 新機能の即座統合 │ │ |
|
│ └─────────────────────────────────────────────────────┘ │ |
|
└─────────────────────┬───────────────────────────────────┘ |
|
│ |
|
┌─────────────────────┴───────────────────────────────────┐ |
|
│ 📦 機能モジュール群 │ |
|
│ ┌─────────────────┬─────────────────┬─────────────────┐ │ |
|
│ │ 🏠 ContBK │ 🐙 GitHub │ 🖼️ RPA │ │ |
|
│ │ ダッシュボード │ Issue 作成 │ 画像取得 │ │ |
|
│ └─────────────────┼─────────────────┼─────────────────┤ │ |
|
│ │ 💬 AI Chat │ 📊 Database │ 🔧 Debug │ │ |
|
│ │ OpenInterpreter│ 操作 │ VS Code連携 │ │ |
|
│ └─────────────────┴─────────────────┴─────────────────┘ │ |
|
└─────────────────────┬───────────────────────────────────┘ |
|
│ |
|
┌─────────────────────┴───────────────────────────────────┐ |
|
│ 💾 データ層 │ |
|
│ ┌─────────────────┬─────────────────┬─────────────────┐ │ |
|
│ │ 📝 SQLite │ 📂 ファイル │ 🌐 外部API │ │ |
|
│ │ 各種DB │ システム │ GitHub/Groq │ │ |
|
│ └─────────────────┴─────────────────┴─────────────────┘ │ |
|
└─────────────────────────────────────────────────────────┘ |
|
``` |
|
|
|
## 🔄 動的インポートシステム(核心技術) |
|
|
|
### 📍 自動検出の仕組み |
|
|
|
#### 1. ディレクトリスキャン |
|
```python |
|
# mysite/routers/gradio.py |
|
def include_gradio_interfaces(): |
|
package_dir = "controllers" # スキャン対象 |
|
|
|
# controllers/ 配下をすべて探索 |
|
for root, dirs, files in os.walk(package_dir): |
|
for file in files: |
|
if file.endswith('.py'): |
|
# Python モジュール自動インポート |
|
module = importlib.import_module(module_path) |
|
|
|
# gradio_interface オブジェクト検出 |
|
if hasattr(module, 'gradio_interface'): |
|
# 自動でWebUIに統合 |
|
interfaces[tab_name] = module.gradio_interface |
|
``` |
|
|
|
#### 2. 命名規則による自動統合 |
|
```python |
|
# ✅ 自動検出される例 |
|
gradio_interface = gr.Interface(...) # 必須の名前 |
|
router = APIRouter() # 必須の名前 |
|
|
|
# ❌ 検出されない例 |
|
interface = gr.Interface(...) # 名前が違う |
|
my_router = APIRouter() # 名前が違う |
|
``` |
|
|
|
#### 3. 即座の機能統合 |
|
- サーバー再起動不要 |
|
- 新しいタブが自動表示 |
|
- 既存機能への影響なし |
|
|
|
## 🛠️ 技術スタック詳細 |
|
|
|
### 🎨 フロントエンド層 |
|
``` |
|
🌐 Gradio WebUI |
|
├── 📊 Blocks Layout Engine |
|
├── 🎯 Component System (Textbox, Button, etc.) |
|
├── 📱 Responsive Design |
|
└── ⚡ Real-time Updates |
|
``` |
|
|
|
### ⚙️ バックエンド層 |
|
``` |
|
🚀 FastAPI Framework |
|
├── 🔄 Django Integration |
|
├── 📡 RESTful API |
|
├── 🔌 WebSocket Support |
|
└── 🛡️ Middleware Stack |
|
``` |
|
|
|
### 🤖 AI統合層 |
|
``` |
|
🧠 AI Engine |
|
├── 🤖 OpenInterpreter (Code Execution) |
|
├── ⚡ Groq API (LLM Inference) |
|
├── 🧩 GitHub Copilot (Code Generation) |
|
└── 💬 Natural Language Processing |
|
``` |
|
|
|
### 🔧 自動化層 |
|
``` |
|
🤖 RPA System |
|
├── 🎭 Playwright (Browser Automation) |
|
├── 📸 Screenshot Capture |
|
├── 🖼️ Image Collection |
|
└── 📊 Execution History |
|
``` |
|
|
|
### 💾 データ層 |
|
``` |
|
📊 Database Layer |
|
├── 💬 chat_history.db (チャット履歴) |
|
├── 🤖 rpa_history.db (RPA実行記録) |
|
├── 📝 conversation_history.db (会話記録) |
|
└── 📋 prompts.db (プロンプト管理) |
|
``` |
|
|
|
## 📁 ディレクトリ構造と責務 |
|
|
|
### 🎯 核心ディレクトリ |
|
``` |
|
fastapi_django_main_live/ |
|
├── app.py # 🚀 メインアプリケーション |
|
├── mysite/ # 🔄 Django統合・ルーティング |
|
│ └── routers/gradio.py # ⭐ 動的インポートエンジン |
|
├── controllers/ # 📦 機能モジュール群 |
|
│ ├── gra_01_chat/ # 💬 基本チャット |
|
│ ├── gra_02_openInterpreter/ # 🤖 AI統合 |
|
│ ├── contbk_unified_dashboard.py # 🏠 統合ダッシュボード |
|
│ ├── conversation_logger.py # 📝 会話記録 |
|
│ └── github_issue_creator.py # 🐙 Issue作成 |
|
└── contbk/ # 🔧 高度な機能群 |
|
└── gra_12_rpa/ # 🖼️ RPA・画像取得 |
|
``` |
|
|
|
### 📋 機能別ディレクトリ |
|
``` |
|
controllers/gra_XX_功能名/ # Gradio UI機能 |
|
├── __init__.py # パッケージ初期化 |
|
├── main.py # メイン実装 |
|
└── gradio_interface # ⭐ 必須オブジェクト |
|
|
|
routers/api_XX_功能名.py # FastAPI エンドポイント |
|
└── router # ⭐ 必須オブジェクト |
|
``` |
|
|
|
## 🔌 プラグイン式機能追加システム |
|
|
|
### 🎯 新機能追加フロー |
|
|
|
#### 1. AI指示による要求 |
|
``` |
|
ユーザー: 「天気予報機能を追加して」 |
|
``` |
|
|
|
#### 2. AI による自動実装 |
|
```python |
|
# controllers/gra_13_weather/weather.py を自動生成 |
|
import gradio as gr |
|
import requests |
|
|
|
def get_weather(city): |
|
# 天気API呼び出し |
|
return f"{city}の天気: 晴れ" |
|
|
|
# この名前でないと自動統合されない |
|
gradio_interface = gr.Interface( |
|
fn=get_weather, |
|
inputs=gr.Textbox(label="都市名"), |
|
outputs=gr.Textbox(label="天気"), |
|
title="🌤️ 天気予報" |
|
) |
|
``` |
|
|
|
#### 3. 自動統合・即座利用 |
|
- `controllers/` にファイル配置 |
|
- 動的スキャナーが自動検出 |
|
- WebUIタブに即座表示 |
|
- ユーザーがすぐに利用可能 |
|
|
|
### 🔄 自動統合の流れ |
|
|
|
```mermaid |
|
graph TD |
|
A[AI指示受信] --> B[コード自動生成] |
|
B --> C[controllers/配下に配置] |
|
C --> D[動的スキャナーが検出] |
|
D --> E[gradio_interface 確認] |
|
E --> F[WebUIタブ自動追加] |
|
F --> G[即座に利用可能] |
|
``` |
|
|
|
## 🔐 セキュリティアーキテクチャ |
|
|
|
### 🛡️ 多層防御システム |
|
``` |
|
🔐 Security Layers |
|
├── 🌐 Web Layer (HTTPS, CORS) |
|
├── 🔑 Auth Layer (Environment Variables) |
|
├── 🛡️ App Layer (Input Validation) |
|
├── 💾 Data Layer (SQLite Encryption) |
|
└── 🔧 Debug Layer (Dev-only Access) |
|
``` |
|
|
|
### 🔑 認証・認可 |
|
- **環境変数**: 機密情報の安全管理 |
|
- **パスワード認証**: OpenInterpreter 保護 |
|
- **GitHub CLI**: 自動認証 |
|
- **デバッグ環境**: 開発時のみアクセス |
|
|
|
## 📊 パフォーマンス設計 |
|
|
|
### ⚡ 高速化技術 |
|
- **非同期処理**: `async/await` による並行処理 |
|
- **動的ロード**: 必要な機能のみ読み込み |
|
- **キャッシュ**: 重複処理の削減 |
|
- **軽量DB**: SQLite による高速データアクセス |
|
|
|
### 📈 スケーラビリティ |
|
- **モジュラー設計**: 機能の独立性 |
|
- **プラグイン式**: 無制限の機能拡張 |
|
- **自動統合**: 設定ファイル不要 |
|
- **メモリ効率**: リソース使用量最適化 |
|
|
|
## 🔄 データフロー |
|
|
|
### 📊 主要なデータの流れ |
|
|
|
#### 1. ユーザー入力 → AI処理 |
|
``` |
|
ブラウザ → FastAPI → OpenInterpreter → AI処理 → レスポンス |
|
``` |
|
|
|
#### 2. 機能追加フロー |
|
``` |
|
AI指示 → コード生成 → ファイル配置 → 自動検出 → UI統合 |
|
``` |
|
|
|
#### 3. データ永続化 |
|
``` |
|
ユーザー操作 → アプリ処理 → SQLite保存 → 履歴管理 |
|
``` |
|
|
|
## 🚀 拡張性設計 |
|
|
|
### 🔮 将来の拡張可能性 |
|
|
|
#### 技術拡張 |
|
- **PostgreSQL**: より高性能なデータベース |
|
- **Redis**: キャッシュ・セッション管理 |
|
- **Docker**: コンテナ化 |
|
- **Kubernetes**: オーケストレーション |
|
|
|
#### 機能拡張 |
|
- **多言語対応**: 国際化 |
|
- **モバイルアプリ**: React Native連携 |
|
- **クラウド統合**: AWS/Azure連携 |
|
- **エンタープライズ**: 大規模運用対応 |
|
|
|
### 💡 設計原則 |
|
|
|
#### 1. **Keep It Simple** |
|
- 複雑さよりもわかりやすさ |
|
- 設定ファイルよりも命名規則 |
|
- ドキュメントよりも直感的操作 |
|
|
|
#### 2. **Convention over Configuration** |
|
- 決まった場所に決まった名前で配置 |
|
- 自動検出による設定レス |
|
- 一貫性のある命名規則 |
|
|
|
#### 3. **AI-First Design** |
|
- AIによる自動生成を前提 |
|
- 自然言語での操作 |
|
- 人間とAIの協働最適化 |
|
|
|
--- |
|
|
|
**アーキテクト**: GitHub Copilot AI + miyataken999 |
|
**設計思想**: AI協働による自動成長システム |
|
**最終更新**: 2025年06月11日 |
|
|
|
> 🏗️ **このアーキテクチャは、AIと人間が協働して設計した革新的なシステムです。技術的な完璧さだけでなく、使いやすさと拡張性を両立しています。** |
|
|