こんにちは。 マネーフォワードでコーポレートエンジニアリングを担当している 下村 です。
コーポレートエンジニアって?という方は こちら をご参照下さい。 誤解を恐れず言えば、社内環境をITでハックする人 といった職種です。
さて、マネーフォワードではチャットツールとして、Slackを使っているのですが、 地味に困る、「チャンネル名変更」オペレーションについて、 Slackチャンネルを一般権限の方 でも変更できるようにしてみたのでその内容をご紹介します。
そもそもSlackってチャンネル名を自分で変えられないの?
本題に入る前に、「そもそもSlackってチャンネル名を誰でも変えられないの?」って思われた方も結構多いのではないかと思います。(私もそうでした) ただ、実際の所は管理者とチャンネルを作った人しかチャンネル名を変更できない仕様なんです。
公式サイトにもそう書いてます。
Slack ヘルプセンター > Slack の使い方 > チャンネルの活用法 > チャンネル名を変更する
ワークスペースのオーナーと管理者は、すべてのパブリックチャンネルと自分の参加しているプライベートチャンネルの名前を変更できます。
メンバーは、自分が作成したチャンネルの名前のみを変更できます。
不便じゃないですか?
不便です。 ただ、チャンネル名を変えたいだけなのに、一般権限の人は管理者の人に依頼しなければいけないですし、 管理者は管理者でチャンネル名変更という余計な仕事をしなければいけないです。 Slackさんにはチャンネル名変更を一般権限の方でも可能なように仕様を変えていただきたいなぁとは思ってます。
無いなら作ればいい
ただ、私はエンジニアなので「仕組みが無いなら作ればいい」と思いました。 ということで、チャンネル名変更を一般権限でも変更できるようにしました。
どうやって実現したの
Slack APIのconversations.rename を使いました。 上記APIをSlackのSlashコマンドで呼び出し、チャンネル名を誰でも変えれるようにしました。 動作イメージは下記のような感じです。(自分で言うのもアレですが、まるでSlackネイティブアプリみたいじゃないですか?) ※Privateチャンネルの場合は、botで指定した特権管理者のIDを招待してから実行する必要があります。
なお、上記APIを動かす環境も必要になるので、マネーフォワードではAWS環境でAPI GatewayとLambdaを使って動かしてます。 Terraformで流用できるように こちら に用意しているので流用されたい方はどうぞ。
評判は?
上々です。 一般権限の方たちに喜んでもらえたのは当然ながら、管理者側も余計な作業が減ってお互いWin-Win
ハマりがちなポイントを解説
本件については、上記までで説明は以上なのですが、それだけだと味気ない(?)ので実装にあたってハマりそうなポイントを解説します。
Tokenの種類はOwner権限以上の「User OAuth Token」を使う必要がある。
Slack Appを普段から作っている人にしてみたら、意外とハマるポイントだと思うのですが、Botトークンでは必要なスコープを定義しても not_authorized
というエラーが出てチャンネル名変更できません。
前述したとおりチャンネル名変更にはowner権限以上の権限が必要だからです。
(botにowner権限を付与できない)
そのため、Owner以上の権限でTokenについてはUserTokenでOwner権限アカウントとして振る舞ってやる必要がありますので注意が必要です。 また、Owner権限以上のTokenなので取り扱いに注意が必要なのは言わずもがな。
終わりに
全く難しいことはしておらず、実装まで数時間で完了したのですが、改善効果は高いなぁと思っています。 チャンネル名変更で疲弊しているSlack管理者さんはぜひ導入を検討してみてください。
ちなみにですが、マネーフォワードではコーポレートエンジニアを 絶賛募集中です。 社内環境をハックしたい という人、ぜひご応募ください。
【サイトのご案内】 ■マネーフォワード採用サイト ■Wantedly ■京都開発拠点
【プロダクトのご紹介】 ■お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android
■ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』
■だれでも貯まって増える お金の体質改善サービス 『マネーフォワード おかねせんせい』