通勤ラッシュに巻き込まれつつ、8時半ごろに会場入り。
クリスマスの時期ですよねぇ。
2日 目のセッションデイについてのブログはこちら
実行委員(スタッフ)のユニフォームは、パーカーでした!
朝から多くの実行委員が集まってきました。実行委員長も健在です!
会場のWi-fi ありますが、ちょっと遅い感じはしますね。
さて今日は
コントリビューターデイ。日本の WordCamp で初めてコントリビューターデイをしたのが、WordCamp Osaka の前身になる WordCamp Kansai の 2014年にあたり WordCamp Kansao 2014でした(「
日本のWordCampで初めての試み!コントリビューターデイってなんだ?」参照)。このコントリビューターデイとは、WordPress の何かに貢献しようっていう催しです。WordPress について歓談やディスカッション、相談するだけでも、誰かの刺激になったり、何らかのヒントで新しいものが生み出される可能性もあります。
挨拶&チーム分け
今回始めてコントリビューターデイにきたって人がかなりいたことに驚きました!いいですね!いくつかのチームに分かれて作業するということで、チームメンターの紹介とそれぞれのチームでどのようなことをするのかの紹介がありました。
- 全体のメンター:Mike Schroder 氏(WordPress 5.3 のリードをされていた、Core やメディアコンポーネンツについてになるけど、でも何でも聞いてもいいよって感じ)
- Core チームメンター:Kite 氏(WordPress 本体のメンテナンス、Gutenberg 含む)
- WP-CLI チームメンター:Sumida Ippei 氏(WP-CLI コマンドのメンテナンス)
- Help Hub チームメンター:Tachibana 氏(WordPress のマニュアル移行・翻訳)
参考:日本語版CodexからHelpHubへの移行ボランティアを募集中
- Polyglots チームメンター:高野氏(翻訳)
- WordPress.tv チームメンター:Hayashi 氏(WordCamp セッションの動画編集やアップロード、字幕をつける)
- Theme Review メンター:Shiva Shanker Bhatta 氏, Ganga Kafle 氏(テーマレビューのリードをしている、インドのネパールから来訪。すでに公式リポジトリへ申請しているテーマの審査をやってみる)
- Community チームメンター:額賀氏、GOUTEN 氏(WordPress Meetup の申し込みやオリエンテーション、 ダイバーシティースピーカートレーニングの翻訳、WordPressの記事)
- JP WordPress Hosts Community チームメンター:Taniguchi 氏(WordPress のホスティング。PHP5.3使っているけれど、どのサーバーがいいだろうとか)
筆者は、筆者開発のプラグイン改良でもしようかなーと漠然的な感じでしたが、プラグインチームがなかったので、よくお世話になっている WP-CLI について貢献できるようになっておこうかなと思い立ちました。
WP-CLI チーム
公式マニュアル:
https://make.wordpress.org/cli/handbook/contributing/
記事:
https://make.wordpress.org/cli/2018/07/14/contributing-to-wp-cli/
GitHub:
https://github.com/wp-cli/
事前準備
- WordPress.org のアカウントを作る
- WordSlack のアカウントを作る
- WordSlack にログインして、#cli チャネルを追加する
- GitHub アカウントを作る
- https://github.com/wp-cli/ の good-first-issue ラベル を探してみる
これは初めてやる人用で、初めてでなければ rejectされる
- composer のインストール
- hub のインストール(brew install hub)*こちらは必要ならという感じ
- 何をするか決まったら WordSlack の #cli でつぶやいて、リポジトリを Fork する
- Forkしたものをローカルにクローンする
- クローンしたディレクトリで、composer install --prefer-source を実行する
参考:https://make.wordpress.org/cli/handbook/pull-requests/#setting-up
- Script ./utils/git-setup-pre-commit-hook handling the post-install-cmd event returned with error code 1 とでてインストールが失敗する
- 一度クローンしたディレクトリを消して入れ直しても同じエラー
- ここの情報「.git/hooks/pre-commit を作れ」と、ここの情報「git clone https://github.com/mautic/mautic.git にある ./build/hook/pre-commit を使え」を参考に、https://github.com/mautic/mautic.git の ./build/hook を .git/hooks にコピーした。
- すると警告はでるもののインストールできた。
うーん、何故だかスッキリしない!昼食を食べた後にもう少し検証
- 検証結果
git clone URL : OK
Sourcetree (3.0 (200) でも4.0 (232)でも)最新ので Clone すると、上記エラーがでてしまうことが判明。Soucetree 内蔵の git が少し古い(2.20.1)のが原因なのかなぁ。システムのほうは 2.21.0 だし。
- クローンしたディレクトリの bin/wp を wp コマンドとして実行できるようにする
cd クローンしたディレクトリ
alias wp="`pwd`/bin/wp"
- branch を切る
ちなみに参加者はエンジニアばかりだった(バックエンドエンジニアが多い)。まぁそうですよね。
https://github.com/wp-cli/wp-cli/issues/4874 にチャレンジ
STEP 1. コーディング
Remove `WP_CLI\Utils\is_bundled_command( $command )` again #4874
ということなので、is_bundled_command を探すと、
php/utils.php
function is_bundled_command( $command ) {
tests/test-bundled-commands.php
$result = Utils\is_bundled_command( $command );
の2つがヒットしました。
1. tests/test-bundled-commands.php は削除
2. php/utils.php
function is_bundled_command( $command ) {
はコメントも含む関数ごと削除
STEP 2. コードテスト
1. Code style sniffers
composer phpcs
で問題なければ次へ
2. Function tests
mysqlデータベースが必要。もし準備が出来ていなければ
env: mysql: No such file or directory
Script run-behat-tests handling the behat event returned with error code 127
Script @behat was called via test
のようなエラーがでる。
筆者の macOS はちょっと前にクリーンインストールしてしまったので、mysqlは入っていない。Homebrew はインストールしていたので、「
Macでmysqlを扱う方法」
を参考に、
brew install mysql
にてインストール
brew services start mysql
にて MySQL データベースを起動
mysql -uroot
で mysql データベースにログインできることを確認
なおこのデータベースはパスワードなしで特権ログイン(root)できる。まぁ一時的なインストールだからいいでしょう。
mysql> create user 'wp_cli_test'@localhost identified by 'password1';
にて、wp_cli_test ユーザーを作成(パスワードは password1)
mysql> create database wp_cli_test;
にて、wp_cli_test データベースを作成
mysql> GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost" IDENTIFIED BY "password1";
wp_cli_testユーザーに wp_cli_test データベースに権限を付与するコマンドでエラー
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "password1"' at line 1
によれば、mySQL 8 からコマンド構文がかわったとのこと。
mysql> GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost";
かな。
かなり時間がかかります。
Error: Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or we can’t contact the database server at `127.0.0.1`. This could mean your host’s database server is down.
とエラー。
をよく見ると、mySQL 8の場合の注意事項がありました。
mysql> ALTER USER 'wp_cli_test'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password1';
を追加したらいいのか。
...
.F-------............................................................. 1260
...
(::) 失敗したステップ (::)
01. $ wp db query 'UPDATE wp_blogs SET domain = NULL'
ERROR 1048 (23000) at line 1: Column 'domain' cannot be null
cwd: /var/folders/t7/3x5g378s45s246158trdylvm0000gn/T/wp-cli-test-run-framework.feature.313-5de9f542b305c0.53752291/
run time: 0.43459987640381
exit status: 1
In step `And I run `wp db query 'UPDATE wp_blogs SET domain = NULL'`'. # vendor/wp-cli/wp-cli-tests/features/steps/when.php:29
From scenario `Display a more helpful error message when site can't be found'. # features/framework.feature:313
Of feature `Load WP-CLI'. # features/framework.feature
197 個のシナリオ (196 個成功, 1 個失敗)
2139 個のステップ (2131 個成功, 7 個スキップ, 1 個失敗)
15m33.818s
うーん、もうちょいか。しかしテストに15分かかるのね・・・。
> run-behat-tests
/***/wp-cli/vendor/bin/run-behat-tests: line 12: jq: command not found
(23) Failed writing body
と最初に jq コマンドがないというのが気になりますね。
によれば、 brew install jq でインストールしてみた。
jq エラーはなくなったものの、同じところでエラー出ますねー。
*エラー出たところだけ再テストは
で出来る。
しかしこれは、mySQL 8 ではまだうまくいかないのですかねぇ。
https://qiita.com/sato11/items/ba887a5655217f60f2a2
を参考に、mySQL8 を消して 5.7をいれてみる。
brew services stop mysql
brew remove mysql
brew cleanup
https://qiita.com/sato11/items/ba887a5655217f60f2a2 をみて削除
/usr/local/etc/my.cnf も削除
brew install mysql@5.7
brew services start mysql@5.7
/usr/local/opt/mysql@5.7/bin/mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
sudo touch /tmp/mysql.sock
brew services restart mysql@5.7
でも駄目だなぁ。まぁこれはやめて mysql 8 の環境に差し戻し。
あらためて
ここで時間切れ(16時30分)。
3. Units test
composer phpunit
こちらは 2 の functions test の前にやってみたが問題なく通過した。
上記すべてのテストを一括でやる場合には
composer test
とのこと。
pull request までいけなかったのは残念ですが、テスト環境の構築やそのためのエラー解決方法については体験できてよかったと思います。
筆者は過去のコントリビューターデイで何をしていた?
間近の 2年(2017年以降)だと、プラグイン開発、プラグインのマニュアル作成、翻訳をおもにやってました。
昼食
閉会
以下筆者が聞いて覚えている内容。そのため発表が正確に反映されていないことに注意。
Core チーム発表
Core については subversion を使わずにできるようになっているということ
git で出来るとのこと
WP-CLI チーム
good first issue から貢献できそうなものを探してやってみという形態だった
pull requests が 1件できて、作業中が2件あった。
Help Hub チーム
皆で文体などのルールを読んでもらった上でやってもらった。
26文章が更新されていた。
Polyglots チーム
かなり進んだ。
WordPress.tv チーム
WordPressを知っていますか?(15分動画)に日本語字幕をつけた。
1人1分担当し完成して公開したよ!
その他にもやった。
Theme Review チーム
レビューは言語とコーディングの壁があって大変だった。
けれども、全くレビューをしたことがなかった方を 3名迎えることができたことが非常に大きいとのこと。
Community チーム
いろいろ出来た模様
JP WordPress Hosts Community チーム
本当に PHPバージョンアップすると生きて帰れない(トラブって大変なことに)人もいるので、PHP のバージョンアップのライフサイクルなどのノウハウの共有を行った。そしてどのようにユーザーが利用しているサーバー上で WordPress を快適に使えるかについてディスカッションし、その結果をまたフィードバックしたいということ。
実行委員長より
明日のセッションデイの紹介
懇親会(スピーカー&実行委員)
WordCamp ではおなじみのスピーカーとの懇親会。いろいろ歓談できて楽しかったです!
日時が変わって本日はセッションデイ!
いろいろおもしろい話がきけることを楽しみにしています!
2019年12月7日 @kimipooh