Mimizuku Advent Calendar 19日目の記事です。
WordPress テーマディレクトリとは
WordPress にはテーマディレクトリというものがあります。テーマディレクトリ上では多くの WordPress テーマが配布されており、また、WordPress の管理画面からインストールしたいテーマを検索した場合にもこのテーマディレクトリで配布されているテーマが表示されるようになっています。テーマディレクトリでテーマを配布するにはレビュワーによるレビューを受けて一定の品質を保っていると承認してもらう必要があります。拙作の Kotetsu や Habakiri もレビュワーによるレビューを受けてテーマディレクトリで配布をしています。
以上のことから、WordPress テーマディレクトリでテーマを配布すると、レビュワーによるレビューを受けることができる、WordPress の管理画面からインストールすることができる、認知されやすい、というメリットがあります。
Packagist とは
PHP には Composer というパッケージ・ライブラリ管理の仕組みがあります。このパッケージ・ライブラリを集約したサイトが Packagist です。JavaScript でいう npm のような感じです。Packagist でパッケージ・ライブラリを公開するのはそんなに難しくなく、特に審査などもありません。Mimizuku はこの Packagist で配布しており、ターミナルでcomposer install inc2734/mimizuku
とコマンドを打つことでインストールすることができます。
Mimizuku はなぜ WordPress テーマディレクトリではなく Packagist なのか
僕は Kotetsu、Habakiri と、これまで作ったテーマはテーマディレクトリで公開していました。セッション登壇や LT でもテーマディレクトリ公開はいいぞ、テーマディレクトリ公開を目指しましょう、的なお話をしたことがあると思います。ではなぜ Mimizuku はテーマディレクトリで公開しないのか。
Mimizuku は CSS フレームワーク Basis を使ったテーマです。詳しくは「なぜ Bootstrap をやめたのか」をご参照頂ければと思うのですが、Basis は生 CSS を直接使うのではなくその CSS をつくる元になっている Stylus ファイルを使うことを推奨しています。なぜかというと Basis の Mixin とか変数による設定が超便利だからです。WordPress テーマディレクトリで配布するテーマはダウンロードしてすぐ使える状態である必要があるためビルド済みの CSS や JS も含めなければいけません。また、使用しないファイルは含めてはいけないというルールがあるのでビルドするための gulpfile.js などを含めることができません。そうするとユーザーは元ファイルを import して、ビルドスクリプトを自分で書いてビルドして、ビルドした CSS を使うようにするということをやらなければいけませんが、普通わざわざやらないでしょう。そうすると Mimizuku を使うメリットが半分以上失われてしまうことになります。
多分 composer スクリプトを記述している composer.json も含めたらダメなんじゃないかなと思うので、Mimizuku の便利 composer スクリプト(Mimizuku ならテーマユニットテストデータを一発でインポートできて便利、PHPUnit によるユニットテストを WordPress テーマ開発に簡単に導入する)も使えなくなるでしょう…。悲しい。
そこで Packagist。Packagist で公開しているパッケージ・ライブラリは composer コマンドでインストールやアップデートを行いますが、そのとき任意のコマンドを自動実行させることができます。つまり composer コマンドで Mimizuku をダウンロードしたときに自動的に Mimizuku のビルドを行うことができるというわけです。
ただ、Mimizuku は親テーマとして使うものなので実際には Mimizuku で子テーマを作るときのスターターテーマである Mimizuku Child をインストールしたほうが良いです。もちろんこの Mimizuku Child も自動実行の仕組みをフル活用していて、Miimzuku Child を使うということは Mimizuku を使うということなので、Mimizuku Child をビルドしようとしたら自動的に Mimizuku のダウンロードとビルドも行われるようになっています。すばらしい!
// テーマディレクトリに移動
$ cd /PATH/TO/wp-content/themes
// Mimizuku Child のダウンロード
$ git clone https://github.com/inc2734/mimizuku-child.git your-theme-name
// Mimizuku Child の中に移動
$ cd your-theme-name
// Mimizuku Child のビルド、Mimizuku のダウンロード・ビルド
$ composer install
// Mimizuku Child を有効化
$ wp theme activate your-theme-name
WordPress テーマディレクトリでファイルを配布しつつ、自動ビルドなども行えれば一番良いのですが…その辺はユーザーのテーマに対する目的の違いでもあると思うので、Mimizuku については現状では Packagist がベストかなと。Packagist にパッケージを公開するのは結構簡単なので、興味のある方は使ってみると良いのではと思います。