アジャイルサムライ DevLOVE道場 『第二回 発展』に参加してきた #agilesamurai #devlove


(写真:会場内(前回とは同一会場)部屋の隅にあった忍者のオブジェ。この前とは何かが違う...)

開催趣旨
「開発の楽しさを発見しよう!広げよう!」「開発の現場を前進させよう!」 
このコンセプトの元「明日の開発の現場に役に立つことを目指したアジャイルサムライ読書会」を開催します。 
DevLOVE道場はただの読書会ではありません。「超実践的道場」を標榜し、竹刀を使った稽古と修了を極めます!詳細は概要・進行をご覧ください。 
さらに本道場ではチーム(一組三人程度)での参加を募りたいと思います。

『超実践系道場』を謳うDevLOVE道場、前回の第一回『萌芽』(2011/08/25)に続き、第二回目の『発展』がこの日に行われたので参加してきました。


会場は前回同様NHN Japan 株式会社 ThinkPark Tower 23階です。

実習内容の確認

3連休(9/17〜9/19)空けの営業日であった事と、前回より若干開始時間が早まっていた事が影響していたのか、開始当初は少々集まりが悪い印象。まぁチームでのワークショップなのでその辺はあまり問題無いっちゃあ無いんですけど。(^_^ ;)

ここではざっくりと当日の概要説明がなされました。そして当日の進行スケジュールはこんな感じ。

・実習内容の確認(5分)
・湯島道場主挨拶、本日の演習課題に対する説明(20分)
・実習前半(35分)
・中間発表(10分)1分 x 10チーム
・休憩(10分)
・実習後半(30分)
・まとめ(30分)3分 x 10チーム
・締めのあいさつと次回について(10分)

湯島道場主挨拶、本日の演習課題に対する説明


当日行う作業と、作業を行う上でのポイントとなる部分を簡潔に展開。

この回で行う作業のメインは『ユーザーストーリーの作成』。前回までに作った『インセプションデッキ』の内容を踏まえ、チーム毎に思い思いの方法で(且つ上記スライドのポイントを外さないように気を付けながら…とは言え皆さん苦心されていたようで...)、実習をこなしていました。

スライド資料からのざっくり文字起こしメモを以下に。


  • ユーザストーリーの作成
    • 『お客さんがワクワクする』か否かを考える。
    • 作成したストーリーは、価値をもたらすものであるか?
    • 考える際に技術や実装寄りの内容にならないように気を付けること。
  • ユーザーストーリー作り 3つの『C』
    • Card(要約するためカードを書く)
    • Conversation(お客様やチームとの対話)
    • Confirmation(内容・成果物の確認)
  • ユーザーストーリー 良いストーリーの6つの要素(INVEST)
    • 1.Independent(独立)…他のストーリーと疎であること
    • 2.Negotiable(交渉可能)…実現に際して交渉の余地があること
    • 3.Valuable(価値)…実現することで価値が生み出される
    • 4.Estimable(見積可能)…実現の検討が出来る
    • 5.Size Right(適切な大きさ)…大きすぎず、小さすぎず
    • 6.Testable(評価可能)…受け入れ基準が明確である
  • ユーザーストーリーのテンプレート(表)
    • ユーザーの種類>として<達成したいゴール>をしたい。なぜなら<理由>だからだ。
  • ユーザーストーリーのテンプレート(裏)
    • 受入基準
    • 制約
    • 気になること
  • ユーザーストーリー作り インデックスカード利用例
    • (表)
      • No.
      • ポイント
      • ユーザーストーリー
    • (裏)
      • 制約
      • 受入基準
  • ユーザーストーリー作り 対話の道具
    • ペルソナ
    • フローチャート
    • シナリオ
    • システム概要図
    • プロセスフロー
    • コンセプトデザイン
    • 絵コンテ
    • ペーパープロトタイプ
    • などなど...


…という感じでポイントの説明があった後、早速実戦開始。30分でユーザーストーリーを洗い出します。


実習前半

うちのチームとしては、大きく分けて3つの『機能に関する柱』+αがあり、1つのイテレーションでその1機能を実装する、位のイメージが朧気ながらあったので、一番最初に実装するであろう機能と『+α』の部分(※主に利用ユーザの管理面に関する機能)を主にして作業を進めました。

