Your SlideShare is downloading. ×
0
WordPress CI
WordPressで行う継続的インテグレーションのススメ
自己紹介
キタジマタカシ
長崎のフリーランスWebデザ
イナー/プログラマー。
Plugin:「MW WP Form」
「Smart Custom Fields」
Theme :「Kotetsu」「Habakiri」
Toro_Unit
(占部 紘)
長野県ではたらくフロン
トエンドエンジニア。
Plugin: 「Custom Post Type Permalinks」
「 Simple Post Type Permalinks」
堀家隆宏
Engineer at Digitalcube Co. Ltd.
4.2 Core Contributor
Plugin:「Trust Form」
「Simpe GA Ranking」
目標
CIを回すメリットを理解してもらう
WordPressでCIを行う方法を
ハンズオンを通して持ち帰ってもらう
従来の開発における問題
コードを書く
ブラウザでテスト
コードを書く
エラーが発生
コードを見なおして修正
完成
WordPress.orgにあげて公開
ここから先は
プラグインメンテの長い旅路
追加開発やバグ修正を
繰り返した結果…
バージョンを上げるたびに
複雑になっていくコード
忘れてしまう仕様
こんな機能つくったっけ
そしていつの日か…
あなたのプラグイン、
バージョンあげたらバグったわよ!!
申し訳ございません!!
こうならないためにどうするべきか?
テスト仕様書をつくる
テスト仕様書をつくる
ドキュメント書くのは大変。
書きたくない。メンテ出来ない
継続的インテグレーション
アプリケーション開発において品質改善や納期の短縮のための取り組みを
継続して実行していくこと
開発
テスト
Git、Svnへの反映
デプロイ
開発
テスト
Git、Svnへの反映
デプロイ
開発
この流れを
自動化する
ことが重要
テスト駆動開発
最初にテストを書き(これをテストファーストと言う)、そのテストが動作す
る必要最低限な実装をとりあえず行った後、コードを洗練させる
(wikipedia引用)
https://phpunit.de/
PHPUnit
PHPUnit
・PHPのテスティングフレームワーク
・ユニットテストを記述できる
・多機能で老舗
テストコードを書く
プラグインのコードを書く
phpunitコマンドでテストを実行
PHPUnitを使った開発の流れ
テストケース
アサーション
テストの期待値と実際の結果を比較して
テストの成否を判定するメソッド
アサーション
・第1引数があるべき値
・第2引数が実際の実行結果
アサーション
https://phpunit.de/manual/current/ja/
appendixes.annotations.html
アノテーション
PHPのコメントの形式で
テスト実行時のオプションを記述
アノテーション
・「@アノテーション名 引数」の形式で書く
・@afterだとテストケースクラス内の各テスト
メソッドを実行した後に呼ぶメソッドを指定
アノテーション
https://phpunit.de/manual/current/ja/
appendixes.annotations.html
WordPressで
PHPUnitを使う
WP-CLI
wp scaffold plugin <プラグイン名>
自動でテストに対応した構成を作る
WP_UnitTestCaseというクラスを継承
テストの例
タイトルがHello!の投稿を作成
投稿のタイトルがHello!が返るかテスト
テストの例
[hello_world]というショートコードを実行
ショートコードの実行結果を検証
テストの例
テストの前にパーマリンクを設定
・go_toメソッドで/feedヘアクセス
・is_feedでtrueが返るか検証
Test as a Document
Test as a Document
テストコードをメンテすることで
同時にドキュメントにもなる
・PHPUnitによるテストを継続的に実施することで品質が担保される
・ドキュメントの代わりにもなるので仕様を忘れない
Travis CI
https://travis-ci.org/
Travis CI
・GitHubのアカウントがあれば使用可能なCIサービス
・GitHubへのpush時にhookしてテストを実行
・テストの設定を.travis.ymlに記載
.travis.yml
複数のPHP及びWordPressのバージョンでテストが可能
実行結果
実行結果
テストを実行して通ってますよという証
GitHub上にbadgeを追加
・pushのタイミングでテストを通すことが担保できる
・PHP及びWordPressの複数バージョンでの自動テスト
・テストして品質が担保されていることをGitHub上に記載できる
Travis CIのメリット
デプロイの自動化
通常のデプロイ
サーバへファイルのアップ
通常のデプロイ
サーバへファイルのアップ
データベースの置換
通常のデプロイの問題点
・手作業による作業の煩雑さ
・データベースの置換で心が折れる
WordMove
https://github.com/welaika/wordmove
WordMove
・Rubyで作られたWordPress専用のデプロイツール
・DB内のURLをステージングと本番で自動で置換
・Movefileというファイルにデプロイの情報を記述
Movefile
続きはハンズオンで!
WordPressで行う継続的インテグレーションのススメ
Upcoming SlideShare
Loading in...5
×

WordPressで行う継続的インテグレーションのススメ

472

Published on

WordCamp Kansaiで発表した資料

