初心者のナオキがWordPressでぶいぶい言わせられるようになるための連載2回めの今回は開発環境についてです。
前回の記事「コマンドライン環境編」は以下です。
ところで前回の記事でナオキって誰やねんとの反響を微妙な数だけいただきましたので彼について紹介しようと思ったのですが、特に特技とか必殺技とかチャームポイントとかがあるわけでもないようなので今回の記事でも省略します。
開発環境について
開発環境についてまず大事なことは以下だと思っています。
- 複数の開発環境を臨機応変に使い分けられること。
- 再利用可能な学習コストであること。
まず前回の記事でもしれっとHomebrewを使っていることからもわかるとおりOSはMacが望ましいです。なぜかというと私たちが本番環境として使うことが非常に多いUnix/Linuxに非常によく似た環境だからです。
そこに今回の記事で紹介する開発環境を構築するのですが、最低限以下の2つは使えるようになっておきましょう。
いつか導入しようみたいに重く考える必要はありません。今日すぐ試してみましょう。
ところで MAMP という環境がありますが、MAMP はエンジニア思考の人にとっては余計な学習コストだと筆者は考えています。
その理由はあくまでも似て非なる環境であるがゆえにMAMPに特化したノウハウが必要であること、GUIで一見簡単そうにみえるものの、結局MySQLやPHPとの付き合いが必要で実はなにも簡単にしてくれていないこと、環境が汚染されやすく環境依存による問題が起きやすいことなどの理由によるものです。
結局同じなら本番環境とより似た環境のほうが同じ学習コストでもその結果を再利用できますよね。
Vagrant について
VagrantとはVirtualBoxという仮想環境をコマンドラインで利用できるようにするためのツールで、これを利用するとUbuntuなどの本番環境と同じ(もしくはよく似た)環境を仮想環境として構築することができます。
コマンドラインでVirtualBoxを操作できることによるメリットは、シェルスクリプトや各種の構成管理ツールと組み合わせることによる開発環境構築の自動化です。
WordPressコミュニティにはすでにいくつかの有名なプロジェクトがありますので、この2つは最低でも一度は試してみましょう。
インストール
Vagrantを使用するには公式サイトからVagrantの最新版とVirtualBoxの最新版をダウンロードしてインストールしてください。
https://www.vagrantup.com/downloads.html
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp
次に Vagrantのプラグインをインストールします。なんのためのものかは自分で調べてください。
$ vagrant plugin install vagrant-hostsupdater
つぎに vagrant コマンドを保管してもらえるように設定しましょう。URLが長いのでコピペミスに気をつけましょう。
$ curl https://raw.github.com/brbsix/vagrant-bash-completion/master/vagrant-bash-completion/etc/bash_completion.d/vagrant -o vagrant $ mv vagrant `brew --prefix`/etc/bash_completion.d/
最後に以下のコードを ~/.bash_profile
にコピペして、source ~/.bash_profile
するかターミナルを再起動してください。
if [ -f `brew --prefix`/etc/bash_completion.d/vagrant ]; then source `brew --prefix`/etc/bash_completion.d/vagrant fi
Varantの使い方
Vagrantを使用する際には、既存のボックスまたは構成ファイルをダウンロードし、特定のディレクトリの中で vagrant
コマンドを使用します。
vagrant コマンドはそれほど難しいものではないので、すぐに丸暗記できると思います。
vagrant up
– 起動vagrant halt
– 停止vagrant destroy
– 廃棄vagrant provision
– 再構築vagrant global-status
– 全マシンのステータスを確認
VVV
VVVはWordPressコミュニティの有名な貢献者のひとりである Jeremy Felt さんが中心になって開発しているVagrant環境で、WordPressコミュニティにおいてもっとも多くのユーザーが利用しています。
https://github.com/Varying-Vagrant-Vagrants/VVV
このVVVの特徴は、WordPress本体そのものの開発環境としてデファクトスタンダードとも言える存在であることで、コントリビューターデイと呼ばれるイベントではこれが使用されます。
欠点は、コア開発のみならず一般の制作会社の開発環境としても利用されることを想定しているなど、非常に多くのユースケースをサポートしているがゆえにプロビジョニング(vagrant up
)に非常に時間がかかることです。
WordPressに貢献していくにはこれは避けては通れないものなので、一度は起動して手順を確認しておきましょう。
VCCW
筆者が開発している開発環境で、VVVとの最大の違いはWordPress本体の開発を想定していないことです。
https://github.com/vccw-team/vccw
VCCWはWordPress本体の開発に必要な様々なパッケージ類をダウンロードしない一方で、ウェブサイトやテーマ、プラグインの開発に特化しているため、VVVに比べて起動が早く使用するディスク容量も比較的小さくなっています。
YAMLファイルやシェルスクリプト、Ansibleによるカスタマイズも可能で、初回のBoxのダウンロードを除くと最小構成で2分ほどで起動します。
VCCWの使用方法
VCCWには、VCCW環境を簡単につくるための WP-CLI 環境が用意されています。まずそれをインストールしましょう。
$ wp package install vccw/scaffold-vccw:@stable
もしかしたら以下のようにメモリが足らないというエラーがでるかもしれません。
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted
その場合は以下のようにして一時的にPHPのメモリーリミットを無制限にして実行します。
php -d memory_limit=-1 /usr/local/bin/wp package install vccw/scaffold-vccw:@stable
https://qiita.com/miya0001/items/9797832db58b60786803
次にVCCWの設定ファイルをつくります。
以下の内容を ~/.vccw/config.yml に記述してください。
memory: 1024 cpus: 2 linked_clone: true
以上が終わったらさっそくVCCWを起動してみましょう。まず以下のコマンドでデスクトップ上にVCCW用のファイルを作ります。
$ cd ~/Desktop $ wp scaffold vccw vccw.test --host=vccw.test --ip=192.168.33.10
ホスト名 vccw.test
の部分と IP アドレス 192.168.33.10
はお好みでどうぞ。僕は多くの場合顧客の ドメイン名.test
みたいな感じにしています。IPアドレスやこのホスト名は起動中の他のマシンとかぶるとうまく動作しないので気をつけましょう。
次にマシンを起動します。最初はBoxと呼ばれるベースになるハードディスクイメージをダウンロードしますので20分ほど時間がかかるかもしれません。
$ cd vccw.test $ vagrant up
終わったらブラウザでサイトにアクセスしてみましょう。
以下のコマンドを実行することで開くこともできます。
$ wp browse
管理画面なら以下のような感じ。
$ wp browse --wp-admin
前回の記事でコマンド補完を設定しているならタブキーでほいほいと入力できるはずです。
Docker
Dockerも仮想化技術の一つでWordPressを使用した開発ではよく使用します。
実は僕自身は Docker を本番環境に使用した経験はまだありませんが、WP-CLI プロジェクトに寄せられるフィードバックをみていると本番環境で使用されるケースも非常に増えてきています。
Dokcerは仮想マシンのパフォーマンスが高いことと、デプロイが容易であることなどのメリットがありますが、マシンが止まってしまうとファイル等が消えてなくなってしまうので、WordPressの構成ではいろいろとノウハウがあるようですが、一方で瞬時に起動するというメリットを活かしてプラグインやテーマのテストなどでも使用されます。
今回の記事ではDockerについては特に詳しく説明しませんが、2時間ほどをめどにいろいろ触ってみるといいんじゃないかと思います。
DokcerHubではあらかじめビルドされたイメージが公開されており、そこにはWordPressがプリインストールされたものもあります。
それを起動して練習してみるといいと思います。
https://hub.docker.com/r/_/wordpress/
仮想環境と付き合う上での注意
VagrantにしろDockerにしろ、仮想環境はネットワーク越しにはあたかも実際にコンピューターがあるかのように振る舞います。
一方であくまでも仮想なので、みなさんのパソコンの中に仮想のコンピューターが作られるわけですが、仮想とは言え実際のパソコンと同じディスク容量を消費します。
なので、起動したあとは掃除をしっかりとしましょう。
たとえば Vagrant であれば、vagrant destroy
で仮想マシンを捨てることができます。VCCWであれば設定ファイルにいろいろと記述することができますので、捨ててしまっても復活できます。 vagrant global-status
で不要なマシンがないかをチェックしましょう。
Dockerだとちょっとめんどくさいのですが、docker-clean というコマンドが便利です。
https://qiita.com/Jey/items/8714c47fd839597a40a3
ゴミマシンをためこむとホスト名やIPアドレスがぶつかってエラーになったりしますので、掃除はコマメにしましょう。