Slide 1

Slide 1 text

© Findy Inc. 2024.09.17 1 アジャイルを始めるための 基礎を固める 浜⽥ 直⼈ Naoto Hamada (ham)

Slide 2

Slide 2 text

© Findy Inc. 2 開発⽣産性が向上する⽅法を探求しているエンジニア! Ruby / Rails / React / TypeScript / AWS Agile / DevOps / Developer Productivity / DevEx Stock Investment 浜⽥ 直⼈ Naoto Hamada (ham) @hamchance0215

Slide 3

Slide 3 text

© Findy Inc. 3 Agenda - アジャイルソフトウェア開発宣⾔は⼼構え - アジャイルを始める基礎を作る

Slide 4

Slide 4 text

© Findy Inc. アジャイルソフトウェア開発宣⾔は ⼼構え 4

Slide 5

Slide 5 text

© Findy Inc. 5


Slide 6

Slide 6 text

© Findy Inc. 6
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 


Slide 7

Slide 7 text

© Findy Inc. 7
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 
 ⼼構えはわかった!! やっていき!!!

Slide 8

Slide 8 text

© Findy Inc. 8
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 
 ⼼構えはわかった!! で、どうすればいいの??

Slide 9

Slide 9 text

© Findy Inc. 9
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 


Slide 10

Slide 10 text

© Findy Inc. 10
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 
 マインドセットを変えるだけでは 実践できないものがあるな...

Slide 11

Slide 11 text

© Findy Inc. 11
 https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itssplus/ps6vr70000001i7c-att/000065601.pdf 
 実践するには 基礎を作る必要がある!

Slide 12

Slide 12 text

© Findy Inc. アジャイルを始める基礎を作る 12

Slide 13

Slide 13 text

© Findy Inc. 13 いつでも本番反映できる仕組みを作る main feature 細かく本番反映していく 仕組みが必要

Slide 14

Slide 14 text

© Findy Inc. 14 ⻑く残るブランチとは? - featureブランチで開発を⾏い、すべて開発‧検証した後に マージ main feature 新規機能‧既存機能 すべて検証後にマージ feature N

Slide 15

Slide 15 text

© Findy Inc. 15 細かくマージするための考え⽅ - 🙅検証して承認されたコードしかmainにマージしない - 🙆既存に影響を与えないコードはガンガンmainにマージ ○ (体感ですが)追加‧変更したコードの9割は既存に影響を 与えない形でマージできる ○ 1つ1つの影響範囲が広い場合、結合度を⾒直すと良い main feature

Slide 16

Slide 16 text

© Findy Inc. 16 細かくマージするための考え⽅ - 🙅検証して承認されたコードしかmainにマージしない - 🙆既存に影響を与えないコードはガンガンmainにマージ ○ (体感ですが)追加‧変更したコードの9割は既存に影響を 与えない形でマージできる ○ 1つ1つの影響範囲が広い場合、結合度を⾒直すと良い main feature 既存に影響を与えないことを 検証するのが⼤変じゃん

Slide 17

Slide 17 text

© Findy Inc. 17 「既存に影響を与えない」を保証する - ⾃動テストをCIで実⾏して、既存の振る舞いを保証する - 必要に応じてmainマージ前に⼿動テストをする ○ ⾃動テストで広範囲を担保して、どれだけ⼿動テストを 減らせるかがキモとなる!! ○ リネームやtypoの修正、リファクタリングは⾃動テスト さえ通れば確認OKと⾒なせる

Slide 18

Slide 18 text

© Findy Inc. 18 「既存に影響を与えない」を保証する - ⾃動テストをCIで実⾏して、既存の振る舞いを保証する - 必要に応じてmainマージ前に⼿動テストをする ○ ⾃動テストで広範囲を担保して、どれだけ⼿動テストを 減らせるかがキモとなる!! ○ リネームやtypoの修正、リファクタリングは⾃動テスト さえ通れば確認OKと⾒なせる 例えば以下のようなPRはCI通ればヨシッ! →mainへマージ PR1: 関数名を変更 PR2: Fix typo PR3: 新しいモジュールを追加(未使⽤) PR4: ライブラリアップデート(ものによるが)

