Slide 1

Slide 1 text

異世界に転生したら激レア職業のスクラム Developer だったので手始めに Scrum Fest Osaka 2020 でラー ニングしたスキルでリファインメント無双してみた 片野 潤一 伊藤忠テクノソリューションズ株式会社 アジャイル営業推進部

Slide 2

Slide 2 text

異世界に転生したら激レア職業のスクラム Developer だったので手始めに Scrum Fest Osaka 2020 でラー ニングしたスキルでリファインメント無双してみた 片野 潤一 伊藤忠テクノソリューションズ株式会社 アジャイル営業推進部

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

かたじゅん(片野 潤一) Twitter:@kata_junn Java Struts/Spring/MyBATIS 2005 2014 OutSystems Developer@3人(6か月) Developer && TL@約10人(24か月) OutSystems 推進 2019 2020 Scrum on AWS Role:Developer TypeScript Serverless Dynamo, Lambda, S3, SQS, Kinesis, Athena Angular OutSystems OutSystems 推進 認定スクラムマスター(CSM) AWS Certified DevOps Engineer - Professional OutSystems Expert Web Developer (O11) 好き:リアル脱出ゲーム、低温調理、肉、ゴルフ、スパイス、DQW 20%

Slide 5

Slide 5 text

よく知ってるよー あまり知らないよー Zoom の ↓ の機能で枠内に✓とかつけてね! リファインメントってどんなものか

Slide 6

Slide 6 text

本日目指している状態 リファインメントという単語の正式名称がわかる リファインメントの目的がわかる リファインメントがいつ・どのくらいの割合で実施されるべきかがわかる リファインメントの実践イメージが湧く(Scrum Fest Osaka 2020 要素)

Slide 7

Slide 7 text

リファインメント

Slide 8

Slide 8 text

プロダクト バックログ リファインメント Product Backlog Refinement

Slide 9

Slide 9 text

プロダクト バックログ リファインメント Product Backlog Refinement Developer が行う作業を優先順位付けしたリスト 洗練する

Slide 10

Slide 10 text

プロダクト バックログ リファインメント “プロダクトバックログに含まれるアイテムに対して、詳細の追加、見積り、並び替えをするこ とを、プロダクトバックログのリファインメントと呼ぶ。 これはプロダクトオーナーと開発チームが協力して行う継続的なプロセスである。プロダクト バックログのリファインメントによって、アイテムのレビューと改訂が行われる。 いつどのようにリファインメントをするかは、スクラムチームが決定する。リファインメント は、開発チームの作業の 10% 以下にすることが多い。” https://www.scrumguides.org/docs/scrumguide/v1/Scrum-Guide-JA.pdf

Slide 11

Slide 11 text

Priority H L Product Backlog Sprint Backlog Daily Standup Sprint 1-4 week(s) Iteration Potentially Shippable Product Increment Ready Not Ready

Slide 12

Slide 12 text

Priority H L Product Backlog Sprint Backlog Daily Standup Sprint 1-4 week(s) Iteration Potentially Shippable Product Increment Ready Not Ready に変えたり 優先順位付けするのがリファインメント を Not Ready Ready 洗 練

Slide 13

Slide 13 text

Ready の定義(例) プロダクトバックログ項目が必要な場所に書かれている 受け入れ基準が定義されている ほかのプロダクトバックログ項目との依存関係が明らかになっている プロダクトバックログ項目は開発チームによって見積もられている 開発するのに必要な上流や外部から提供される部品が手に入っている 必要な場合は、非機能要件(性能やセキュリティ)が定義されている デモの手順がわかる 開発を進める上で大きな疑問は残っていない なぜそのプロダクトバックログ項目が必要なのかの価値が明確化されている …… 出典:https://www.ryuzee.com/contents/blog/7099

Slide 14

Slide 14 text

Ready の定義(例) プロダクトバックログ項目が必要な場所に書かれている 受け入れ基準が定義されている ほかのプロダクトバックログ項目との依存関係が明らかになっている プロダクトバックログ項目は開発チームによって見積もられている 開発するのに必要な上流や外部から提供される部品が手に入っている 必要な場合は、非機能要件(性能やセキュリティ)が定義されている デモの手順がわかる 開発を進める上で大きな疑問は残っていない なぜそのプロダクトバックログ項目が必要なのかの価値が明確化されている …… 引用:https://www.ryuzee.com/contents/blog/7099 技術的な不安要素もなく見積がなされており 価値と仕様が明確で Developer がすぐにでも開発に着手できる状態

