Slide 1

Slide 1 text

技術的負債を 返し続ける取り組み PHPカンファレンス沖縄 2021/05/29 @akki_megane ~ あなたのPHPのバージョンいくつですか?~

Slide 2

Slide 2 text

自己紹介 名前:秋葉 誠一 好きな技術:PHP、Vue.js、Serverless 会社:ROXX 趣味:スノボ、サバゲ、野球、アロハシャツ @akki_megane

Slide 3

Slide 3 text

あなたのPHPは? ## サポート期限 - 7.2 2020/11/03 (サポート終了) - 7.3 2021/12/06 - 7.4 2022/11/28 - 8.0 2023/11/26

Slide 4

Slide 4 text

あなたのPHPは? バージョンアップするご予定はありますか? 更新されてないライブラリやフレームワークはありませんか? 直したい実装はありませんか? 技術的負債に苦しんでいませんか?

Slide 5

Slide 5 text

技術的負債 手抜き、ハック、重複などなど、開発速度と期日の名の下に、私たち は数々の狼藉をコードベースにコミットしている。技術的負債とは、そ うした狼藉が時間と共に積み重なったものだ。 君のコードは、常に何かしらの負債を書かている(負債がまったくない というのは、新しいことや、これまでとは違うことに取り組もうとしてな いってことだ) かつては楽しくて気軽でシンプルだった作業が、辛く困難で複雑なも のになって初めて、人は自からが技術的負債を抱えすぎてしまったこ とに気づくんだ。 引用 アジャイルサムライ

Slide 6

Slide 6 text

技術的負債 - 更新されないVersion(言語、FW、ライブラリ) - 実装が現実と乖離している - 非推奨機能を使った実装 - あのときは最高だと思った設計 - 過去の自分をしばきたいコード - いつか直すと思っているあのバグ - etc,etc

Slide 7

Slide 7 text

技術的負債 負債がまったくないというのは、新しいことや、これまでとは違うことに 取り組もうとしてないってことだ プロダクトが生き続ける限りは、負債を負い続けるということ 負債は負うということは、返済する必要があるといこと

Slide 8

Slide 8 text

技術課題リファインメント

Slide 9

Slide 9 text

前提条件 - 継続的な開発であるか - スクラムに則った開発であるか - スプリントベロシティが計測できているか

Slide 10

Slide 10 text

リファインメントの説明 リファインメントの活動を通じて、選択に必要な透明性を獲得する。 プ ロダクトバックログアイテムがより小さく詳細になるように、分割および 定義をする活動である。 これは、説明・並び順・サイズなどの詳細を 追加するための継続的な活動である。多くの場合、属性は作業領域 によって異なる。 作業を行う開発者は、その作業規模の評価に責任 を持つ。 開発者がトレードオフを理解して選択できるように、プロダク トオーナーが開発者を支援することもできる。 引用 スクラムガイド2020

Slide 11

Slide 11 text

技術課題リファインメント STEP1 課題を見つける - よくないコードを見つけた - バージョンアップ情報があった - DB正規化したい 見つけた課題を技術課題バックログに起票します 新機能のバックログとは別に専用のバックログを作ります

Slide 12

Slide 12 text

技術課題リファインメント STEP2 リファインメントする 内容の詳細化、分割、優先順位決め、見積もりする 誰がやってもいいようにするために 優先順位決めは大事、チームとして何を大切にするかはチームごと決め よう

Slide 13

Slide 13 text

STEP3 実施 スプリントプランニングの際に、ベロシティポイントを一定の割合で技術 課題に割り当てる 新規開発とは別軸の優先順でやることを決める 起票した人間がやるとは限らない (弊社だと大体10% + 手が空いたら優先的にやる) ※ベロシティポイント = 1スプリントでチームが提供できる価値のポイント 技術課題リファインメント

Slide 14

Slide 14 text

STEP4 繰り返す 継続して習慣化する、1回だけでは変わらない プロダクトが開発される続けるかぎり負債は溜まっていきます 継続的に早い段階での負債の返済をおすすめします 技術課題リファインメント

Slide 15

Slide 15 text

- 新規の開発とは別軸の優先順位になる - 負債の可視化し、優先順位がつけられる - 誰か特定の人がやっているという状況をさける - いつかやるではなく仕組みでカバーする 技術課題リファインメントの利点

Slide 16

Slide 16 text

まとめ

Slide 17

Slide 17 text

- 継続的に開発をするうえで技術的負債は必ず発生する - 負債は早い段階で返済しないとどんどん辛くなる - 負債を可視化しよう - 新機能の開発とは別軸の優先順位をつける - 負債の返済を開発のサイクルに組み込み習慣化する - 後は継続あるのみ まとめ

Slide 18

Slide 18 text

ROXX 開発メンバー募集 https://speakerdeck.com/roxxrecurit 宣伝

Slide 19

Slide 19 text

ご清聴ありがとうございました 沖縄に行きたかった