WBSとスケジューリング

昨日、ワードクラウドで論文要旨を分析する方法について、Qiita記事を投稿しました

PubMedデータベースから論文要旨のテキストデータを取得し、ワードクラウドで単語の出現頻度を可視化するまで、Pythonというプログラミング言語で実装しました。


ここで扱った分析方法は、構想こそは前からあったものの、実装方法の調査や実際の分析については、全てこの一週間だけで行いました。本業の合間に作業を行っていたので、割とタイトなスケジュールでしたが、結果的には目標通り今週中に完了させました。

実は、今回の作業からはWBSを用いたスケジューリングを試験的に導入しました。本記事では、WBS導入までの過程とスケジュール策定までの流れについてお話しします。


WBSとは何か?

WBSはWork(作業) Breakdown(分解) Structure(構成)の略で、文字通り作業を分解して構造化する手法です。
プロジェクト管理の基本ツールWBSとは?サンプル付きで解説


スケジュールを組むにあたっては、自分がどのような作業を行うことになるのか想定しておくことが重要です。

例えば、「3日間で教科書を読み切る」という漠然とした計画だけだと、本当に期限内に終わるか判断ができません。一方で、「1時間に1章ずつ読み、3日間で合計12時間の読書時間を設ける」という計画なら、「1章を1時間で読み切れるのか」と「12時間をどこで確保するのか」を検討すれば、その計画が妥当かどうかが判断できます。


この例だと、「教科書を読む」という大作業を「1章を読む」「2章を読む」... という複数の小作業に分割しています。細かい作業に分割できれば、それだけ要する時間の推定がしやすくなります

このように、プロジェクトを分割して必要な作業を割り出すことをWork Breakdown Structure(WBS)といいます。


WBSとの出会い

WBSという単語は、システム開発の業務に参画した際に初めて学びました。私の勤務先ではWBSという名のスケジュール帳を作成するのが決まりであり、そこでWBSとは何かを調べたのが始まりです。

また、ここで作ったWBS進捗管理だけでなく、上司に納期延長を交渉する際にも活用できます。何の根拠もないバッファや理由が不明確な期限延長は却下される可能性が高いです。しかし、作業ごとの所要時間を見積もり、それを上司に提示すれば、こちらの提案に納得してくれる可能性が飛躍的に向上します。


それまでは何となく必要そうな作業を列挙してそれぞれに期日を割り当てるだけでしたが、ここへきて初めて作業の分割に挑戦してみました。


ワードクラウド実装までの作業を洗い出す

f:id:emoriiin979:20200906220631p:plain
JootoでWBS済み作業のガントチャート作成

作業を洗い出す方法はいくつかあり、どの方法を使えば抜け漏れなく確実に作業を分割できるというものは無さそうですが、とりあえず今回はブレークダウン式で作業を洗い出しました。この方法では、下位の作業に相当するものをマインドマップのようにリストアップしていきます。

今回は、(1)PubMedから論文要旨を取得する方法と、(2)テキストデータをワードクラウド用に正規化する方法と、(3)ワードクラウドを作成する方法について調べる必要がありそうだったので、それぞれの作業を洗い出した後、期間を設けて調査を開始しました。


それぞれの工程においてどのような情報が必要かをあらかじめ設定しておけば、その日に何ができていれば及第点なのかが容易に判断できますし、各作業を完遂するたびに小さな達成感も得ることができます。

最終的に、ワードクラウドの分析を完了させ、Qiitaの記事を投稿するまで、一切の遅れなしに完了させることができました。

最後に反省点

しかし、全てが順調にいったかというと、そうでもありません。


まず、トラブルが起きたときの対応策が不十分だったと感じています。例えば、今回の作業期間中に、電車トラブルの影響で時間通りに自宅に帰ることができず、作業時間を設けることができなかった日がありました。

今回はたまたま余裕があったので別日にカバーできましたが、今回以上のトラブルが発生していた場合、リスケなどの選択肢も考慮に入れる必要があったかもしれません。しかし、日曜には必ずブログを完成させたいなど、一度設定したスケジュールは変更したくないという頑固な自分とも戦わなければならない苦労もあり、スケジューリングは簡単ではないことが少し実感できたかと思います。


次に、漏れていた作業がいくつかありました。例えば、PubMed APIの出力形式を考慮していなかったり、STOPWORDSの増やし方を調べ忘れていたりしたため、これらを実装段階で調べ直すことになりました。

また、逆に思ったより時間がかからなかったり、実際には必要なかった作業もありました。これらの作業は計画段階で想定しておくことで、他の作業に投下できる時間をより増やすことができたのではと思います。


このように、スケジューリングにおける反省がしやすい点もWBSのメリットだと思います。これまではスケジュールを作っても見直す機会はなかったので、これを機により良いスケジューリングができるよう訓練していきたいと思います。