WBSを作る前に知っておきたいこと

こんにちは。ネオシステムの高橋です。
前回は[ER図の作成方法](https://qiita.com/szn-t/items/e05e9e59af3471a724a4)についてまとめました。
今回はWBS作成の目的やポイントについて紹介します。


# 目次
- WBSとは
- WBSの作り方
- WBSの効果を高めるために​
- メンテナンス管理
- WBSツールの紹介
- WBSの例
- まとめ


# WBSとは
WBS（Work Breakdown Structure：作業分解構成図）は、プロジェクト全体を細かな作業（Work）に分解（Breakdown）した構成図（Structure）のことです。

プロジェクトの作業を段階的に細かなタスクに分解して計画を立てることで、実績管理をすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599668/eb0f0c5b-b685-b35d-9abc-2712e6eef4e2.png)


## WBSを作る目的
WBSを作る目的は、ずばり**プロジェクト完了までの全作業を抜け漏れなく洗い出すこと**です。
その他にも以下の目的でWBSを作成することがあります。

- プロジェクト全体の作業を把握する
- 見積もりの精度を高くする
- 作業を洗い出し役割を分担する
- 顧客に対して根拠のある説明をする
- ガントチャートと組み合わせることで、スケジュールを見える化する

## WBSを使うメリット
WBSを使うメリットを集めました。

- 不確定な未来を予想する上で、大きい粒度からブレークダウンして細かく分けていくというプロセスが多くの人に馴染みやすい
- ステークホルダー（利害関係者）の満足度を上げられる
- 作業分担がしやすくなる
- 自分が行う作業がどの作業の一部なのかを意識できる
- 管理・運用がしやすい
- 各作業に識別子を持たせることができ、指示や報告などの効率が向上する（1-2-4番の作業など）
- 親を削除すると、子も自動的に削除できる

WBSを作る目的と重複している箇所がありますが、提供側にも顧客側にもメリットがあることがわかります。

## WBSを使うデメリット
デメリットを以下に列挙します。
### 予期せぬトラブルに対応できない
プロジェクトが進んでいくと、追加せざるを得ない作業や予期せぬトラブルなどが発生します。プロジェクトスタート時のWBSにズレが出てしまい、スケジュールにも大きな影響を及ぼしてしまいます。

### タスクの依存関係が不透明になりがち
自分の担当部分とその締め切りだけを確認してしまうと、「Aさんが終わらないと自分の作業に着手できない」「Aさんから資料を共有されないと作業ができない」などの問題に気づけないことが起こります。

### 締め切り直前まで完了されない
作業に余裕が生まれると完成度にこだわってしまい、後から追加の作業が出てきてしまった時の修正が困難になることがあります。

以上のことから、作業担当者全員がWBSの全体像を把握しておかないと、作成したWBSがうまく機能しなくなってしまいます。

## WBSを使う注意点
上で列挙したデメリットをカバーするために、またメリットを殺さないように以下のことに注意しましょう。

### クライアントの最終納品物のイメージが固まっているか？
ゴールが定まっていないと最初に作成したWBSの内容が役に立たなくなる可能性があります。
### WBSを確認するルールが設けられているか？
WBSは段階的な見直しが必要であるため、ステークホルダーとの見直しを定期的に行う必要があります。
### 根拠のない作業を記載していないか？
不明確な作業がある場合は無理に分解するのではなく、作業を進めながら段階的に詳細化を進めましょう。
詳細化が完了している箇所とそうでない箇所を分け、完了している箇所は変更しないようにしましょう。
### スケジュール変更に柔軟に対応できるか？
WBSを導入する際は、プロジェクト内容に応じたテンプレートを複数準備しておくと安心です。
### WBSで管理したい粒度を明確にしてステークホルダーとの認識を合わせているか？
- 日々の作業進捗を管理したい　→　1日単位を1か月分
- 大規模プロジェクトを管理したい　→　週単位を半年分

# WBSの作り方
WBSは大きく分けて4つのステップがあります。

## ①作業内容を全て洗い出す