Slide 15

Slide 15 text

Ready なプロダクトバックログのイメージ(めっちゃぼかした)

Slide 16

Slide 16 text

Ready なプロダクトバックログのイメージ(めっちゃぼかした) 要件と価値とざっくり仕様 Dev 内の見積作業結果 DEV ⇔ PO 質問結果 受入条件

Slide 17

Slide 17 text

Ready なプロダクトバックログのイメージ(めっちゃぼかした) 要件と価値とざっくり仕様 Dev 内の見積作業結果 DEV ⇔ PO 質問結果 受入条件 技術的な不安要素もなく見積がなされており 価値と仕様が明確で Developer がすぐにでも開発に着手できる状態

Slide 18

Slide 18 text

JIRA のフラグ機能(オレンジ背景になる)で Ready を表現

Slide 19

Slide 19 text

Not Ready なアイテム:優先順位が高いので次のリファインメントでの筆頭候補 Ready なアイテム:「今から開発して」と言われても大丈夫なやつ

Slide 20

Slide 20 text

リファインメントを 2 種類用意 リファインメント with PO 通称:PO リファ(木・月 に 1H 開催) リファインメント in DEV 通称:DEV リファ(金・火 に 1H 開催) PO とのコミュニケーションの機会 価値の共有、仕様協議・決定を実施する 主に確認項目や受入条件への追記・修正が 行われる PO DEV ワイガヤ ワイガヤ DEV 内での実装方法検討の場 共有された価値を実現するための手法を決 定し、見積可能なレベルに落とし込む 主に確認項目への追記・修正や見積結果の 追記が行われる DEV あーでも こーでも DEV

Slide 21

Slide 21 text

こんな雰囲気で日々 Ready にしてます 木 金 月 火 PO リファ DEV リファ PO リファ DEV リファ こういうの 欲しいんす なぜ欲しいの? こういう風に実装すると 楽だけど価値変わっちゃう? PO DEV それならおけ 把握 こういう感じで

Slide 22

Slide 22 text

こんな雰囲気で日々 Ready にしてます 木 金 月 火 PO リファ DEV リファ PO リファ DEV リファ 作業レベル に落とすよ あれ、このケースどうな るんだっけ? あれ、このサービス初めて 使うんじゃ? DEV DEV スパイク 必要やん せやな PO に聞こう 作業レベル に落とすよ こうしてこうかな 見積もるか DEV DEV プランニング ポーカー! じゃー5で ばっちり

Slide 23

Slide 23 text

こんな雰囲気で日々 Ready にしてます 木 金 月 火 PO リファ DEV リファ PO リファ DEV リファ 見積できた? スパイクさせて あと追加の 確認事項もあります PO DEV ふむふむ 見積できた? できました、5です 不明点もないっす PO DEV Ready だ!

Slide 24

Slide 24 text

こんな雰囲気で日々 Ready にしてます 木 金 月 火 PO リファ DEV リファ PO リファ DEV リファ 作業レベル に落とすよ Ready じゃないけ ど見積はできるね イケメン DEV DEV プランニング ポーカー! じゃー3で 確認事項足しといた

Slide 25

Slide 25 text

要件と価値とざっくり仕様 Dev 内の見積作業結果 DEV ⇔ PO 質問結果 PO リファと Dev リファの領域 受入条件

Slide 26

Slide 26 text

要件と価値とざっくり仕様 Dev 内の見積作業結果 DEV ⇔ PO 質問結果 受入条件 PO リファと Dev リファの領域 Dev リファ PO リファ Dev リファ PO リファ Dev リファ

Slide 27

Slide 27 text

本日目指している状態(再掲) リファインメントという単語の正式名称がわかる リファインメントの目的がわかる リファインメントがいつ・どのくらいの割合で実施されるべきかがわかる リファインメントの実践イメージが湧く(Scrum Fest Osaka 2020 要素) ✓ ✓ ✓

Slide 28

Slide 28 text

PO リファでのよくあった風景 このケースは? PO DEV 例えば~~の場合は … くぁwせdr ftg このケースは? このケースは?

Slide 29

Slide 29 text

PO リファでは質問攻め このケースは? PO DEV 例えば~~の場合は … くぁwせdr ftg このケースは? このケースは? 認識の齟齬が発生しがち 構造化されていない 会話・表現スキルも求められる(オンラインだとなおさら)

