この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: Zend Framework (PHP フレームワーク)
SEOタイトル: Zend Framework → Laminas Project 完全解説(Mezzio/Doctrine 統合/現状)

この記事の要点
  • Zend Framework は 2019 年 Linux Foundation に寄付され Laminas Project へ改名
  • Zend Technologies(Zeev Suraski/Andi Gutmans)が PHP 共同開発者として有名
  • 後継: Laminas Components(旧 ZF コンポーネント)+ Mezzio(旧 Zend Expressive、PSR-7/PSR-15 ベース)
  • Doctrine ORM や PSR 系標準と統合されたエンタープライズ向け構成
  • 現状は Symfony / Laravel が主流、Laminas は既存資産の保守+一部新規案件で利用

Zend Framework とは

Zend Framework (ZF) は、Zend Technologies が主導していた PHP のオープンソースフルスタックフレームワークで、2006 年に ZF1、2012 年に ZF2、2016 年に ZF3 がリリースされました。エンタープライズ品質を掲げ、コンポーネント単位での利用が可能な点が特徴です。

Laminas Project への改名(2019)

2019 年、Zend Technologies は ZF と関連 OSS プロジェクトをすべて Linux Foundation 傘下の独立プロジェクト「Laminas Project」に寄付しました。これにより名称が変わりました:

旧名称新名称(Laminas)説明
Zend FrameworkLaminas Projectプロジェクト全体
Zend Framework ComponentsLaminas Components個別コンポーネント群
Zend ExpressiveMezzioPSR-7/PSR-15 ミドルウェアフレームワーク
ApigilityLaminas API ToolsAPI 開発ツール

名前の由来とエコシステム

  • 「Zend」は PHP のコア共同開発者 Zeev Suraski + Andi Gutmans の名前合成
  • Zend Technologies は PHP 商用エコシステム(Zend Engine / Zend Server / Zend Studio)も提供
  • 2015 年に Rogue Wave Software に買収、2019 年さらに Perforce に買収
  • OSS 部分は中立な Linux Foundation の Laminas へ寄付して開発継続

Laminas Components

Laminas は70 以上のコンポーネントを提供し、単体・組み合わせで利用できます:

コンポーネント役割
laminas-mvcMVC フレームワーク本体(フルスタック)
laminas-servicemanagerDIコンテナ
laminas-eventmanagerイベント駆動アーキテクチャ
laminas-formフォーム生成 + バリデーション
laminas-validatorバリデーションロジック
laminas-filter入力フィルタ
laminas-dbDB アブストラクション (TableGateway 等)
laminas-cacheキャッシュ抽象
laminas-mailメール送受信
laminas-authentication認証

Mezzio: PSR-7/PSR-15 ミドルウェアFW

Mezzio は軽量・モダンなミドルウェアベースのフレームワーク。Slim / Symfony Messenger に近い思想です:

// composer create-project mezzio/mezzio-skeleton my-app
// → ルーター(FastRoute/Laminas Router/Aura.Router)と DI(Laminas SM/Pimple/Aura)を選択

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class HomeHandler implements RequestHandlerInterface
{
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return new \Laminas\Diactoros\Response\JsonResponse([
            'message' => 'Hello Mezzio'
        ]);
    }
}

// config/routes.php
$app->get('/', App\Handler\HomeHandler::class, 'home');

laminas-mvc(フルスタック)の典型構造

my-zf-app/
├── config/
│   ├── application.config.php       # モジュール登録
│   ├── modules.config.php
│   └── autoload/
├── module/
│   └── Application/
│       ├── src/
│       │   ├── Controller/
│       │   │   └── IndexController.php
│       │   ├── Model/
│       │   └── Module.php
│       └── view/
│           └── application/index/index.phtml
└── public/
    └── index.php
// module/Application/src/Controller/IndexController.php
namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        return new ViewModel([
            'message' => 'Hello Laminas',
        ]);
    }
}

Doctrine ORM との統合

Laminas は ORM を内包せず、Doctrine ORM と組み合わせるのが定番:

composer require doctrine/doctrine-orm-module
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
#[ORM\Table(name: 'users')]
class User
{
    #[ORM\Id, ORM\GeneratedValue, ORM\Column(type: 'integer')]
    private int $id;

    #[ORM\Column(type: 'string')]
    private string $name;
}

// 利用
$em = $serviceManager->get('doctrine.entitymanager.orm_default');
$em->persist(new User('taro'));
$em->flush();

他フレームワークとの位置づけ

FW位置づけ採用シェア (2026)
Laravel開発生産性最重視、Web/API のデファクト★★★★★
Symfonyエンタープライズ・大規模、コンポーネント単位再利用★★★★
Laminas (旧 ZF)既存資産の保守、PSR 重視のエンタープライズ★★
CakePHP規約重視、ZF より古い系譜の保守★★
CodeIgniter軽量・学習用★★
Slim / MezzioマイクロFW、API 専用に★★★

Laminas の現在の活発度

  • GitHub Organization: laminas / mezzio。コミットは継続中だが Laravel/Symfony と比べると控えめ
  • PHP 8.x 対応は順次完了、PSR 互換性は高い
  • 新規プロジェクトでの採用は減少、既存 ZF1/ZF2/ZF3 案件の保守と移行が中心
  • エンタープライズ顧客(金融・通信・公共)で根強く使われている

ZF1 → ZF2 → ZF3 → Laminas への移行

  • ZF1 → ZF2: 名前空間導入、ServiceManager、MVC 再設計。互換性なし
  • ZF2 → ZF3: 大部分互換、パフォーマンス改善、PHP 7 対応
  • ZF3 → Laminas: 名前空間置換のみZend\\Laminas\\)。公式ツール laminas-migration で自動化可能
# ZF3 → Laminas 自動移行
composer require laminas/laminas-migration
./vendor/bin/laminas-migration migrate

FAQ

Q: 今から Laminas で新規開発すべき?
A: ほぼ NO。新規は Laravel か Symfony が無難。Mezzio は軽量 API なら選択肢になります。

Q: Zend Server / Zend Studio はどうなった?
A: Perforce 傘下で商用提供継続。ただし PHP 公式パッケージ(PHP-FPM / Composer / VSCode + Intelephense)で代替可能。

Q: PHP Zend Engine と Zend Framework は別物?
A: 別物です。Zend Engine は PHP インタプリタの言語処理系本体、Zend Framework はPHP で書かれた Web フレームワークです。