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

13,682 views

Published on

WordCamp Kansaiで発表した資料

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

No Downloads
Views
Total views
13,682
On SlideShare
0
From Embeds
0
Number of Embeds
8,324
Actions
Shares
0
Downloads
16
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide

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. 続きはハンズオンで!

×