ぼくはこうやって WP-CLI のコントリビューターになりました
2017/09/18 14:33
  • 先日 WordCamp Tokyo 2017 コントリビューターデイに参加し、
    WP-CLI のコントリビューターになりました。

    過去記事:「WordCamp Tokyo 2017 コントリビューターDayの感想

    本記事ではより具体的な内容をまとめたいと思います。


    WP-CLI のおさらい

    利用するのは、コマンドラインから WordPress を操ることができるコマンドラインツールです(雑www

    公式:WP-CLI
    github: WP-CLI

    ※WP-CLI のサブコマンドごとにリポジトリが別れています

    WP-CLI の環境準備編

    VVVVCCW なんかを予め準備しておくと、環境依存に困ることなく作業が開始できると思います。

    今回はそれぞれ独自の環境で準備をしたため、環境準備でエラーがでたり、うまく進まないことがありました。

    僕は以下の環境でやりましたが、幸い特に問題は起きませんでした。

    macOS Sierra 10.12.6
    built-in PHP 5.6.30
    MySQL via homebrew 5.7.12
    

    コントリビューターとしての初心者が集まるイベントなので、環境は統一しておいたほうが効率的だと思いました。


    さて、ここからが実際の作業ですが、
    まず wp コマンドをインストールして、その状態で behat によるテストが正しく実行されるかを確認します。具体的には以下の手順で確認していきました。


    1. wp コマンドのインストールと確認
    効率よく開発するために、 nightly バージョンのコマンドをインストールします。

    $ curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar > /usr/local/bin/wp
    chmod 755 /usr/local/bin/wp
    
    # 確認
    $ wp --info
    PHP binary:    /usr/bin/php
    PHP version:    5.6.30
    php.ini used:    /etc/php.ini
    WP-CLI root dir:    phar://wp-cli.phar
    WP-CLI vendor dir:    phar://wp-cli.phar/vendor
    WP_CLI phar path:    /Users/xxxxx
    WP-CLI packages dir:    
    WP-CLI global config:    
    WP-CLI project config:    
    WP-CLI version:    1.4.0-alpha-772db10
    

    2. core-command を clone してライブラリをインストール!

    $ cd /any/path/
    $ git clone git@github.com:wp-cli/core-command.git
    $ cd core-command
    $ composer install
    

    ↑この処理は時間がかかります。 composer.json に記載されているリストすべてをインストールするので気長に5〜10分ほど待ちましょう。

    ぼくは composer をインストールしてなかったので、以下のように composer のインストールから作業しました…。ww

    $ brew install homebrew/php/composer
    

    3. MySQL の確認とテスト用ユーザーの追加
    # 以下でログインできたらOK。
    # これは MySQL が正常に動作していることの確認なので、パスワードをセットしていてももちろん問題ないです!(当たり前)
    $ mysql -u root
    
    # ユーザーを作成する
    $ echo 'GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost" IDENTIFIED BY "password1";' | mysql -u root
    


    4. とりあえずテストを叩く!

    $ ./vendor/bin/behat
    
    これでテストが開始されます

    ...
    ...
    56 個のシナリオ (56 個成功)
    530 個のステップ (530 個成功)
    11m58.88s
    

    テストが無事に終わると、↑のように結果を出力してくれます。
    僕は幸いすべてのテストが成功しましたが、人によってはいくつか失敗していたみたいです。
    (あんまり気にすることのない内容だったようですが;;)

    以上で、「とりあえずの準備」が完了となります。苦笑


    Good First Issues から Issue 対応をする

    Good First Issues は初心者のためにストックされている、いわば”簡単な”チケットたちです。
    リポジトリはたくさんありますが、すべて good-first-issue というラベルで管理されています。なお、公式サイトの Good First Issues ページで一覧を見ることができます。

    ぼくらは今回以下の Issue チケットと格闘しました!笑

    Create separate cache directory for behat for each version of WordPress #4343

    実はこれ、すでにバグ修正自体はできていて専用のパッチも存在しているものの、関連するすべてのリポジトリにこのパッチを
    当てる必要があり、、、要は、やることは至って簡単、かつ、マンパワーが必要な作業だったため、コントリビューターデイに打ってつけのタスクとなったわけです。笑

    みんなで粛々と20個位のリポジトリにPR投げていくのは楽しかったですねw

    さて、以下に具体的な作業を載せます。
    前の記事でも書きましたが、僕は4つのPRを出しました。
    今回はそのうちの一つを例に上げたいと思います。

    1. 該当リポジトリなどの準備
    修正をしたリポジトリは config-command です。
    github 上で fork して、その後 clone します。

    $ git clone git@github.com:ryotsun/config-command.git
    

    package コマンドも必要なので、以下叩きます。
    $ wp package install wp-cli/scaffold-package-command
    

    メモリーリーク関係のエラーが出たときは、以下で対応します。
    php -d memory_limit=-1 /usr/local/bin/wp package install wp-cli/scaffold-package-command
    

    参考: WP-CLI でメモリ不足のエラーが出る時の対処法


    2. patch を適用する

    # Issue の #4343 を対応するからこの名前
    $ git checkout -b patch-4343
    $ composer install
    
    # これがパッチ。ただ当てるだけ…!簡単( ・ิω・ิ)
    $ wp scaffold package-tests . --force
    

    3. git add, git commit, git push...
    そしてあとは Pull Request を送るだけ!

    # 差分がでるので add, commit, push
    $ git commit -m "update package tests"
    $ git push origin patch-4343
    

    ここで間違えてはいけないのは、 WP-CLI プロジェクトでは composer.lock をコミットしてはいけないこと。通常のワークフローなら lock しないとだめなのですが、WordPressは様々な環境下で動くことを想定しているので、
    下手にロックすると他の環境に影響が出てしまうため、このようなフローになっているようです。

    ※もし composer.lock が差分に出る場合は、.gitignore にひっそりと追加してあげましょう。( ̄ー ̄)ニヤリ

    そうして投げつけたPRがこちら。
    https://github.com/wp-cli/config-command/pull/29

    これで次回のリリース時に名前が載るそうですよ!びつくりですね。

    最後に

    メンターの宮内(@miya0001)さんが懇切丁寧に
    レクチャーしてくださったので、みんなスムーズに Pull Request を投げるところまで行きました!
    そして光の速さでマージしていただいてありがとうございます。笑

    軽い気持ちで聞ける人が(物理的に)すぐそばにいるっていうのは本当によかったです。
    ぼくはこのようにして第一歩を踏み出しました!

    ひとりだったら高いと思えたハードルも、簡単に乗り越えることができましたよ。

    これからも緩やかに頑張っていきたいと思います。

    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2017/09/18 14:33>
  • その他
  • WordCamp Tokyo 2017WordCampTokyo2017WordPressWPワードキャンプコントリビューターコミッター貢献
  • 新しい記事へ
    SSH を使ってリモートサーバーに接続する方法

    古い記事へ
    WordCamp Tokyo 2017 コントリビューターDayの感想

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。