見出し画像

チームコミュニケーションを活発にするための、情シス的Office座席予約システムの開発

目次



はじめに


こんにちわ。株式会社CAMPFIREで情シスを担当しているnoseです。
これは CAMPFIRE Advent Calendar 2023 12日目の記事です。

このような媒体に参加するのは初めてなので緊張していますが、最後までお付き合いいただけたら幸いです。

簡単な自己紹介になりますが、私は2017年に入社し、その後2019年頃から1人情シスとしてCAMPFIREのデバイス関連、アカウント関連の管理運用を行ってきました。最近はチームメンバーも増え、管理業務だけでなくDXや社内業務改善に従事しています。
プライベートでは4児の母やっておりまして、実際のところ仕事終わってからが本番!な生活を送っております。

座席予約システム


さて、CAMPFIREは今年の4月に本社を代官山に移転しまして、新しいオフィスでの業務がはじまりました。
・・とは言ってもほぼ完全リモート体制のため、オフィスに行く機会はほぼないんですけどね。
一部コーポレート系業務だったり、会議などで必要に応じてオフィスに行くかんじです。

広さとしてはだいぶ縮小され、座席数も16席という、社員全員はどうひっくり返っても入れないくらいです。
そのため、オフィスで作業が必要なメンバーは、椅子取りゲームにならないよう、予め座席を予約する必要がでてきました。

当初は「管理用スプシに各自で名前を書いて予約しよう・・・」という話になっていたのですが、この令和の時代にスプシで会議室を予約するという前時代的な方法に対して「・・・」となった私は、「そんなのやってらんねいよなんかシステムで解決しましょうよ!」と手を挙げ、この開発が始まりました・・・

開発要件


偉い方からの要望は以下

  • チームコミュニケーションを活性化したいので、チームでの利用を推奨したい(チーム単位だったらはいつでも予約できる)

  • 座席を2つに分けて、同じ時間に最大2チームが予約できるようにしたい

  • チーム予約が入っていない場合は個人でも利用してよし(3日前から個人予約可)

  • スプシで予約状況を見れるようにしたい

  • 予約完了をSlackで通知されたら嬉しい

当初はGWSのリソース管理での予約システムを検討していました。
ビルディング、設備や機能、カレンダー リソースを作成する

が、上記の要件を満たすため、最終的にはGoogleの予約スケジュール機能と、情シスで利用しているローコードのアプリ自動連携ツールの「ZohoFlow」を利用することになりました。
Google予約スケジュール
ZohoFlow

実装について


予約スケジュール機能

突然ですが、「予約スケジュール機能を使いたいんだけど、1つの時間枠に1つしか予定入れられないのよねぇ。複数入れられると便利なんだけどなぁ。」となった経験はありませんか?(なさそう)
今回の要件では、1つの時間枠に2チームの予約が入るように設定したり、個人で座席を押さえるために、複数の予約を1つの時間枠に確保するケースがでてきました。

予約を確保すると
10時の枠は確保できない

しかし、予約されたスケジュールを「未設定」もしくは「不参加」にすると、予約枠が開放されることがわかりました

予約を「未設定」にすると
10時の枠が復活している!

そこで予約スケジュールで予約されたあと、参加状態を「未設定」にしてしまえば、同じ時間枠でも複数の予約を確保することが可能になる!というわけです。

しかしこれだけでは、どの座席が予約されているか。そもそも枠を開放してしまうと予約できてないじゃないか・・ということになってしまいます。

そこで考えたのが、座席毎のカレンダーを設定する。ということ。

予約スケジュールで予約されたあと、参加状態を「未設定」にするのと同時に、座席毎のカレンダーに予約を入れてあげることによって、どの座席が予約されているか、そして同じ時間に同じ座席が二重に確保されることを防ぐことができそうです。

しかもGWSの会議室リソースとして設定せず、個別に座席のカレンダーを設けることで、このシステムを利用せずに個別で座席が確保されることも未然に防ぐことができるというおまけ付き。

座席毎のカレンダーを設定することによって、重複せずに予約をとれるようになりました。

予約スケジュールの実装

予約スケジュールの具体的な設定方法はググってもらうとして、キモとなる部分だけ。
「空き情報の確認に使用するカレンダー」にシートに紐づくカレンダーリソースを設定しておきます。

これにより、ダブルブッキングを防ぎます。

また、「⚫日前から予約」「いつでも予約」などの要件は、予約スケジュールで提供している機能だったので、そちらをありがたく利用させてもらいました。

個別利用の場合は、3日前から
チーム利用の場合はいつでも予約可能

ZohoFlowの実装

ZohoFlowにはトリガとなるパーツが用意されており、ノーコード、ローコードでの自動連携が可能です。
今回は、予約されたことをトリガとして動作する設定したワークフローを作成します

予約が入ったことをトリガとするWFの設定画面

予約が入った場合は、どの席の予約かを確認し、その席に紐づくカレンダーを設定します。

カレンダーリソースは会議に参加するメンバーと同じような形で、該当の座席のカレンダーIDを招待すればOK。カレンダーIDは設定画面から確認することができます。

カレンダーID

ZohoFlowにて、「Update Event」のパーツを利用して、該当のカレンダーを招待します。

これで、同じ時間枠でも、座席毎のカレンダーを用いて予約を複数確保できる、座席予約システムが完成しました。

もちろん、ZohoFlowで用意されているパーツを利用して、スプレッドシートへの書き込みとSlack通知も行っています。
また、キャンセルが発生した場合のスプシへの反映やSlack通知も実装しました。

終わりに


今回の工夫は、「予約スケジュール機能を使いたいんだけど、1つの時間枠に1つしか予定入れられないのよねぇ。複数入れられると便利なんだけどなぁ。」という方の参考になれば、、、と思い書きました。
また、検討〜実装期間が2日くらいと突貫でつくったにも関わらず、予約スケジュールの機能や仕様をよく活用できたと思っています。
実際に社内でも、チーム活用が活発になり、遠方のメンバーも年に数度、オフィスで実際に顔を合わせて作業する、という機会もできました。
社内のチームビルディングに、多少なりとも貢献できたのではと思っています。

今年はこのような社内の業務改善に貢献できるような業務ができて、実りある一年でした。

ついでにうれし恥ずかしメディアデビューも果たしたので、お時間あったらご覧になってください。

noseでした。

この記事が気に入ったらサポートをしてみませんか?