ヒロエルモノヲヒロウ日記

思いついたときが書き時

リモートワークでSlackを使う人の手助け

しばらく間が空きました。

予定ではこの間に買い換えた車のこととかその車で遠出をした話とかを書くはずだったのですが、(車は買い換えたものの)新型コロナウイルス感染拡大にまつわる色々で予定がきれいさっぱり吹っ飛んで、まあおとなしくしておりました。

 

緊急事態宣言が解除された今だから思うことではありますが、最後に更新した福岡の話。

あれはあのタイミングで行っておいて(結果的に)絶妙な正解だったとしみじみ。

あの時行っていなければこの先もしばらく様子を見て判断しなければいけない状況で、特に行き先に北九州が含まれていたのでややこしい話になっていただろうなと。

 

それはさておき。

 

GWを含む4~5月の予定がほとんど飛んだと言うことで、人並みにおとなしく働いていたわけですが、一応世間の潮流に乗っかって弊社もリモートワーク化を推進してみました。

 

まあ元々「こういう事態」的なリスクは想定して色々対策は練っていたのでそれを実践したに過ぎないわけですが、社内の「抵抗勢力」的な人たちの目や「リモートワーク」に幻想を持ちすぎな人たちの目などもあり、そっちの調整の方が面倒であったことは内緒です。

 

細かい話はすっ飛ばすとして、元々チームのメンバーとの連携には「Slack」を導入していたので、リモートワークと言えど変わらず活用するわけです。

 

f:id:gadgetterdog:20200609133935p:plain

 

まあ便利っちゃ便利なんですけど、うちのチームは稼働日が人によって違うということがあるので、「ステータス」で状態を明示することにしていました。

そこで

 

 

 

いちいち変えるの面倒じゃね?

 

 

 

という問題が(個人的に)発生します。

 

就業時間以外に当たり前に連絡されても困るということで「業務時間外」的なアピールは絶対に必要だと思う私なので。 

そこで、とりあえず大まかな予定に合わせてSlackのステータスを自動的に設定できれば楽なのではないかと。

 

上手にやればそれなりにサボってもわからなゲフンゲフン

 

 

ということで調べてみましたが、どうも標準でそういう機能は無さそうです。

ならば他に「まわりくどい方法」で実現できないかということで色々やってみました。

 

結果的には「Webhooks」というものを使えば外部からステータスをいじったりできるようなので、それを使うことにします。

何を基準にステータスを変更するかという話ですが、今回はGoogleカレンダーに登録された予定を使ってみたいと思います。

 

 

まず下準備。

Googleアカウントを用意し、「勤務予定登録用」カレンダーを新たに作成して在宅での勤務予定を登録します。

まあ特定のキーワードで引っかけるので必ずしもカレンダーを新規作成する必要はありませんが、とりあえずわかりやすさ優先で専用のカレンダーを作ることにしました。

私の場合基本的に仕事は平日の9:00~18:00なので、ある程度の期間は繰り返し予定として登録してしまいました。

とりあえず対象となる日に9~18時で「リモートワーク」という予定を雑に登録しておきます。

実際にステータスとして表示される文言は別に設定するので、この時点ではわかればなんでも良しです。

ついでに祝日とか休暇、休日出勤は別途修正しておきます。

 

 

次はSlack側の準備です。

 

Slackでのこの辺の話はある時期を境に仕様が色々と変わった部分があるようで、検索すると現状と違う情報も多々出てくるので注意が必要です。

現在は単純に「APIを叩く」というよりは「APIを叩くアプリとしてSlackに組み込む」的な感じのようですね。

まあ「アプリ」と言ってもそんなに難しいことではありませんので心配なく。

 

まずSlackで使用しているワークスペースにサインインします。

その状態で下記にアクセスして右上の「Create New App」ボタンを押します。

 

↓ここからアクセス。

api.slack.com

 

f:id:gadgetterdog:20200609112014j:plain

 

   (拡大)

f:id:gadgetterdog:20200609112017j:plain

 

すると下のような画面が出るので、アプリの名前を付けて対象のワークスペースを選択して「Create App」を押します。

 

f:id:gadgetterdog:20200609112021j:plain

 

 

