Ruby
Slack
Ruboty

Slackのゲストアカウント管理が大変なのでbotを作った

これはドワンゴ Advent Calendar 2017 21日目の記事です。急遽決まったのであわててコネタを書いています。

slack

ドワンゴとSlack

ぼくは技術コミュニケーション室というポジションで働いています。この組織については去年書いたので読んでいただけると幸いです。

さて、部署のタスクのひとつとして「Slackの管理」というのがあります。ドワンゴはエンジニアを中心にSlackをヘビーユースしており(今年受けた取材記事をご参照ください)、その利用はエンジニア以外にも広がっています。

その結果出てくるのが、社外の方との連絡にもSlackを使いたい、という要求。標準的に使われるコミュニケーションツールで社員以外ともコミュニケーションができると、仕事が捗ることこの上なしですね。

ゲストアカウント

Slackもそういうニーズは把握しているので、早くからゲストアカウントという仕組みが用意されています。

ドワンゴではセキュリティ部門と相談し、業務上必要かつ棚卸しが適切に行われているのであれば、社外の方にもシングルチャンネルゲストのアカウントを発行しています。

棚卸しと有効期限

ところが人間とは怠惰なものなので、ほっておくと棚卸しなど無限にさぼってしまいます。もちろんそこもSlackはお見通しで、ゲストアカウントには解除期限を設定することができます。

適切な有効期限をつけてアカウントを発行し、必要なものを延長していくことで、社外の方との便利なコミュニケーションをセキュリティリスクを抑えて維持できる、というのが目論見です。

しかし人間とはどこまでも怠惰で、自分が申請したゲストアカウントがいつ解除されるかを管理しておくことすらできません。ゲストアカウントは解除される48時間前に「inviteした管理者」にslackbotから通知が来るのです。つまり、ゲスト本人も申請者も、そのアカウントがいつ解除されるかを知ることができないのです。

そこでSlarinですよ

ぼくもエンジニアなので、困りごとは技術で解決するのが本分です。意図せぬアカウントの解除に困り果てた申請者も、ぼくの仕事を肩代わりしてくれているアシスタント(…についてはどこかで語りたいが今は略)も、コードを書いて助けようじゃありませんか。

前置きが長くなりましたがそのために作ったSlack botがSlarinです。

Slarinの機能

メールアドレスのような文字列を投げつけるとアカウントを検索し寿命を教えてくれる

image.png

全チャンネルで動くのも微妙なので、動作することを許可するチャンネルを .env で指定できるようにしています。ログをどう取ろう…と一瞬考えたのですが、Slackに吐き出せば十分だなと気づきました。

DMすると自分のアカウントの寿命を教えてくれる

image.png

ゲストが自分のアカウントの寿命を知るための手段としてDMを利用することにしました。ゲストアカウントは自分のいるチャンネルのユーザーしか見えないので、Slarinをinviteしておく必要があります。

技術的に

一昨年のカレンダーに書いたのと同じくrubotyを使っています。新しいことを試すには時間がなさすぎた…。

ザザッと書いたのでテストはないしコードも雑ですが、メールアドレスを抽出する部分だけはスプレッドシートから雑にペーストするなどのユースケースが考えられるため、正規表現で頑張ってしまいました。

まとめ

ドワンゴのSlackは仕事のツールとしてはもちろん、エンタメとしても大変楽しめるツールです。興味のあるソフトウェアエンジニアの方は、ぜひこちらからご連絡ください!