Skip to content

필사 모드: モダン PHP 2026 — PHP 8.4 / Laravel 12 / Symfony 7.3 / FrankenPHP / Octane / Livewire / Filament 徹底ガイド

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

1. 2026 年の PHP — 「死んだ」と言った人たちへ(もう一度)

毎年「PHP は死んだ」という記事がトレンドに上がる。そして毎年、その記事を配信しているサーバーは PHP で動いている。Wikipedia、Slack の一部、Facebook の PHP 派生 Hack、WordPress が支える Web の約 43%、Shopify のチェックアウトの一部、そして日本と韓国の無数のコマースバックオフィスがそうだ。

2026 年の PHP は、惰性だけで生き残った言語ではない。**言語そのものがふたたび魅力的になった。**

- **PHP 8.4 (2024.11)** — Property Hooks(一級の getter/setter)、非対称可視性、Lazy Objects、`new MyClass()->method()` チェーン

- **Laravel 12 (2025.2)** — Reverb WebSocket サーバ、Folio ファイルベースルーティング、Volt 単一ファイルコンポーネント、Pennant フィーチャーフラグ

- **Symfony 7.3** — Doctrine 3、Mercure プッシュ、AssetMapper、新しい Scheduler

- **FrankenPHP** — Caddy ベースの単一バイナリ。ワーカーモード + Early Hints + 並行性

- **Octane** — Laravel を long-running プロセスに(Swoole / RoadRunner / FrankenPHP アダプタ)

- **Livewire 3 / Inertia.js** — 「Vue / React なしでリアクティブ」

- **Filament 3 / 4** — Laravel 管理画面の事実上の標準

- **Pest 3 / PHPUnit 11 / PHPStan 2 / Rector** — テスト、静的解析、自動マイグレーション

この記事の立場は明確だ。**2026 年に PHP を選ぶことは「過去を引きずる」選択ではない。フルスタックの生産性を最短で得る合理的な選択だ。** 日本と韓国のレガシーモダナイゼーションでも、新規プロジェクトでも同じである。

> この記事のすべてのコードは PHP 8.4 と Laravel 12 / Symfony 7.3 を前提とする。8.3 との互換性が問題になる箇所は別途明示する。

2. PHP 8.4 (2024.11) — Property Hooks、非対称可視性、Lazy Objects

PHP 8.4 は 2024 年 11 月 21 日に GA となった。「言語としては終わっている」という批判をもっとも早くひっくり返したリリースだ。

2.1 Property Hooks — getter/setter が一級市民に

Java、C#、Kotlin が何十年も前から持っていた機能が、ついに PHP に来た。

class User

{

public string $firstName;

public string $lastName;

// 仮想プロパティ — アクセス時に計算

public string $fullName {

get => "{$this->firstName} {$this->lastName}";

set(string $value) {

[$this->firstName, $this->lastName] = explode(' ', $value, 2);

}

}

}

$u = new User();

$u->fullName = 'Ada Lovelace';

echo $u->fullName; // "Ada Lovelace"

echo $u->firstName; // "Ada"

これまでは `__get` / `__set` マジックメソッドで回避してきたが、IDE 補完も効かず、静的解析も難しかった。これからは本物のプロパティに見え、PHPStan / Psalm も本物のプロパティとして推論する。

2.2 非対称可視性(Asymmetric Visibility)

「読み取りは public、書き込みは private」が一行で書ける。

class Account

{

// 読み取りは public + 書き込みは private

public private(set) int $balance = 0;

public function deposit(int $amount): void {

$this->balance += $amount;

}

}

$a = new Account();

$a->deposit(100);

echo $a->balance; // 100 OK

$a->balance = 9999; // Error: 外部から代入不可

Java の「final フィールド + getter」のボイラープレートが丸ごと消える。

2.3 Lazy Objects(遅延オブジェクト)

ORM や DI コンテナがもっとも欲しがっていた機能だ。空の「殻」だけ用意し、初回アクセス時に初期化する。

$reflector = new ReflectionClass(HeavyService::class);

$lazy = $reflector->newLazyGhost(function (HeavyService $instance): void {

$instance->__construct(/* expensive deps */);

});

// $lazy は未初期化