Slide 30

Slide 30 text

PO リファでは質問攻め このケースは? PO DEV 例えば~~の場合は … くぁwせdr ftg このケースは? このケースは? 認識の齟齬が発生しがち 構造化されていない 会話・表現スキルも求められる(オンラインだとなおさら) 実例マッピング よさそう

Slide 31

Slide 31 text

例を用いることで、共通理解の構築や矛盾点発見を促してくれるプラクティス ※ “日本の開発者・経営者に特に伝えるべき Agile Testing のエッセンス” broccoli さん@Scrum Fest Osaka 2020 で出会う Scrum Fest Osaka 2020 登壇ブログ:https://nihonbuson.hatenadiary.jp/entry/scrumfestosaka2020 実例マッピング紹介ブログ:https://nihonbuson.hatenadiary.jp/entry/ExampleMapping 元ブログ(画像出典元):https://cucumber.io/blog/bdd/example-mapping-introduction/ 実例マッピング(Example Mapping)

Slide 32

Slide 32 text

実例マッピング(Example Mapping) Story Rule Example Question 議論中のストーリー(仕様・機能) ストーリーを構成するルール あるルールに当てはまる例 疑問点・解決できていない何か 例が多すぎる=ルールが複雑なのでルールの整理や検討、 分割を検討すべき、かもしれない ルールが多すぎる=ストーリーが複雑なのでストーリー の分割を検討すべき、かもしれない 疑問点が多すぎる=学んだり調査すべき内容がまだたく さんある

Slide 33

Slide 33 text

プロジェクトで使ってみた様子 重要:ストーリー/ルール/例/疑問点を会話の中で仕分けして記録している部分

Slide 34

Slide 34 text

実例マッピング(Example Mapping)の様子 PO DEV 取り込んだあるデータを 別々のカラムに分けて 集計に使いたいんです PO 都道府県とそれ以降に分けたいん です ふむふむ、こういうストーリー とルールですね データを2つに分解したい カラム1:都道府県 カラム2:それ以降

Slide 35

Slide 35 text

実例マッピング(Example Mapping)の様子 PO 「神奈川県」と「川崎市」に 分けてほしいです カラム1:都道府県 カラム2:それ以降 DEV 例えば、 神奈川県川崎市 ではどうなります? 「神奈川県川崎市」 1:神奈川県 2:川崎市 データを2つに分解したい

Slide 36

Slide 36 text

実例マッピング(Example Mapping)の様子 PO 都道府県名は空白で良いです カラム1:先頭の都道府県を 抜き出す(なければ空白) カラム2:それ以降 DEV 都道府県が入っていなかったら どう振舞いますか? 「神奈川県川崎市」 1:神奈川県 2:川崎市 「川崎市」 1:(空白) 2:川崎市 DEV 先頭の都道府県を抜き出す、と いうルールということですね、 変えました。 データを2つに分解したい

Slide 37

Slide 37 text

実例マッピング(Example Mapping)の様子 カラム2: カラム1を除いた結果 DEV ルールが肥大化しすぎたので 分けて整理しました 「神奈川県川崎市」 ↓ 川崎市 「川崎市」 ↓ 川崎市 カラム1: 先頭の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) DEV カラム1 のルールについて さらに深掘りさせてください データを2つに分解したい

Slide 38

Slide 38 text

実例マッピング(Example Mapping)の様子 カラム2: カラム1を除いた結果 「神奈川県川崎市」 ↓ 川崎市 「川崎市」 ↓ 川崎市 カラム1: 先頭の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) PO DEV 先頭は必ず都道府県で始まって ますか? あ、そんなことなさそうでした 他の文字列が入っているケースも あります DEV なるほど ではルールを見直しましょう! データを2つに分解したい

Slide 39

Slide 39 text

実例マッピング(Example Mapping)の様子 カラム2: カラム1を除いた結果 「神奈川県川崎市」 ↓ 川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) DEV 都道府県が文中に入っていたら それを抜き出す、という仕様は いかがでしょう? DEV 例えば、 「xxx 神奈川県川崎市」では カラム1=神奈川県 になります PO はい、それでバッチリです 「 xxx 神奈川県川崎市」 ↓ 神奈川県 データを2つに分解したい

Slide 40

Slide 40 text

