組織の出勤状況をいっぺんに確認したくてSlackからNotionに連携する在席表を設置してみた

SlackとNotionを繋ぐSaaS連携の事例について記載しています。
2022.10.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは!
いつもお世話になっております。ネクストモード株式会社のSaaS部hagiです。
今回はSlack連携から始まり、iPaaSを挟みつつ、Notionの利用例について書いていきます。(SaaS渋滞)

※留意事項
記事を温めすぎて諸事情により有用ではなくなってしまったため、回顧録くらいにお読みください。

あるあr・・・あるよね!

ある朝、「○○の案件についてメンバー募りたいんだけど、今日あのチームのメンバーって誰が出てるの?っていうのを、ササッと確認したくなったりしないのかな、みんな?あるよね?ね?あるよきっと!」という思いに至ってしまい、こっそりiPaaSごしの世界線をかねがねから妄想していました。

今回の妄想を具現化するのに役立ったSaaSはAutomate.ioです。Notion社が2021年9月に買収した企業のiPaaSです。
UIが可愛くて動作レスポンスも良く、スモールスタートできそうな価格帯といった、SaaSならではの利便性が詰まったサービスだったため当時使い始めていました。

iPaaSというワードを始めて知った方は適当にググっていただくか、下記のユースケースをご覧いただければ、どういうものか想像はつくかなと思います。

  • Notionカレンダーを定期的に見にいって翌日にイベントがある日はみんなに教えてくれる
  • CRMに新規案件が登録されたら裏で独自採番している案件番号マスタを読み込んできていい感じに箱を用意してくれる
  • Slackに特定のキーワードをつぶやいたらバックエンドのシステムが感情を読み取って優しいことばをかけてくれる

このように、SaaS側で用意していない細かなインテグレーションを、自由に構成できるものです。(もちろんSaaS単体で連携してくれるのが一番良いんですけどね!)

発端

Slackって便利ですよね。 適当で、社外とも繋がれて、データ授受もできて、おしごとのすべてを包含できるんじゃないかと思えたりして。
ある日、某メンバーが休みなのを知って、他のメンバーの勤怠状況を知らなければいけなくなりました。

私が言うのもなんですが、創業当時からネクストモードは様々な働き方のメンバーがジョインしており、各々の組織ルールで働いているためか、手が回ってなかったかは定かではありませんが、とにかく勤怠連絡は緩く作られていました。
当時、とりあえずリアルに働いてるメンバーが知りたかったので、開店連絡チャンネルからメンバーの出社状況を確認してみたのでした。

(当時のイメージです)

まったくわからん。

いや、違う違う、見るSaaSを間違えました。
見るべきはGoogleカレンダーですよね!

…もういい!
ちょっと体系的な情報が欲しいなと思ってたし、仕組みを考え始めました。

方針

会社の雰囲気も大事にしたいので、方針は下記としました。

やりたいこと…

  • 組織内の複数メンバーをまとめて在席確認したい

避けたいこと…

  • 勤怠時間を意識しちゃう(退勤しづらい雰囲気とか)ような作りにはしない。興味ない人にとっては今まで通りの動線を維持。
  • テックなことを強要しない。手数を最小に。みんなが使えるように。
  • 機械的な連絡にしない。個々でカスタムできる遊びを作る。
  • 人間監視にならないよう緩さを残す。
  • 技術的負債を残さない。

上記を満たすため、Slackの間口を変えず、アウトプットだけNotionに起こすことにしました。

仕組み

これだけです。

簡単なので一から説明します。

起点

起点はSlackワークフローのショートカットです。
次のステップからAutomateアプリを挟んでいきます。

中継点

SaaSとSaaSを繋ぐ、iPaaSの本領発揮ポイントです。


①キューをSlackワークフロービルダーから受け取ります。
②受け取った情報から、開店なのか閉店なのかを見分けて、後工程で使う絵文字アイコン情報を変数に埋め込みます。
③どのメンバーが発火させたのかの情報をメールアドレス情報からサーチして関連情報を読み込んでいます。

④ここでやっとSlackメッセージを発信。個々のSlackアイコンも③で取れてるのでちゃんと反映します。
⑤SlackとNotionで日付フォーマットが合わなかったため調整
⑥Notionにログページを作って一応ロギング

⑦Slackワークフロービルダーからもらったデータから、Notion側に適した文字列に微修正する変数を挟ませています。
⑧Slack在籍表に情報をプロット

終点

出来上がったものがこちらです。(モザイク職人の仕事大変過ぎ)

Notionではボードビューテーブルビューなどいろいろな表示形式がありますが、出勤と退勤が如実に分かれて見えると心理的安全性が落ちたり、闇が見えてくる(オブラート)ことを察知したのでギャラリービューをメインに立て付けました。
とはいえ個々の利便性も優先したいので編集権限は全員につけてあります。

使い方

使い方は下記の通り、慣れれば誰でも使える動線かなと思います。
①ショートカットを起動

②ポップアップメッセージはこのように。

コメントは入れる人とそうじゃない人ほんとに分かれる。

結果

プロトタイプな気分で実装してリリースしてみました。
みんな割とスッと使ってくれました。

だいたい感触が掴めて来たところで、Webhookで発火するものや、リアクションアイコンで発火するものも作ったのですが、あんまり浸透しなかったです。

勤怠連絡

もう一つ、勤怠報告のチャンネル(休み連絡とか)に派生したフローも作ったので記載します。
勤怠連絡は、Slackに即時喋らせるだけでなく、休む当日にも何かアクションを起こしたかったのですが、あいにく単体ではそれができませんでした。そこで時限装置をAsanaでまかなうことにしました。


①Slackワークフローからショートカットで発火します。
②時間フォーマットをYYYYMMDDからAsanaが分かる言葉に変更します。
③メールアドレスからサーチユーザーします。

④Slackメッセージを発信します。
⑤後続の処理で使うためのAsanaユーザーサーチをします。
⑥Asanaタスクを登録します。

こちらは最低限の後続処理です。

⑦期限が来たら、当該タスクを完了に動かすAsanaルールです。
また、当日になったらAsanaのルール機能でセクションを動かしてあげれば、Automate.ioがセクション移動を検知してアクションを引き継げますので、当日Slackメッセージを出したり、Notion在籍表に休みのマークをつけるなど、自由に作れます。

副産物

時限発火による当日通知は、騒がしくなりそうだったので結局やらなかったのですが、時限装置として登録していたAsanaカレンダービューのアウトプットが、みんなの予定から休みだけ抜き出している形になり、的を得ていて見やすいという収穫もありました。動線変えてよければこっちをメインにしたいくらいですがそこはまあ、両立できてるから良いじゃないということで!

まとめ

「ココの順番こうしたほうがもっと高速化できる」とか思ったりしながら試行錯誤していくのって楽しいですよね!
機械に任せられるところはどんどん機械にまかせて、大事なことに注力したいですね。

続き

この話には重めの続きがあって、スモールスタートだったからまだ良かったのですが、それは時が来た時にまた書きます。
ネタバレが好きな方はこちらをクリック!