じまろぐ

めめ

Slackのステータス機能を活用するためにアプリを作った

Slackのユーザーステータス、使ってますか?Slack上で絵文字+テキストによって自身の状態を示すことができる機能。

f:id:nakajmg:20171124155907p:plain

メッセンジャー系ソフトウェアの機能としては目新しいものではないが、コミュニケーションの質を向上させるポテンシャルがあるなと感じている。

リモートワークとステータス

リモートでは基本のやりとりは非同期だが、たまーに同期的なコミュニケーションが必要なときに相手がどんな状態でいるのかを知りたいときがある。

自分の状態を示したいときもある。カフェで仕事してるときとか。

この状態のやりとりにSlackのステータスがうまく機能するようにできればいいのでは?と考えた。

最近移転した弊社オフィスを作業場所として使うことが多くなってきたので、オフィスに誰がいるのかを把握するのにも使えそうだな〜と思っていたところ、次のようなエントリを読んだ。

ステータス変更を自動化する

polidog.jp

このエントリではつないでいるSSIDをもとにSlackのステータスを変更するというコマンドラインツールを作ったと紹介していた。

この方法は自身の状態を大まかに示すのに最適だなと思った。

ただコマンドラインで動作するツールというのが、同僚にインストールしてもらうのには障壁になりそうだなと思った。

Electronでアプリを作った

f:id:nakajmg:20171124155339p:plain

https://nakajmg.github.io/SlackStatusChanger/

メニューバーで動作するアプリをElectronで作った。

機能は👇のような感じ

SSIDによるステータス変更

つないでいるWi-FiSSIDによってステータスを自動で変更する。

https://nakajmg.github.io/SlackStatusChanger/ss/preference_02.png

サスペンド時のステータス変更

PCがサスペンドしたときにステータスを自動で変更する。設定はSSIDと紐付ける。

例えば、オフィスのネットワークにつないでいるときにPCを閉じたときなどに離席中といったステータスに自動で変更するように設定できる。

https://nakajmg.github.io/SlackStatusChanger/ss/preference_04.png

ステータスのリスト作成

Slackの場合、デフォルトのステータスは5個までで、チーム全員で共有される。

このアプリではアプリごとに好きなステータスのセットを保存しておけるので、よく使うステータスを1クリックで適用することができる。

https://nakajmg.github.io/SlackStatusChanger/ss/preference_01.png

アプリを活用するために

作ったアプリでステータスの変更が超カンタンにできるようになったが、メンバーのステータスを知る手段が名前の横に表示されているやつしかない。

これだとあまりステータスが有効活用できないので、botとスラッシュコマンドを作って追加した。

ステータス変更通知bot

ステータスの変更を監視して、変更があったステータスをbotに通知させるようにした。

f:id:nakajmg:20171124171311p:plain

heroku上で特定のURLを叩くとSlack APIでステータスを取得して、前回の結果との差分を取得して専用のチャンネルに流すようにしている。

URLを叩くのにはGoogle Apps Scriptの分タイマーを使ってる(herokuのschedulerがイマイチだった)。

ソース https://github.com/nakajmg/SlackStatusNotifier

ステータス一覧コマンド

メンバーのステータスを一覧で見たかったので、スラッシュコマンドを作成して追加した。

f:id:nakajmg:20171124170201p:plain

通知と一覧によってステータスの可視化ができるようになってアプリの利用価値も高まったように思う。

おわり

DLはこちらから

https://github.com/nakajmg/SlackStatusChanger/releases/tag/v2.2.0

フィードバックお待ちしております 😆

[追記] サインインとSlackへのインストールについて

アプリにサインインするにはManage PermissionでSign in with Slackを有効にする必要があります。

f:id:nakajmg:20171124185352p:plain

SlackのApp Directoryに乗せる審査を通していないので、Teamの設定でNon distributedなappのインストールが許可されてない場合にはサインインでエラーになります 🙇🏻。(PermissionのOnly allow apps from the Slack App Directoryが有効な場合)

また、インストールにAdminの許可が必要な場合(Approved Appsが有効な場合)にもサインインでエラーがでますが、インストールが許可されると使えるようになります。

サインイン以外にTokenの入力でもアプリを使えるようにするか検討中です🤔