8月のWordBench京都で、テストやCIについて学んできました

(2017年9月8日追記:WordBench京都 in 舞鶴 について)


台風5号が迷走して九州南部に上陸しようとしているのに、気温が38℃と殺人的だった8月6日(日)、WordPressコミュニティの勉強会「WordBench京都」に参加してきました。

今回のテーマは「テスト・CI(継続的インテグレーション)」です。
お客様に納品するシステムを制作する場合、そのシステムが設計した通りの性能を満たしているかをテストするのは当たり前です。
ただ、「特に複雑なカスタマイズをしていない場合は、いくつかのパターンを手動でテストするだけで十分なのではないか?」と、私は思っていました。
「CI」も意義はわかるのですが、いざ実践しようとすると技術的な面はともかく、意識として難しいなと感じていました。

なので、実際にテストやCIを必要と考えて実践している人たちはどのような考えで、どんな風にやっているのか?
それを知りたくて参加をしました。

今回は正直言って消化不良気味ですが、頑張って学んだことを書き残しておきたいと思います。

テストしやすいプラグインのつくり方

最初のセッションは角田一平さん。
テストしやすいプラグインって一見すると本末転倒な気がしますが、テストしやすいということは信頼性も上がり見通しの良いものだということなんですよね。

  • 一つのメソッドに詰め込まず、簡素なメソッドにすること。
  • 余計な戻り値を付けたりしない。
  • 外部とのやり取りなどは外に出して、一部が出来ていなくても機能ごとにテストできるようにする。

例えば、DBから値を取得する部分と出力する部分を分けておけば、DBが無くても出力部分だけテストできるとか、そういう考え方です。

角田さんは最後のセッションが終わった後に、プラグインのテストについてのお話をしてくださいました。
こちらも実践的でわかりやすかったです。
(参考記事)「WordPressのプラグインをCodeceptionを使ってテストする – Qiita

使いやすいツールも充実してきていて、テストに関して技術的にはクリアできそうな感じがしました。

CI環境からデプロイするプラクティス

続いてのセッションは鎌田遼さん
TravisCI を使用して、GitHubにプッシュしたらテストが走って問題なければ公開されて通知が来るといったことをやったりするお話です。
その中でも、今回のセッションでは特にセキュリティについて詳しくお話ししてくださいました。

TravisCIは、WordCamp Kansaiに参加したときに多くのセッションやハンズオンがあってWordPress界隈でも良く聞くワードでしたので興味はあったのですが、実際のところ、私にはあんまり関係ないかなと思っていました。

プラグイン制作ではなくテーマ制作だとしても、サイトを公開した後でデザイン変更があったりパーツが追加されたり機能を追加したりといったことは継続して発生します。
私はそういったことがあるたびに、開発環境を立ち上げて修正し、ブラウザを変えて確認してGitにコミットしてサーバーにアップロード・・・と手動でやっているわけですが、抜けが無いように毎回Evernoteに記録した前回メモを見ながら同じ手順を繰り返しています。
それが普通だと思っていたので何とも思っていなかったのですが、Travis CIを使うとメモを見ながら作業をしなくても同じ手順で確実に作業ができそうです。

初めてCIに具体的な興味が持てました。なるほどなぁ。

そして、その興味をさらに広げてくれたのが、次のセッションでした。

[モブプログラミング]プラグインのTravisCIでのアップデートに挑戦

鎌田さんのセッションを受けて、実際にTravisCIでライブでプラグインの更新をやってみようというのが、小原千秋さんのセッションです。
このセッションのおかげでテストやCIを使うシーンが具体的にイメージできて、参加して良かったなと思いました。

実際に使うのは、ちあきさんが実際に公開されているプラグイン「WP view login only」です。

WP view login only

WordPressのプラグインを公式ディレクトリに登録するときは「Subversion」というバージョン管理システムを使うのですが、普段バージョン管理に「Git」を使っているちあきさんは『何だこれ二度と触りたくない』と思うくらい混乱してしまったそうなのです。
そこで、TravisCIでGitHub経由で行う方法を、実際にやってみようというのが今回のセッションです。