- プロジェクトを完了させるまでに存在するフェーズやタスクを、漏れなく重なりなく分割する
    - ITシステム開発プロジェクトの場合、最初の分割は開発フェーズ（要件定義、設計、実装、テストなど）になる
- 分割ができたら、各要素をさらに細分化していく
    - ここでも、漏れなく、重なりなく分割する
    - 1か月分のWBSを作成するのであれば、一番小さなレベルのタスクが数日程度の作業に収まるように考える
    - 3～4段階程度に納められるとGOOD

　あまりにツリー構造の階層を深くしすぎると、あるタスクが複数の親タスクにまたがりたくなったり、どのタスクがどのタスクの子なのかを考えることに意識が割かれてしまいます。
人間の頭で一度に全体を把握できる程度の大きさまでブレークダウンできたら、その下は無理に階層にせず、単に列挙するだけでOKです。

### 作業内容を洗い出すときの注意点
以下の点に注意してください。
 - 必ずトップダウンで分割する
    - まずはWBSで記載する範囲を定め、ゴールを決定する
 - あるべき論を書く
    - 時間や予算、人手を一旦忘れる
 - 粒度の細かい作業は成果物を明確に書く
    - ステータスを「完了」に、進捗率を「100%」に記載できるレベルにまで書けるとスケジュール管理しやすい

## ②作業の優先度や順番を設定する

最初にすべき作業は何か、その次にすべき作業は何か、を繰り返してプロジェクトの工程を可視化していきましょう。
作業の順序設定をするときには作業の依存関係を明確にしましょう。
前工程の作業が終わらないと着手不可能なのか、並行して作業を進める事ができるのかを明確にすることで、効率的なプロジェクト進行が実現できます。

## ③構造化された作業を確認する
ここまで来たら、ある程度は作業が構造化されているかと思います。
ツリー構造をもう一度眺めて、同じ階層で隣り合った要素同士のサイズ感があまりかけ離れていないことを確認しましょう。
同じ階層の塊を同じ概念としてとらえることができればOKです。

## ④担当者設定
最後に、それぞれの作業に担当者を設定します。
基本的に「1タスク1担当者」のルールを徹底しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599668/129a28e8-3801-6e6a-2eea-5277f16c9a4b.png)

# WBSの効果を高めるために​
せっかく作業を分割するのであれば、以下も併せて考えてみることをお勧めします。

## ガントチャート
ガントチャートとは、プロジェクトの進捗状況やスケジュール管理が一目でわかるように作成した図のことを指します。
縦軸をタスク、横軸をカレンダーとした表に、タスクごとの開始日から終了日までの横線を加えたものです。

タスクが細かすぎたり、空欄がありすぎたりするとガントチャートとして機能しないことがあるので作成の際は注意しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599668/27210bd2-d8cd-12ce-38f7-49cf7af41a50.png)


## マイルストーン
マイルストーンとは、プロジェクトや作業の中間目標地点や節目のポイント地点のことです。

マイルストーンを設定することで、ステークホルダーに進捗を説明する際に「重要となるのはどこか？」を伝えることができます。
作業Bに移るには作業Aが完了しなければならない場合、作業Aの完了日がマイルストーンになります。
システム開発の場合は、「要件定義」や「基本設計」がマイルストーンとされることが多いです。
マイルストーンが多すぎてしまうと、本当に重要な中間地点がどこかわからなくなるため注意しましょう。

## クリティカルパス
クリティカルパスとは、見積もられた所要時間の合計が最も多くなる経路のことです。

### 作成手順
1. 各タスクの順番（優先順位）と作業時間を算出する
2. 前工程が終了しないと次工程に進めない依存関係のあるタスクをピックアップする
3. その中で絶対に遅れてはならないタスクを繋ぐ導線を引く

### ポイント
クリティカルパス上にある作業が遅れる事は、すなわちプロジェクトの遅延につながることを意味します。
よってクリティカルパスを発見することも、WBSによる工程管理の目的の一つであると言えます。
時系列に沿って作業の順序設定するときは、クリティカルパスはどこにあるのかを意識しながら設定してみてください。

