Help us understand the problem. What is going on with this article?

RPAプロジェクト用WBSを作ってみた

RPA Advent Calendar 2019 2日目ですね。滑り込みですみません。
2日目にしてちょっと趣向を変えてみます。

RPAプロジェクトとタスクスケジュール管理

今まで参画したRPA導入プロジェクトにおいて僕が常々感じているのは、タスクスケジュール管理が非常に大変だということです。

開発面で言うと、RPAツールの機能は徐々に拡充されており、Webで探せば自分が欲しい技術的な知見はほぼ見つかります。ツールにも寄りますが、コミュニティも充実しており、自分が作りたいと思ったものは割と難なく作れてしまう環境が整いつつあるのではないでしょうか。

が、モノが作れると言っても、作る「時間」は必要です。
日本型RPAでは現場発で場当たり的に開発に取り組む例が多くみられ、プロジェクトマネジメントが軽視されがちな印象があります。次々と舞い込む自動化要件に対して、タスクスケジュール管理もせず、ただ機械的にロボットを作っていても疲弊するだけ。。。どちらがロボットなのか分かったもんじゃない。

「よし!じゃあタスク管理しよう☆」と思っても、優先順位とリソースの入れ替わり、割込タスクを加味していくと、WBSを整理するだけで平気で1日が終わります。
何とかタスク管理コストを軽減して、「いつまでに何を終わらせるのか」「1ヶ月後自分は何をしているのか」などなど…
開発計画をいかにラクに可視化するか、という課題を解決したい気持ちが日に日に強くなり、今日に至った次第です。

今回作ったもの

WBSを自作してみました。
RPAプロジェクトの性質に対応したWBSが欲しかったからです。

ポイントは3点。

  • シンプルであること ←一番重要
  • プロジェクトの開始日/終了日、タスク、担当者、工数さえ決めれば、勝手にガントチャートを作ってくれること。期限内に終わらない場合はアラートで知らせてくれること。
  • 割込タスク入ったり、タスクの工数が膨らんだら、以降のタスクを自動的にスライドしてくれること

RPAプロジェクトあるあるですが、「要件がフワフワしてる状態なので、とりあえず現在分かってる仕様で作り始めよう☆」として、後日要件が膨らんで工数見直しが必要になるケース、担当者の手が空かないため担当者を変更するケース、新たに優先度の高い自動化要件が降ってくるケースなど、WBSに手を加えなければならない状況はすぐにやってきます。
その都度、WBSの練り直しに工数を割かなくてすむようなWBSを目指しました。

ロボットを作る側も業務効率化したってええじゃないか。

デモ

WBS作成前

image.png

WBS作成後

image.png

Config

image.png

今回実装する機能

機能 実装すること
ガントチャート作成 - グループ、担当者、予定工数を考慮したGC作成
- 開始予定日を太字⇒必ずその日からタスク開始
- プロジェクト期限内に終わらない場合はアラートを出す
- 開始日を太字⇒現在の進捗を青枠で表示
- 開始日&完了日を入力⇒実績を赤枠で表示
- 土日祝日、各担当者の非稼働日を考慮
行追加 選択しているセルの行+1行目に、前タスクをコピーした内容の行を追加
行削除 選択しているセルの行を削除
エクスポート WBS+ガントチャートを別ファイルに出力
ガントチャート初期化 作成されたガントチャートを初期化

機能解説

ガントチャート作成

初期設定

プロジェクト開始日/終了日を決める

まず、プロジェクトの開始日/終了日を決めます。表示上はM/dですが、値はyyyy/M/dです。
image.png

終了日は、全タスク×工数がプロジェクトの期限内に収まるか判定するために必要です。
収まらなかった場合、WBS作成時に以下のようなアラートが出て処理が止まります。
image.png

Configを設定する

image.png

設定できる内容は、

  • 祝日、(プロジェクト共通の)非稼働日
  • 各担当者の設定
    • ガントチャートの色
    • 非稼働曜日
    • 非稼働日

です。
(プロジェクト共通の)非稼働日には、夏休みや年末年始の休暇などの日付を入れておくと良いでしょう。
各担当者の非稼働曜日は、個人的に欲しかった項目です(笑)
なぜなら、週1,2常駐の案件を掛け持ちしたとき、曜日でタスクを区切ることが多いからです。月、水はAプロジェクト、火、木はBプロジェクト…といった管理を自動でやってくれるとかなり助かります。
各担当者の非稼働日は、例えば有給休暇などの予定が入った場合に随時追加していけば、その日以降のタスクスケジュールも自動計算してくれます。

非稼働日を考慮してくれることで、メンバー全員が休みを取ることに怯えることなく(笑)健康的にプロジェクトを進めることができます。素晴らしい☆

タスクをグループ化する

今回のWBSツールでは、複数のタスクをグループ化して管理します。グループ番号はそのまま消化の順番になります。
グループに属する各タスクはウォーターフォールでスケジュールが引かれることになります。

image.png
例えば上図の場合、2020/1/6までの斎藤さんのタスクが完了しないと、次タスクの「プロセス/オブジェクトレビュー」が行えないことになります。

タスクによりますが、2020/1/10から始まる鈴木さんのタスクが、斎藤さんがタスク消化している間に並行して進められる内容であれば、前倒して実施することももちろんできるでしょう。
その場合、以下のように一度自動的にWBSを作成した後に、2020/1/10からの鈴木さんのタスク開始予定日を「2020/1/6」からに変更してみましょう。

鈴木さんのタスク開始予定日を「2020/1/6」に変更し、太字にします(Ctrl+B)
image.png

その後、WBS作成ボタンを押します。
細かいけど、本当はGC(ガントチャート)作成の方が良かったかも…
image.png

