WordPressのモダンな開発環境について調べていたときに、ちょいちょい話題に上がっていたwp-envを少しだけ触ってみたので、その感想を残しておきます。
wp-envとは?
まずはwp-envを知らない方向けに簡単に説明をしておきます。
wp-envの公式ドキュメントによると、
wp-env lets you easily set up a local WordPress environment for building and testing plugins and themes. It’s simple to install and requires no configuration.
https://github.com/WordPress/gutenberg/tree/trunk/packages/env
英文をDeepLで訳すと「wp-envでは、プラグインやテーマを構築したりテストしたりするための、WordPress のローカル環境を簡単にセットアップできます。インストールは簡単で、設定も必要ありません。」となります。
つまりwp-envはXAMPP・MAMPやLocalと同様、WordPressのローカル環境をセットアップしてくれるツールになります。
中身はdockerとdocker-composeで動いているみたいで、個人的にはdocker-composeを本業で使っていたので、コマンドがほぼ同じで分かりやすかった印象です。
ただdockerやdocker-composeに慣れ親しんでいなくても、ドキュメントを読めば簡単に利用できそうです。
wp-envの導入方法
せっかくなので導入が簡単なことを見てもらうために、wp-envの導入方法を簡単に説明していきます。
まず空のディレクトリを作成し、package.jsonを作成します。
package.jsonを作成したら、以下のコマンドでwp-envをインストールします。
$ npm i -D @wordpress/env
その後、package.jsonのscriptsにwp-envを追加します。
{
"scripts": {
"wp-env": "wp-env"
}
}
これで以下のようにwp-envコマンドを叩くだけで、簡単にローカル環境を構築したり、破棄したりすることができます。
// ローカル環境の構築
$ npm run wp-env start
// ローカル環境の停止
$ npm run wp-env stop
// ローカル環境の破棄
$ npm run wp-env start
また参考までに自分が実験したリポジトリを共有しておきます。
wp-envを使うメリット・デメリット
ここからは自分がwp-envを触ってみて思ったメリットとデメリットをまとめてみます。
メリット
wp-envを利用することで得られる一番のメリットを自分はコードベースでローカル環境を管理できることだと思います。
つまり、コードを共有するだけで同一のローカル環境を構築できるのです。
例えば、XAMPP・MAMPやLocalを使う場合は、本当の意味で同一の環境を作るためには、ツールのバージョンやPHPのバージョンなど様々な条件を揃える必要があります。
しかし、wp-envを使えば何も気にせずに同一のローカル環境で開発することができます。
そのため、WordPressを複数人で開発する際(テーマやプラグインのOSS開発など)には、wp-envを用いるとチーム開発が捗るのではないかと思います。
またwp-envでは.wp-env.jsonを使って様々な設定をカスタマイズできる点も優れていると思います。
デメリット
ぶっちゃけデメリットらしいデメリットは、個人的には無いと思います。
ただ1点気になるところがあるとすれば、dockerの知識がない人がwp-envを使うと色々と詰まってしまう懸念がある点です。
こればっかりは自分では体感できないので、エンジニアではない他の方の意見とかを聞いてみたいと思っています。
wp-envの個人的な使い道について
最後に自分が今回感じたこと、今後wp-envをどう活用するかなどについて話したいと思います。
結論から言うと自分の業務的には当分は使わず、Localでも良いかなと感じました。
なぜなら現在、自分の所属しているWordPressを扱うチームのメンバーは非エンジニアの方も多く、いきなり導入を行うのはコストが高いと感じたからです。
しかし一方で、コードベースで環境構築を共有できる点については、エンジニアとしてはとても心地よいものを感じます。
そのため、もし今後WordPressのテーマやプラグインをOSSとして開発する際には、ぜひ利用してみたいと思いました。
以上のように時と場合によって、wp-envを用いるべきかは変わってくると思うので、よく要件を検討をしてから導入をするのが良いのではないかと思います。