WordPressプラグイン開発の
めんどうな作業は執事にお任せ
瀬戸 貴弘2015年12月19日
LT
瀬戸 貴弘
Twitter
WordPress暦: 2.6 からブログで使い始めました。
瀬戸 貴弘 (せと たかひろ)
:@as_chachamaru
Facebook :as.chachamaru
WordCamp Kansai 2014 副実行委員長、スピーカー。
開発・テスト・修正 開発・テスト・修正
▼ ▼【リリース】【リリース】
開発・テスト(ビルド)・修正の繰り返し
プラグイン開発
テスト(ビルド)などプログラム以外の作業が多い
ということで今回、執事を雇いました。
手伝ってください
ご紹介します。Jenkinsさんです。
Jenkinsと申します。よろしくお願いします。
Jenkinsさんは非常に優秀ですが・・・
サーバエラーなど危ない行動には厳しいです。
今回は、VCCWの中で働いてもらいます。
VCCW
※VCCWへのJenkinsのインストール方法は割愛します。
※VCCWへのJenkinsのインストール方法は割愛します。
Jenkinsさんは家の中の道具などを使ってもらっても構いません。(shellなどのコマンド実行できる)
VCCW
PHPUnitさん
今回の共同作業者のご紹介。
テストやカバレッジ分析などします。
コード規約に準拠しているか調べます。
phpcsさんPHPコードの問題点などを調べます。
phpmdさん
共同作業者への依頼はJenkinsさんを通して行う
仕事を指示
依頼テスト結果
レポート報告
PHPUnitさんとのやりとり※例は phing を通してます。
phpunit.xmlcoverage.xmlhtml形式カバレッジ結果
テストとカバレッジ分析してください
phpcsさんとのやりとり※例は phing を通してます。
phpcs.xml
WordPress-Core準拠かチェックしてください
phpmdさんとのやりとり※例は phing を通してます。
phpmd.xml
PHPコードに問題点がないかチェックしてください
さっそく仕事してもらいます。プラグインのテスト結果のレポートを
つくってください。
今回のJenkinsさんのお仕事です。
Jenkinsさんへの仕事(job)指示や、Jenkinsさんからのレポート報告などはブラウザを通して行います。
具体的な指示をしますね
今回のJenkinsさんのお仕事です。
Jenkinsさんへの仕事(job)は手動実行や、定期実行、Subversionなどのバージョン管理と連動させて実行させることも可能です。
Jenkinsさんへに具体的にやってほしい内容を指示していきます。
今回は、共同作業者への依頼と、その共同作業者からの結果をレポートとして作成してもらいます。
PHPunitさんへの依頼phpcsさんへの依頼phpmdさんへの依頼
報告レポート作成
共同作業者への依頼。今回はphingを通してまとめて依頼しています。各それぞれ直接依頼も当然OK!
[補足] Phing はプラグイン入れれば設定ファイルを読み込ませるだけで実行できます。
PHPUnitさんからのテスト結果をもらってレポートを作成します。
phpunit.xml
テストとカバレッジ分析してください
PHPUnitさんからのカバレッジ結果をもらってレポートを作成します。
coverage.xml
テストとカバレッジ分析してください
phpcsさんからの準拠チェック結果をもらってレポートを作成します。
phpcs.xml
WordPress-Core準拠かチェックしてください
phpmdさんからの問題点チェック結果をもらってレポートを作成します。
phpmd.xml
PHPコードに問題点がないかチェックしてください
仕事内容はわかりましたか?では、さっそく
お仕事してみてください。
手動実行はサイドメニューの「ビルド実行」でできます。
まずは、PHPUnitさんからのテスト結果を
レポートしてください。
テスト結果は今回は全て成功しています。 (テスト結果リンクをクリックすると詳細へ)
テスト結果は、テストケース単位まで細かく レポートしております。
テスト結果に失敗がある場合は、一覧にまとめます。 クリックすると詳細がみれます。
PHPUnit様からいただいた原因を レポートしております。 すぐに修正しなさい!
テスト結果を時系列でみることもできます。 テスト数の増減や改善などを把握しやすくなります。
次に、PHPUnitさんからのカバレッジ結果を
レポートしてください。
カバレッジは全コード(メソッド)のうち、 どのぐらいの割合をテストしているかみます。
カバレッジは品質の指標になりますが、100% にする必要はありません。 本来テストしたい箇所をテストしているか詳細を みて分析します。
共同作業者さんが作成したファイルを指定したところに置いてもらうとワークスペースから参照したりダウンロードできます。
PHPUnitさんが作成したカバレッジレポート(html形式)も非常に参考になります。
コードに色づけしてテストで通過した箇所が分かります。赤い箇所はテストされてないので重要な箇所のテスト漏れがないか確認してください。
phpcsさんからのWordPress-Core準拠 結果を
レポートしてください。
Checkstyle でコーディング規約へのチェック結果を報告しています。
コーディング規約に従ってないファイルと行番号を一覧としてまとめていますので確認してください。
コーディング規約に従ってない行には色がつきますので詳細が確認できます。
phpmdさんからのPHPコード問題箇所の結果を
レポートしてください。
PMDでPHPコードの問題箇所を報告しています。
バグが起こりそうな箇所を一覧にしています。
例えば変数定義しているのに使ってないなどです。
問題点と思われる行には色がつきますので詳細が
確認できます。
まとめ
テストの自動化
Jenkinsさんを使わなくても、PHPUnitやphpcsそしてphpmdなどはコマンドで直接できます。Jenkinさんを使うことで仕事(job)を登録し再利用しやすくなります。また、SubversionやGitと連携できるのでコミットしたタイミングで自動チェックがかかり、レポートをメールで受け取るなど可能です。
まとめ
Jenkinsさんを使うと、PHPUnitやphpcsそしてphpmdなどの結果を見やすいレポートにしてくれます。
コマンドラインで叩いて実行させるとその時点の結果だけで問題点を把握してしまいがちですが、Jenkinsさんのレポートは過去の結果などをまとめて時系列レポートもあります。
時系列をみることで、同じ失敗を繰り返していないかや改善されているかなど品質向上を客観的に把握しやすくなります。
品質向上を客観的に
まとめ
Jenkinsさんはブラウザ上で仕事(job)の実行や結果報告の確認ができます。各自の開発環境と別にJenkinsさんが動く環境(Gitなどのバージョン管理と連動して常に最新のファイルでテストなどを行える環境など)を作れば、デザイナーやディレクターなど誰もがその時点の品質を確認しやすくなります。
Jenkinsさんは結果をメールなどで教えてくれるのでメールで問題報告があればブラウザで詳細確認などの運用ができます。
CI(継続的インテグレーション)で品質向上
まとめ
Jenkinsは400以上のプラグインがありカスタマイズすることで強力なツールに!
お勧めだよ!