2015-09-09

slackinを Cloud Foundry で動かす

「Cloud Foundry 百日行」第57日目は、slackin です。

最近はSlackを利用する事が多くなってきており、業務で利用するだけでなく、ちょっとした集まり場のコミュニケーション手段としても Slackのチームを作ってやりとりされる事が多くなってきました。

そうした中で誰でも参加可能なSlackのチームを作成するには、 通常の場合、既に登録しているメンバーが個別に招待を送る等の作業が必要となります。

Node-REDの百日業記事を見てから個人的にすっかりハマってしまい「Slackのチームがあれば便利かも?」と思っていたタイミングで Node.js繋がりでElectronも興味があったのでElectronの日本のユーザ向けSlackチャンネルに参加した所、登録フォームがslackinが使われていて存在を知りました。

そこで今回はslackinをCloud Foundry上でデプロイする方法について紹介していきたいと思います。

基本情報

手順の概要は以下の通りです。

  • 1) ソースコードの取得
  • 2) 事前準備
  • 3) アプリの起動
  • 4) 動作確認

1. ソースコードの取得

$ https://github.com/rauchg/slackin
$ cd slackin/
$ ls
Dockerfile  History.md  Makefile  Procfile  Readme.md  app.json  bin  lib  package.json  test

2. 事前準備

2.1. 招待用のSlack Token作成

まず招待可能にしたいSlackチームにログインした状態で以下のURLにアクセスします。

Token発行用URL

URLを開いたページの"Authentication"にチームが表示されているので 招待したいチームのUser横にある"Create token"をクリックしトークンを作成しメモします。

トークン例:

xoff-10101000505-10520015205-51021255215-505005

トークンのメモが完了したら準備完了です。

3. アプリの起動

slackinの設定はアプリケーションpushの際に-cの引数として渡していきます。

-cでslackin(実行ファイル名)の後にチームのサブドメインとトークンの順番に設定します。 ※アプリケーション名は設定するslackチームのサブドメインと同じにすると分かりやすいです。

cf push SLACK_SUB_DOMAIN -m 128m -c 'slackin SLACK_SUB_DOMAIN SLACK_TOKEN'

push時のコマンド例: node-red-jp.slack.comの場合は以下の様に記述

cf push node-red-jp -m 128m -c 'slackin node-red-jp xoff-10101000505-10520015205-51021255215-505005'
:
App started


OK

App node-red-jp was started using this command `slackin node-red-jp xoff-10101000505-10520015205-51021255215-505005`

Showing health and status for app node-red-jp in org hogehoge@hotmail.co.jp / space dev as hogehoge@hotmail.co.jp...
OK

requested state: started
instances: 1/1
usage: 128M x 1 instances
urls: node-red-jp.mybluemix.net
package uploaded: Tue Sep 8 13:18:49 UTC 2015

     state     since                    cpu    memory        disk          details
     #0   running   2015-09-08 10:22:11 PM   0.0%   57M of 128M   67.9M of 1G

成功しました。

4. 動作確認

ブラウザからアプリにアクセスします。

"you@yourdomain.com"にSlackに招待したい自分のメールアドレスを入力し "GET MY INVITE"をクリックすると登録完了となり設定したメールアドレスに招待メールが到着します。

まとめ

今回は非常に軽量でシンプルなアプリでしたが、実用性の高いアプリケーションで こういった普段使いの便利ツールもCloud Foundry上でデプロイする事で 開発スピードを加速することが出来るのがPaaSの魅力だと思っています。

またSlackの登録を自動化する試みは 色々な方がチャレンジしているようで少し調べただけでも以下の物があり、 そのうちの幾つかはherokuを意識した作りになっているので 興味をもたれ方は是非他のものもチャレンジして頂ければと思います。

今回使用したソフトウェア