$lazy->doSomething(); // この瞬間に初期化コールバックが走る

Doctrine、Symfony DI、Laravel コンテナはみな、8.4 の Lazy Objects 上で独自のプロキシコードを削っている最中だ。

2.4 `new MyClass()->method()` — 括弧が一組減る

// PHP 8.3 まで

$dt = (new DateTime('now'))->format('Y-m-d');

// PHP 8.4

$dt = new DateTime('now')->format('Y-m-d');

小さな変化だが、コードが目に見えて読みやすくなる。

2.5 新しい配列関数と HTML5 パーサ

array_find($users, fn($u) => $u->isAdmin());

array_find_key($users, fn($u) => $u->name === 'Ada');

array_any($users, fn($u) => $u->isActive());

array_all($users, fn($u) => $u->isVerified());

$dom = Dom\HTMLDocument::createFromString('<p>Hello</p>');

PHP 8.4 は、8.0(JIT / Union types)、8.1(enum / readonly)、8.2(readonly class)、8.3(typed const)に続く、もう一つの大きな飛躍だ。

3. Laravel 12 (2025.2) — Reverb / Folio / Volt / Pennant

Laravel 12 は 2025 年 2 月 24 日にリリースされた。**「フレームワークにこれ以上何を足せるのか」に対する答え**だ。

3.1 Reverb — Laravel の一級 WebSocket サーバ

Pusher と Soketi を経て、Laravel はついに自前の WebSocket サーバ Reverb を持った。ReactPHP ベースで、FrankenPHP / Octane と組み合わせれば 1 ホストで数万同時接続をさばける。

composer require laravel/reverb

php artisan reverb:install

php artisan reverb:start

// app/Events/MessageSent.php

class MessageSent implements ShouldBroadcast

{

public function __construct(public Message $message) {}

public function broadcastOn(): array {

return [new PrivateChannel("chat.{$this->message->room_id}")];

}

}

フロントは Laravel Echo で 1 行。

Echo.private(`chat.${roomId}`).listen('MessageSent', (e) => {

appendMessage(e.message);

});

3.2 Folio — ファイルシステムベースのルーティング

Next.js / Nuxt 風のファイルルーティングが Laravel に来た。`resources/views/pages/` 配下のファイルがそのままルートになる。

resources/views/pages/

├── index.blade.php → /

├── dashboard.blade.php → /dashboard

└── users/

├── index.blade.php → /users

└── [id].blade.php → /users/{id}

// resources/views/pages/users/[id].blade.php

<?php

use function Laravel\Folio\name;

use App\Models\User;

name('users.show');

$user = User::findOrFail($id);

?>

`web.php` を触らずにページが増えていく。小規模なサイドプロジェクトや管理画面に最適だ。

3.3 Volt — Livewire 3 単一ファイルコンポーネント

Vue SFC によく似た Livewire。PHP ロジックと Blade テンプレートが 1 ファイルに同居する。

<?php

use function Livewire\Volt\{state, computed};

state(['count' => 0]);

$increment = fn () => $this->count++;

?>

Folio + Volt の組み合わせは「Laravel で 1 画面をもっとも早く作る方法」の新しい答えだ。

3.4 Pennant — 一級フィーチャーフラグ

use Laravel\Pennant\Feature;

Feature::define('new-checkout', fn (User $user) => $user->isInternal());

if (Feature::active('new-checkout')) {

return view('checkout.v2');

}

LaunchDarkly のような SaaS なしで、DB ベースのフィーチャーフラグを 1 週間で導入できる。

3.5 その他 — 新スターターキット、Workflows、Vite 6

Laravel 12 は **React / Vue / Livewire 別の公式スターターキット**、Workflows(公式ワークフローエンジン)、Vite 6、Tailwind 4 を標準で同梱する。`laravel new` ひとつで認証・管理画面・課金まで到達できる時代になった。

4. Symfony 7.3 — Doctrine 3 + Mercure + AssetMapper

Symfony は「Laravel に見えないようにする」もう一つの正解だ。より明示的で、よりコンポーネント志向で、「エンタープライズ PHP の事実上の標準」である。

4.1 7.x ラインアップ

- **7.0** (2023.11) — PHP 8.2+ を要求

