はじめに
WBS(Work Breakdown Structure)は、プロジェクトの階層的なマッピングで、Microsoft Project(以下、MS Projectと略します。)では、プロジェクトでタスクを作成すると、Projectは自動的にユニークなWBSコードを生成し、WBSフィールドに保存します
今回、MS ProjectのWBSコード作成機能を参考とし、Smartsheetによるプロジェクト管理やスケジュール管理に有用と思われる機能を追加したプロジェクト管理用のテンプレートを作りましたので紹介いたします。
SmartsheetにないMS ProjectのWBSコードの自動生成機能
https://app.smartsheet.com/b/publish?EQBCT=6fb3961856e747149f3734daba45ca64
SmartsheetにはWBSコードやアウトラインの自動生成機能は組み込まれておりません。プロジェクトマネジメントのデフォルトツールとも言えるMS ProjectのユーザがSmartsheetに移行した場合に、このツールがないことが問題になっていました。
SmartsheetのオフィシャルWBSテンプレート
Smartsheetは、SmartsheetコミュニティーでのWSBコードに関する議論を受け、WBSコードの自動生成(正確にはMS Projectにいうアウトライン)を行うテンプレートをリリースしました。
CloudsmartのWBSテンプレートの改善点
今回、ご紹介するCloudsmartのテンプレートは、Smartsheetのオフィシャルテンプレートにない機能として、MS Projectの機能やユーザーの要望などを踏まえ、以下を追加しました。
- カスタム WBS コード作成機能
- トップレベルの親行をWBSコードなどに含めない機能
- Summary行などをスキップする機能
WBSやMS Projectでのカスタム WBS コード作成方法などは既にご存知の方は、前段は飛ばして、「CloudsmartのテンプレートでのWBSコードのカスタマイズ」から御覧ください。
Work Breakdown Structures (WBS)とは
Work Breakdown Structures (WBS)
ワーク・ブレークダウン・ストラクチャー(Work Breakdown Structures: WBS)とは、プロジェクト(例:住宅建設)を部品や主要機能成果物(例:内部工事、外部工事)に分解し、それらの成果物をより小さな下位成果物(例:壁の塗装、スラブの打設)に細分化したものです。階層内の各項目は、固有のWBSコードで識別されます。このようなWBS はプロジェクト管理やスケジュール管理、システム開発などで用いられています。
WBSコード
WBSコードは、プロジェクト内のタスクに番号を付けるために使用されるコードです。MS Projectの場合、デフォルトでは、Projectは作成した各タスクにアウトライン番号を自動的に生成し、アウトライン番号フィールドに格納します。Projectには、WBSフィールドもあり、デフォルトの状態では、アウトライン番号フィールドと同等になります。
- アウトライン番号の例: 4.12.2.3
- WBSコードの例: Project1-AD-0012-02.3
会社などの組織がプロジェクト管理に特定の WBS コード システムを使用している場合に、MS Projectでは、WBS 番号の定義 ダイアログ ボックスを用いてデフォルトコードを使用する代わりに、WBSコード・フォーマットをカスタマイズすることができます。
デモYoutube
MS Projectでのカスタム WBS コード作成方法
カスタム WBS コードを作成するには、下のようなWBS番号の定義ダイアローグを用います。
- プロジェクト・コード・プレフィクス(Prefix)を指定 (例:st)
- 各レベルのSQ(Sequence)、Len(Length) 、SP(Separator) を指定
- 例えば、「大文字、2、-」 の場合、AA-となります。
- Sequence シーケンス(数字や英文字)(例、大文字)
- Length 長さ( 例えば数字の場合、4の長さで0001)
- Separator セパレーター(区切り記号: . – + /)
- 例えば、「大文字、2、-」 の場合、AA-となります。
CloudsmartのテンプレートでのWBSコードのカスタマイズ
CloudsmartのWBSテンプレートでは、MS ProjectのWBS 番号の定義 ダイアログ ボックスの代わりに、Sheet Summary(シートサマリー)を用います。
Prefixの指定
下のイメージでは、SNSをWBSコードのプレフィックスとして指定しています。
なお、プレフィックスにSeparator(セパレーター、区切り文字)の「-」をつけて指定しています。
Sequence シーケンスの指定
上のイメージでは、Sequence シーケンスとして、Upper(Upper Letters 英大文字の略)を選択しています。
Upper以外に、Num(Numbers 数字)、Lower(Lower Letters 英小文字)が選択できます。
Length 長さの指定
下のイメージでは、Length 長さを指定しています。
Num Numbers 数字の場合
例えば、数字で4を選択すると、4桁ゼロパディング(zero padding)して、0001、0002のようにします。
Upper, Lower Letters 英文字の場合
英文字については、以下のようにしました。
- AnyとするとAから始まり、27番目にAAとなる。
- 2とするとAA、AB、ACのように27番目でBAとなる。
- 3とするとAAA、AAB、AACのように、27番目でABAとなる。
このように、3桁のAAAまでサポートしております。
(AAA-ZZZまであれば26の三乗は17576で十分と考えました。)
Separator セパレーター(区切り記号)
下のイメージのように、MS Project同様の「.」、「 -」、「 +」、「 /」から選択します。
特に選択しない場合は、デフォルトで「.」となるように設定しました。
トップレベルの親行をWBSコードなどに含めない機能
下のイメージのように、最初の行にプロジェクトのタイトルなどが表示されたい場合、Skip Top Level Parents (トップレベルの親行を含めない)にチェックすると、トップの次のレベルのParent Row(親行)からWBSコードなどを附番します。
この機能は以下のようなコミュニティーのオフィシャルテンプレートに対するユーザの要望を考量して加えました。
「最初の行を計算から外し、他の主なヘッダーは基本的にこの最初の行を無視して、WBSの計算で1、2、3などと表示されるように修正する方法がありますか?
私たちは通常、最初の行にプロジェクトのタイトルを表示し、その最初の行から完了率などをダッシュボードに使用します。私たちのステークホルダーも、プロジェクトタイトルとサマリー情報のある最初の行を見ることをとても気に入っています。もちろん、このため、すべての行が最初のプロジェクトの行からインデントされるため、計算式の「Ancestor=0」の部分が混乱しています。最初の行を計算から外し、他の主なヘッダーは基本的にこの最初の行を無視して、WBSの計算で1、2、3などと表示されるように修正する方法はありますか?」
オフィシャルのWBSテンプレートの式をIFステートメントなどで変更すれば実現可能ですが、ニーズが高い機能と思われるので、設定できるようにしました。
Summary行などをスキップする機能
下のイメージのようにSmartsheet Control Center (SCC) スマートシートコントロールセンターを使ているユーザーが、シート内にSummaryセクションを持っている場合などに、そのような行を飛ばしてWBSコードなどを附番する機能です。
この機能も以下のようなコミュニティーのオフィシャルテンプレートに対するユーザの要望を考量して加えました。
残念ながら、私はこれをControl Centerと組み合わせて使っているので、シートの一番上にサマリーデータのセクションが必要なのです。そのせいで、最初のタスクIDがデフォルトで以下のようになっています:
プロジェクトのタスクが1行目から始まっていない場合、これと同じ設定が使えるかどうかがわかりません。例えば、私のタスクは28行目から始まりますが、プロジェクト全体の健全性と完了率を追跡できるようにするために、最初のタスクもインデントしています。28行目の最初のタスクが1で始まるように、このトリックを修正する方法について、何かアドバイスがあれば教えてください。
これもオフィシャルテンプレートの式に変更を加えれば実現可能ですが、ニーズが多い機能と思われますので、設定できるようにしました。
上の質問者の事例だと、Summary, Attach Key Documents Here, Key Deliverablesの3つのセクションがあるので、Skip Parentsで3と設定すればよいことになります。
タスクの順序、階層の変更によるWBS Code自動更新の是非
MS Projectではデフォルトでは自動更新しない
MS Projectでは、WBS(Work Breakdown Structure)コードは、通常、プロジェクト内の各タスクの一意な識別子として使用されるため、デフォルトでは、タスクオーダーや階層に応じて自動的に変更されません。
サポートマニュアルに以下のように記述されています。
MS Projectの場合、タスクの順序や階層を変更に応じWBSコードを更新する必要がある場合は「WBS」のメニューから「番号の再割り当て」 をクリックして行います。
タスク変更時のWBS Codeの動作
CloudsmartのテンプレートではWBS Codeをタスクの順序、階層の変更などの場合、デフォルトで自動更新、必要な場合は、固定WBS Codeの列をコピペ及び検索・置換 (Find & Repalce)で作る、との対応が良いと判断しました。
タスクの順序、階層の変更によるWBS Code自動更新
WBS Codeをタスクの順序、階層の変更により自動更新するか、あるいは、MS Projectのようにデフォルトでは固定とするかに関しては、それぞれについて、メリット・デメリット (pros and cons)の議論があります。
固定が必要な場合の例については、以下のような場合が考えられますが、細かいので、下に(参考)としてまとめました。
- WBS Codeを他の関連するプロジェクトとの連携に用いる場合
- プロジェクト横断的な報告に用いる場合
- 複数のプロジェクト間でのリソースの割り当てに用いる場合
- 共通の作業パッケージを関連付ける場合
プロジェクト間連携はSmartsheetではセルリンク、クロスシート関数が一般的
Smartsheetでプロジェクト間の連携を図る場合、WBS Codeを使うより、Cell Link (セル・リンク)による場合が多いと考えられます。例えば、マスターシートで複数のプロジェクトを管理しており、その開始、終了が、個別シートに関連付けられる場合、Cell Link で行うか、関数で相互の日付を参照するのが一般的でないでしょうか。
Smartsheetでは関連ドキュメントなどは行添付によるのが一般的
また、Smartsheetでは、行=タスクで、タスク関するドキュメントや会話が行に添付等の形で紐づけられるので、WBS Codeをデフォルトで固定して関連ドキュメント間の連携を図るといったニーズは低いと判断しました。
MS ProjectのWBS Codeの固定は特定時点のタスクの順序、体系を固定するのみ
さらに、MS ProjectのWBS Codeの固定は、やや中途半なもので、タスクの順序、体系から最初のWBS Code体系が作られ、それを固定しているにすぎません。
例えば、プロジェクト共有のWBS Code体系をあらかじめ設定し(例、基礎工事関連は「F」で始まるコード、電気システムに関連は「E」で始まるコード)、それをプロジェクト共通で附番するというものでなく、大文字英数字をWBSコードの第一レベルに設定すると、上から順番に、A、B、Cと附番されます。
基礎工事にF、電気システムにEが附番されるわけでありません。
したがって、そのようなWBS Codeを固定する必要性は低いと判断しました。
WBS Codeを固定のデメリットも
むしろ、WBS Codeを固定することにより、インデント構造、タスクの順序、ガントチャートでの表示等と、WBS Codeの対応関係がなくなることのデメリットの方が大きいのではないでしょうか。
固定WBS Codeが必要な場合の対応
固定WBS Codeが必要な場合は、下のイメージのように、まず、WBS列の情報を固定WBS(例では、WBS Fixed)にコピーし、検索・置換(Find&Replace)を使って、適切なWBSシークエンスに変更します。
(下の例では、基礎(Foundation)を全社統一でFDのWBSコードで表すこととしているとして、-ACを-FDに置換しています。このように英文2文字以上を用いると正確な置換が可能です。)
(参考)WBSコード固定する場合
WBSコードを固定するのは、主として、1のプロジェクトに留まらない、プロジェクト間の連携、比較、あるいは関連プロジェクトで横断的な分析等を行うこと場合が想定されます。
WBS Codeを他の関連するプロジェクトとの連携に用いる場合
標準化されたWBSコードシステムを使用することで、プロジェクト間のコミュニケーションを円滑化に用いることができます。
WBS Codeは、米国の政府組織(具体的にはUnited States Navy: 米国海軍)での利用に起源するといわれますが、例えば、USDOD(アメリカ国防総省)の国防総省資材品目標準実施WBSではプログラムWBSと契約WBSが同じ体系のWBS Codeを用いることにより、コストを収集し、パフォーマンスを評価するための構造を提供しますと記述されています。
プロジェクト横断的な報告に用いる場合
WBSコードは、異なるプロジェクトにまたがる類似のタスクを追跡し、報告するために使用することができます。例えば、2つのプロジェクトがソフトウェア開発を伴う場合、コーディングタスクのWBSコードを関連付けることで、使った時間と進捗度の比較を行うことができます。
複数のプロジェクト間でのリソースの割り当てに用いる場合
リソースの割り当て: WBSコードは、複数のプロジェクト間でリソース(人、設備、材料など)を配分、特定等するために使用する場合もあります。例えば、コンサルティングファームでは、クライアントのプロジェクトごとのWBSを Codeがありタイムシートのインプットする際に用いられます。
共通の作業パッケージを関連付ける場合
標準化された各作業パッケージに割り当てる共通のWBSコーディングシステムがある場合、例えば、基礎工事に関連する作業パッケージには「F」で始まるコードが割り当てられ、電気システムに関連する作業パッケージには「E」で始まるコードが割り当てることができます。これにより同一の作業パッケージに関するプロジェクト横断的な報告、分析が可能となります。
(参考)WBSの定義
WBSに関するPMIのホームページの比較的新しい記事によると、PMBOK®ガイドで定義されているWBSは、以下の通りであると紹介されています。
「プロジェクト目標を達成し、必要な成果物を作成するために、プロジェクトチームが実行すべき作業を、成果物指向で階層的に分解したものである。プロジェクトの全範囲を整理し、定義する。各階層が下がるごとに、プロジェクト作業の定義がより詳細になっていくことを表している。WBSは、ワークパッケージに分解される。階層の成果物指向は、内部成果物と外部成果物の両方を含む。」(PMI、2004年)