2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPress ローカル開発環境いろいろ

Last updated at Posted at 2024-09-12

※本記事は Sapporo WordPress Meetup #17 の内容を Qiita 向けに再編したものです。
Visual Studio Code での作業を前提としています。

WordPress のローカル開発環境

ローカルでの新しい WordPress 開発環境やサンドボックス環境に使える「wp-env」「Studio」「WordPress Playground」の概要や導入について紹介します。皆様の参考になれば幸いです。

これまでのローカルでの開発環境といえば?

使用中の OS に対し、WordPress 動作で必要なサーバ用ソフトなど(Apache//Nginx, PHP, MySQL//MariaDB)をパッケージでインストールする「XAMPP」や「MAMP」「LAMP」などを導入していました。ただし、実際に使っていくと、

  • サイト毎に PHP のバージョンを変更するなど、バージョン管理が大変
  • 複数人開発時の環境統一がむずかしい
  • Mac と Windows で互換性がない
  • デプロイ先と合わず、本番環境でエラーが出る

などの問題を個人的に経験してきました。

① wp-env によるローカル開発環境構築

説明

「wp-env」は Docker で動作する WordPress.org が提供する開発環境です。公式ページの日本語版はこちら。Docker の深い知識が無くても大丈夫です。

特徴

  • Docker で動作
  • 複数の環境が同居できる(異なるサーバ構成、バージョン、DBなど)。複数人で開発環境を統一するのに便利
  • PHP のバージョン、ディレクトリ構成、デフォルトプラグインなどの構成を json ファイルで共有できる
  • Windows では WSL2 が必要

準備

インストール

  1. 作業用ディレクトリに移動(デフォルトではディレクトリ名が仮のサイト名になります)
  2. npm -g i @wordpress/env でインストール。既存プロジェクトにローカルで追加もできます
  3. wp-env start で必要ファイルのダウンロードと Docker の設定・起動が行われます
  4. http://localhost::8888 でサイトにアクセスできます

この状態では、個人のホームディレクトリに.wp-envが作られ、その中に各 Docker 環境別に WordPress 本体ファイルが配置されます。

構成のカスタマイズ

作業用ディレクトリに.wp-env.jsonを配置することで、さまざまな設定をカスタマイズできます。

.wp-env.json
{
  "core": "https://ja.wordpress.org/latest-ja.zip",
  "plugins": [
    "https://downloads.wordpress.org/plugin/wp-multibyte-patch.zip"
  ], 
  "phpVersion": "7.4",
  "port": 8888,
  "mappings": {
    "wp-content/plugins": "./public/plugins"
  },
  "config": {
    "WP_DEBUG": true
  }
}

この例では、

  • インストールする WordPress ファイルを最新の日本語版に
  • デフォルトでインストールするプラグインを WP Multibyte Patch に
  • PHP を 7.4 に
  • wp-content//pluginsディレクトリをローカルの ./public/plugins
  • wp-configWP_DEBUG 設定を true

しています。ファイルを配置したらwp-env start -updateコマンドで再設定します。

公式サイトですべての設定が解説されています。

②WebAssembly 系動作環境

WebAssebmly を使って、ブラウザ上でサーバ、PHP、DB(SQLite)を走らせ WordPress を直接動作させるものです。PHP, MySQL, Apache などのインストールが不要です。実装の違いでいくつか種類があります。

2-1) Studio by WordPress.com

https://developer.wordpress.com/studio/
公式サイトからインストーラをダウンロードして使用します。独自の管理 UI があります。起動して[サイトを追加]をクリックするだけでサイトが立ち上がります。

{E827D3AB-730E-48B5-AC9B-BFB46333FE41}.png

特徴

  • 2024年4月にリリースされたAutomattic社による開発環境
  • WordPress.com にデモサイトを公開可能(要アカウント)
  • デフォルトで日本語に対応
  • 細かなインストールオプションには(今のところ)未対応

2-2) WordPress Playground

https://wordpress.org/playground/
前述の Studio by WordPress.com のベースとなっている技術です。ページの[Explore Playground]をクリックすれば、そのブラウザ上ですべてが動作します。

{93BF52E6-2EBC-462B-865F-16B72483ED22}.png

特徴

  • デフォルトではブラウザを閉じるとデータベースの内容もすべて消えるので、編集や設定内容も消える

  • サイト右上から、変更内容をローカルに保存する設定ができる
    {7374F267-503F-453D-8160-649A679647BD}.png

  • blueprints という機能を使い、設定のカスタマイズができる

{
  "preferredVersions": {
    "php": "8.0",
    "wp": "latest"
  },
  "plugins": ["wp-multibyte-patch"],
  "login": true,
  "landingPage": "/wp-admin/plugins.php"
}

この例では、PHP や WordPress のバージョン、既定のプラグイン、ログイン状態の設定、ランディングページの設定をしています。なお、.wp-env.json とは互換性がありません。

2-3) VS Code 用 WordPress Playground 拡張機能

同じ技術を使っていますが、これは VS Code のプラグインとして動作し、ローカルの開発環境を提供します。

特徴

  • 任意のディレクトリを開き[Start]をクリックすると、そのディレクトリ構成を自動で識別して WordPress がブラウザで動作する
  • 変更内容はローカルに自動で保存される

動作モード

  • index モード: index.php ファイルがあるとき。PHP ファイルとして直接実行する
  • plugin モード: plugin名.php ファイルと必要ファイルがあるとき。対象のプラグイン開発モードになる
  • theme モード: テーマ名を記載した style.css ファイルがあるとき。対象ディレクトはテーマのディレクトリとして認識される
  • wp-content モード: pluginsthemes ディレクトリがあるとき。対象ディレクトリは wp-content として認識される
  • wordpress モード: 普通の WordPress ファイルセットがあるとき
  • playground モード: 何もないとき。ユーザディレクトリに保存された WordPress が仮想的に動作する

まとめ

あくまでも個人的な印象ですが、本格的な多人数開発には wp-env が安定性などを考慮してもよいかもしれません。もちろん個人開発でも XAMP、MAMP をすぐに置き換え可能ではないでしょうか。
WebAssembly 系では Studio は未知数、playground はデモなどに、VS Code プラグインはある程度開発に使えるレベルかもしれません。ただブロック開発を行ったところ、ときどきメモリ系のエラーで落ちることがありました。

どれも気軽に使えるので、試してみると面白いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?