- **7.1** (2024.5) — 新しい Asset Mapper 統合

- **7.2** (2024.11) — JSON Streamer、Profiler 改善

- **7.3** (2025.5) — Doctrine 3 の安定サポート、Mercure 一級アダプタ

4.2 Doctrine ORM 3 + DBAL 4

#[ORM\Entity]

class Product

{

#[ORM\Id, ORM\Column, ORM\GeneratedValue]

public int $id;

#[ORM\Column(length: 200)]

public string $name;

#[ORM\Column(type: 'decimal', precision: 10, scale: 2)]

public string $price;

}

Doctrine 3 は enum、readonly、非対称可視性を一級でサポートする。PHP 8.4 の Property Hooks とも自然に噛み合う。

4.3 Mercure — サーバから ブラウザへのプッシュ

WebSocket がオーバースペックなときは、Server-Sent Events ベースの Mercure ハブを使う。Symfony 7 では一級統合だ。

public function publish(HubInterface $hub): Response {

$hub->publish(new Update(

'/orders/42',

json_encode(['status' => 'shipped']),

));

return new Response();

}

4.4 AssetMapper — 「Node 不要のフロント」

php bin/console importmap:require bootstrap

Webpack / Vite を入れずに importmap + ブラウザの ES Modules で SPA 風のフロントを作れる。管理画面や社内ツールには特によく合う。

4.5 Scheduler と Messenger

#[AsSchedule('default')]

class MainSchedule implements ScheduleProviderInterface

{

public function getSchedule(): Schedule {

return (new Schedule())->add(

RecurringMessage::cron('0 3 * * *', new DailyReport()),

);

}

}

cron + キュー + ワークフローが 1 コンポーネントに統合された。Laravel の `schedule:run` + Horizon に対応する。

5. FrankenPHP — Caddy ベースの単一バイナリ PHP ランタイム

FrankenPHP は 2022 年に Kévin Dunglas(API Platform / Mercure の作者)が始めたプロジェクトで、**Caddy Web サーバの中に PHP インタプリタを内蔵**した Go バイナリだ。2024 年に 1.0 GA、2026 年現在 Laravel と Symfony の双方で公式サポートされている。

5.1 何がインパクトなのか

従来の PHP スタック:

nginx → php-fpm → PHP

3 プロセス、3 つの設定ファイル

FrankenPHP:

単一の frankenphp バイナリ → PHP

HTTPS、HTTP/3、メトリクス、静的ファイル、PHP 実行すべてが 1 プロセス

5.2 ワーカーモード — long-running PHP

最大の特徴は**ワーカーモード**だ。リクエストごとに PHP を起動するのではなく、起動済みのワーカーがリクエストループを回す。

// public/worker.php

require __DIR__ . '/../vendor/autoload.php';

$kernel = (require __DIR__ . '/../bootstrap/app.php')

->handleRequest(Request::capture());

$handler = static function () use ($kernel) {

// リクエストごとのハンドラ — Octane が内部で呼ぶ

return $kernel->handle(Request::capture());

};

\frankenphp_handle_request($handler);

Caddyfile

{

frankenphp {

worker ./public/worker.php

}

}

example.com {

root * public/

php_server

}

リクエストごとのブート時間が消えることで、Laravel の平均レスポンスタイムが 50〜80% 短縮される事例は珍しくない。

5.3 Early Hints (103) — 本当に速くなるトリック

// 本文の生成前に 103 Early Hints で CSS / JS のプリロードを指示

return response()

->withHeaders(['Link' => '</css/app.css>; rel=preload; as=style'])

->earlyHints();

ブラウザは本文が届く前から CSS を取りに行く。LCP が 200〜400ms 改善するのが標準だ。

5.4 埋め込みモード — 単一バイナリデプロイ

`frankenphp build` 一発で、PHP インタプリタ + アプリコード + Caddy が 1 バイナリになる。`scp` 1 回でデプロイ完了。Docker すら不要だ。

frankenphp build --output ./myapp

scp ./myapp user@server:/srv/myapp

ssh user@server './myapp run'

6. Laravel Octane — Swoole / RoadRunner / FrankenPHP