次にこのような画面になったら右下の方の「Permissions」を押します。

 

f:id:gadgetterdog:20200609112026j:plain

  (拡大)

 

 

f:id:gadgetterdog:20200609112030j:plain

 

次の画面で少し下にスクロールして「Scopes」という項目を探します。

 

f:id:gadgetterdog:20200609112033j:plain

  (下へ)

 

f:id:gadgetterdog:20200609113551j:plain

 

その中の、(下側の)「User Token Scopes」という項目にある方の「Add an OAuth Scope」を押します。

 

 表示されるメニューの中から、「users:profile:read」を選択します。

 

f:id:gadgetterdog:20200609112038j:plain

 

このような状態になったら、もう一度「Add an OAuth Scope」を押します。

 

f:id:gadgetterdog:20200609112041j:plain

 

表示されるメニューの中から、「users:profile:write」を選択します。

 

f:id:gadgetterdog:20200609112045j:plain

 

こうなったらOKです。

 

f:id:gadgetterdog:20200609112048j:plain

(追記)

今回はSlackのステータスを変更するだけなので、その場合は「users:profile:read」の権限は必要ないようです。

 

これでSlackの(ステータスを含む)プロファイル情報をこのアプリから取得、編集できるように権限が付加されました。

 

画面を一番上までスクロールさせて、「Install App to WorkSpace」を押しましょう。

 

f:id:gadgetterdog:20200609112052j:plain

 

アプリの権限の許可に関する確認画面になるので、「許可する」を押します。

 

f:id:gadgetterdog:20200609112056j:plain

 

今回作成したアプリのアクセストークンが表示されるので、控えておきましょう。

 

 

f:id:gadgetterdog:20200609112101j:plain

 

  (拡大)

 

f:id:gadgetterdog:20200609112106j:plain

 

Copy」ボタンを押すとクリップボードにコピーされます。

 テキストファイルなどに貼り付けておくと良いでしょう。

後で使います。

 

 

これでSlack側の準備もできました。

 

 

最後にGoogleカレンダーの予定をSlackに反映させる橋渡しをしましょう。

 

これを使います。

  

f:id:gadgetterdog:20200609114416j:plain

 

 「IFTTT」というやつです。

以前に「Zapier」をいじくり回したときにもちらっと触れたような気がします。

早速使ってみましょう。

 

※2020/09/15追記

IFTTT Proという有料版のサービスを新たに開始するのに合わせて 、無料版の作成可能アプレット数が「3つまで」に変更になるようです。

無料版で使用する人は注意しましょう。

www.theverge.com

 

IFTTTは最初に用意したカレンダーのGoogleアカウントでサインインすると楽です。

というわけでサインイン。

 

 

f:id:gadgetterdog:20200609115018j:plain

一連の処理のことを「アプレット」と呼ぶらしいですね。

早速組み立てていきます。

右上のアカウントのアイコン部をクリックし、「Create」を選択します。

 

 

 

f:id:gadgetterdog:20200619140348j:plain

 

このような画面になったら「If」と「This」の間にある「+」を押します。

 

 

f:id:gadgetterdog:20200609111908j:plain

 

 

トリガーとなるサービスの選択画面になるので、フォームに「Google」と入力して検索します。

 

f:id:gadgetterdog:20200609115222j:plain

 

 

こんな感じで出てきたら「Google Calendar」を選択します。

 

f:id:gadgetterdog:20200609111917j:plain

 

 

Connect」を押して、Googleアカウントを選択します。

f:id:gadgetterdog:20200609111921j:plain

アカウントに対する許可を与えればトリガーとして使えるようになります。

※サービスが既に接続済みならこの画面は出ません。

 

 

この画面になったらカレンダーイベントをどのようにトリガーとして使うかを選択できます。

f:id:gadgetterdog:20200609111926j:plain

 

カレンダーにイベントが一種類しかなくて使い分けの必要が無ければ「Any event starts」で良いですが、ここでは勤務形態(とSlackのステータス)のバリエーションが複数になることを想定して「Event from search starts」を選択することにします。

 

 

トリガーの詳細を決める画面になります。

 

