Windows PCユーザー向け WordPressコア修正環境の構築手順

では早速、「コントリビューターデイ」で教わったMac用の手順を、Windowsマシンを作業用PCにしている人向けにコンバートしていきます(ハウツー形式の記事なので、珍しくですます調で書いてます)。

1. WordPress実行環境の準備

WordPressが動くなら、VagrantとVirtual BoxでLinux環境を作ってもいいし、xamppインストールでもどっちでもOKです。
私はメインでxampp使っているので、この手順はxampp向けになっています。
なお、xamppはPHP5.6がインストールされる最新安定版が良いです。というのも、この記事では詳しく触れていませんが、ユニットテストを行う場合、phpunitの安定版がPHP5.6以上の環境を要求するからです。

2. Subversion(SVN)実行環境を構築

Windows用のSVNクライアントとしては「TortoiseSVN(トータスSVN)」を使います。現2015/11/5時点での最新版はバージョン1.9.2でした。 日本語化用のパッケージもあるので、必要ならそちらもインストールしてください。

インストールオプション

インストールする時の注意点としては、上の図のオプション設定です。ここで「command line client tools」を有効化しておくと、svnコマンドがWindowsのコマンドラインから利用できるようになるので、もしコマンドラインをメインに使う人は必ず有効化しておきましょう。もし、コマンドラインツールを有効化したら、インストール完了後に、powershell等を立ち上げて、svn --versionと入力して、下図のようにコマンドラインからsvnコマンドが実行できるか確認してみてください。

コマンドラインツールの確認

これでSVN実行環境は整いました。

3. WordPressのコアソースをコピーする

xampp等のWordPress実行環境となるドキュメントルート・ディレクトリにWordPressのコアソースをコピーしてくるためのフォルダを作ります。この例ではxamppの標準的なインストールでデフォルトドキュメントルートとなるC:\xampp\htdocs\直下にwordpress.coreというフォルダを作っています。コマンドラインからなら、

──で作れます。
次に作ったフォルダをエクスプローラから右クリックして、「TortoiseSVN」→「Settings」と選択します。

TortoiseSVN設定

左側の設定メニューから「Network」を選んで、右側のNetwork設定のSSH欄に自分が使っているSSHクライアントの実行ファイルのパスを入力して「適用」→「OK」とクリックします。

TortoiseSVNのNetwork設定

再び、wordpress.coreのフォルダを右クリックして、「SVN Checkout…」を選びます。CheckoutするリポジトリのURL欄に、http://develop.svn.wordpress.org/trunk/と入力して「OK」を押すと、リモートリポジトリから最新版のソースがローカルPCにコピーされます。通信環境によりますが、だいたい1分弱ですべてのソースがコピーされるはずです。

SVN Checkout

ソースを修正する時などはリビジョン番号が常に最新になっているかを確認する必要があります。
その場合は、wordpress.coreのフォルダを右クリックして、「SVN Update」を行うことで、差分ファイルの更新が行われます。

SVN Update

もし、TortoiseSVNをインストールする時にコマンドラインオプションを有効化していると、上記の手順をコマンドラインから行えるようになります。こっちからやった方がGUIベースでやるより簡単だったりします。実際に上記と同じ手順をコマンドラインからやってみると、Powershell等で下記のコマンドを実行するだけです。

4. WordPressのコアソースを修正する

あとはエクスプローラからWordPressのコアソースの中身を見ながらバグを探すもよし、機能改善したい部分を探すもよしという段階です。ちなみにソースはsrcディレクトリ内に入っているものになります。この例ではwordpress.core/src/フォルダの中ということです。
コアソースを修正した場合に利用するsvnコマンドをいくつか紹介しておきます。まず、修正前と修正後の差分を検証できるsvn diffです。GUIから利用する場合は、wordpress.coreフォルダを右クリックして、「TortoiseSVN」→「Check for modifications」で差分ファイルの一覧が表示されるので、そこから差分の詳細を見たいファイルを選択します。

SVN Diff

もしくは、直接修正したファイルを右クリックして、「TortoiseSVN」→「Diff」でもOKです。