Octane は「Laravel を long-running プロセスとして起動する公式アダプタ」だ。PHP ワーカープールが 1 度の起動でメモリに常駐し、リクエストごとにコンテナを再利用する。

6.1 3 つのバックエンド

| バックエンド | ベース | 強み | 注意点 |

|---|---|---|---|

| **Swoole** | C 拡張 | コルーチン、最高性能 | メモリリークのデバッグが厄介 |

| **RoadRunner** | Go | 安定性、明示的なワーカーモデル | コルーチンなし |

| **FrankenPHP** | Caddy/Go | 単一バイナリ、Early Hints | もっとも新しい |

composer require laravel/octane

php artisan octane:install --server=frankenphp

php artisan octane:start --workers=8

6.2 Octane が変える 2 つのこと

1. **ブート時間** — Laravel の平均ブートが 80ms なら、ワーカー 1 回起動後は 0ms。

2. **シングルトンのライフタイム** — コンテナに登録したシングルトンがリクエスト間で生き残る。**これが落とし穴だ。** リクエストの状態がシングルトンに紛れ込むと、次のリクエストに漏れて事故になる。

// 危険 — ユーザリクエストオブジェクトをシングルトンに固定するな

$this->app->singleton('user', fn () => Auth::user()); // BAD

// 安全 — リクエストごとに作り直す

$this->app->scoped('user', fn () => Auth::user()); // GOOD

Octane は `php artisan octane:reload` でワーカーを無停止再起動する。コードデプロイ後の 1 行で済む。

7. RoadRunner + Spiral — Go ベースのランナーとフレームワーク

RoadRunner は Spiral Scout が作った **Go ベースの PHP アプリケーションサーバ**だ。2018 年にスタートし、2026 年現在 v2025 ラインが本番安定運用されている。

7.1 RoadRunner の差別化点

- ワーカープールは Go が管理、リクエストは gRPC で PHP ワーカーに分配

- HTTP、gRPC、キュー(Beanstalk / SQS / AMQP / NATS)、ジョブスケジューラ、KV が 1 プロセス

- メトリクスは OpenTelemetry で一級エクスポート

.rr.yaml

version: '3'

server:

command: 'php worker.php'

http:

address: '0.0.0.0:8080'

pool:

num_workers: 8

jobs:

pipelines:

high:

driver: memory

config:

priority: 1

7.2 Spiral — PHP の「Go スタイル」フレームワーク

Spiral は RoadRunner を作ったチームの自前フレームワークだ。Laravel / Symfony と違い、最初から long-running PHP を前提に設計されている。

- DI は PSR-11

- ORM は Cycle ORM(DataMapper、Doctrine の代替)

- ルーティングは属性ベース

- キュー、gRPC サービス、ワークフロー(Temporal と一級統合)が標準同梱

#[Route(route: '/users/<id:int>', methods: 'GET')]

public function show(int $id, ORM $orm): array {

return $orm->getRepository(User::class)->findByPK($id)->toArray();

}

「Laravel はマジック過多、Symfony は重すぎる」という層に刺さる。

7.3 Hyperf — 中国発のコルーチンフレームワーク

Hyperf は Swoole コルーチンベースの非同期フレームワークだ。中国本土では Laravel を上回る認知度を持ち、日本・韓国の一部のゲームサーババックエンドでも採用されている。

#[AutoController]

class UserController {

#[GetMapping(path: '/users/{id}')]

public function show(int $id): array {

return User::find($id)->toArray();

}

}

コルーチンベースなので、Node.js の `Promise.all` パターンに近い書き味が自然だ。

8. Livewire 3 + Inertia.js — Laravel リアクティブ / SPA

「React / Vue なしで SPA のような UX」を実現する 2 つのアプローチ。

8.1 Livewire 3 — サーバーコンポーネントの PHP 版

Livewire 3 は 2023 年に大幅に書き直された。Alpine.js と深く統合し、React Server Components と似た動きをする。

// app/Livewire/Counter.php

class Counter extends Component

{

public int $count = 0;

public function increment(): void {

$this->count++;

}

public function render(): View {

return view('livewire.counter');

}

}

{{-- resources/views/livewire/counter.blade.php --}}

