Skip to content

はじめに

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+
ORMDoctrine ORM + StofDoctrineExtensionsBundle (Gedmo)
メッセージキューSymfony Messenger (Doctrine Transport)
リアルタイム通信Mercure SSE (dunglas/mercure)
AISymfony 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 app

Mercure Hub は FrankenPHP に内蔵されており、別途起動は不要です。

アクセス

ディレクトリ構造

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役割
FrameworkBundleSymfony コア
DoctrineBundle + MigrationsBundleデータベース ORM とマイグレーション
SecurityBundleセキュリティ認証と認可
TwigBundle + TwigExtraBundleテンプレートエンジン
MonologBundleログ
StofDoctrineExtensionsBundleGedmo 拡張(ツリー、タイムスタンプ、ソフトデリートなど)
NelmioCorsBundleCORS サポート
WebauthnBundleWebAuthn パスワードレス認証
MercureBundleリアルタイムメッセージプッシュ
AiBundleSymfony 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 認証

リソース

MIT ライセンスでオープンソース | Copyright © 2026 Doggy