Null Pointer Exception

プログラミングや技術的な記事を綴っていきます。

WBS作成入門

f:id:haruki_uehara:20170227025028j:plain

どうもこんにちは。
haruki_ueharaです。

突然ですが皆さん、カレーライスは好きですか?
私は大好きです。

特にカレーに納豆をかけて食べるのが好きなのですが、
いつも周りの方には「ありえない」と言われてしまいます・・・

しかし騙されと思ってやってみることをオススメすると
必ずと言って良いほど皆さん美味しさに頷いていただけるんですよ。

ぜひチャレンジしてみてください!
本当に美味しいので!!

 

さて、皆さんはこんな表を見たことはありますでしょうか?

f:id:haruki_uehara:20170227031423p:plain

そう、WBSです。
こちらはガントチャートで表示されていますね。

このWBS、プロジェクト管理には欠かせない存在です。
特に作成に関しては上流工程を始められる方には必須のスキルとも言えると思います。

しかし割とWBSの定義が会社やプロジェクトによってあいまいだったり、
意味合いが異なっていることも多いのが実態です。

実際のところは一体どんなものなのか。
と合わせて、どのように作成していくのか。

そこのところを今回少し深掘りしてお伝えしていきますので、
この機会にぜひ覚えていただけたら幸いです。

今回は、入門編ということで、
皆さんの大好きなカレーの作り方を例に作成の手順を見ていきましょう。

もし良ければ前置きとして、皆さんならどのような過程でカレーを作るのか。
レシピを一度紙に書き出してみてください。

 

それでは、Let's go!!

 

■目次

 

WBSとは

WBS(Work Breakdown Structure)
・プロジェクトの作業成果物を分解し構造化した図表

まずWBSとは何か。
正式名称はワークブレイクダウンストラクチャー。
ワーク(作業)をブレイクダウン(上位の目標を下位に展開)し、
ストラクチャー(構造化)していくことを言います。
もうそのままの意味ですね。

 

WBSの目的

1.正確な見積もりを作る
2.作業のモレ・ヌケ・重複を無くす
3.スケジュールを作る
4.リスクを予測する
5.利害関係者との情報共有

WBSを作成する目的です。
実際には様々ありますが、大きく分けて上記のポイントが挙げられます。
下記ではその点を、カレー作りの観点から少し紐解いてみましょう。

 

カレー作りから見るWBSの目的

1.正確な見積もりを作る
具体的には・・・
カレーを作るのにどれだけの作業が必要か
カレーを作るのにどれだけの時間が必要か

2.作業のモレ・ヌケ・重複を無くす
具体的には・・・
手順に過不足は無いか
材料は揃っているか
必要なものが正しく作れるか

3.スケジュールを作る
具体的には・・・
手順に前後の誤りは無いか
どれだけの作業時間が必要か
指定した時間までに作れるか
いつからスタートすべきか

4.リスクを予測する
具体的には・・・
どこに不安要素があるか
どこで問題が発生しそうか
問題が発生した場合の解決法はあるか

5.利害関係者との情報共有
具体的には・・・
カレーを提供する人に出来上がり時間を伝える
どのようなカレーが出来上がるのか

大まかに具体化した例です。
目的を明確化して具体的に取り組めるようにしましょう。
次は、まず基本用語を抑えます。

 

WBSの基本用語

・要素
分解されたプロジェクトの部品
・レベル
要素を構造化したときの階層の深さ
・ワークパッケージ
最下層のレベルの要素

f:id:haruki_uehara:20170227214149p:plain

簡単にお伝えすると要素とは作業の名前みたいなものです。
レベルは「大分類」、「中分類」、「小分類」などの階層を表しています。
ワークパッケージとは主に直接作業にあたるものですね。
今の段階ではそういうものがあるんだくらいに簡単に覚えておいてください。

そしてなんとWBSには
・作業WBS
・成果物WBS
があります。
それは一体なんなのか。
を作業WBSから下記でお伝えしましょう。

 

作業WBS

プロジェクトにおいて必要なすべての作業を要素にして
時系列に沿って作業を分解します

例:

f:id:haruki_uehara:20170227215440p:plain

例としてカレー作りの作業項目を見てみましょう。

カレー作りの作業項目の分類

1.レシピの作成
・具材を決める
・分量を決める
・盛り付けを決める

2.ルーの作成
・調味料を決める
・市販を購入する

3.具材の準備
・購入する
野菜

・加工する(皮を剥く、切るなど)
たまねぎを加工する
じゃがいもを加工する
にんじんを加工する
肉を加工する

4.ご飯の準備
・お米を購入する

5.調理
・具材を炒める
・具材を煮込む
・味付けをする
・米を研ぐ
・米を炊く

6.盛り付け
・皿にごはんを入れる
・ごはんにカレールーをかける

7.感想の収集
・アンケートの配布
・アンケートの記入

※大分類を基に中分類、小分類と3階層まで作業を分解