サーバがインタラクションごとに HTML 片を返す。ネットワークは少し使うが、**JS コードはほぼゼロ**だ。管理画面や社内ツールには最強の選択肢である。

8.2 Inertia.js — Laravel / Rails 上の SPA

Inertia は「SPA のためのフルスタックアダプタ」だ。バックエンド(Laravel / Rails / Django)のコントローラが Vue / React / Svelte コンポーネントと props を返す。

// コントローラ

public function index() {

return Inertia::render('Users/Index', [

'users' => User::paginate(20),

]);

}

<!-- resources/js/Pages/Users/Index.vue -->

defineProps({ users: Object });

REST API を作る必要がない。ルーティング、認証、認可はバックエンドのまま。

8.3 どう選ぶか

| 状況 | おすすめ |

|---|---|

| 管理画面、社内ツール、小規模 SaaS | **Livewire 3**(または Filament) |

| 本気の SPA、フルインタラクティブ UI | **Inertia.js + Vue / React** |

| 静的サイト + 少しのインタラクション | **Alpine.js のみ** |

9. Filament — Laravel 管理画面の事実上の標準

Filament は Dan Harrin が作った「Laravel 管理画面ジェネレータ」だ。2022 年の v2 以降爆発的に成長し、2024 年に v3、2025 年に v4 と続いた。**2026 年の Laravel 管理画面は事実上 Filament だ。**

9.1 何を提供するか

- リソース(CRUD)ジェネレータ — `php artisan make:filament-resource User`

- テーブル、フォーム、ウィジェット、通知がコンポーネント

- マルチテナンシー(サブドメイン、パスプリフィクス)

- Role / Permission(Spatie パッケージと統合)

- Livewire 3 の上で動作

class UserResource extends Resource

{

protected static ?string $model = User::class;

public static function form(Form $form): Form {

return $form->schema([

TextInput::make('name')->required(),

TextInput::make('email')->email()->required(),

Select::make('role')->options([

'admin' => 'Admin',

'user' => 'User',

]),

]);

}

public static function table(Table $table): Table {

return $table

->columns([

TextColumn::make('name')->searchable(),

TextColumn::make('email')->copyable(),

TextColumn::make('created_at')->dateTime(),

])

->filters([

SelectFilter::make('role'),

])

->actions([

EditAction::make(),

DeleteAction::make(),

]);

}

}

20 行未満のコードで「検索 + フィルタ + ページネーション + アクション」を備えた管理画面ができる。Django Admin としばしば比較されるが、**Filament の方がデザインの磨きとカスタマイズの自由度で上回る**。

9.2 管理画面ではなく「アプリビルダー」として

Filament はもはや管理画面専用ではない。**Panels** という概念で、顧客向けダッシュボード、パートナーポータル、社内オペレーションツールを 1 つのコードベースから作れる。

| Panel | 対象 | URL |

|---|---|---|

| `admin` | 社内管理者 | /admin |

| `partner` | B2B パートナー | /partner |

| `customer` | エンドユーザ | /app |

10. Statamic — フラットファイル CMS

Statamic は「WordPress に飽きた Laravel 民」の答えだ。コンテンツを DB ではなく **Markdown + YAML ファイル**に保存する。

10.1 何が良いか

- ファイル = コンテンツ → Git に入る → コードレビューがコンテンツレビュー

- Laravel ベース → パッケージ、キュー、認証がそのまま使える

- 標準同梱の Control Panel が綺麗

- Antlers テンプレートエンジン + Blade 両対応

- ヘッドレスとして GraphQL / REST へエクスポート可能

content/collections/articles/2026-05-16.hello.md

id: a1b2c3

title: 'Hello, Statamic'

author: youngju

本文の Markdown

Hello, world.

10.2 向いているところ

- マーケティングサイト、ブログ、ドキュメントサイト

- コンテンツ更新頻度が低く、デザインの自由度を高めたい場所

- Git ベースのワークフロー(PR で記事レビュー)を採用したいチーム

WordPress との違いは明確だ。Statamic は **開発者寄り、コードファースト**、WordPress は **編集者寄り、UI ファースト**。

11. ツールチェイン — Pest / PHPUnit 11 / PHPStan 2 / Psalm / Rector

