SlideShare a Scribd company logo
1 of 19
Download to read offline
1
2014年5月21日
GMOインターネット株式会社
次世代システム研究室
藤村 新
AEP読書会
第十二章
ユーザーストーリーの分割
どんなに優先順位が高か
ろうと、ユーザーストーリー
の大きさが1回のイテレー
ションでは完了できないの
であれば、2つ以上に分
割せざるを得ない。
1.ユーザーストーリーをいつ分割するのか
ストーリーが大きすぎて1回のイテレーションに
は収まらないような場合
いま計画を立てている次のイテレーションには
もう他のストーリーが入っていて、そのストーリー
を入れる余地がない
一部なら実装できるが、すべては無理
大きなストーリー(エピック)を分割するのは、よ
り正確な見積りが必要な場合に有用
2.データ境界に沿って分割する
例1)ユーザーとして、バランスシートの情報を入力できる
ユーザーとして、バランスシートのデータをサマリで入力できる
入力項目は、資産、負債の2つ
ユーザーとして、バランスシートのカテゴリごとの入力ができる
現金預金、投資有価証券、不動産、短期貸付金など
ユーザーとして、入力を間違えないような入力値のバリデーションが欲
しい
負の値も入力できる、入力値の端数は自動的に四捨五入して丸
める
ユーザーとして、貸付金の詳細を入力できる
このストーリーで扱う詳細情報が貸付金に限定されているため小
さくなった
他のストーリーの雛形として使うことができた
2.データ境界に沿って分割する
例2)自動FAXシステム
システムの設定を変更可能にする
米国内の電話番号と国際電話番号とにストーリーを分割
例3)ローンの返済を処理するシステム
借主として、ローンを返済したい
借主が誤って返済額以上の小切手を送ってしまったらどうするの
か?
払い戻し小切手を借主に郵送しなければならない
この対応は返金額が¤2以上の場合に限られる
借主として、ローンを返済したい。このとき、払い過ぎてもかまわな
い。
借主として、もし返済し過ぎてしまったら、 ¤2以上の場合に限り、
払い戻しできる。
3.操作の境界で分割する
例1)きわめて複雑な検索画面
画面の上半分には数十個の入力項目
中央には入力内容を元にデータベースへのクエリを構築できるク
エリビルダ
その下には複雑なデータ表示用グリッド
3つに分割
1. 基本的なユーザーインターフェイス
 検索条件の半分を扱う
 クエリビルダ
 検索結果数だけを表示
2. データ表示用のグリッド
 開発にかかる時間が読めなかったため2番目にした
3. 残りの検索条件を入力する項目
3.操作の境界で分割する
例1)コーチとして、チームの選手を管理できる(SwimStats)
CRUD(Create, Read, Update, Delete)操作を境界として分割
 コーチとして、新しい選手をチームに追加できる
 コーチとして、チームの選手の情報を編集できる
 コーチとして、チームから抜けた選手を削除できる
