コンテンツまでスキップ

【Zapier】挨拶と非同期ワークをPPAP(ン゙ー!)してみた【ぼくのなつやすみ】

はじめに


こんにちは! ネクストモード株式会社 のSaaS事業部hagiです。

 

今日は、"ぼくのなつやすみ"1日目を盛大に滑りコケさせてくれた出来事をご紹介します。


1日のはじまりは挨拶から


ネクストモードの出社は挨拶から始まります!

もちろん皆さんリモートワークなので各々のスタイルで仕事を開始されるのですが、これに関しての緩さや、Notionを在席表にしてみたり、Asanaを時限装置に使ってみたりといったTipsは過去ブログにしたためています。一旦斜め読みしながら見送ってください。ちなみに今も挨拶運動(?)は続けています!

 

一応断片を切り取ると、コレが、

今とちょっとUI変わってる

こうじゃろ、となって、「おはよー」と絡めた一連のロジックが発火します。

諸事情によりZapierに移行して少し姿は変わっていますが、毎日元気に動いています。
なお新しいワークフロービルダーについては本日触れません。

 

そのワンクリックをなくしたい


DRY(Don't Repeat Yourself:同じことを繰り返すな)原則とは、1つのシステムの中で同じものが重複することがあってはならないという原則です。人生の冗長化にチャレンジしたい場合を除いて、なるべく日々の生活を無駄なく過ごしていきたいものです。

過去にもこの問いに訴求した記事を書いていますが、また、湧いてきてしまいました。
この作業(挨拶)、もっと効率化できるんじゃないのかな?

 

楽をしたい。

楽をしたい。

毎日ちょっとずつ工夫しながら多大な苦労を永年はたいてでも楽をしたい。

 

 

実は当時速攻で作ってた


当時の実装はブログに記載していもの以外にも、Webhookで発火するタイプをオプションで用意していました。
動作としてはこちらのほうが俊敏に動くのですが、万人に使えるかというと、少し疑問があったのであまり大々的に宣伝はしませんでした。(Notion社内マニュアルには書いて周知しています)

仕組みはとっても簡単で、Zapierで発行したURLにメンバー情報だったり出社退社みたいなクエリストリングを含ませてWebアクセスすると、受けたZapierがパラメタを読み分けてSlackに渡してくれる、大変シンプルなものです。

 

この子はWebアクセスできるものであれば何でも動くので、スマホにブクマして打ってみたり、大好きなRaycastに仕込ませたりして、「おはようございます」→「チッス」くらいには最適化していたと思います。

 

 

 

ただ、これでワンクリック減らせたね、めでたしめでたし………ではないんです。
そうじゃないんです。
なんか違うんです。

個人のイメージに過ぎませんが、リモートワーク下において、このSlackごしの挨拶の目的をよく考えてみた結果、「今日出勤しているので話しかけて全然OK、あついでに今日テンション高いです」みたいなフランクな意思表示が目的であって、事務所に滑り込んでタイムカード切ったよアピじゃないはずです。人間監視じゃないんです。そのためわざわざその時間帯に人間の手を入れる所業は必要ないのではと思い至りました。時間に言わされてる感じで挨拶するのではなく、自分の意思とタイミングで挨拶したいがために自動化するのです。

 

構想


早速実装をイメージします。
みんなが始業しそうな時間帯で日次に発火させようと思います。
大事な"意思"操作ですが、"曜日の感覚""休みの判定"を入れる必要があります。できれば無駄な操作は増やしたくないので、普段使っているGoogleカレンダーを用いて条件分岐を考えたいと思います。
あとはWebhookが発火して、挨拶したことがSlackメンションされてきたら、「しめしめ、今日も自分の意志で計画通りにおはようございますしたぜ」となってスッキリ一日が始まる魂胆です。

また余談ですが、人間として違和感のないように、発報時間を数分間ランダム遅延させることもできると思いますが今回は一旦そのままにしました。ずっと誰にも気づかれないのは怖いからです。機械は機械としてのアイデンティティを突き通してほしいです。今回は、"機械が人間かどうかを判定"するためのチューリングテストのような、逆チューリングテストのような、そんなサブテーマもありますね。ないですね。

 

実装


いよいよZapierを作っていきます。
実装はこんな感じです。思ってたよりシンプルー。

  1. 定刻(Every Day)にバッチ起動するトリガー
  2. Googleカレンダーの確認
  3. 条件分岐
  4. おはようございます

 

定期実行に関して、"weekends"の条件があらかじめ設定できます。こちらで平日縛りにします。

 

さて、Zapierは米国ツールのため、案の定日本の祝日操作に対応しません。
この悩みを今回はGoogleカレンダーを使って私用休暇の操作条件に丸めます。

"自身のカレンダー"の"当日"ラインで特定キーワードを探します。
ヒットしなくても次に進めます。
3.のOnly Continue if...でキーワードがなかったら発火させることにします。
※キーワードが一般的すぎると誤作動したり社内のいたずら小僧にハックされたりします。気になる方は専用のカレンダーを別途作って制御してください。

 

バグの予感


はしていました。
大したテストもせずいきなり実地で動かし始めました。
ただし、本番でイレギュラーを試すチャンスである"夏休み開始日"が近づいていた絶好タイミングであり、ミスってもたかだか社内に1発失言するだけなのでいっかということで、実環境でのプロトタイプを優先してみました。

 

的中


夏休み初日に入り、基本的にのんびり過ごしてましたが、休み初日なのでまだSlackチェックする習慣が抜けず、思いがけずSlackを開いてみた結果、そこにはあるはずもない表示が…。

 

 

…見て即座に切り戻し(削除)ましたが、世の中どんな一瞬でも見てる人は見てます。Slackチェックする習慣を同じく持ってた人、SaaS部ブチョウです。

 

 

 

 

※このあと何も聞かれなかった寛大さ尊敬の意を示しつつ、原因箇所(if continue条件を間違えてた)の修正を完了し、ほぼ安定運用に乗りました。

 

さいごに


私は日頃からAsync work(非同期で働くこと)とGitLab社のハンドブックを崇めているのですが、思想に少し近寄れたような気がします。

連絡しなきゃいいじゃん。Slackステータス使うよう全社に押し付ければいいじゃんて思われる方は半分正解で半分バツです!(せっかく緩いルールがあるのだからそこで遊ばないわけにはいかないですよね!)

ということで、私は毎日のルーティンを最適化しようとした結果、動作が不安で毎日余計にその時間帯スーパー意識を研ぎ澄ませて正座待機するハメになってしまいました。(めでたしめでたし)