Published in: Internet
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
472
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "WordPressで行う継続的インテグレーションのススメ"

  1. 1. WordPress CI WordPressで行う継続的インテグレーションのススメ
  2. 2. 自己紹介
  3. 3. キタジマタカシ 長崎のフリーランスWebデザ イナー/プログラマー。 Plugin:「MW WP Form」 「Smart Custom Fields」 Theme :「Kotetsu」「Habakiri」
  4. 4. Toro_Unit (占部 紘) 長野県ではたらくフロン トエンドエンジニア。 Plugin: 「Custom Post Type Permalinks」 「 Simple Post Type Permalinks」
  5. 5. 堀家隆宏 Engineer at Digitalcube Co. Ltd. 4.2 Core Contributor Plugin:「Trust Form」 「Simpe GA Ranking」
  6. 6. 目標 CIを回すメリットを理解してもらう WordPressでCIを行う方法を ハンズオンを通して持ち帰ってもらう
  7. 7. 従来の開発における問題
  8. 8. コードを書く
  9. 9. ブラウザでテスト
  10. 10. コードを書く
  11. 11. エラーが発生
  12. 12. コードを見なおして修正
  13. 13. 完成
  14. 14. WordPress.orgにあげて公開
  15. 15. ここから先は プラグインメンテの長い旅路
  16. 16. 追加開発やバグ修正を 繰り返した結果…
  17. 17. バージョンを上げるたびに 複雑になっていくコード
  18. 18. 忘れてしまう仕様 こんな機能つくったっけ
  19. 19. そしていつの日か…
  20. 20. あなたのプラグイン、 バージョンあげたらバグったわよ!! 申し訳ございません!!
  21. 21. こうならないためにどうするべきか?
  22. 22. テスト仕様書をつくる
  23. 23. テスト仕様書をつくる
  24. 24. ドキュメント書くのは大変。 書きたくない。メンテ出来ない
  25. 25. 継続的インテグレーション
  26. 26. アプリケーション開発において品質改善や納期の短縮のための取り組みを 継続して実行していくこと
  27. 27. 開発 テスト Git、Svnへの反映 デプロイ
  28. 28. 開発 テスト Git、Svnへの反映 デプロイ 開発 この流れを 自動化する ことが重要
  29. 29. テスト駆動開発
  30. 30. 最初にテストを書き(これをテストファーストと言う)、そのテストが動作す る必要最低限な実装をとりあえず行った後、コードを洗練させる (wikipedia引用)
  31. 31. https://phpunit.de/ PHPUnit
  32. 32. PHPUnit ・PHPのテスティングフレームワーク ・ユニットテストを記述できる ・多機能で老舗
  33. 33. テストコードを書く プラグインのコードを書く phpunitコマンドでテストを実行 PHPUnitを使った開発の流れ
  34. 34. テストケース
  35. 35. アサーション テストの期待値と実際の結果を比較して テストの成否を判定するメソッド
  36. 36. アサーション ・第1引数があるべき値 ・第2引数が実際の実行結果
  37. 37. アサーション https://phpunit.de/manual/current/ja/ appendixes.annotations.html
  38. 38. アノテーション PHPのコメントの形式で テスト実行時のオプションを記述
  39. 39. アノテーション ・「@アノテーション名 引数」の形式で書く ・@afterだとテストケースクラス内の各テスト メソッドを実行した後に呼ぶメソッドを指定
  40. 40. アノテーション https://phpunit.de/manual/current/ja/ appendixes.annotations.html
  41. 41. WordPressで PHPUnitを使う
  42. 42. WP-CLI
  43. 43. wp scaffold plugin <プラグイン名>
  44. 44. 自動でテストに対応した構成を作る
  45. 45. WP_UnitTestCaseというクラスを継承
  46. 46. テストの例 タイトルがHello!の投稿を作成 投稿のタイトルがHello!が返るかテスト
  47. 47. テストの例 [hello_world]というショートコードを実行 ショートコードの実行結果を検証
  48. 48. テストの例 テストの前にパーマリンクを設定 ・go_toメソッドで/feedヘアクセス ・is_feedでtrueが返るか検証
  49. 49. Test as a Document
  50. 50. Test as a Document テストコードをメンテすることで 同時にドキュメントにもなる
  51. 51. ・PHPUnitによるテストを継続的に実施することで品質が担保される ・ドキュメントの代わりにもなるので仕様を忘れない
  52. 52. Travis CI https://travis-ci.org/
  53. 53. Travis CI ・GitHubのアカウントがあれば使用可能なCIサービス ・GitHubへのpush時にhookしてテストを実行 ・テストの設定を.travis.ymlに記載
  54. 54. .travis.yml 複数のPHP及びWordPressのバージョンでテストが可能
  55. 55. 実行結果
  56. 56. 実行結果
  57. 57. テストを実行して通ってますよという証 GitHub上にbadgeを追加
  58. 58. ・pushのタイミングでテストを通すことが担保できる ・PHP及びWordPressの複数バージョンでの自動テスト ・テストして品質が担保されていることをGitHub上に記載できる Travis CIのメリット
  59. 59. デプロイの自動化
  60. 60. 通常のデプロイ サーバへファイルのアップ
  61. 61. 通常のデプロイ サーバへファイルのアップ データベースの置換
  62. 62. 通常のデプロイの問題点 ・手作業による作業の煩雑さ ・データベースの置換で心が折れる
  63. 63. WordMove https://github.com/welaika/wordmove
  64. 64. WordMove ・Rubyで作られたWordPress専用のデプロイツール ・DB内のURLをステージングと本番で自動で置換 ・Movefileというファイルにデプロイの情報を記述
  65. 65. Movefile
  66. 66. 続きはハンズオンで!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×