少人数チームにおけるプロジェクト管理のベストプラクティス

42,694 views

Published on

Redmine+Git+GitLab+Jenkinsを総合的に利用した少人数チームでのプロジェクト管理とそのフローについて
English version: http://www.slideshare.net/cakeyoshida/best-practices-of-project-management-for-small-teams

Published in: Technology

少人数チームにおけるプロジェクト管理のベストプラクティス

  1. 1. 少人数チームにおける プロジェクト管理の ベスト プラクティス ?! Appirits 吉田啓紀
  2. 2. はじめに
  3. 3. とある プロジェクトマネージャの 悩み
  4. 4. プログラムの 品質が不安・・・  
  5. 5. でも、 プログラムの 品質が不安・・・  テストフェーズまでは 触れないし・・・  
  6. 6. でも、 プログラムの 品質が不安・・・  テストフェーズまでは 触れないし・・・     小さなチームなのに きれいなコードが 保てない・・・
  7. 7. でも、 プログラムの 品質が不安・・・  テストフェーズまでは 触れないし・・・     小さなチームなのに きれいなコードが 保てない・・・ でも、わざわざ コード規約まで 必要か・・・?!
  8. 8. ところが!
  9. 9. 2つのことを ヤルだけで・・・ たった
  10. 10. コードの品質が 上がった!  
  11. 11. プログラムのバグも コードの品質が 上がった! かなり少ない!  
  12. 12. プログラムのバグも コードの品質が 上がった! かなり少ない!   ♪ メンバー間の 技術交換まで?!
  13. 13. 2つのこと たった
  14. 14. 1.  コードの強制自動テスト 2.  プログラマ同士の コードレビュー
  15. 15. 1.  コードの強制自動テスト 2.  プログラマ同士の コードレビュー
  16. 16. 意外とありがちな テスト忘れが 無くなるので 効果絶大!
  17. 17. 1.  コードの強制自動テスト 2.  プログラマ同士の コードレビュー
  18. 18. プログラムのテストから コードレベルの問題まで プログラマ間で相互に指摘 ⇒品質UP!
  19. 19. で、 どうやるの?
  20. 20. GitLab(GitHub)の マージリクエスト ※1 (pull-request)を 使って 自動テスト&コードレビュー ※1 ・・・ 以降「マジリク」とも記述
  21. 21. えーと。。 実際どうやるの??
  22. 22. 践! 実 マジリク活用 開発フロー
  23. 23. 登場ツール • Redmine: チケット管理ツール • Git: バージョン管理ツール • GitLab: Git管理ツール ⇒オーブンソースの場合はGitHubなどで代用可能 • Jenkins: CIツール   (※GitLabとの連携用に jenkins-gitlab-merge-request-builder-plugin を利用) ⇒オープンソースの場合はTravis CIなどで代用可能
  24. 24. 登場アイコン プロジェクト プログラマA プログラマB マネージャ マージ リクエスト チケット ブランチ 手動処理 自動処理 自動テスト
  25. 25. 時間の流れ Redmine 要件をチケット化 新規 プロジェクト マネージャ Git GitLab Jenkins
  26. 26. 時間の流れ Redmine Aさんに アサイン 新規 プログラマA Git GitLab Jenkins
  27. 27. 時間の流れ Redmine 開発開始! 新規 進行中 Git GitLab Jenkins
  28. 28. 時間の流れ Redmine 新規 進行中 進行中 (20%) 「<チケット番号>_<要件英訳>」 というブランチで開発 (ex. 123_add_hoge_feature) Git GitLab Jenkins
  29. 29. 時間の流れ Redmine 新規 進行中 進行中 (20%) 進行中 (40%) 開発 Git GitLab Jenkins
  30. 30. 時間の流れ Redmine 新規 進行中 進行中 (20%) 進行中 (40%) 進行中 (80%) 開発 Git GitLab Jenkins
  31. 31. 時間の流れ Redmine 進行中 (80%) キリのいいところで git push Git GitLab Jenkins
  32. 32. 時間の流れ Redmine 進行中 (80%) Git masterブランチへの マジリク作成 GitLab マージ リクエスト Jenkins
  33. 33. 時間の流れ Redmine 進行中 (80%) ! Git GitLab マージ リクエスト マージ リクエスト 自動テスト& 結果通知 Jenkins テスト… NG!
  34. 34. 時間の流れ Redmine 進行中 (80%) 修正&push Git GitLab マージ リクエスト マージ リクエスト Jenkins テスト… NG!
  35. 35. 時間の流れ Redmine 進行中 (80%) Git GitLab ! マージ リクエスト マージ リクエスト マージ リクエスト 自動テスト& 結果通知 Jenkins テスト… NG! テスト… OK!
  36. 36. 時間の流れ Redmine チケットを Bさんにアサイン 進行中 (80%) 解決待ち (100%) Git マジリクを Bさんにアサイン GitLab マージ リクエスト プログラマB Jenkins
  37. 37. 時間の流れ Redmine 進行中 (80%) 解決待ち (100%) git pull <対象ブランチ> Git GitLab マージ リクエスト Jenkins
  38. 38. 時間の流れ Redmine 進行中 (80%) 解決待ち (100%) 手動テスト& コードレビュー Git GitLab マージ リクエスト Jenkins
  39. 39. 時間の流れ Redmine テスト失敗の 理由を添えて Aさんにアサイン ! 進行中 (80%) 解決待ち (100%) フィード バック NG Git GitLab マージ リクエスト Jenkins
  40. 40. 時間の流れ Redmine フィード バック 修正&push Git GitLab Jenkins
  41. 41. 時間の流れ Redmine フィード バック Git GitLab ! マージ リクエスト 自動テスト& 結果通知 Jenkins テスト… OK!
  42. 42. 時間の流れ Redmine 修正した旨を添えて Bさんにアサイン フィード バック 解決待ち Git GitLab マージ リクエスト Jenkins テスト… OK!
  43. 43. 時間の流れ Redmine フィード バック 解決待ち git pull Git GitLab マージ リクエスト Jenkins テスト… OK!
  44. 44. 時間の流れ Redmine 手動テスト& コードレビュー Git GitLab Jenkins
  45. 45. 時間の流れ Redmine OK Git マージ実行! GitLab マージ リクエスト Jenkins
  46. 46. 時間の流れ Redmine マージした旨を添えて プロマネにアサイン 解決待ち プロジェクト マネージャ Git GitLab マージ リクエスト Jenkins
  47. 47. 時間の流れ Redmine 起票者が チケットを閉じる OK 解決待ち Git GitLab マージ リクエスト 終了 Jenkins
  48. 48. 時間の流れ Redmine 解決待ち 終了 Git GitLab おわり マージ リクエスト (誰かもっとわかりやすい図を作ってください・・・) Jenkins
  49. 49. こんな感じで 進めます。
  50. 50. このフローだと •  (コード規約なしでも) 統一感あるコード •  プログラムのバグ軽減 •  プログラマ間の技術交換 •  タスク進捗の透明化 などが実現できて便利です。
  51. 51. また、レビューに時間をかけるのは ナンセンスだと思う方もいるかもしれません。 が、 はじめのうちに悪いコードを排除することで 後々泥沼にハマッて、より時間が浪費されるのを 避ける効果があったりします。
  52. 52. というわけで、 ぜひお試しください!

×