f:id:gadgetterdog:20200609111930j:plain 

対象となる予定が登録されているカレンダーを選択し、トリガーになる「キーワード」を設定します。

 

この場合、指定のカレンダーに登録されている「リモートワーク」というキーワードを含むスケジュールが対象となり、そのスケジュールの開始時間にトリガーが起動するということになります。

 

Time before event starts」は、スケジュールの時間の何分前にトリガーを起動するかということを設定できます。

0分前、15分前、30分前、45分前が選択できますが、必ずしも正確とは限りません

(0分前で設定していても実際に動作するのが数分前後とか普通にある。)

 

 

トリガーが設定されるとこのようになります。

f:id:gadgetterdog:20200609111935j:plain

 

今度は「Then」と「That」の間にある「+」を押します。

 

f:id:gadgetterdog:20200609115836j:plain

 

 

アクションの対象となるサービスを選択します。

ここでは「Slack」ではなくて、「Webhooks」を検索します。

  

f:id:gadgetterdog:20200609111943j:plain

 

Webhooksから、先ほどのトークンをSlackのAPIに渡すという形になります。

 

この画面になったら先ほど同様に「Connect」で接続します。

 

f:id:gadgetterdog:20200609111948j:plain

 

 

 

Webhooksで選択できるアクションは一つだけです。

Make a web request」を選択しましょう。

 f:id:gadgetterdog:20200609111951j:plain

  

この画面でSlackに対するリクエストを設定します。

 

f:id:gadgetterdog:20200609111957j:plain

  

 

各項目には下記の通り入力します。

 

[URL]

https://slack.com/api/user.profile.set

 

[Method]

POST

 

[Content Type]

application/x-www-form-urlencoded

 

[Body]

token=(トークン)&profile={"status_text":"(ステータス)","status_emoji":"(絵文字)"}

 

 

(トークン)には先ほどSlackで発行した(たぶん)「xoxp-」から始まる文字列を入れます。

(ステータス)には表示したいステータス(任意の文言)を入れて、(絵文字)には一緒に表示したい絵文字を入れておきます。

 ※かっこは不要。

 

絵文字の一覧はこちらが便利です。

 

https://www.webfx.com/tootls/emoji-cheat-sheet/

 

f:id:gadgetterdog:20200609112001j:plain


 

設定したら、下の方の「Create action」を押します。

 

f:id:gadgetterdog:20200609112005j:plain

 

この画面になったらもう少しです。

f:id:gadgetterdog:20200609112008j:plain

 

書かれているのは

指定したカレンダーに登録された『リモートワーク』というキーワードを含むスケジュールの開始時間にWebリクエストを起動(Slackのステータスを変更)

という意味ですが、ここは自分でわかりやすく書き換えることができます。

 

スマートフォンにIFTTTのアプリをインストールしておけば、この処理が動作したときに通知を受けることもできます。

 

 

ここで「Finish」を押せば終了です。

 

ここまで来れば、所定のカレンダーに「リモートワーク」と登録しておけば寝ていようが出かけていようがSlackのステータス上はスケジュールに従い「リモートワーク中」ということにしておくことができます。

ちょっとくらいサボっていてもバレなゲフンゲフン

 

リモートワーク以外の業務に関しても、別に同じようなレシピを作ってキーワードを設定すればスケジュールによって違うステータスや絵文字を使い分けて設定することも可能です。

 同じ手法で「スケジュールの終了時間に起動するレシピ」を作成すれば、業務終了時などに自動的にステータスを「不在」に変更することもできるので、Slackのステータスを触ると言うことは基本的にしなくて良くなります。

 

 

それが正しいかどうかは別として。

 

 

私は「出社」「リモートワーク」「外出」「休暇」「業務時間外」などのステータスを(自動的に)切り替えて使用しています。

とりあえず、「Slackのステータスを毎回変更するのをついつい忘れがち」と言う人は試してみてはいかがでしょうか。

 

IFTTTと前に取り上げたZapierと、度々話題にしているMacro Droidを組み合わせると、身の回りの細かいことが結構自動化できたりするのでおすすめです。

 

 

 

 

今回は珍しく詳しく説明した。

 

またそのうちに。