SVN Diff

修正した内容を元に戻す場合は、切り戻したいファイルを右クリックして「TortoiseSVN」→「Revert…」です。

SVN Revert

修正したファイルのパッチを作成するには、wordpress.coreフォルダを右クリックして「TortoiseSVN」→「Create patch…」からパッチ化するファイルを選択します。WordPressのtracの通例的に、ファイル名は「{リポジトリのリビジョン番号}.patch」か「{リポジトリのリビジョン番号}.diff」としているチケットが多かったので、それに倣っておくと良いかもしれません。
複数の修正ファイルが含まれる場合は「big_patch.diff」が良いと宮内さんはおっしゃられていました。

SVN Patch

なお、上記の運用をコマンドラインで行う場合は、下記のようにコマンドを発行します。

5. 修正内容を確認する

修正した内容を確認するために、WordPressのコアソースをWEBアプリケーションとして実行する必要があります。つまり、この例ではxampp環境下でコアソースのWordPressサイトを稼動させるということです。
そのためには、xampp側にコアソースのsrcフォルダをドキュメントルートとしたホストを起動する必要があります。

まず、xampp側のドキュメントルートを修正する必要があります。‘C:\xampp\apache\conf\httpd.conf‘を開いて、下記の部分を変更します。

これを、

修正が終わったら、xamppのApacheを再起動してください。これで、localhostにアクセスすればコアソースのWordPressが表示されます。
ただ、これだとlocalhostで1ホストしか利用できないので、私的にはVirtualHostを利用して複数ホストを同時に利用できるようにしておくことをオススメします。これだと、リビジョン違いのWordpressコアを同居させたり、別途に公式版のWordPressサイトも同時にローカルPC内に共存させられるからです。
やり方は、上記のhttpd.confのドキュメントルートは変更せずに、C:\xampp\apache\conf\extra\httpd-vhost.confを開き、下記の記述を追記します。

次に、Windows側のHOSTS(C:\Windows\System32\drivers\etc\hosts)にも下記のように追加します(Windowsの管理者権限がないと書き込みができないので、ファイルを右クリックして管理者として開きます)。

上記の例のようにローカル・ループバック・アドレスを割り振っておくと、ブラウザから任意のホスト名でアクセスできるようになってかなり便利に複数サイトを同時運用できます。

設定が完了したら、xamppを再起動して、ブラウザから「http://wordpress.core/」でアクセスすると、WordPressのインストーラーが起動します。この時点ではデータベースの準備ができていないためにデータベースの作成を促されるので、あらかじめxamppのphpMyAdminか、下記のようにコマンドラインからMySQL(xamppの最新版ではMariaDB)にデータベースを作成しておくとWordPressの環境構築がさらに楽になります。

コアソースのWordPressサイトが稼動したら、自分が修正した機能が正常に動いているかを試してみたり、デバッグコードを書いて挙動を確かめてみることができるようになります。

6. Tracにチケットを起票する

WordPressコアソースにバグを見つけたり、機能改善をリクエストするには「Make WordPress Core」からチケットを起票します。下図のように、「Me」の欄に「Create a Ticket」のリンクがあるので、そこから起票できます。

Make WordPress Core

パッチを添付する場合は、「 I have files to attach to this ticket」にチェックを入れてから「Continue to Preview」ボタンをクリックするとアップローダが表示されます。

後は、コアチームからの返信待ちになります。宮内さんによれば、初めてチケット起票した人に対してはみんな優しい対応をしてくれるらしいです(笑)

ちなみに、私の起票したチケットは、現在「needs unit test」のステータスで止まっていて、ユニットテストをパッチに含めて再度提出すればコミットしてもらえるかもしれないという状態です。
早くユニットテストを書いて提出したいのですが、なかなか時間がとれないうえに、私自体がユニットテストを今までやったことがないこともあってphpunitの導入から習得中だったりして、もうちょっとかかりそうな感じですね。

何気にxampp上でphpunitを動作させるのにてこずっていたりもするんですが…(笑)

Leave a Reply

Your email address will not be published.