はじめに
Doggy Framework は AI ネイティブなエンタープライズ向けローコード開発フレームワークで、Symfony 7.4 LTS(2029 年まで長期サポート)に基づいて構築されています。
なぜ Doggy なのか?
- AI ネイティブ: MCP、Agent、マルチモデル(阿里百炼、OpenAI、LM Studio、Ollama など)を深く統合し、LLM 設定システム、グローバル AI アシスタント、AI ビュー拡張、コーディングアシスタント、自然言語クエリ、ビジョン認識などの AI 機能を内蔵
- ローコードエンジン: PHP 8 Attribute と
@Efカスタムアノテーションで業務モデルを定義し、データベースマイグレーションと管理画面を自動生成 - AI 駆動のビューデザイナー: ドラッグ&ドロップレイアウト + AI 自然言語操作 + 意図認識子 Agent によるビュー生成 + マルチバージョン管理
- エンタープライズセキュリティ: WebAuthn パスワードレスログイン、三員分立、パスワードポリシー、全チェーン監査ログ
- リアルタイム通信: Mercure SSE ベースのリアルタイムプッシュ。FrankenPHP に Hub が内蔵されており、追加サービス不要
- 高性能: FrankenPHP Worker モード + zstd/br 圧縮、PostgreSQL 優先のアーキテクチャ
- 完全なエコシステム: 組織構造、スケジュールタスク、ファイルストレージ、メールシステム、SunUI コンポーネントライブラリなどをすぐに利用可能
技術スタック
| レイヤー | 技術 |
|---|---|
| 言語 | PHP 8.2+ |
| フレームワーク | Symfony 7.4 LTS |
| ランタイム | FrankenPHP (Worker モード) via runtime/frankenphp-symfony |
| データベース | PostgreSQL 14+ |
| ORM | Doctrine ORM + StofDoctrineExtensionsBundle (Gedmo) |
| メッセージキュー | Symfony Messenger (Doctrine Transport) |
| リアルタイム通信 | Mercure SSE (dunglas/mercure) |
| AI | Symfony AI (MCP, Agent, Store, マルチプラットフォーム対応) |
| 認証 | WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt) |
| ファイルストレージ | League Flysystem (Local / OSS / S3) |
| フロントエンド | Twig + jQuery + SunUI コンポーネントライブラリ |
| ツールライブラリ | PHPSpreadsheet, Imagine, Predis, Ramsey UUID |
システム要件
- PHP >= 8.2
- ext-ctype, ext-iconv
- PostgreSQL >= 14
- Composer >= 2.5
クイックスタート
インストール
bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-app環境設定
bash
cp .env.example .env
# 编辑 .env 配置数据库连接与 Mercure JWT 密钥データベースの起動
PostgreSQL は個別にインストールして実行する必要があります:
bash
# macOS
brew install postgresql@14
brew services start postgresql@14
createdb app
# Ubuntu/Debian
sudo apt install postgresql-14
sudo systemctl start postgresql
sudo -u postgres createdb appMercure Hub は FrankenPHP に内蔵されており、別途起動は不要です。
アクセス
- アプリケーション: http://localhost:8000
- 管理画面: http://localhost:8000/admin
ディレクトリ構造
config/
├── bundles.php # 已启用的 Symfony Bundle 列表
├── packages/ # 各 Bundle 配置
└── services.yaml
src/
├── Annotation/ # 自定义注解:Ef.php, EfGroup.php
├── Command/ # 16 个 Console 命令
├── Controller/ # Admin, Api, Security 控制器
├── Entity/ # Doctrine 实体 + CommonTrait
│ ├── Organization/ # Department, Position 等
│ ├── Platform/ # 平台相关实体
│ ├── Security/ # User, Role, Permission
│ ├── Storage/ # 文件存储实体
│ └── System/ # 系统配置实体
├── Form/ # 表单类型
├── Message/ # 异步消息
├── MessageHandler/ # 消息处理器
├── Repository/ # Doctrine Repository
├── Security/ # WebAuthn, JWT, Voter
├── Service/ # AI, Calendar, Security, Storage, Task, View 等
└── Twig/ # TwigExtension
Caddyfile # FrankenPHP 配置(含 Mercure Hub、压缩、缓存)有効化されているコア Bundle
| Bundle | 役割 |
|---|---|
| FrameworkBundle | Symfony コア |
| DoctrineBundle + MigrationsBundle | データベース ORM とマイグレーション |
| SecurityBundle | セキュリティ認証と認可 |
| TwigBundle + TwigExtraBundle | テンプレートエンジン |
| MonologBundle | ログ |
| StofDoctrineExtensionsBundle | Gedmo 拡張(ツリー、タイムスタンプ、ソフトデリートなど) |
| NelmioCorsBundle | CORS サポート |
| WebauthnBundle | WebAuthn パスワードレス認証 |
| MercureBundle | リアルタイムメッセージプッシュ |
| AiBundle | Symfony AI 統合 |
| FlysystemBundle | ファイルストレージ抽象 |
| HautelookAliceBundle | テストデータフィクスチャ |
コアコンセプト
動的モデル
@Ef アノテーションで業務フィールドをマークし、PHP 8 Attributes と組み合わせてモデルを定義することで、以下を自動的に完了します:
- データベースマイグレーションの生成
- CRUD 画面のレンダリング
- データ検証ルール
- 権限チェック
php
use App\Annotation\Ef;
class Department
{
#[Ef(displayName: '部门名称', required: true)]
private string $name;
#[Ef(displayName: '部门编码', searchable: true)]
private string $code;
}参考: 動的モデル
エンティティ共通 Trait
すべてのエンティティは CommonTrait を通じて以下の機能を組み合わせます:
CommonTrait
├── BlameableTrait # 创建人/更新人自动记录
├── TimestampableTrait # 创建时间/更新时间自动记录
├── SoftDeleteTrait # 软删除
└── IdTrait # 自增主键組織構造
多階層の部門ツリー(Nested Set)、従業員管理、職位体系をサポート:
- 無制限階層の部門ツリー(Gedmo NestedTree)
- 複数会社と複数部門への帰属
- 職位と職級体系
- 一括ユーザーインポート/エクスポート(PHPSpreadsheet)
参考: 組織構造
セキュリティ体系
- WebAuthn パスワードレスログイン(Passkey、セキュリティキー、生体認証対応)
- 三員分立(システム管理者、セキュリティ管理者、監査管理者)
- パスワード複雑度と有効期限ポリシー
- 全チェーン操作監査
参考: WebAuthn 認証