# Calendar

事業部横断ミーティング日程調整システム

50チーム分の日程調整作業を、構造ごと消去した。

削減時間 4時間/月
開発期間 3日
開発費用 ¥70,000

01_BACKGROUND

全社的な取り組みとして、事業部の異なる5人チームを編成し、月1回の事業部横断ミーティングを定期実施する制度が設けられていた。商談や面談を主業務とするメンバーが多く、カレンダーの空きを目視で確認しながら日程を調整する作業に「手間がかかる」という声が上がっていた。1チームあたりの作業時間は5分程度だが、チーム数は50。毎月、全体で4時間以上が日程調整だけに費やされていた。

5分×50チーム。誰も「問題」と呼ばなかった作業が、毎月4時間を消費していた。
5分の作業を、わざわざシステムにするほどのことではないと、誰もが思っていた。

1回あたり5分という感覚から、誰も仕組みで解決しようとしなかった。「カレンダーを見て候補を出すのは当たり前の作業」として受け入れられており、50チームに積み上がったコストを全体として把握している人間がいなかった。

02_APPROACH

5人全員のGoogleカレンダーをAPI経由で一括照会し、全員の空きスロットを自動抽出する構造で実装した。祝日カレンダーとの照合・土日除外・複数日の終日予定(長期休暇等)の除外も自動処理される。全員一致の候補がなければ「1名だけNGの候補」を次点として出力する設計にし、調整の現実的な難易度にも対応した。開発期間は3日。チームメンバーの名前とメールアドレスをシートに入力し、検索開始日をカレンダーUIで選ぶだけで、候補一覧がシートに出力される。

03_RESULT

システム稼働後、各チームが担当者のカレンダーを開く必要はなくなった。操作は検索開始日を選んで実行するだけ。毎月50チームで発生していた4時間の日程調整作業は、構造ごと消去された。事業部横断の取り組みが、運営コストを理由に形骸化することなく続けられる状態になった。

BEFORE
5名のカレンダーを目視確認→候補を出して合意(×50チーム)
AFTER
開始日を選んで実行するだけ。候補は自動出力
BEFORE
毎月4時間が日程調整だけに消える
AFTER
開発費¥70,000 / 3日で本番稼働・4時間/月を恒久削減

SYSTEM_ARCHITECTURE

findMeetingSlotsWithDate() // 検索開始日を選択するだけで全工程を自動実行 → Calendar.Freebusy.query() // 最大6名分のカレンダーをAPI一括照会 → holidaySet // 日本の祝日カレンダーと自動照合・除外 → isMultiDayAllDay_() // 複数日の終日予定(長期休暇等)を除外 → overlapsAny_() // 営業時間内(9〜17時)の空きスロットを走査 → allOk / oneNg // 全員一致 → 候補出力。なければ「1名のみNG」候補を出力 // UI showDatePickerDialog() // カレンダーUIで検索開始日を選択 出力:A10〜 に日付・開始・終了・参加可能メンバーを一覧表示
> START_CONSULTING _