Weitere ähnliche Inhalte
Ähnlich wie CEDEC2015講演 チーム開発をスムーズにするために (20)
Mehr von Takafumi Ikeda (8)
CEDEC2015講演 チーム開発をスムーズにするために
- 1. チ ーム 開 発 を ス ムーズ に す る た め に
C E D E C 2 0 1 5
- 6. • 現在: Sales Engineer @ GitHub
• 過去: DevOps, スクラムマスター, 開発部長など
- 8. 尚 、 本 日 の お 話 は 現 在 所 属 の 組 織 ・ 団
体 と は 一 切 関 係 あ り ま せ ん
- 9. A G E N D A
• 書籍の紹介
• なぜチーム開発が重要なのか
• チーム開発をどう改善してきたか
• まとめ
- 15. あ り が と う ご ざ い ま し た
- 17. チ ーム 開 発 実 践 入 門
• 技術評論社より2014年4月発売
• チームでソフトウェア開発を行う際によくハマる落とし穴の紹介とそれを
解決するためのノウハウを凝縮した入門書
• 新人PMむけの入門書として、修羅場をくぐったおじさんが涙する書籍とし
て大人気!
• おかげさまで現在第4刷!
- 18. 本 の 内 容
• 第1章 チーム開発とは
• 第2章 チーム開発で起きる問題
• 第3章 バージョン管理
• 第4章 チケット管理
• 第5章 CI(継続的インテグレーション)
• 第6章 デプロイの自動化(継続的デリバリー)
• 第7章 リグレッションテスト
- 20. チ ーム 開 発 と は
最適なプラクティスはケースバイケース
チーム開発の世界では、どこにでも通用する万能のベストプラクティスがあるというより、
状況に応じたベターなパターンの組み合わせが何通りもある、という考え方が正解に近いで
しょう。実際自分が関わるプロジェクトに応じた最適解を見いだせるかどうかが、プロジェ
クトを成功に導く といえるでしょう。
- 21. チ ーム 開 発 と は
自分が関わるプロジェクトに応じた
最適解を見いだせるかが
- 23. チ ーム 開 発 で 起 き る 問 題
• チーム開発の現場で実際に起きがちな問題をケーススタディとして見せている章で
す。
• 実際にわたしが体験したいくつかの現場での事例を組み合わせています
• 課題管理ができない
• デグレが頻発
• 環境ごとに動きが違う
• etc etc
- 25. バー ジョ ン 管 理
• チーム開発をスムーズにするための基礎の基礎
• さすがに使ってない現場はないとは思うが
• データベーススキーマのバージョン管理(データベースマイグレーション
ですね)についても触れています
- 27. チ ケ ッ ト 管 理
• チケット管理に向くフェーズ、向かないフェーズもあります
• チケット管理システムは定型的な課題管理に向く
• 流動的な課題の管理には非定型ドキュメントを使うべき
• 課題の粒度と使うべきツールについても示唆しています
- 28. 第 五 章
C I ( 継 続 的 イ ン テ グ レ ー シ ョ ン )
- 29. C I ( 継 続 的 イ ン テ グ レ ー シ ョ ン )
• 継続的改善に必要不可欠なのがCIです
• なぜ不可欠なのか、以下の2点で説明しています
• 市場の変化のスピード
• コストメリット
- 30. C I ( 継 続 的 イ ン テ グ レ ー シ ョ ン )
• ビルドが壊れた時のゲームについてなど、CIの運用についても触れていま
す。
• CI自体は目新しいものではなく、大昔から実践されてきたプラクティスで
あることにも触れました。
• ここまでがチーム開発の基礎となる部分です。
- 31. 第 六 章
デ プ ロ イ の 自 動 化
( 継 続 的 デ リ バ リ ー )
- 32. デ プ ロ イ の 自 動 化
• デプロイの自動化について、必要性と方法を解説
• Bootstrapping, Configuration, Orchestrationの3フェーズに分けて解説
• Kickstart, Vagrant, Chef, Capistrano, Fabric, Serverspecといったツー
ルについて
- 34. リ グ レ ッ シ ョ ン テス ト
• 受入テストとそのリグレッションの自動化
• 意外と具体的な情報がないのがこの分野
• デグレを絶対に起こさず機能追加していくには必須
• 特にB2B向けのサービスでは重要
- 35. リ グ レ ッ シ ョ ン テス ト
• (一般的に言って)プログラミングが不得意な人の多いQA担当者ととも
にいかに効率的に受入テスト自動化に取り組むかについても示唆
• 内容としては2年ほど前にJenkinsユーザーカンファレンスにて発表した内
容がベース
- 36. ぜ ひ 読 んで み てく だ さ い !
職 場 の 同 僚 に もす すめ て ね !
- 37. な ぜ チ ーム 開 発 が 重 要 な の か
- 44. チ ーム 開 発 を は じ め る に
あ た って 考 える べ き こ と
- 46. ツ ール の 使 い こ な し は
さ ら に そ の 一 部
- 49. プ ロ ジェ ク ト を 成 功 に 導 く た め の 大 事 な 基 礎
- 57. こ こ 3 ∼ 5 年 W E B を 見 て
実 践 し 続 け て い れ ば ね
- 58. 新 人 さ ん だ っ た り 、
訳 あ って キ ャ ッ チ ア ッ プ
して こ れ な か っ た 人 は
ど う な る ん だ ろ う ?
- 62. そ こ で こ の 本 が や く に た つ ! !
- 63. チ ーム 開 発 を ど う 改 善 して き た か
- 65. 某 プ ロ ジェ ク ト 1
• 2005年∼2009年ごろ
• 200名規模、20チーム以上で開発し、5年以上販売、運用している製品
• 池田はプロジェクト開始直後からジョイン
• メンバーは問題解決の意識は高いがエンジニアとしてのスキルにはばらつ
きがある
- 67. な ぜ こう な っ た か
• 課題管理は独自システムがあったが機能しておらず、各チームが独自にExcelなどを駆使して
管理しており、担当者に聞かないと状況がわからなかった
• PVCSというロックベースのVCSを使っており、マージができず並行開発が困難だった
• テストを書くという文化、発想がそもそもなかった
- 68. ど う 解 決 を 試 み た か
• PVCSではどうにもならず、Subversionへの入れ替えを
• 課題管理にTracを導入
• TracとSubversionを連携することで変更の管理と追跡を行えるように
- 71. 改 善 の 壁
• TracやSubversionの導入、検証を行うためのリソースがない
• 人のリソース
• サーバリソース
- 72. 改 善 の 壁
• 稟議を通すのは困難
• 導入してみないと効果がわからないのでコストをかける妥当性を説明できない
• 今までのやり方で回ってるのになぜ? に答えられない
- 73. 「 許 可 を 求 め な 、 謝 罪 せ よ 」
B Y グ レ ース ・ ホ ッ パ ー
- 74. 壁 を 超 える た め に
• サーバリソース
• 総務と仲良くなり、余剰PCが出た瞬間に知らせてもらった
• 上司の協力も得て0円稟議を書き、PCをゲット
• 人のリソース
• 検証のための時間は取れないので自分と自分のチームの業務時間をそのまま当てる
• 要するに自分のチームを実験台に
- 75. 既 存 の 業 務 フ ロ ー と の 統 合
• 自分のチームだけ違うVCSを使い、違う課題管理システムを使います、では全体の業務フ
ローがおかしくなる
• 既存の業務フローと統合させてスムーズに回してみせることが重要
• 既存の課題管理システムとTracの同期スクリプトを書いた
• 既存のPVCSリポジトリとSVNを定期的に同期するスクリプトも書いた
- 76. 可 視 化 に よる 自 分 事 化
• 課題管理をし、バージョン管理をすることで問題が可視化
• 可視化されると、各メンバーが自分事として改善を考えるようになる
• そうするとさらに改善は進むと考えた
- 77. 結 果 を 出 し 既 成 事 実 を
• チーム間の課題を共有できるようになり無駄が減る
• 誰が何をしているか、課題がどうなっているかわかるように
• テストは相変わらずなかったが、代わりにコードのDiffを手軽に見れるようになったので(事後
ではあるが)コードレビューできるようになった
• マージが簡単になり、並行開発ができるようになった
• CIまでは行かなかったが、VCSを変えて課題管理をしただけでも、結合に係る時間は短縮できた
• 結果、目に見えて品質も開発スピードも上がった
- 79. 結 果 が 出 る と 話 が 早 い
• 結果が出たのを見て他のチームから問い合わせが来るように
• 全社的にプロセス改善を行っている部署から声がかかり、一緒に全社展開のプロジェクトに
とりかかることになった
• 各チームの見通しが良くなり、各所で改善活動がされるようになった
- 80. 仲 間 が 増 え 、 広 が って い っ た
- 81. ま と め る と
• 「許可を求めるより謝罪」まずはやる
• 壁にへこたれない、言い訳をしない
• 既存の業務フローとの統合までやり切らないと説得力はない
• 結果を出して仲間を増やす
- 82. 某 プ ロ ジェ ク ト 2
• ある新サービスの開発プロジェクト
• 開発開始後2ヶ月が経過
• スクラムを採用
• 池田は途中からジョイン
• メンバーひとりひとりはスキルが高く大変優秀
- 83. ジョ イ ン 当 時
• タスク管理があいまい
• 業務過多で連日徹夜
• 終わらない、見通せない、リリースが危ぶまれる
• 企画サイドとエンジニアサイドの相互不信感MAX
• CIがなくよく壊れる
• 開発環境を整える工数はない
- 84. タ ス ク 管 理 が あ い ま い
• バックログの管理はされていたが、
• 何が終わり、何が終わっていないのか、誰がボールを持っているか、が
あいまい
• スプレッドシートで管理されており、よく壊れる
- 85. タ ス ク 管 理 が あ い ま い
• まずチケット管理システムに移行し、システムとしての信頼度を高めた
• タスクの完了定義をしっかりと行い、状況を確認しきちんと更新すること
で、内容的な信頼度を高めた
- 86. ジョ イ ン 当 初 の タ ス ク 管 理
スプリント計画
(企画が作成)
上記とは無関係にタスク管理
(開発が作成)
タスクボード
(開発が作成)
企画がたてたスプリント計画をも
とにストーリーをタスクに分解
相互の同期が取れず
次第に状況が不明瞭に
タスクボードに載っていない
ことをエンジニアが別途管理
- 88. な ぜ こう な っ た の か
• スプリントの見積り、計画にエンジニアが入っていないため、
• 見積りの根拠があいまい
• システム的に重要なタスクが抜ける
• 複数人が思い思いにスプレッドシートをいじるため、
• 頻繁に壊れる
• 誰がどこをどう変更したかわからず、信頼出来ない状態に
- 89. ど う し た か
• 全てをJIRAに一本化
• JIRAのGreenHopperプラグインを導入
• スプリント計画にエンジニアを入れるように
• 計画値と実績値を記録し、定期的に全体共有するように
- 90. J I R A に 一 本 化
企画とエンジニアがお互いに
ストーリーを書き出し、
一緒にスプリント計画
タスクボードに付箋を貼る
合意したスプリント計画をもとにス
トーリーをタスクに分解
- 91. ど う な っ た か
• エンジニアが見積りに入ることで
• 見積もりがある程度正確に近くなった
• ツールを整備したことで、
• スプリント毎の計画値と実績値が可視化できるようになった
• 可視化できたことで、
• 各自が見積りと計画を自分事と捉え、改善策を考えるように
- 92. 可 視 化 に よる 自 分 事 化
• 企画とエンジニアとの間で情報共有を容易にした
• 可視化することによって、ここでも自分事化が起きる
• 見えてくるとみんなどうやって改善できるだろうかと考え始め、好循環が
生まれる
- 93. C I が 実 施 さ れて い な い
• ユニットテストは書かれていたが、CIは実施されていなかった
• 単体テストを実行してからPushすることになっていたが必ずしも。。
- 94. 起 き て い た こ と
• 毎週金曜の朝にスプリントレビューがある
• 直前になって開発環境にすべての変更を統合
• きちんと動作せず、レビューに間に合わせるために徹夜
- 95. な ぜ こう な っ た の か
• 機能要件を実装するのに忙しく、CI, CDなど実施するための余裕がない
• 開発生産性を高めるための作業が洗い出されておらず、計画もされていない
• エンジニアが見積り、計画をしていないことも大きい
- 96. ど う し た か
• 自分がスクラムマスターとしてプロジェクトに入り、CI環境の整備を買って出た
• 企画には考慮することができないこういった案件も計画に入れ、見積りをするように働きか
けた
- 97. ど う な っ た か
• レビュー前日の徹夜がなくなった
• いつでも動く成果物が存在する状態になり、企画とエンジニア間のコミュ
ニケーション頻度が上がり活性化
• 品質管理部門もテストをしやすくなった
• 開発スピードが上がり、目に見えてチームの状況は良くなった
- 98. ま と め る と
• 課題を一箇所にまとめ可視化
• 課題管理システムを信頼できる状態にし、情報共有を容易に
• エンジニアが見積もり、計画をするようにし、タスクの抜け漏れをなくした
• 生産性を担保するための必要なインフラ構築の工数を確保するようにした
• CIを実施し品質を担保、レビューをスムーズに
- 99. ま と め :
チ ーム 開 発 を 改 善 す る に は
- 100. チ ーム 開 発 を 改 善 す る に は
• まず可視化
• 現実を直視できる環境を作れば、おのずと改善サイクルは回り出す
• そのための必要なことはどんなことでもするのがスクラムマスター(またはプロジェ
クトマネージャー)の仕事
- 101. 小 さ な こ と か ら コ ツ コ ツ と
• いきなり「継続的デリバリー!」とか言わない
• いきなり「Githubのように一日千回リリース!」とか無理無理
• やれるところから、インパクトの大きいところからはじめるようにしてい
ます
- 102. 一 人 で は で き な い
• 当たり前ですが一人ではできません
• チーム開発です
• 開発もチームでやるなら、開発フローの改善もチームでやりましょう
• 「あいつらわかってない」とか「環境が整ってない」とか言わない
• 仲間を見つけよう
- 103. 管 理 し な い
• チーム開発を「管理する」発想だと管理者のレベルを超えたものは生まれ
ない
• シナジーを重視する
• シナジーを生むためにはメンバー全員が自律的に考えて動く必要がある
- 104. 情 報 を 共 有 す る
• 全てのメンバーができるかぎりフラットに全情報にアクセスできるように
• 持っている情報が多ければ多いほど個別に判断して改善ができるようにな
る
• シナジーが生まれる
- 110. チ ーム 開 発 あ る あ る
• チケット管理を始めたはいいけど誰も書かなくなる
• 始めのうちは単体テストを書いていたけど、仕様変更が重なるうちにメン
テしなくなる
• CIを始めたはいいけどテストがよくこけるので誰もテスト結果を気にしな
くなる
- 119. ま と め る と
• 自ら率先してやってみせることが重要
• みんなが続けやすい環境づくりに労力を割くこともとても重要
• いきなり気張ってやり過ぎず、習慣付けを意識する
• できることをできる範囲でコツコツとやる
• 無理しない
- 122. ご 清 聴 あ り が と う ご ざ い ま し た