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

[Agile][Scrum] 転リファ

kata_junn
September 06, 2021

[Agile][Scrum] 転リファ

正式タイトル:異世界に転生したら激レア職業のスクラム Developer だったので手始めに Scrum Fest Osaka 2020 でラーニングしたスキルでリファインメント無双してみた

スクラムフェス三河2020 でお話しした内容です

kata_junn

September 06, 2021
Tweet

More Decks by kata_junn

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. View Slide

  4. かたじゅん(片野 潤一) 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%

    View Slide

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

    View Slide

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

    View Slide

  7. リファインメント

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. 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
    洗 練

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. こんな雰囲気で日々 Ready にしてます




    PO リファ
    DEV リファ
    PO リファ
    DEV リファ
    こういうの
    欲しいんす
    なぜ欲しいの?
    こういう風に実装すると
    楽だけど価値変わっちゃう?
    PO DEV
    それならおけ
    把握
    こういう感じで

    View Slide

  22. こんな雰囲気で日々 Ready にしてます




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

    View Slide

  23. こんな雰囲気で日々 Ready にしてます




    PO リファ
    DEV リファ
    PO リファ
    DEV リファ
    見積できた? スパイクさせて
    あと追加の
    確認事項もあります
    PO DEV
    ふむふむ
    見積できた?
    できました、5です
    不明点もないっす
    PO DEV
    Ready だ!

    View Slide

  24. こんな雰囲気で日々 Ready にしてます




    PO リファ
    DEV リファ
    PO リファ
    DEV リファ
    作業レベル
    に落とすよ
    Ready じゃないけ
    ど見積はできるね
    イケメン
    DEV DEV
    プランニング
    ポーカー! じゃー3で
    確認事項足しといた

    View Slide

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

    View Slide

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

    View Slide

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



    View Slide

  28. PO リファでのよくあった風景
    このケースは?
    PO DEV
    例えば~~の場合は

    くぁwせdr
    ftg
    このケースは?
    このケースは?

    View Slide

  29. PO リファでは質問攻め
    このケースは?
    PO DEV
    例えば~~の場合は

    くぁwせdr
    ftg
    このケースは?
    このケースは?
    認識の齟齬が発生しがち
    構造化されていない
    会話・表現スキルも求められる(オンラインだとなおさら)

    View Slide

  30. PO リファでは質問攻め
    このケースは?
    PO DEV
    例えば~~の場合は

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

    View Slide

  31. 例を用いることで、共通理解の構築や矛盾点発見を促してくれるプラクティス
    ※ “日本の開発者・経営者に特に伝えるべき 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)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. 実例マッピング(Example Mapping)の様子
    カラム2:
    カラム1を除いた結果
    DEV
    ルールが肥大化しすぎたので
    分けて整理しました
    「神奈川県川崎市」

    川崎市
    「川崎市」

    川崎市
    カラム1:
    先頭の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    DEV
    カラム1 のルールについて
    さらに深掘りさせてください
    データを2つに分解したい

    View Slide

  38. 実例マッピング(Example Mapping)の様子
    カラム2:
    カラム1を除いた結果
    「神奈川県川崎市」

    川崎市
    「川崎市」

    川崎市
    カラム1:
    先頭の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    PO
    DEV
    先頭は必ず都道府県で始まって
    ますか?
    あ、そんなことなさそうでした
    他の文字列が入っているケースも
    あります
    DEV
    なるほど
    ではルールを見直しましょう!
    データを2つに分解したい

    View Slide

  39. 実例マッピング(Example Mapping)の様子
    カラム2:
    カラム1を除いた結果
    「神奈川県川崎市」

    川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    DEV
    都道府県が文中に入っていたら
    それを抜き出す、という仕様は
    いかがでしょう?
    DEV
    例えば、
    「xxx 神奈川県川崎市」では
    カラム1=神奈川県 になります
    PO
    はい、それでバッチリです
    「 xxx 神奈川県川崎市」

    神奈川県
    データを2つに分解したい

    View Slide

  40. 実例マッピング(Example Mapping)の様子
    カラム2:
    元々の文字列そのまま
    「神奈川県川崎市」

    神奈川県川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    「 xxx 神奈川県川崎市」

    神奈川県
    DEV
    あと、カラム2 のルールを見直
    しましょう。単純に抜き出すと
    意味不明な文字列になります
    PO
    では、元々の文字列をそのまま入
    れるようにしてください。分析の
    価値は損なわれません。
    DEV
    はい。
    例も一緒に整理しますね
    「 xxx 神奈川県川崎市」

    xxx 神奈川県川崎市
    データを2つに分解したい

    View Slide

  41. 実例マッピング(Example Mapping)の様子
    カラム2:
    元々の文字列そのまま
    「神奈川県川崎市」

    神奈川県川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    「 xxx 神奈川県川崎市」

    神奈川県
    DEV
    あ、そうだ
    元の文字列ってカナできたりし
    ます?
    「 xxx 神奈川県川崎市」

    xxx 神奈川県川崎市
    PO
    …うーん、即答できないので調査
    しておきます…
    カナの文字列来る?
    データを2つに分解したい

    View Slide

  42. 実例マッピング(Example Mapping)の様子
    カラム2:
    元々の文字列そのまま
    「神奈川県川崎市」

    神奈川県川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    「 xxx 神奈川県川崎市」

    神奈川県
    DEV
    PO
    ありがとうございました!
    「 xxx 神奈川県川崎市」

    xxx 神奈川県川崎市
    カナの文字列来る?
    データを2つに分解したい

    View Slide

  43. 実例マッピング(Example Mapping)の様子
    カラム2:
    元々の文字列そのまま
    「神奈川県川崎市」

    神奈川県川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    「 xxx 神奈川県川崎市」

    神奈川県
    DEV
    PO
    ありがとうございました!
    「 xxx 神奈川県川崎市」

    xxx 神奈川県川崎市
    カナの文字列来る?
    データを2つに分解したい

    View Slide

  44. データを2つに分解したい
    実例マッピング(Example Mapping)の様子
    DEV
    PO
    この仕様で!
    受入条件に使える
    カラム2:
    元々の文字列そのまま
    「神奈川県川崎市」

    神奈川県川崎市
    「川崎市」

    川崎市
    カラム1:
    文中の都道府県を抜き
    出す(なければ空白)
    「神奈川県川崎市」

    神奈川県
    「川崎市」

    (空白)
    「 xxx 神奈川県川崎市」

    神奈川県
    「 xxx 神奈川県川崎市」

    xxx 神奈川県川崎市
    テストケースに使える
    カナの文字列来る?
    これが解決すると READY になる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. 素材出典元
    わかりやすいアジャイルソフトウェア開発の教科書
    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

    View Slide