11.1 Pest 3 — 表現力の高いテストランナー

Pest は PHPUnit の上に「Jest 風 DSL」を乗せる。2024 年に 3.0、2025 年に 4.x。

// tests/Feature/UserTest.php

use App\Models\User;

it('creates a user', function () {

$user = User::factory()->create(['name' => 'Ada']);

expect($user->name)->toBe('Ada');

});

test('admin can list users')

->actingAs(User::factory()->admin()->create())

->get('/admin/users')

->assertOk();

ブラウザテストも一級になった(`pest --browser`)。Pest 4 からは Playwright の上で動く。

11.2 PHPUnit 11

依然として業界標準。Pest も内部では PHPUnit の上で動く。

final class UserTest extends TestCase

{

public function testItCreatesUser(): void {

$user = User::factory()->create();

$this->assertNotNull($user->id);

}

}

11.x では `#[Test]`、`#[DataProvider]` などの属性形式が既定スタイルになった。

11.3 PHPStan 2 vs Psalm

| 項目 | PHPStan 2 | Psalm |

|---|---|---|

| メンテナ | Ondřej Mirtes | Vimeo(現在はコミュニティ) |

| 強み | 高速解析、巨大エコシステム | より厳密な推論、taint 解析 |

| Laravel 適合度 | 非常に高い(Larastan) | 中程度 |

| 2026 年の勢い | 強い | やや鈍化 |

新規 Laravel / Symfony プロジェクトの大半は **PHPStan 2 + Larastan** で始める。

composer require --dev phpstan/phpstan larastan/larastan

vendor/bin/phpstan analyse --level=8 app/

レベル 8(最大)でクリーンになれば「型安全な PHP」を名乗れる。

11.4 Rector — 自動リファクタリング

Rector は「AST ベースの自動マイグレーションツール」だ。PHP 7 → 8、Laravel 10 → 11 → 12、Symfony 6 → 7 のようなメジャーアップグレードを一発でこなす。

// rector.php

use Rector\Config\RectorConfig;

use Rector\Set\ValueObject\LevelSetList;

return RectorConfig::configure()

->withPaths([__DIR__ . '/app'])

->withPhpSets(php84: true)

->withSets([LevelSetList::UP_TO_PHP_84]);

vendor/bin/rector process

「リファクタリングが怖くて上げられない PHP 5 / 7 レガシー」に対する最大の処方箋だ。

12. ホスティング — Forge / Vapor / Cloud

Laravel 陣営は「言語 → フレームワーク → ツールチェイン → ホスティング」までの垂直統合を完成させた。

12.1 Forge — VPS プロビジョニング SaaS

- 2014 年ローンチ、もっとも長い歴史を持つ Laravel ホスティングツール

- DigitalOcean / AWS / Linode / Vultr / Hetzner の VPS を自動構成

- nginx + PHP-FPM + Redis + Supervisor + Let's Encrypt が自動セットアップ

- 2025 年から FrankenPHP の一級サポート

12.2 Vapor — サーバレス(AWS Lambda)

- Laravel を AWS Lambda 上で動かす(PHP は Bref 経由)

- コールドスタートは平均 300〜500ms

- キューは SQS、DB は RDS Aurora、キャッシュは Redis(ElastiCache)

- 「トラフィックがスパイクするサービス」によく合う

12.3 Cloud — Laravel 11 / 12 時代のマネージドホスティング

Laravel Cloud は 2024 年に発表、2025 年に GA となった「Vercel スタイル」のマネージドホスティングだ。

- git push → 自動ビルド + デプロイ + ドメイン + SSL

- FrankenPHP ワーカーモードを既定ランタイムに採用

- Postgres / Redis / キュー / ジョブスケジューラを 1 ダッシュボードで

- リージョン: 米国 / EU / アジア(シンガポール)、追加中

Vercel が Next.js を一級ホストするように、Cloud は Laravel を一級ホストする。

| 状況 | おすすめ |

|---|---|

| トラフィックがほぼ一定、コスト重視 | Forge + VPS |

| スパイクが強い、AWS と深く統合 | Vapor |

| 「何も考えずに上げたい」 | Cloud |

13. 日本 / 韓国 — ピクシブ、Cookpad、メルカリ、ウアハン兄弟、カカオ