実例マッピング(Example Mapping)の様子 カラム2: 元々の文字列そのまま 「神奈川県川崎市」 ↓ 神奈川県川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) 「 xxx 神奈川県川崎市」 ↓ 神奈川県 DEV あと、カラム2 のルールを見直 しましょう。単純に抜き出すと 意味不明な文字列になります PO では、元々の文字列をそのまま入 れるようにしてください。分析の 価値は損なわれません。 DEV はい。 例も一緒に整理しますね 「 xxx 神奈川県川崎市」 ↓ xxx 神奈川県川崎市 データを2つに分解したい

Slide 41

Slide 41 text

実例マッピング(Example Mapping)の様子 カラム2: 元々の文字列そのまま 「神奈川県川崎市」 ↓ 神奈川県川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) 「 xxx 神奈川県川崎市」 ↓ 神奈川県 DEV あ、そうだ 元の文字列ってカナできたりし ます? 「 xxx 神奈川県川崎市」 ↓ xxx 神奈川県川崎市 PO …うーん、即答できないので調査 しておきます… カナの文字列来る? データを2つに分解したい

Slide 42

Slide 42 text

実例マッピング(Example Mapping)の様子 カラム2: 元々の文字列そのまま 「神奈川県川崎市」 ↓ 神奈川県川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) 「 xxx 神奈川県川崎市」 ↓ 神奈川県 DEV PO ありがとうございました! 「 xxx 神奈川県川崎市」 ↓ xxx 神奈川県川崎市 カナの文字列来る? データを2つに分解したい

Slide 43

Slide 43 text

実例マッピング(Example Mapping)の様子 カラム2: 元々の文字列そのまま 「神奈川県川崎市」 ↓ 神奈川県川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) 「 xxx 神奈川県川崎市」 ↓ 神奈川県 DEV PO ありがとうございました! 「 xxx 神奈川県川崎市」 ↓ xxx 神奈川県川崎市 カナの文字列来る? データを2つに分解したい

Slide 44

Slide 44 text

データを2つに分解したい 実例マッピング(Example Mapping)の様子 DEV PO この仕様で! 受入条件に使える カラム2: 元々の文字列そのまま 「神奈川県川崎市」 ↓ 神奈川県川崎市 「川崎市」 ↓ 川崎市 カラム1: 文中の都道府県を抜き 出す(なければ空白) 「神奈川県川崎市」 ↓ 神奈川県 「川崎市」 ↓ (空白) 「 xxx 神奈川県川崎市」 ↓ 神奈川県 「 xxx 神奈川県川崎市」 ↓ xxx 神奈川県川崎市 テストケースに使える カナの文字列来る? これが解決すると READY になる

Slide 45

Slide 45 text

実例マッピング(Example Mapping)の結果 ストーリーに対して、ルール・例・疑問点 を区別して表現・整理できた バックログをリファインメントできる成果 物を作成できた

Slide 46

Slide 46 text

実例マッピング(Example Mapping)の結果 ストーリーに対して、ルール・例・疑問点 を区別して表現・整理できた バックログをリファインメントできる成果 物を作成できた _人人人人人人人人_ > 東京都府中市 <  ̄Y^Y^Y^Y^Y^Y^ ̄

Slide 47

Slide 47 text

まとめ リファインメントという単語の正式名称がわかる プロダクトバックログリファインメント、でした リファインメントの目的がわかる プロダクトバックログアイテムの優先順位付けを行いつつ Ready にしていくこと、でした リファインメントがいつ・どのくらいの割合で実施されるべきかがわかる 頻度はチームで決めますが総じて稼働時間の 10% 程度、でした リファインメントの実践イメージが湧く(Scrum Fest Osaka 2020 要素) 実例マッピングの光景のような雰囲気で行われています

Slide 48

Slide 48 text

リファインメントってどんなものか わかったよー わからないままだよー Zoom の ↓ の機能で枠内に✓とかつけてね!

Slide 49

Slide 49 text

ご清聴ありがとうございました

Slide 50

Slide 50 text

素材出典元 わかりやすいアジャイルソフトウェア開発の教科書 https://www.amazon.co.jp/dp/B00GJGOPLO Introducing Example Mapping https://cucumber.io/blog/bdd/example-mapping-introduction/ 併せて読んでね(ブロッコリーさんのブログ) 受け入れ基準の設定時などに役立つプラクティス「Example Mapping」を翻訳したので紹介します https://nihonbuson.hatenadiary.jp/entry/ExampleMapping Scrum Fest Osaka @Online 開催終了?しました https://nihonbuson.hatenadiary.jp/entry/scrumfestosaka2020