4.横断的な関心事を分離する
例1)データを検索して、その結果を表示する
表示する結果はそのユーザーに閲覧が許可されているデータに限定し
なければならない
表示する検索結果の制約を無視する
最初のイテレーションでは、ユーザーはすべての検索結果を見
ることができる
例2)ユーザーとして、システムを利用したければユーザー名と
パスワードを入力してログインしなければならない
セキュアでないログインとセキュアなログインの2つのストーリーに分離
横断的な機能の別のストーリーへの分離を検討すること。
その場合、横断的な機能を含まないストーリーと、含むストー
リーの2つに分けること。
5.パフォーマンス制約をストーリーにする
「動くようになってから、速く動かすことを考えろ」(カーニハン
&プローガー)
例)株価をグラフ表示させる
満足条件
的確な折れ線グラフ表示
データが存在しない場合の対応
パフォーマンス
パフォーマンスのためのキャッシュ機能は欠かせない要素
別の新規ユーザーストーリーにして、次のイテレーションで開発する
大きなストーリーの機能要求と非機能要求とをそれぞれ個別
のストーリーに分割することを検討せよ。
6.優先度に沿ってストーリーを分割する
例)ユーザーとして、システムにログインしなければならない
満足条件
ユーザーが正しいユーザー名とパスワードを入力した場合に限り、
アクセスを許可する
ユーザーが間違ったパスワードを3回連続して入力するとログインで
きなくなる。ログイン制限を解除するにはカスタマサービスに連絡しな
ければならない
ユーザーがログイン制限されたら、そのユーザーに対して、そのアカ
ウントを使ってログインしようとした形跡があったことを知らせるメー
ルが送信される
大きなストーリーを分割する場合には、サブストーリーの優先
度に沿って分割すること。
7.ストーリーをタスクに分解してはならない
悪い例)
ユーザーインターフェイスを実装する
中間層を実装する
システムを「曳光弾」で照らす。(ハント&トーマス)
「曳光弾」とは、あるフィーチャに必要なシステムの論理層すべ
てをまたいで実装することを指す。
大きなストーリーをタスクに分解するのではなく、ストーリーを曳
光弾にするための作戦を考えること。
8.関連する変更への誘惑を断つ
ストーリーを適切な大きさへと首尾よく分割できたとしても、そ
こに作業を追加してしまえば、分割した意味がなくなる
「ついでにこの変更もやれるじゃないか」
他のフィーチャと同様に優先順位を付けなければならない
適切なサイズに分割したストーリーに、関連する変更を上乗せし
てはならない。
ただし、関連する変更の優先度が同じ場合はこの限りではない。
9.ストーリーをまとめる
あらゆるストーリーを最初からなるべく小さくしておきたくな
るかもしれないが、ガイドラインの狙いはそうではない。
イテレーション期間:2週間
2日から5日で完了できる大きさにストーリーを分割する
のが適切
イテレーション期間:1週間
ストーリーはもう少し小さく分割した方が良い
イテレーション期間:2週間以上
イテレーション期間2週間同様、2日から5日が適切
1つにまとめたストーリーは、個別の小さな見積りを足し合わせる
のではなく、全体を1つの数値で見積もる。(バグレポートなど)
話し合ってみよう
1. 現在の、または最近のプロ
ジェクトで、分割するのが
難しかったストーリーは?こ
の章を読んだ後なら、どう
やって分割するだろうか?
個人的回答
パスドラクローンのパズル部分
のストーリー。
「3.操作の境界で分割する」を
参考に、ページ上部のエフェクト
部分、ページ下部のパズル部分
等に分割した。
話し合ってみよう
2. ストーリーをタスクに分
解して、そのタスクを
ユーザーストーリーのよう
に扱うと、どのような問
題が起きそうだろうか?
個人的回答
計画の基準がフィーチャではなく
タスクになってしまい、プロダクトを
正しい視点で捉えられなくなる。
その結果、ユーザーに直接価値を
提供することができなくなる。
19
おわり

More Related Content

What's hot

Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
 

What's hot (20)

メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
Kanban 101「明日から使えるかもしれないカンバン」
Kanban 101「明日から使えるかもしれないカンバン」Kanban 101「明日から使えるかもしれないカンバン」
Kanban 101「明日から使えるかもしれないカンバン」
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメントDX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
 
はじめてのPRD
はじめてのPRDはじめてのPRD
はじめてのPRD
 

More from Arata Fujimura

More from Arata Fujimura (20)

クラスメソッドベトナム設立しました
クラスメソッドベトナム設立しましたクラスメソッドベトナム設立しました
クラスメソッドベトナム設立しました
 
リーンスタートアップ実践者によるSDGs事業立ち上げ支援の取り組み
リーンスタートアップ実践者によるSDGs事業立ち上げ支援の取り組みリーンスタートアップ実践者によるSDGs事業立ち上げ支援の取り組み
リーンスタートアップ実践者によるSDGs事業立ち上げ支援の取り組み
 
