php-wasm は実務で何がうれしいのか? 前回のお散歩アプリのあとで考えてみたの巻

Date:

Share post:

前回 は、WordPress Playground をきっかけに WebAssembly(WASM)と php-wasm を知り、サーバー側に PHP を用意せずに「お散歩トラッカー」を試作してみました。

ただ、「PHPをブラウザで動かせる」という技術的な興味や、実際にアプリを作ってみるところが中心で、「実務の場合に何がうれしいの?」というメリットについて触れていませんでした・・・。

ですので、今回は続きとして

「すでにPHPサーバーがある案件に、php-wasm を別用途で使えると何がうれしいのか?」

という視点で考えてみます。

さきに結論から言うと、php-wasm を本番環境の完全な代替とすることは難しそうです。実務で期待どおりに使えるのは、現状では次の2点に集約されると思います。

  • サンドボックス — 本番とは切り離した検証環境(WordPress ならテーマ/プラグインの確認程度)
  • 小さなデモ/ツールの公開 — PHP-FPM 用サーバーを増やさず、静的配信+ブラウザ内 PHP でデモやツールを公開する

php-wasm は「PHP サーバーをなくす技術」ではなく、「PHP 用サーバーを増やさず、本番とは別用途で PHP を動かす技術」 です。

1)既存案件との距離感

⚪︎本番・ステージングの代替ではない

普段の PHP 案件では、Apache、PHP-FPM、MySQL など、サーバー側で PHP が動いています。php-wasm は ブラウザ内で動く別系統の PHP 実行環境であり、PHP-FPM に追加する拡張でも、本番 PHP の代わりでもありません。

そのため、本番 DB にそのままつなぐ、本番と同じ PHP 拡張・サーバー設定を再現する、いま動いているシステムを wasm 上でそのまま試す etc. といった使い方は現実的ではありません。VPS やレンタルサーバーなど、仮想ホスト上の Apache + PHP-FPM + MySQL 構成とも、php-wasm は別系統として切り分けて考える必要があります。

⚪︎既存の PHP コードが全部そのまま動くわけでもない

DB、curl 、特定の PHP 拡張、サーバー上のファイルパスなどに依存するコードは、ブラウザ上の php-wasm とは相性がよくありません。たとえば、次のような話は、現状では難しそうです。

  • 既存のPHPフレームワーク / CMS の本番を wasm で再現して検証する
  • 既存画面から処理を切り出して、後付けで wasm に載せ替える
  • PHP バージョンアップ前に、既存環境を wasm 上の別 PHP バージョンで試す

2)実務で使えそうなケース

⚪︎サンドボックスとして使う

php-wasm 系の環境は、本番・ステージングとは別の、切り離された検証環境として使えます。

ここで言うサンドボックスは、「いま本番で動いている案件そのもの」を丸ごと試す環境ではありません。中身は別の PHP 実行空間(ブラウザ内)です。本番を汚さず、別の場所で触ってみる etc. という用途に向いています。

WordPress案件の場合であれば、以下くらいまでが現実的なところだと思います。

  • テーマ改修後の表示確認
  • プラグイン同士の組み合わせ確認
  • デモや学習用に、ブラウザだけで触れる WordPress 環境の用意

⚪︎小さなデモ/ツールの公開

PHP で新しく何かを公開しようとすると、VPS やレンタルサーバー、PHP-FPM、DB etc. と準備がついて回ります。

php-wasm を使えば、PHP の処理をブラウザ内で完結できるものは、静的ホスティング(Cloudflare Pages など)に載せて公開できます。前回のお散歩トラッカーがこのパターンです。

ここで言う「サーバー不要」とは、PHP-FPM など PHP 用のアプリサーバーを新たに用意しなくてよいという意味です。インフラがゼロになるわけではありません。

  • 静的ファイルを配信する場所(Pages など)は必要
  • 外部 API を使う場合は、CORS 回避などのためにプロキシ用 Functions が必要になることもある

加えて、php-wasm 本体( .wasm )は十数 MB 級で、初回の読み込みは重め、というトレードオフもあります。

お散歩アプリでは、アプリの PHP はブラウザ内で動いています。Overpass API 向けには、PHP サーバーではなく Cloudflare Pages Functions を1本だけ置いています。

こちらも次くらいまでが現実的と考えます。

  • 提案用の動くデモ(本番とは別物)
  • 小さなブラウザツール(計算・変換など、DB 不要なもの)
  • @php-wasm で作った小さなアプリ(お散歩トラッカー型)

前回のお散歩トラッカーは JSON ファイルでセッションを保存するシンプルな構成でしたが、フォームや軽い CRUD 程度なら、php-wasm 内の SQLite を使い、データの永続化に OPFS や IndexedDB などブラウザ側の保存と組み合わせたアプリケーションも作成可能かと考えます。

3)まとめ

触ってみて分かったのは、php-wasm は「PHP サーバーをなくす技術」ではなく、本番環境とは別用途の PHP 実行環境を置ける技術だということです。サンドボックスで触るか、小さなデモやツールを出すか・・・実務でうれしいのは、だいたいこの2つに収まりそうです。

正直、既存の LAMP 案件を wasm で置き換える話は、まだ現実的ではないと思います。本番 DB や拡張、サーバー設定まで再現するのは別世界です。前回のお散歩アプリも、最初から wasm 前提で役割分担した別物だったからうまくいった、という感じです。

前回は「動かしてみた」話でした。今回は「実務ではどこまで使えそうか」を整理してみました。万能ではないけれど、切り分けて使う分には、ちゃんと役に立つ技術だと思っています。

Related articles

php-wasm(WebAssembly)で、サー...

バックエンドの PHP 案件といえば、...

バックエンドの人がNativePHPの力を借りて初...

前回の投稿では、タイムレコーダー画面と...

バックエンドの人がNativePHPの力を借りて初...

システム開発の仕事についてから、ずっと...