Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Googleカレンダーから翌週の空き時間を計算してスプリントの見積もり精度を向上する

Sansan事業部プロダクト開発部の加藤です。関西支店のチームMAIDOに所属しています。

チームMAIDOでは、月曜~金曜の1週間スプリントを採用しており、毎週金曜日に翌週のプランニングを行います。

プランニングでは、そのスプリントでやるストーリーをタスクに分解し、それぞれのタスクの時間見積もりを行います。そして、タスクの見積もり時間の合計が翌週使える時間に収まっていることを確認します。

f:id:ktx33:20190304180800j:plain

時間見積もりをやり始めたばかりの頃は、およそ1日1人5時間で計算して使える時間を割り出していました。しかし実際にスプリントを始めてみると、会議の時間を計算に入れ忘れていたりして、思ったより時間が足りないということがありました。

カレンダーを見て会議の時間だけ引き算してもいいのですが、意外と手間で、ざっくり計算すると実際に作業可能な時間よりも長く見積もったりしてしまいます。面倒なことは自動化したいので、GAS (Google Apps Script) でGoogleカレンダーAPIを使って作業可能な時間を取得するスクリプトを作成し、Googleスプレッドシートに表示してみました。

できあがったスプレッドシート

スプレッドシートのA3セルから下にカレンダーID(個人のメールアドレス)を入力して、スクリプトを実行すると、次のように表示されます。チームMAIDOでは2つのサブチームがあり、それぞれでプランニングしているので、サブチームごとに翌週の空き時間を合計し、タスクの見積もり時間がこの時間内に収まっているか簡単に確認できるようになりました。

f:id:ktx33:20190304180729p:plain

空き時間の計算方法とソースコード

空き時間は以下の方針で計算しており、GASのトリガーを使って毎日朝8時台に自動更新しています。

業務時間内(9:30-12:00, 13:00-18:00)の時間帯を30分ごとのスロットに区切り、予定が入ってないスロットの合計時間を空き時間とみなします。 全日の予定がある日や土日祝の作業可能時間は0時間になります。

ソースコードは次のとおりです。

Googleカレンダーから翌週の空き時間を計算するGoogle Apps Script

作ってみて

プランニング時にカレンダーを見て使える時間を計算する手間が省けて、便利になりました。会議の時間を計算に入れ忘れてたということもなくなりました。

ただ、ざっくり計算するのに比べて正確になる分、ギリギリまでタスクを入れてしまいがちです。朝会のような30分に満たない予定を30分間使えないとみなすことでバッファを取っているものの、それだけでは足りなくなるので強い気持ちでバッファを確保する必要があります。

上にも書きましたが、全日の予定を入れている場合、その日は使える時間が0になります。スクリプトでタイトルに特定の文字列が含まれる予定は無視するといったことも考えられますが、運用が定着しなさそうなのでそのような処理は実装しませんでした。全日の予定を入れる日は、何らかの事情で作業時間が確保できないこともあるので、バッファとして使うのもよいと思います。

簡単なスクリプトで正確な空き時間を計算できるので、もし興味があれば使ってみて下さい。

© Sansan, Inc.