今回のセッションではテストは組み込まず、GitHubにプッシュしたらTravisCIが動いて公式ディレクトリにSubversionで登録されるというところまでやっていただきました。
なかなかスムーズにいかなかったり、不要なディレクトリまで丸ごとアップロードされてしまったりと途中いろいろ問題が起きましたが、逆にそれらの問題を参加者が意見を出しながら解決していったりするのがとても勉強になりました。

その時の詳細は、ちあきさんのブログに詳しく書かれています。
ブログの後の記事ではセッション内ではできなかったテストを組み込んだりとかもされています。
テーマ開発しかやらない人でも参考になると思います。

WordBench 京都でWordPressプラグインをGitHub経由でSVNにデプロイできるようにしてきた #wbkyoto

セッションまとめ

テストやCIを行うことが品質を保つうえで重要であるということは知ってはいましたが、Webサービスを使うことで導入の敷居が低くなり、機能もさらに便利になっているということを知りました。
ただテストに関しては、現在の私の制作にこれらがすぐに活用できるのかというと、技術的な点とは別のところで悩んでしまう点があります。

プラグイン開発のように、ある入力に対する出力が規定できるような仕様であれば、テストを作ることができます。
しかし、テーマ開発の場合は「こうなったら正解」というものを規定することが難しいのです。
例えば「日付を取得したら日本式の表示で出力する」というテストはできますが、「日付を見やすく表示する」というテストが組めるのでしょうか?

しかし、「テンプレートファイルを修正してGitにプッシュしたら、コーディング規約やシンタックスチェックをして問題なければ公開」というようなことは出来そうです。
ブラウザチェックでレスポンシブデザインでのチェックもできるみたいです。
GoogleのモバイルフレンドリーチェックのAPIが公開されているらしいので、デザインを変更したらモバイルフレンドリーかどうかをチェックするようなテストはできそうですね。
誰かサンプルを作ってくれないかなー(笑)

セッション中にTravisCIのアカウントを作ってGitHubと連携もさせたので、まずは自サイトの運用で使ってみたいなと思っています。

長野の美味しいスイカと懇親会

今回のWordBench京都では、Toro_Unitさんから嬉しい差し入れがありました。
とろゆにさんの地元、長野県松本産の美味しくて大きなスイカが丸ごと1個です!
セッション内容よりもスイカに関するツイートのほうが多かったんじゃないかと思うくらい(笑)会場が盛り上がりました。

すいかのお礼 #wbkyoto – Togetterまとめ 

とても瑞々しくて甘くて美味しいスイカでした。
とろゆにさん、ありがとうございました。

懇親会では恒例のLT大会も行われました。
本編じゃないのでテーマも自由ですし、話す人が楽しければいいし、聴きたい人だけ聴いてればいい感じなのでいいですね。

懇親会では意外なつながりが判明しました。
今日の2つ目のセッションを担当してくださった鎌田さんは、私が WordCamp Kansa 2016 でセッションスピーカーとして登壇した際に『大学の研究で舞鶴にある施設に行ってました』と話しかけてきてくださった実行委員の方だったんです。
そして3つ目のセッションを担当してくださった小原千秋さんは、その時の私のセッションの司会をしてくださっていた方です。
あのときに無事セッションを終えることができたのはお二人のおかげと言っても過言ではありません。
ご縁は繋がるものなんですね。こうして一緒にお話しできて大変嬉しかったです。


さて、9月のWordBench京都は、大阪・長野との合同開催です。
これからのWordPressの制作において最重要と思われる技術「REST API」についてです。

REST祭 – WordBench大阪&京都&長野@さくらインターネット大阪本社 – connpass 


そして、10月21日(土)には、WordBench京都 in 舞鶴 を開催します。

WordBench京都 in 舞鶴 – connpass

会場は、赤れんがパークや自衛隊桟橋にも近い、舞鶴市総合文化会館の研修室です。
セッションも興味深いものが多いと思いますし、土曜日ですので、舞鶴に1泊して翌日に観光されるのも良いと思いますよ。
ぜひお越しください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です