Slackチームへのユーザー登録ページを高速作成
無料のSlackとSlackinで、グループコミュニティを簡単に始めよう!
オープンソース製品のグループコミュニティの場としてSlackを応用するのがオススメだ。その際に手間となるのが、ユーザー登録ページの作成。これを高速かつ無料で行う方法を紹介する。
Slackコミュニティの概要
何らかのプロダクト開発グループや社内チームなどで、Slackを活用している人は多いだろう。実際に、筆者が所属する会社では2014年7月から使用を開始してもう3年間も使い続けており、現在では社内における情報共有のメインツールとなっている。便利すぎて、チームでの仕事には欠かせない存在である。
そもそもSlackとは?
読者の中には、「Slackを全く知らない」「使ったことがない」という人もいるかもしれない。念のため、ざっくりと紹介しておくと、その特徴として以下が挙げられる。
- 特にエンジニア間で人気がある(もはや世界でデファクトスタンダードといっても過言ではない状況の)モダンなチーム・コラボレーション・ツール(「チャットツールの進化版」をイメージするとよい)
- Twitterライクな操作感で情報をやりとりしたり、ファイルを簡単に共有したりできる
- Web上のオンラインツールであり、スマホやWindows/Macデスクトップ向けにネイティブアプリも提供されている
- 連携アプリが充実しており、目的に応じて柔軟にカスタマイズできる(Slack APIを用いて独自の開発も可能)
- 二段階認証などのセキュリティ機能も完備している
- 何より、フリー(無償)プランが用意されており、いくつかの制限はあるものの、フリープランでも十分に仕事で常用できる
この他、日本語のヘルプコンテンツも充実しているので、「初めて知った」「これから使ってみたい」という人は、まずはSlackヘルプセンターを読むのが一番手っ取り早い。
また、「取りあえず実際に触ってみたい」という人は、Build Insiderでも独自のSlackコミュニティ(厳密にはチームと、その中に複数のチャンネル)を作成してみたので、
からユーザー登録して触ってみてほしい。ちなみに、このSlackコミュニティのコンセプトは、「ニューラルネットワーク・AI開発者、データサイエンティストのための情報交換の場」としている。
Slackコミュニティの増加
そんなSlackだが、ここ数年の傾向として、特にオープンソースで開発しているプロダクトのコミュニティ機能(以下、Slackコミュニティ)として活用されるケースが増えてきている。その基本的な活用方法とは、各オープンソース製品の(コアなファンを中心とした)ユーザーがSlackコミュニティに参加登録して、製品のアナウンス情報をいち早く受け取ったり、開発チームと気軽にやりとりしたりするというものである。開発チームはユーザーの声を効率的に集められるし、ユーザーは開発チームが近い存在となり、よりそのオープンソース製品が好きになる、という好循環が生まれやすいという利点がある。例えば筆者はUmbracoというオープンソース製品のコミュニティ(umbracians.slack.com)にユーザー登録しており、そこからも最新情報を収集している(図1)。
Slackinとは?
しかしSlackコミュニティには、ユーザー視点で見ると弱点もある。具体的には、そもそもSlack自体があくまで「開発チーム内のコラボレーション」を前提にして作られたツールであり、「製品開発チームの外部にいるわれわれ一般ユーザーが、その製品チームが使っているSlackチームに気軽に登録・参加できるような機能は提供されていない」という点だ。この問題を低減するために活用されているのが、Slackinという「ユーザー登録をスムーズにするためのオープンソース製品」(Webアプリ)である。
Slackinのデモを試してもらえば一目りょう然だが、図1に例を示しているように、登録したいメールアドレスやユーザーアカウント情報を入力して、あとはボタンをクリックしていくだけで、ユーザー登録が完了する。
何らかのオープンソース製品を開発している人は、ぜひSlackコミュニティの作成を検討してみてほしい。以下、本稿では、Slackinを使って「Slackinコミュニティへのユーザー登録」を簡便化する手順を紹介する。
なお当然ながら、事前にSlackでそのためのチームを作成しておく必要がある。これについては、本稿の主題から外れる内容なので説明を割愛する。「Slack公式ヘルプセンター: Slack のチームを作成する」を参考に作成してほしい。本稿では、図3に示すように「buildinsider」.slack.comというチームURLで作成した(※現在、「deepinsider」.slack.comにリネームしています)。
SlackinによるSlackコミュニティの作成
Slackinは、下記のリンク先(GitHub上)で、オープンソースで公開されている。
- GitHub - rauchg/slackin: Public Slack organizations made easy
- GitHub - DeepInsider/slackin: Public Slack organizations made easy(Azure向け処理を修正したバージョン。※2018年3月22日時点で正常に動作することを確認)
英語ではあるが、リンク先を読めば作成できる。基本的には上記のリンク先の説明を読んでほしいが、以下では現時点での手順を示す(※今後、Slackinのバージョンアップにより差異が出てくる可能性もあるので、その点をあらかじめご了承いただきたい)。
利用するクラウドを決める
SlackinはサーバーサイドのWebアプリなのでホストするクラウドプラットフォームが必要になる。選択肢は、以下の5つ。
基本的にはNowを選択すればよい。Nowも無償で使用可能だ。本稿でもこれを使うことにする。
事前準備(1): Nowデスクトップ環境のダウンロードとログイン
Nowを使うには、まずElectron製(つまりWindowsやmacOSなどクロスプラットフォーム対応)のデスクトップアプリとコマンドラインツール(now
コマンド)をダウンロード&インストールして、Nowにログインする必要がある。これには図4の手順を実行すればよい(※本稿ではWindows環境を使うが、macOS環境でもNowの使い方は全く同じである)。
以上で、Nowデスクトップ環境の構築は完了だ。
実際にnow
コマンドが使えるか試してみよう。WindowsであればPowerShell(もしくはコマンドプロンプト)、macOSであればターミナルを起動してnow help
というコマンドを実行してみて、コマンドヘルプが正常に出力できるようであれば、now
コマンドは使える状態である。
事前準備(2): SlackのレガシーAPIトークンの取得
now
コマンドを実行してSlackinの環境を構築する前に、SlackのレガシーAPIトークンを取得する必要がある。取得方法はSlackの公式ヘルプページ(日本語)を参考にしてほしい。
執筆時点における具体的な手順は、
- Legacy tokensページ(英語)
を開き、[Legacy token generator]の表を参照し、対象となるSlackチームの行の右端にある[Create Token]ボタンをクリックすれば、Token(レガシーAPIトークン)が得られる(※ちなみに「レガシー」という名称のとおり、取得しているのは古い形式のトークンで、最新のSlack apps形式のトークンにはSlackin自体がまだ対応していないので、間違えないように注意してほしい)。
事前準備(3): Google reCAPTCHAのSite keyとSecret keyの取得
続いて、reCAPTCHAのSite keyとSecret keyを取得する。これには、
- 「reCAPTCHA: Easy on Humans, Hard on Bots」(英語)を開いて
- 任意の[Label](例:「BuildInsiderSlackin」)を入力し
- [Invisible reCAPTCHA](より高度なセキュリティにしたい場合は[reCAPTCHA V2])にチェックを入れて
- [Domains]欄にはSlackinによるユーザー登録ページのURLとする予定の「buildinsider.now.sh」(※太字部分は任意の値)を入力して
- 英語で書かれたサービス利用規約が問題なければ[Accept the reCAPTCHA Terms of Service.]にチェックを入れて
- 最後に[Register]ボタンをクリック
する。これにより、図6に示すようなページが表示され、Site keyとSecret keyを取得できる。
nowコマンドによるSlackin環境のお手軽構築
それでは、本題のSlackinサーバー環境を構築していこう。といっても、次のようにコマンドを1つ呼び出すだけである。
now -e SLACK_INTERVAL=15000 rauchg/slackin
|
-e
オプションは環境変数を指定するもので、リスト1ではSLACK_INTERVAL
環境変数に15000ミリ秒を指定するという意味である(※執筆時点のコードでは2倍されて30秒に1回の割合でSlack APIにアクセスすることになる。デフォルトは5000ミリ秒だが、執筆時点でこの値だと「HTTP 429: Too Many Requests」というエラーが発生したため変更した)。
コマンド実行後の環境構築の途中で、上記の準備(2)(3)で取得した「SlackのレガシーAPIトークン(SLACK_API_TOKEN
環境変数)」と「Google reCAPTCHAのSecret key(GOOGLE_CAPTCHA_SECRET
環境変数)とSite key(GOOGLE_CAPTCHA_SITEKEY
環境変数)」の入力が要求される(※reCAPTCHAでの表示はSite key→Secret keyの順だったが、ここではSecret key→Site keyの順で間違えやすくなっているので注意すること)。またSLACK_SUBDOMAIN
環境変数の値も要求されるが、これはSlackのURL名(本稿の例では「https://buildinsider.slack.com/」のbuildinsider)を指定する。図7は筆者が実際に試した結果だ。
図7の赤枠で囲った部分が、作成されたWebアプリのURLである。
- 本稿のURL例: https://slackin-xtrhgeimiv.now.sh/
このURLにアクセスすることで、Slackコミュニティへの登録ページが表示される(図8)。
しかし、自動生成された「https://slackin-xtrhgeimiv.now.sh」というURLのドメイン名は、now
コマンドでデプロイするたびに変わるし、覚えにくいし、と使い勝手が悪い。Nowではエイリアス機能を使ってドメイン名を固定的にできるので、本稿の例では「buildinsider.now.sh」というドメイン名(※前述のGoogle reCAPTCHAに指定したものと同じ)になるようにエイリアスを設定しておこう。リスト2が、これを行うためのコマンドである。
now alias https://slackin-xtrhgeimiv.now.sh buildinsider
|
このコマンドを実行すると、次のURLでSlackコミュニティへの登録ページが表示されるようになる。
- https://slackindicommunity.azurewebsites.net/
(旧URL:https://buildinsider.now.sh/、https://deepinsider.herokuapp.com/)
以上で本稿が目的としていた「Slackinコミュニティへのユーザー登録」のページ作成が完了した。
SlackinとNowの実践的活用方法
SlackinとNowを実践で使ううえで知っておくと便利な機能があるので、最後にこれらを簡単に紹介しておきたい。
Nowのダッシュボード
Slackコミュニティへのユーザー登録ページにアクセスしたり、ログを管理したりしたい場合は、
が便利だ。上記のリンク先を開くと図9のように表示され、緑枠で囲んだ部分をクリックすると、Slackコミュニティへのユーザー登録ページにアクセスできる。
また、赤枠で囲んだ部分をクリックすると、実行ログをリアルタイムに参照できる。
Slackinのバッジ機能
図10に示しているのがバッジ(Badges)である。下の「Realtimeバッジ 」の方はクリック可能で、クリックするとSlackコミュニティに参加するためのポップアップが表示される。
図10のバッジを実現するコードは、リスト3のようになる。このように非常にシンプルに1タグで記述できる。
<html>
<head></head>
<body>
<hr>
<p>SVGバッジ:</p>
<img src="https://buildinsider.now.sh/badge.svg">
<hr>
<p>Realtimeバッジ:</p>
<script async defer src="https://buildinsider.now.sh/slackin.js"></script>
</body>
</html>
|
なお太字部分は、各自で作成したWebアプリのURLに書き換える必要がある。
■
以上、面倒なSlackコミュニティのユーザー登録ページの作成を、Slackinを使うことで簡略化する方法を紹介した。今回はNowを使ったが、Heroku/Azure/OpenShift/IBM Bluemixを使う場合も、上記の各リンクをクリックして、それにより表示されたページの入力ページを埋めて進めていくだけで簡単にユーザー登録ページが作成できる。ぜひ本稿の内容を応用して、目的に合った使い方をしていただけると筆者としてうれしい。