すると、鈴木さんのタスク開始予定日は「2020/1/6」からになります。
このようにタスク開始予定日を太字にすると、問答無用でその日からタスクが始まります。
その日が土日祝日、プロジェクト共通 or 担当者ごとの非稼働日も一切無視されますので、利用するときは注意しましょう。気づかないうちに休出前提のスケジュールになってたなんてことがないように…
image.png

グループ番号について補足します。
例えばグループ番号「1」「2」「3」があったとします。
この場合、グループ番号1の全タスク消化後、グループ番号2に着手する流れとなります。
image.png

進捗・実績を表示する

予定だけでなく、実績も表示したいですよね。やっちゃいましょう☆
image.png

表現を2パターン用意しています。

  • 進捗中
  • タスク消化実績

進捗中とは、まだそのタスクを消化中で未完の場合を指します。
その場合、「開始日」列の日付欄に日付を入力し、太字にします。
image.png

すると、ガントチャートのバーに青枠が追加されます。これで進捗中のタスクであることが表現されました。
image.png

タスク消化実績とは、タスクが完了していて、結果的にいつからいつまでタスク消化に時間を充てていたかを表す実績のことです。
その実績を表現するには、「開始日」列に日付を入力するだけです。
image.png

すると、ガントチャートのバーに赤枠が追加されます。これで実績が表現されました。
image.png

プロジェクト共通の非稼働日を設定する

Configシートに非稼働日を設定することができます。
ここで設定する祝日、非稼働日はプロジェクト共通なので、メンバー全員に適用されます。
image.png

土日祝日

土日はデフォルトで非稼働日として設定されます。明示的に設定する必要はありません。
土日も稼働したい場合は、前述した開始予定日を太字にしてムリヤリ稼働させましょう。
祝日はyyyy/M/d形式で明示的に設定する必要があり、ちょっと面倒なのですが、以下サイトなどからコピペで良いでしょう。
Excel最新版!2019年~ 祝日一覧(2019年~2022年まで)

担当者別ガントチャートの色、非稼働曜日、日付

image.png
ここで、プロジェクトメンバーと各メンバーの色、非稼働曜日/日を設定することができます。
曜日は月~金をカンマ区切りで設定する形となります。以下のように曜日順は問いません。
image.png

各メンバーの非稼働日はいくつ設定してもOKです。

行追加

最初はいらない機能と思ってたんですが、手動で行追加するのと、VBAでRows.Insertするのではスピードが違った(気がする)ので用意しました。(手動で行追加すると、下手すると固まったりしてました)

行追加したい箇所の前の行の任意のセルを選択しておき、行追加ボタンを押します。
選択していた行がコピー追加されます。あとはタスクや担当者、工数などを書き換えていきましょう。

行追加前

image.png

行追加後

image.png

プロジェクトの期間やタスク数などにより、行追加/削除に要する時間が変わります。5秒くらいは待たされる感覚です。ちょっとストレスかもしれません。

行削除

行削除したい行の任意のセルを選択しておき、行削除ボタンを押します。

行削除前

image.png

行削除後

image.png

エクスポート

例えば、お客さんにWBSをシェアする必要がある場合、前述した機能がそのまま使えてしまうと、スケジュールが改変される恐れがあります。
なので、ツールはこちらで持っておき、お客さんにはxlsxファイルのWBSを提供したいところです。

エクスポートボタンを押すと、名前を付けて保存ダイアログが表示されます。
ファイル名は「WBS_(今日の日付)」がデフォルトでは入っています。後は保存するだけです。
image.png

この機能も、プロジェクト期間やタスク数などにより多少時間がかかる場合があります。
以下ダイアログが表示されたらエクスポート完了です。
image.png

ヘッダーの色など多少変化はありますが、複製できています。よしよし☆
ボタン群も削除されています。
image.png

ガントチャート初期化

作成したガントチャートを初期化します。
各タスクの「完了日」列より左の項目は消されませんのでご安心を。

使い方は、GC初期化ボタンを押すだけです。
※GCはガントチャート(Gantt chart)の略です。
image.png

初期化前

image.png

初期化後

image.png

その他

今日の日付列は薄い赤色で表示される

分かるに越したことはないでしょう。
image.png

非稼働日はグレーで表示される

特に、各担当者の非稼働日がタスク別でもちゃんと表示される点は、我ながらポイント高いと思っています(笑)
下図の場合、鈴木さんは月~水、佐藤さんは水曜日が非稼働日だということが分かります。
image.png

今後の課題

作ってみて分かったのは、WBSは想像以上に奥が深いということです(笑)
中途半端な設計で作り始めるもんじゃない。
VBAのソースコードは着実に(?)スパゲッティ化してきており、自分の実装力の無さを痛感したのが良い経験になりました。悲しいです。

VBAやめてアプリ化します。

以下、使ってみて分かった課題です。

遅い

自分の乏しい実装力が原因なのは分かっていますが、Excelの限界も感じました。
プロジェクトの期間×タスク数によって、ガントチャートを作る時間が大きく変わります。
もっと早くできればいいのになーと。
ロジックとしては、最初にガントチャートの枠だけ作って、後は各担当者のバーを引いていく流れなのですが、枠を作るだけでかなり時間を食ってる気がします。
ちょっと工数変えて、WBS作成ボタンクリック!!…みたいな使い方をしたいがために作ったのに、作成に30秒待たされるようでは実用的とは言えませんね…。要チューニングです。

ツール置いてます

本記事で紹介したWBSツールです。
見事にスパゲッティ化したソースをご賞味ください(笑)
オープンソース的に誰か改良してくれたら嬉しいです☆

easyWBS_サンプル

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away