DevOpsを支える原則、3つの道
DevOpsを支える原則、3つの道DevOpsを支える原則、3つの道
DevOpsを支える原則、3つの道
 
モダンオフショア開発でIT人材不足の解消を目指す 〜 ベトナムでの取り組みとこれから 〜
モダンオフショア開発でIT人材不足の解消を目指す 〜 ベトナムでの取り組みとこれから 〜モダンオフショア開発でIT人材不足の解消を目指す 〜 ベトナムでの取り組みとこれから 〜
モダンオフショア開発でIT人材不足の解消を目指す 〜 ベトナムでの取り組みとこれから 〜
 
スクラムマスター募集中
スクラムマスター募集中スクラムマスター募集中
スクラムマスター募集中
 
変化に強い、継続的に学習する組織に変わるためのステップとは
変化に強い、継続的に学習する組織に変わるためのステップとは変化に強い、継続的に学習する組織に変わるためのステップとは
変化に強い、継続的に学習する組織に変わるためのステップとは
 
クラスメソッドにおけるスクラム開発の光と影
クラスメソッドにおけるスクラム開発の光と影クラスメソッドにおけるスクラム開発の光と影
クラスメソッドにおけるスクラム開発の光と影
 
モダンオフショア開発のすすめ
モダンオフショア開発のすすめモダンオフショア開発のすすめ
モダンオフショア開発のすすめ
 
スクラムワークショップ
スクラムワークショップスクラムワークショップ
スクラムワークショップ
 
最高のScrumキメた後にスケールさせようとして混乱したけど今はまた最高のScrumに戻って新型コロナの影響は皆無な話
最高のScrumキメた後にスケールさせようとして混乱したけど今はまた最高のScrumに戻って新型コロナの影響は皆無な話最高のScrumキメた後にスケールさせようとして混乱したけど今はまた最高のScrumに戻って新型コロナの影響は皆無な話
最高のScrumキメた後にスケールさせようとして混乱したけど今はまた最高のScrumに戻って新型コロナの影響は皆無な話
 
登壇勉強会 〜それぞれの流儀がそこにある〜
登壇勉強会 〜それぞれの流儀がそこにある〜登壇勉強会 〜それぞれの流儀がそこにある〜
登壇勉強会 〜それぞれの流儀がそこにある〜
 
アジャイル開発の原則を守りつつ、マルチサイト開発を行なう!
アジャイル開発の原則を守りつつ、マルチサイト開発を行なう!アジャイル開発の原則を守りつつ、マルチサイト開発を行なう!
アジャイル開発の原則を守りつつ、マルチサイト開発を行なう!
 
PdMワークショップ
PdMワークショップPdMワークショップ
PdMワークショップ
 
最高のScrumキメた後にスケールさせようとして混乱した話
最高のScrumキメた後にスケールさせようとして混乱した話最高のScrumキメた後にスケールさせようとして混乱した話
最高のScrumキメた後にスケールさせようとして混乱した話
 
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
 
Experience DevOps Implementation Support Service
Experience DevOps Implementation Support ServiceExperience DevOps Implementation Support Service
Experience DevOps Implementation Support Service
 
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
アジャイル開発の原則を守りつつ、グローバルチームを立ち上げる!
 
俺のレアジョブ利用法
俺のレアジョブ利用法俺のレアジョブ利用法
俺のレアジョブ利用法
 
DevOps導入支援、始めました
DevOps導入支援、始めましたDevOps導入支援、始めました
DevOps導入支援、始めました
 
プラクティス厨から始めるアジャイル開発
プラクティス厨から始めるアジャイル開発プラクティス厨から始めるアジャイル開発
プラクティス厨から始めるアジャイル開発
 

ユーザーストーリーの分割