2015年2月4日水曜日

【本の紹介】 アジャイルサムライ



こんにちは。

最近、実は土日2日間合わせて24時間しかないのではないかと思い始めている鷲尾です。

みなさん週末はいかがお過ごしでしたか?
私は越谷レイクタウンの巨大イオンで迷子になりながら、ビュッフェを食べていました。

前回ご紹介したリーンスタートアップは、アイデアを【構築】し、「この機能は必要とされているだろう」という仮説のもと作成した試作品(MVP:実用最小限の製品)を使ってもらいながら、製品へのフィードバックを【計測】し、次にどうするべきかを【学習】していくというものでした。


今回ご紹介する本はこちら ⇒

アジャイルサムライ
ジョナサン・ラスマセン (著)
です。


本書ではアジャイルのあるべき姿から、実務にアジャイルを取り入れるとき、何からすればいいのかというところまで、わかりやすい図やイラストで解説しています。
すらすらと読めてしまいますので、アジャイルに興味のある方、アジャイルで開発をしたい方、アジャイルに興味はあるけど難しそうで・・・ という方はぜひ読んでみてください。アジャイルを知るためにはうってつけの一冊だと思います。

その中でも私が実務を通して特に重要さを痛感した「タイムボックス」という考え方を、今回はご紹介したいと思います。





さて、先程から「アジャイル」というキーワードが出ていますが、みなさんは、「アジャイル開発」という言葉を聞いたことがありますか?
ちょっとググってみると・・・