まずは各自、思いつく限り関連するストーリーを付箋に書き連ねていきます。この時点では『3つの主要機能+α』全てに関して思いつくストーリーを出してます。記載の際のテンプレートは

<ユーザーの種類>として<達成したいゴール>をしたい。なぜなら<理由>だからだ。

に倣いました。

一定時間経った後はまずそれらの付箋を『3本柱+α』の計4テーマ毎に振り分け、1つめの柱(機能)に対してストーリーの類似したもの、実現内容等に分けて内容を把握。

1つ目が終わったら他の分も…と思っていたのですが、時間的には全然足りず。(^_^;) 1個目の項目群の内容をチームで把握したところでタイムアップとなりました。

実習後半

実習後半は『ユーザーストーリーの優先順位付けと見積もり』。スライドベースでのポイントは以下。


  • ユーザーストーリー作り(マスターストーリーリスト)
    • 優先順位をつけて並び替える
    • (重複の無い一意の順位付けを行う)
  • ユーザーストーリー作り(見積り)
    • ポイントで見積もる
    • 相対見積もり
    • プランニングポーカー
      • 三角測量
      • 話し合い
      • 大きすぎるもの(Epic)は分割
  • ユーザーストーリー作り(その他)


そして実践作業。ここでは分量・制限時間の都合により『1つめの柱』に関するところの優先順位付と見積もり作業を実施。

優先順位に関してはそんなに難儀せずに、比較的すんなり行った感じかな〜。ストーリー的には4〜5個で、『これが無いと話にならない』というのを最優先に、あとは重要度等から判断し並べ替え。

また、ここで出て来たものの中で機能的に必要or不要を判断し兼ねるものや時間内で処遇を決められなかったものは別途『二軍』的な扱いで固まりを分けました。

優先順位付け完了時の全体像がこちら。(※例によって内容にモザイク処理を掛けております。)

また、ある程度優先順位付けが済んだものに対して『プランニングポーカー』も実施。種類はこんな感じで。

プランニングポーカーに関する作業としては『基準』となるものと『最小』となりうるもののポイントを定め、それらに対して『何ポイント程であるか』を見積もったのが数点位。正直ここに費やす時間があまりなかったのと、チーム間での共通ルール的なものをそこまで定めていなかったのもあり、触りだけやって終わってしまった感が強かったです。

この辺は改めてチーム内で認識を共有した中で改めて時間を設けてじっくり実施したいところではありますね。つかやる方向で行きたいと思っています。次回第三回実施までにはある程度時間がありそうですし。

また、インセプションデッキ辺りについては見様見真似でそれらしきものが出来るような感じではあったけれども、ユーザーストーリーや見積もり…ちょうどこの辺からの作業については先人の知恵を借りたり、書籍などで勉強をしておくなどの『予習』、実践した内容が大きく道を外れていないかなどの『復習』が必要になってくるなぁと痛感。『この判断基準は合ってるのか、それとも間違っているのか?』という点もあったのですが、それはエントリの最後で。

まとめ

ここまでの作業について、各自グループで『どこまで進んだか』『何が出来ていて何が出来てないか』などの軽い総括を1チーム3分程度の枠の中で発表。時間が余った場合はチームへの質疑応答等もなされました。

締めのあいさつと次回について

次回第三回『深化』については、現時点では開催日程は未定です。Facebook経由で各者調整中の段階で、9月末には開催日が確定する見込みとなっております。(恐らく10月初旬〜中旬辺り)当初の予定では第二回『発展』で行う予定だった『タスク分割』が次回への持ち越しとなったため、内容的にも若干変わってきそう。

そして21:30頃には完全撤収!懇親会へ。

懇親会


参加人数は12〜15人位?(詳細な人数は把握してない)大崎駅前近くの居酒屋にて執り行われました。

懇親会ではHiro Yoshioka(@TwitterID:@hyoshiok)さんや、とみやま ゆうじ(TwitterID:@ujtommy)さんと同じ卓になりこの日始めてご挨拶させて頂いたり…。

別卓のichitani(TwitterID:@papanda) a.k.a『上野のパンダ』さんの関西DevLOVE遠征話に耳を傾けたり…。

また同じ卓かつ対面のKiichi Kajiura (TwitterID:@ShiroKappa)さんの公私に纏わる話に一同驚嘆の連続だったり…。

