アジャイル開発をはじめて体験すると、いろいろな考え方を身につけるために苦労をすることがあります。
特に、相対見積もりや、ベロシティによる経験主義的な見通しの取り方について、実際に経験せずに理解するのは難しいようです。
そこで今日は、日常生活の中で馴染みの深い考え方を使って、説明を試みてみたいと思います。
「コース定数」でアジャイルな見積もりを考えてみる
国民的な娯楽である登山をやられる人なら誰もが知っている「コース定数」という考え方があります。みなさんもご存知かと思いますが、簡単に解説します。
山は、事前の計画がとても重要でありつつも、実際に登ってみないとコースの状態や、自分の体力がその山に適しているのかがわかりづらい遊びです。そういう意味では、経験主義的なアプローチが必要なソフトウェア開発に似ているとも言えます。
交通機関やレスキューの体制が整備されている街中と違い、山は自分の体がすべてです。仮に山行の半分の地点で体力切れをおこし、行くことも戻ることもできなくなれば、それは遭難となります。そのため、このコースは完走可能かどうかを事前の計画で見極める必要があります。 計画が重要でありつつも、実際の難易度や体力度は行ってみないとわからないという経験主義的な分野として、山行計画とソフトウェア開発の見積もりはよく似ています。
たとえば、わたしは近々、立山という山の縦走をしたいと考えているのですが、これが自分にとって完走可能かどうかがいまいちわかりません。インターネットでの山行記録を見ていても、「体力的にきつかったです」と書いている人もいれば「地元の小学生が遠足で登る山なので、初心者でも大丈夫です」と書かれていたりします。体力は人によってまちまちなので、各人の主観はあまり参考にならないのです。
そこで登山計画を判断する際には、客観的な「コース定数」という指標を用います。
「コース定数」とは、鹿屋体育大学・山本正嘉教授によって定義された、登山ルートの難易度を示す指標のひとつです。以下の計算式によって求められます。
1.8×行動時間(h) + 0.3×歩行距離(km) + 10.0×登りの累積標高(km) + 0.6×下りの累積標高(km)
わたしが計画を練っている立山の縦走のデータは以下です。
- 標準コースタイム (行動時間): 7h
- 歩行距離: 8.6km
- 登りの累積標高差: 0.910km
- 下りの累積標高差: 0.911km
これを計算式にあてはめると、24.8 という値になります。
この24.8というのが、コース定数になります。定数と表現されているのは、実際の山行ではこれに自分の体重や、荷物の重量なども加わるからです。日帰りの軽い荷物と、テント泊を想定した重い装備では同じルートでも体力度は異なります。なので、コース定数はそれらを除いたベースとなります。
さて、唐突に24.8 と言われてもなんのことかさっぱりわかりません。 ソフトウェア開発における相対見積もりで、基準タスクが5ポイント。今目の前にあるタスクは基準ポイントから相対的に考えて3ポイントと8ポイントなので、あわせて11ポイントです。と言われても最初はあまり意味がないのと同じことです。
ここで、実際の自分の経験が必要になります。 以下の表は、わたしが過去に経験したルートと、実際の山行記録をコース定数の算出式にあてはめたものです。
自分の今までの経験でいちばんしんどかった山は「荒島岳」という認識がありますが、それとこの表の結果は一致しています。 自分の経験からすると、30までいくとかなりきつく、20~25くらいであればほどよい疲れの山行、という認識です。
日常的にハードな山に良く行く人であれば、30くらいの山はひょいと登ってしまわれるでしょう。なので他人の情報にはあまり意味がありません。
さて、この表にあてはめると、わたしが計画している立山の24.8という値は、過去の摩耶山(黒岩尾根)のルートや摩耶山(天狗道)のルートに近いということがわかります。これらのルートを歩いた記憶を遡ると、ほどほどにきつくはあったけど、まだ余力を残した状態で山行を終えることができていました。なので、立山もおそらく無理なく走破できそうである、という見通しが立ちます。
この考え方は、アジャイルな見積もりにおけるベロシティの考え方と一致します。
ベロシティとは、チームがスプリント期間に消化することができるポイントの実績をあらわします。過去に1スプリントでチームが消化したポイントの実績値を積み重ね、直近数回分の平均などをとって算出します。 「3ポイントと8ポイントなので、あわせて11ポイントです」という見積もりの謎の数字は、このベロシティと組み合わせてはじめて意味を持ちます。
つまり、見積もりのポイントと、チームの過去の実績から算出した処理能力を照らし合わせて将来の見通しを立てていきます。
ベロシティが8ポイントのチームであれば、前述の2つタスクを終えるのに2スプリントかかります。ベロシティが13ポイントのチームであれば、1スプリントで終わらせることができます。隣のチームのベロシティが11とか20とか、そのような値に意味はありません。他人が有している登山に必要な体力が、自分の山行にとって無意味であるのと同じです。
これが、アジャイルな見積もりとベロシティの考え方です。このように身近な例で考えると、とてもわかりやすいですね。
専門的に学びたい方は以下の書籍がおすすめです。