■アジャイル開発
ソフトウェアを迅速に、また、状況の変化に対して柔軟に対応できるよう開発する手法の総称。「アジャイル」(agile)とは、俊敏な、しなやかな、素早い、などの意味で、短いプロセスを何度も反復して次第に全体を組み立てていくアプローチの手法が多い。(参照:IT用語辞典 e-words http://e-words.jp/


とのことです。
ざっくり言うと、従来のウォーターフォール手法のように「進む工程が決まっていて基本的に後戻りはしません」というものではなく、何度も設計⇒開発⇒テストというサイクルを回し、最終的な完成を目指しましょう」というものです。

※今回登場する「スクラム」という言葉ですが、これはたくさんあるアジャイル開発手法のうちのひとつです。


それでは本題ですが、そもそもタイムボックスとはなんでしょう。

直訳すると、"時間の箱"、です。

タイムボックスとは、ある期間を1つの時間の箱、すたわち「タイムボックス」という入れ物に捉え、この中にやらなければならないタスクを詰め込んでいくという考え方です。

タイムボックスには、自分が行うタスクを入れていきます。「ミーティング2時間、コーディング2時間、日次業務1時間」のように、時間をかけるタスクはすべてタイムボックスの中にいれます。
この、「タスクを箱にいれる」事を「タイムボクシング」といいます。そして、このタイムボックスをもとに「この期間でここまで開発して、テストをして、デモまでやろう」と小さなサイクルを決めます。この小さな期間の事をスクラムでは「スプリント」と言い、期間は1週間~1か月間くらいが目安です。

この1スプリントの中で、設計⇒開発⇒テスト⇒デモまで全てを行い、このサイクルを何度も回します。


スプリント0(2週間) → スプリント1(2週間) → スプリント2(2週間) → ・・・


そして各スプリントの終わりには、プロダクトオーナー(PO)と呼ばれる人に開発したもののデ モを行い、"顧客視点"で要求したものとなっているか、OK/NGを判断してもらいます。

「スプリント3ではログイン機能だけを作りました。テストも行って、品質も担保しています。POさん、ログイン機能はこれで問題ありませんか?」

という感じです。ここでOKなら、ログイン機能は完成です。ダメなら修正し、またPOにレビューしてもらいます。このように、お客様が求めているアウトプットになるまでPOと意見をすり合わせることが出来るため、お客様が求めている機能と出来あがる機能に相違がなくなります。

このサイクル化された作業、なにかに似ていますね。そう、リーンスタートアップのサイクルの考え方とそっくりなんです。なお、どちらも求められているものと乖離したアウトプットを作らない事を第一としてしていますが、リーンは計画段階の領域を、アジャイルは開発段階の領域を扱っています。したがって、アジャイル=リーンというわけではありませんので、ご注意ください。


タイムボックスの話に戻しましょう。


なるほど、時間がかかる仕事全てに時間を割り振って、1日のタスクにすればいいのかとお思いの方もいらっしゃると思います。


しかし。


やらなければいけない仕事はたくさんあります。

例えば、各タスクに時間を割り振っても、どうやってもタイムボックスに入りきらない。
こんな状況の時、どういう選択が正しいと思いますか?


Q.作業が箱に入りきらない!!(今でもういっぱいいっぱいです。)

1.とにかく無理やりつめこむ。
   -  無理してでも箱に詰め込んで消化しなければ・・・

2.大きい箱に取り換えてみる。
   - 1回で詰め込める量を増やせばいいのでは?1日10時間働くことにすれば・・・

3.全部は入らないから、入らない分はあきらめる。
   -  入りきりません。入らないものは入らない。無理しない無理しない・・・


A.正解は・・・ 3番!!

入らない分は、入らないんです。無理して全部やろうとして結局全てが中途半端に終わってしまうかもしれませんし、無理して開発したものの品質がグダグダだったら、お客様が満足するはずがありません。


実はこの1~3番には、きちんと意味があります。

1番は"品質"

2番は"納期"

3番は"範囲"

を表しています。1番と2番は特に密接かとは思いますが、最もないがしろにしてはいけないのが"品質"です。どのような製品も、品質あっての製品です。あたりまえですね。
また、ここでは出ていませんが、"予算"も基本的には変更できません。

スクラムでは、品質(Quality)、予算(Cost)、時間(※納期 Delivery)、スコープ(※開発範囲 Scope)の頭文字をとって"QCDS"と呼びますが、予定していたタスクがタイムボックスに入りきらない場合、この4つにどのようにプライオリティを付けていくかが重要になります。

以前私が社内システムに機能を追加するプロジェクトに携わっていた時の話です。情報システム部門からは、「AとBと、できればCも出来るようにしてほしい」と要求がありました。しかし、実際に見積もりを行った結果、スプリントの期間内で3つの要求すべてを実装することはできないと判断しました。

この時私たちは断腸の思いで、「Cまでは手を伸ばさない」という選択をしました。「スコープ」を狭めたわけです。もちろん、全ての要求にこたえられれば、それが一番いいのですが・・・


品質は絶対に落とせないし、納期もずらせない。予算だって決まっている。
⇒ では実装する機能を減らすしかないですね、となるわけです。




アジャイルサムライ(タイムボックス) まとめ


・タイムボックスとは、"時間"を入れる箱で、その中に時間をかけるタスクを詰めていく
・タイムボックスに入りきらない場合は無理に押し込まず、きっぱりとあきらめること
・そのうえで、タイムボックスに入っているものに関しては品質にも納期にもこだわること
・決して開発範囲を軽んじて見てはいけない。基本的には品質、納期、範囲全てを実現する


タイムボックスの容量は決まっていますので、詰め込み過ぎれば溢れてしまいます。チームで出来る作業量も決まっているので、溢れてしまったものはこなせません。であれば、作るべき要求や仕様を固定するのではなく、"タイムボックス内にいれる作業量"を固定し、その中でもっとも効率的な開発をしていくことが大切なのだと思います。

タイムボックスという考え方は、スクラムを実施するうえでの一つの要素ですが、この考え方自体は、日々の仕事の進め方に適用できる考え方だと思い ます。特に時間は限られているということを認識するので、限られた時間の中で仕事の優先順位をどう付けるか、効率的にこなしていくためにどうするかと いったことを考えるきっかけにもなりますので、興味がある方は試してみてください。


また、ここでは紹介しきれなかったアジャイルサムライの内容や、前回のリーンスタートアップの別の内容に関しては順次お話したいと思いますので宜しくお願いします。


0 件のコメント:

コメントを投稿