短い時間ながらも色々とお話が出来た楽しいひとときでした。

ふりかえり

ユーザーストーリー見積もりに際しての疑問

プランニングポーカーを行っていた際に意見が分かれたトピックがあるのでここで挙げてみます。

チームで取り組むシステムには『検索機能』がついており、まぁ普通の『全件検索』機能はもちろん、個別の検索条件(キーワード検索、各種条件指定検索)指定での検索が可能な『絞込検索』も実装しようと思っています。

で、ユーザーストーリー出しの段階では

  • ユーザーとして全件検索が出来る事
  • ユーザーとして『○○』による絞込検索が出来る事

というように分けてストーリーを抽出しました。この場合、ポイントの見積もりに際してはどのように見積もるのがベストなのでしょうかね?(基本機能と基本機能に付随する機能をそれぞれ見積もる場合の考え方)

ちなみに当日の作業では上記の『全件検索』を基準として見積もろう、という流れになったので『全件検索=3ポイント』で進めました。

large;color:#0000CC;">[案1]依存関係ありきで考える:全件検索機能と絞込検索機能は依存関係も深いので、全件検索機能ありきで考える→そうなると絞込検索機能はSQLでのWHERE句を追加するイメージなのでそんなに労するものではない→『全件検索:3、絞込検索:1』?
large;color:#0000CC;">[案2]全く別個のもの・1から作るものとして考える:全件検索機能と絞込検索機能を全く別個のもの、独立したものとして考える→そうなると絞込検索機能を実装するのにはまず全件検索機能が必要→『全件検索+絞込検索機能追加=絞込検索機能の実現』となる→『全件検索:3、絞込検索:4』?
large;color:#0000CC;">[案3]ストーリーの視点を変えてみる:絞込検索機能のストーリーを『既存(実装済)の検索機能に加えて、○○による絞込検索が出来るようになること』という記述に変更(見積もりは全件検索:3、絞込検索:1)すればストーリーの内容的にも、見積もりポイント的にも(差分を実装すれば良い、とより分かりやすくなる)幾らかしっくり来る?
large;color:#0000CC;">[案4]その他別案:上記以外の考え方で見積もる。


当日のチーム間では[案2]でひとまず落ち着きましたが、現実の実装の事を考えると(本来実装ありきで見積もるべきでは無いのかも知れませんが)見積もりと実装で開きが出て来てしまうのではという疑念を消すことは出来ず、何となくモヤモヤしてます。『INVEST』の考え方で行くと[案3]が双方満たしてしっくり来るのでは?と思ってる(イメージを一致させて見積もれるし、実装的にも順序立てているので開きは無さそう)のですが、どうなのでしょうか。

アジャイル実践者な方々、有識者の方々、『私はこうしている』というのがありましたら是非アドバイス宜しくお願い致します。 m(_ _)m


この辺は自ら動いて情報収集せねばならんな、と痛感。

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

まさにこの本に知りたいことが記載されていそうなので早速読み進める事にします。あとはより実践的なノウハウとして@Ryuzeeさんの膨大なBlogエントリの中から情報を探し出し差参考にしてみたいと思います。

第二回の残タスク/第三回以降のTODO

これらの状況を踏まえて、残タスク及びTODOを洗い出してみる。

  • 書籍及びWebで以下の点について確認し、勉強(個人)
    • ユーザーストーリー洗い出し方について
    • 各種見積もりの判断基準を確認
  • チーム間での考え方・判断基準の共有(チーム)
    • ユーザーストーリーの洗い出し方・視点など
    • ポイント見積もりの際のざっくりとした基準
    • プランニングポーカー実践ルール
  • 第二回で実践したユーザーストーリー群についての諸作業(チーム)
    • 3本柱機能 その(1)についての情報整理・ポイント見積もり
    • 3本柱機能 その(2)についての情報整理・ポイント見積もり
    • 3本柱機能 その(3)についての情報整理・ポイント見積もり
    • 3本柱以外の機能(主に利用ユーザ管理)についての情報整理・ポイント見積もり
  • スパイク(技術的検証)(個人/チーム)
    • スパイク用のストーリー作成も必要となりそう…。

むむぅ、やることは多い。(´o`;)

まずは思いつく限り洗い出して、あとはチーム間で情報共有しつつ個別撃破だな!少しずつ前に進んでいこう。