# メンテナンス管理
WBSで列挙したタスクを使って進捗を管理しましょう。
WBSはチームメンバー全員が見えるところに置いて、タスクの更新を確認できるようにしておくと良いです。
更新の際は5W1Hを意識すると一貫性が保たれます。

- When：いつ
    - 毎日：始業時、お昼、終業30分前
    - 週1回：月曜の朝、金曜の終業30分前
- Where：どこで
    - 会議体を設けて皆で更新
    - どこでもOK
- Who：だれが
    - PMか
    - 業務担当者か
- What：何を
    - タスクのステータス変更
    - 実績入力
- Why：なぜ
    - スケジュールに遅れが出ていないかチェックするために
    - タスクが完了してあるか確認するために
- How：どのように
    - ファイル/データ修正
    - 専用ツールを使う

# WBSツールの紹介
WBSは何を使って作成するべきかまとめました。

## エクセルを使う
WBS専用のツールはいくつかありますが、その前にエクセルで作ることを検討してみてください。
以下にエクセルのメリット・デメリットをまとめました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599668/9b154926-283c-42fb-dc4a-e64fdd4cd3e1.png)


エクセルでは導入が簡単である一方、管理し続けるためのルールを徹底する必要があります。

## 専用ツール紹介

[【2023年版】プロジェクト管理システム・ツール おすすめ10選](https://notepm.jp/blog/2019)で取り上げられているツールを3つ紹介します。

### [backlog](https://backlog.com/ja/lp/?utm_source=moshimo&utm_medium=affiliate&utm_campaign=affiliatelp&maf=2553_2276557.32783.0..1549901741.1627962420)
- 国内シェアNo1のプロジェクト管理システム
- 使いやすいデザインと操作性

### [Redmine](https://redminepm.com/ja)
- 完全無料
- 世界シェアNo1のオープンソースのプロジェクト管理システム
- スマホアプリ対応（iOS/Android）

### [MicrosoftProject](https://www.microsoft.com/ja-jp/microsoft-365/project/project-management-software)
- 日本語以外の言語にも対応
- Office365サービスとの連携が可能

## ツール導入のポイント
ツールを導入する前に、以下の点について考えておきましょう。

### クラウド型 vs インストール型
- 利便性を求めるならクラウド型
- セキュリティ性を求めるならインストール型

### コストと求める機能
- 使いたい機能が多ければ多いほど金額もお高め
- システム開発に特化しているか
- 大規模プロジェクト向けか

### 言語対応が必要か
- 海外エンジニアと連携する場合は英語対応が必須

### ツールの操作性とデザイン性
- 導入前にトライアルができると◎

# まとめ
WBSを作る目的と完成後にやることをまとめました。

- 全作業の洗い出し
    - 納品やリリースなどのゴールを定め、そのゴールまでやるべきことを洗い出す
    - タスクの抜け漏れがないか、他のメンバーに確認する

- 進捗管理(日々の進捗管理or大規模プロジェクト管理)
    - ゴールが定められた日までに終えられるのかの危険度を割り出す
    - タスクに費やす時間感覚が他のメンバーとずれていないか確認する

- 役割分担
    - どの作業を誰に任せるべきか調整する
    - 人出は足りているのかどうか判断する

WBSはプロジェクト初期段階やフェーズ切替時に作ることが多いので、ステークホルダと認識の齟齬が生まれないように慎重に取り組みましょう。

皆さんもぜひWBSを書いてみてください。

次回は[システム開発チームのメンバー役割](https://qiita.com/szn-t/items/888a51da7f097a40d9d4)について投稿したいと思います。
こちらも併せて参考にしてみてください。

# 参考資料
- [WBSとは](https://backlog.com/ja/blog/wbs-introduce-how-to-make-excel-template-and-useful-tools/)
- [【2023年版】プロジェクト管理システム・ツール おすすめ10選](https://notepm.jp/blog/2019)