Upgrade to Pro — share decks privately, control downloads, hide ads and more …

顧客価値を安定的に届けるために―Rettyにおけるアジャイル開発とQA改善の取り組み / D...

顧客価値を安定的に届けるために―Rettyにおけるアジャイル開発とQA改善の取り組み / Deliver customer value regularly at Retty

Yuichi Tsunematsu

November 15, 2019
Tweet

More Decks by Yuichi Tsunematsu

Other Decks in Programming

Transcript

  1. 自己紹介
 • 常松祐一 (つねまつ ゆういち) 
 ◦ Engineering Manager 


    ◦ Software Engineer
 ◦ Agile Development
 • SNSアカウント
 ◦ tunepolo : 
 ◦ tune : 
 
 • 顧客にとって価値のあるプロダクトを、チーム一丸 となって協力し、短期間にリリースする開発体制の あり方を模索しています。 
 confidential
  2. Rettyが目指すソフトウェア開発の目標
 confidential • 「グルメサービスRetty」ワンプロダクトで成長する
 ◦ メンバーが増えてもプロダクトは増えない。
 • 全社で重要なことに注力する
 ◦ 重要なものから1つずつ対処する。着手からリリースまでを短く。


    • フィードバックを踏まえ、短期間で方針を見直していく。
 
 「上記が達成された状態=顧客価値を安定的に届ける」
 を実現するため、アジャイル開発に取り組んでいます。

  3. 課題を改めて整理すると・・・
 confidential 1. アジャイルになっていない開発プロセス
 ◦ アジャイルを目指したはずが綺麗なウォーターフォールになっている。
 ◦ 開発着手からリリースまでが長い。
 2. レガシーシステムのお守り


    ◦ 創業からサービスを支えるPHPモノリス。
 ◦ 全体像がわからず、パッチワークがさらなる負債となる。
 3. ドメイン知識が不足し、開発・ビジネスのスピードが上がらない
 ◦ 仕様の把握に時間が取られ、開発スピードが遅くなる。
 ◦ テストで見るべきポイントが曖昧で増えていく一方。

  4. だめなバックログリファインメント
 confidential • バックログの項目に対し、「どうやる か」について「個人」で考え、「開発期 間に対しての見積もり」を「正確に」出 す。メンバ間で見積もりに差異が生じ た場合、「どちらかが折れるまで議論 する」。
 •

    バックログの項目に対し、「何をやる か」について「複数人」で議論し、「開 発規模に対しての見積もり」を「ざっく りと」出す。メンバ間で見積もりに差異 が生じた場合、「根拠を互いに共有」 し「短く終わる」。

  5. バックログリファインメントの目的 1. 開発スケジュールを正確に見積もるためではない。 2. 関係者でアイテムについての認識を合わせるため。 3. バックログのアイテムが開発可能であることを確認する。 a. 受け入れ条件が明確である。 b.

    見積もりが可能なサイズである。 c. 実現の目処がついている。 4. バックログがメンテされ、取り組む価値のある開発項目 が上位に並ぶようにする。 ※社内向け説明資料より抜粋
  6. 開発プロセスの見える化
 confidential • 現在の開発プロセスを可視化し、ボトルネックを明確にするためにカンバンを使う。
 • GitHub Project、ZenHubを使っていたが、ツールが先にあるとツールの使いこなしに 頭が向いてしまう。
 ◦ GitHubのIssueよりも小さい単位でタスクを分割しない


    ◦ ツールがサポートしていない項目は可視化しない
 • 柔軟にカスタマイズができる物理カンバン (壁・ホワイトボード+付箋)で自分たちに 合ったやり方を確立し、その上で必要ならば電子化する。

  7. 開発プロセスの改善 まとめ
 confidential • 【課題感】
 ◦ アジャイルを目指したはずが綺麗なウォーターフォール になっている
 ◦ 開発着手からリリースまでが長い


    
 • 【やったこと】
 ◦ バックログリファインメントの改善
 ◦ 開発プロセスの見える化
 ◦ 小さく定期的に出していく意識の醸成
 Photo by Olga Guryanova on Unsplash
  8. ビジネスロジックの整理・簡素化
 confidential • マイクロサービスの導入と合わせて型を導入
 ◦ proto / gRPC
 ◦ GraphQL,

    TypeScript
 • 不要コードの削除と合わせてロジックの簡素化
 ◦ 表示する写真の選別
 ◦ 口コミの表示順 などなど

  9. レガシーシステムからの脱却 まとめ
 confidential • 【課題感】
 ◦ 創業期を支えたPHPモノリス
 ◦ 全体像がわからず、パッチワークがさらなる負債とな る。


    
 • 【やったこと】
 ◦ マイクロサービスへの分割
 ◦ 不要になったコードの削除
 ◦ ビジネスロジックの整理・簡素化
 Photo by Pranav Kumar Jain on Unsplash
  10. 現状QAプロセスの良い点を認識する
 confidential • 【課題】専門のQA組織・チームが無い
 ◦ ✖ QA組織・チームを立ち上げよう
 ◦ ◦ 組織全体でQAをやっていく機運がある。


    ◦ ☆ QA組織・チームが立ち上がっても、「ドメイン知識が不足している」という現 在の問題は改善されないだろう。
 • 【課題】プランナーがQA項目を考えている
 ◦ ✖ QA項目はQAエンジニアが考えてチェックするべき
 ◦ ◦ プランナーがQA項目を考えることで仕様の矛盾に目が向くようになってい る。ユーザ観点のチェック項目はプランナーが作成し、エンジニアは実装観点 のチェックを実施する。

  11. ドメイン知識の蓄積とQAプロセスの改善 まとめ
 confidential • 【課題感】
 ◦ 仕様の把握に時間が取られ、開発スピードが遅くなる。
 ◦ テストで見るべきポイントが曖昧で増えていく一方。
 


    • 【やったこと】
 ◦ 現状プロセスの良い点を認識する。
 ◦ To-Beではなく、As-Isから改善を進める。
 ◦ テスト観点・仕様の集積場を設ける。
 Photo by Sikai Gu on Unsplash
  12. まとめ
 confidential 1. 開発プロセスの改善
 ◦ バックログリファインメントの改善
 ◦ 開発プロセスの見える化
 ◦ 小さく定期的に出していく意識の醸成


    2. レガシーシステムからの脱却
 ◦ マイクロサービスへの分割
 ◦ 不要になったコードの削除
 ◦ ビジネスロジックの整理・簡素化
 3. ドメイン知識の蓄積とQAプロセスの改善
 ◦ 現状プロセスの良い点を認識
 ◦ To-Beではなく、As-Isから改善を進める
 ◦ テスト観点・仕様の集積場を設ける