7.感想の収集は今回皆さんに美味しいカレーを食べていただくという程なので
盛り込んでいます。

主に作業WBSでは必要な作業を明確化します。
「カレーを作る」という目的を達成するためにどんな準備が必要なのか、
具材やお米はどうするのか、どう加工するのか、どう完成まで持っていくのか。
しっかり階層にして分解していきましょう。
続いては成果物WBSです。

 

成果物WBS

プロジェクトにおいて必要なすべての成果物(納品物)を要素にして、
成果物ごとに構成要素を分解します

例:

f:id:haruki_uehara:20170227222621p:plain

※I/O(インプット・アウトプット)→入出力のこと
CRUD(クラッド)→生成、読み取り、更新、削除のこと

では、こちらも例としてカレー作りの成果物を見てみましょう。

カレー作りの成果物

1.カレーのレシピ
・具材の種類
・調味料の分量
・調理手順
・盛り付け例
・調理器具
・食器

2.カレーの具
・野菜
たまねぎの加工物
じゃがいもの加工物
にんじんの加工物
・肉
牛肉の加工物

3.カレーのルー
・ルー
・調理器具

4.炊きたてごはん
・ごはん
・調理器具

5.カレーの盛り付け
・カレーライス

6.感想文
・アンケート用紙

※大きな成果物の枠組みから成果物を構成するものへ分解して順次成果物を作成

こちらは成果そのものです。
例として野菜であれば皮を剥いたり切ったあとのもの、
肉であれば下ごしらえをしたもの、
ごはんであれば炊けたものなど、
得ることができた成果物を分解して階層にしていきます。

 

もっとわかりやすく例えると(男性目線)・・・

f:id:haruki_uehara:20170227231416j:plain


今日はやっとの思いで誘うことができた大好きな女性があなたの家にやってきます。
夜、なんとかよろしくしたいと思ったあなたはいろんな準備をするために思考する訳です。

料理を出そうか、お酒を飲もうか、部屋には飾り付けをしようか、プレゼントも用意しようか、
などなど・・・

まさしくその思考を階層化し分解したものこそが、

 

作業WBS!!なのです。

 

そこで料理はステーキを、お酒はワインを、部屋には花の飾り付けを、プレゼントはネックレスにすることが決まりました。

ただ料理を出す、お酒を用意する、部屋の飾り付けやプレゼントまで決まったのはいいですが、
どんなステーキを出すのか?具材は?
お酒はワインと決めましたがそのブランドは?赤か白はどっち?
花を飾りますが何の花?
プレゼントはネックレスにしますがどんなネックレス?

そうです。まさしくそこを決めて成果として作り上げていくものこそが

 

成果物WBS!!なのです。

 

如何でしょう。
なんとなくイメージが湧いてきましたでしょうか。

しかし安心してはいけません。
この2つのWBS、実はそれぞれメリットとデメリットがあります。
それを下記でご紹介しましょう。

 

メリットとデメリット

・作業WBS
メリット:
作業のモレを避けることができる
デメリット:
必要な成果物のモレがある可能性がある
想定外の作業が紛れ込む可能性がある 

・成果物WBS
メリット:
必要な成果物のモレを避けることができる
デメリット:
すべての成果物の識別が必要
作業にモレが生まれる可能性がある

 

主に以上の点が挙げられます。
そのため・・・

作業WBSを基本にしてワークパッケージに紐付く成果物を関連付けることが必要であると言えます。

両方のWBSを使ってデメリットを相殺して、相互補完によりモレ、ヌケがないWBSを作成しましょう!

 

こうして出来上がったカレー作りのWBSがこちらです。

カレー作りのWBS

f:id:haruki_uehara:20170228012253p:plain

 

では最後に、WBS作成時のルールをまとめましょう。

 

WBSの作成ルール

1.100%ルール
2.1ワークパッケージに、1成果物、1担当者を割り当てる
3.レベルは3階層、1レベルに7要素まで

 

100%ルールとは「子要素をすべて足し合わせると親要素と等しくなる」
ということです。
上記のカレーでいうと、子要素をすべて足し合わせるとカレーが出来上がるということですね。

そして1つのワークパッケージに対しては複数ではなく1担当者を割り当てます。

最後にレベル、要素の上限を決めることで完結で分かりやすいWBSが出来上がるという訳です。

 

 

今回はWBSの基本の触りの部分だけをお伝えしました。

もし冒頭で、カレーのレシピを紙に書き出していただいた方がいましたら、
それを周りの方に見せ、そのレシピ通りに作業を進めたら本当にカレーが出来上がるのか聞いてみてください。

もし、足りない点がありましたら、今回お伝えしたことを踏まえて改めて作ってみましょう。

「階層にし分解する」という点においてはUMLなどのモデリング技法にも活かせる方法です。
私たちエンジニアはクラス図のモデル化やデータベースのテーブルを作成する際にも物事を分解して考える機会が多くあります。

 

ぜひ、少しずつ練習してマスターしていきましょう。

 

それではまた次回に!