「実在の企業が PHP をどこで使っているか」を、日本と韓国の事例で見てみよう。

13.1 日本

- **ピクシブ(pixiv)** — 日本のイラスト SNS。創業時から PHP。社内ツールや本体の一部は今も PHP が稼働している。2024 年の PHP 8.3 マイグレーション、2025 年の PHP 8.4 マイグレーション事例が PHPerKaigi で発表された。

- **Cookpad** — Ruby on Rails の代表例として知られるが、買収した子会社や実験的プロダクトには PHP が残っている。

- **メルカリ** — 初代モノリスは PHP(Symfony)。マイクロサービス化以降は Go 中心だが、一部のバックオフィスと補助システムは PHP のまま。

- **クックパッド株式会社、サイバーエージェント、GMO ペパボ、ピクスタ** — 多様な PHP 事例が PHPerKaigi や PHP Conference Japan で毎年発表される。

- 日本は韓国よりも **PHP コミュニティが固く、カンファレンスが活発**だ。PHPerKaigi と PHP Conference Japan は毎年数百人が集まる。

13.2 韓国

- **ウアハン兄弟(Baemin)** — 創業初期のバックオフィスは PHP、一部の管理画面・社内ツールは今も PHP。新規は Java / Kotlin だが、社内管理画面ビルダーとして Filament を検証したという発表が INFCON 2025 にあった。

- **カカオ** — 一部の広告・マーケティング LP、社内ツール。カカオゲームズのバックオフィスにも PHP がある。

- **GS Shop、E-Mart Mall、11번가**など、韓国型コマースのバックオフィスはいまも PHP / CodeIgniter / CakePHP の上で動いている部分が多い。

- 新規スタートアップの PHP 採用は減ったが、**エージェンシー / マーケティング / CMS 市場では圧倒的**だ。

13.3 共通するパターン

- 「新規は Go / Kotlin / TypeScript、管理画面・CMS・マーケ・レガシーは PHP」

- 本当に死ぬのは PHP ではなく **レガシーフレームワーク(CodeIgniter 3、CakePHP 2、Symfony 2 / 3)** の方

- PHP 8.4 + Laravel 12 + FrankenPHP は **このレガシーをモダナイズする最短経路**

14. 誰が PHP を選ぶべきか — 2026 年の意思決定ガイド

「言語そのもの」ではなく「状況」が答えを決める。

14.1 PHP が正解の場合

- **一人〜小規模チーム**で SaaS を素早く立ち上げたい → Laravel 12 + Filament + Forge

- **社内管理画面、運用ツール、バックオフィス** → Filament 単体

- **マーケサイト + ブログ** → Statamic

- **PHP レガシーのモダナイゼーション** → PHP 8.4 + Rector + Pest + Octane

- **JS を最小化したい UI** → Livewire 3(または Inertia)

- **WordPress の代替が欲しい** → Statamic またはヘッドレス + Laravel API

14.2 PHP を選ぶべきでない場合

- **超低レイテンシ(1ms 未満)、十万単位の同時接続のリアルタイム系** → Go / Rust / Elixir

- **データサイエンス、ML 学習** → Python

- **モバイルネイティブ、ゲームクライアント** → Swift / Kotlin / C++ / C#

- **AWS Lambda のコールドスタートが致命的な場所** → Node.js / Rust

14.3 「モダン PHP」スタック — 2026 年のフルスタック SaaS 推奨

PHP 8.4

Laravel 12

FrankenPHP(ワーカーモード)+ Octane

Livewire 3 + Volt + Filament 4

Postgres 16 + Redis 7

Pest 3 + PHPStan 2(レベル 8)+ Rector

Laravel Cloud(または Forge + Hetzner)

このスタックなら「個人開発者が 1 ヶ月で課金まで備えた SaaS を立ち上げる」という言い回しは誇張ではない。

14.4 最後に一言

2026 年の PHP は、2016 年の PHP が浴びていた揶揄を、もう聞かない。**言語は良くなり、エコシステムは固まり、ホスティングは滑らかになった。** 日本と韓国でも「レガシーを生かす言語」と「新しいフルスタックを最速で立ち上げる言語」の両方として定着した。

