さくらインターネットのArukasでSlackのBotkitを動かしてみる
Arukasとは
さくらインターネットが提供しているDockerコンテナーのホスティングサービスです。Container as a Serviceとでも言ったらいいのでしょうか。
2016年5月現在はベータ期間中なので無償で利用することができ、現時点での料金プランではEssentialプランで3コンテナーまで無料とのことなので、ベータ期間が終わってもちょっとだけ使ってみたいというのであれば、無料で使用できそうです。
今回は、このArukas上で発言に反応するようなBotが動作するDockerコンテナーを起動し、動作確認するところまでをやってみます。
SlackのBotユーザーを作成する
Botの作成にはBotkitを利用します。
Botkitを利用するには、SlackのBotユーザーが必要です。以下のリンクからBotユーザーの追加ができるので、適当に名前を決めて登録し、BotユーザーのAPIトークンを取得します。
既存のBotユーザーがある場合はそのユーザーのトークンを利用することもできます。
https://my.slack.com/services/new/bot
ここで取得したBotユーザーのトークンは、後ほどArukasの設定で使用します。
Arukasの設定
Arukasにログインし、新しいアプリケーションを追加します。
その際、主要な項目は以下のように設定してください。
- Image: ariarijp/botkit
- Instances: 1
- Memory: 256MB
- Endpoint: (空白)
- Port: 8080 tcp
- ENV: 指定する
ベータ版の時点ではDockerイメージはDocker Hubからのpullのみの対応となっており、プライベートリポジトリには対応していないようです。今回使用するイメージは、この記事にあわせて作成したものとなりますが、Botの挙動を変更したい場合は、元のリポジトリをForkするなどして、JavaScriptを書き換えることになります。
また、ArukasはWebアプリ向けに作られているのか、必ずひとつ以上のポートを公開する必要があります。
発言に反応するBotを動作させる場合はポートを公開する必要がないのですが、今回使用するコンテナでは、SlackのSlash Commandのエンドポイントも含めており。そのエンドポイントが使用するポートを番号を指定しています(Slash Commandの設定については割愛します
各項目を入力したら、設定を保存してアプリを起動します。
アプリの起動後、詳細画面で「アプリは起動状態です」と表示されていれば、正常に起動ができているということになります。
動作確認
最後にSlackで動作確認します。アプリが起動している状態でSlackを見ると、Botユーザーがログインしている状態になっています。
この状態で、テストで利用するチャンネルにBotユーザーを招待し、以下のようにメンションをつけてメッセージを投稿します。
@Botユーザー名 hello
メッセージを「hello」とBotユーザー宛に投稿すると「hello」とBotユーザーはメッセージを送信します。
まとめ
今回は単純なBotをArukasにデプロイしただけですが、Dockerコンテナーに依存関係を押し込んでしまうことで、デプロイ先の環境などを気にせずBotを開発できますね。
しかし、Arukasはまだコンテナー同士のリンクや永続的なストレージには現時点で対応していないため、データが揮発することを考えてアプリを実装する必要があることには注意が必要です。