Slide 19

Slide 19 text

© Findy Inc. 19 「既存に影響を与えない」を保証する - ⾃動テストをCIで実⾏して、既存の振る舞いを保証する - 必要に応じてmainマージ前に⼿動テストをする ○ ⾃動テストで広範囲を担保して、どれだけ⼿動テストを 減らせるかがキモとなる!! ○ リネームやtypoの修正、リファクタリングは⾃動テスト さえ通れば確認OKと⾒なせる 例えば以下のようなPRはCI通ればヨシッ! →mainへマージ PR1: 関数名を変更 PR2: Fix typo PR3: 新しいモジュールを追加(未使⽤) PR4: ライブラリアップデート(ものによるが) PRに1つの観点しか⼊っていなければ ⼿動テストの有無も⼀⽬瞭然! →1つのPRに複数の観点を⼊れないこと も⼤事

Slide 20

Slide 20 text

© Findy Inc. 20 ⾃動テスト書く時間が もったいなくないですか?

Slide 21

Slide 21 text

© Findy Inc. 21 テスト⾃動化の損益分岐点は「4回」 - 4回以上変更するなら⾃動テストを書いた⽅がお得!! 質とスピード (@t_wada)
 https://speakerdeck.com/twada/quality-and-speed-aws-dev-day-2023-tokyo-edition


Slide 22

Slide 22 text

© Findy Inc. 22 ⾃動テスト書くのは ハードル⾼いのですが...

Slide 23

Slide 23 text

© Findy Inc. 23 ⾃動テストは書けるようになりましょう! - ⼀度⾃動テストがある環境に⾜を踏み⼊れると、⾃動テス トがない世界には戻れなくなります! - ⾃動テストのある開発環境は開発者体験が良い!!

Slide 24

Slide 24 text

© Findy Inc. 24 ⾃動テストで100% 品質担保できるんですか?

Slide 25

Slide 25 text

© Findy Inc. 25 Four Keys - DORAが調査した開発組織のパフォーマンス指標 2023 State of DevOps Report
 https://cloud.google.com/devops/state-of-devops
 https://book.impress.co.jp/books/1118101029


Slide 26

Slide 26 text

© Findy Inc. 26 Four Keys - Eliteでも変更障害率は5% 2023 State of DevOps Report
 https://cloud.google.com/devops/state-of-devops
 https://book.impress.co.jp/books/1118101029


Slide 27

Slide 27 text

© Findy Inc. 27 Four Keys - 障害が起きても1時間以内に復旧 2023 State of DevOps Report
 https://cloud.google.com/devops/state-of-devops
 https://book.impress.co.jp/books/1118101029


Slide 28

Slide 28 text

© Findy Inc. 28 本番障害は起きるものと認識する - 本番障害が⼀定の割合で発⽣することは許容する ○ ※プロダクトの性質によって許容する範囲は変える - ⼀⽅で障害が発⽣してもすぐに復旧できるように監視やリ カバリ⼿順を確⽴しておく - Tips: エラーバジェット ○ 可⽤性: 99.9% → 43分/⽉ までは障害を許容 ○ 許容範囲を超えるまでは積極的に開発を進める ○ 許容範囲を超えたら信頼性の回復に注⼒する

Slide 29

Slide 29 text

© Findy Inc. 29 守りたいものを定義して守る - 本番障害に備えるため、守りたいものを定義して守る ○ プロダクトの振る舞い ■ ⾃動テスト / E2Eテスト / リリース前の⼿動テスト ○ レスポンスタイム / ステータスコード ■ ログ監視 ○ 復旧⼿順を整備 ■ ⾃動化‧簡易化‧ドキュメント化 ○ 障害後のふりかえり ■ 再発防⽌

Slide 30

Slide 30 text

© Findy Inc. 30
 いつでも本番反映できる仕組みができた! あとはアジャイルを実践するのみ! アジャイルには様々な⼿法があります ⾃分に合った⼿法を⾒つけましょう!