「PHP は死なない」というジョークの次の行は、こう書き直されるべきだ。**「PHP は死なないどころか、ふたたび魅力的だ。」**

参考 / References

- PHP — [PHP 8.4 Release Announcement](https://www.php.net/releases/8.4/en.php)

- PHP RFC — [Property Hooks](https://wiki.php.net/rfc/property-hooks)

- PHP RFC — [Asymmetric Visibility v2](https://wiki.php.net/rfc/asymmetric-visibility-v2)

- PHP RFC — [Lazy Objects](https://wiki.php.net/rfc/lazy-objects)

- Laravel — [Laravel 12 Release Notes](https://laravel.com/docs/12.x/releases)

- Laravel — [Reverb (WebSockets)](https://laravel.com/docs/12.x/reverb)

- Laravel — [Folio (Page-based routing)](https://laravel.com/docs/12.x/folio)

- Laravel — [Volt (Single-file Livewire)](https://livewire.laravel.com/docs/volt)

- Laravel — [Pennant (Feature flags)](https://laravel.com/docs/12.x/pennant)

- Symfony — [Symfony 7.3 Release](https://symfony.com/blog/category/releases)

- Symfony — [AssetMapper Component](https://symfony.com/doc/current/frontend/asset_mapper.html)

- Doctrine — [Doctrine ORM 3](https://www.doctrine-project.org/)

- Mercure — [mercure.rocks](https://mercure.rocks/)

- FrankenPHP — [frankenphp.dev](https://frankenphp.dev/)

- FrankenPHP — [Worker mode docs](https://frankenphp.dev/docs/worker/)

- Caddy — [caddyserver.com](https://caddyserver.com/)

- Laravel Octane — [Octane docs](https://laravel.com/docs/12.x/octane)

- RoadRunner — [roadrunner.dev](https://roadrunner.dev/)

- Spiral — [spiral.dev](https://spiral.dev/)

- Hyperf — [hyperf.io](https://hyperf.io/)

- Yii — [yiiframework.com](https://www.yiiframework.com/)

- Phalcon — [phalcon.io](https://phalcon.io/)

- Livewire — [livewire.laravel.com](https://livewire.laravel.com/)

- Inertia.js — [inertiajs.com](https://inertiajs.com/)

- Filament — [filamentphp.com](https://filamentphp.com/)

- Statamic — [statamic.com](https://statamic.com/)

- Pest — [pestphp.com](https://pestphp.com/)

- PHPUnit — [phpunit.de](https://phpunit.de/)

- PHPStan — [phpstan.org](https://phpstan.org/)

- Larastan — [GitHub larastan/larastan](https://github.com/larastan/larastan)

- Psalm — [psalm.dev](https://psalm.dev/)

- Rector — [getrector.com](https://getrector.com/)

- Laravel Sail — [Sail docs](https://laravel.com/docs/12.x/sail)

- Laravel Forge — [forge.laravel.com](https://forge.laravel.com/)

- Laravel Vapor — [vapor.laravel.com](https://vapor.laravel.com/)

- Laravel Cloud — [cloud.laravel.com](https://cloud.laravel.com/)

- AdminerEvo — [adminerevo.org](https://www.adminerevo.org/)

- PHPerKaigi — [phperkaigi.jp](https://phperkaigi.jp/)

- PHP Conference Japan — [phpcon.php.gr.jp](https://phpcon.php.gr.jp/)

- pixiv inside (PHP migration cases) — [inside.pixiv.blog](https://inside.pixiv.blog/)

- ウアハン兄弟 技術ブログ — [techblog.woowahan.com](https://techblog.woowahan.com/)

- カカオ Tech — [tech.kakao.com](https://tech.kakao.com/)

- Bref (PHP on AWS Lambda) — [bref.sh](https://bref.sh/)

- INFCON 2025 アーカイブ — [infcon.kr](https://infcon.kr/)

현재 단락 (1/450)

毎年「PHP は死んだ」という記事がトレンドに上がる。そして毎年、その記事を配信しているサーバーは PHP で動いている。Wikipedia、Slack の一部、Facebook の PHP 派生 H...

작성 글자: 0원문 글자: 18,817작성 단락: 0/450