はじめに
この度、Kiara TranslationというSlack上で動く自動翻訳アプリ(Slack Translation)をリリース&Slack Appに公開しました。
開発や公開方法、留意すべき点などについて知見を共有し、今後Slack Appを開発される方の参考に少しでもなればと思います。
また多言語で開発やお仕事をされている方の助けになれば幸いです。
(Slackを多国籍&多言語で使用しており、何か良いソリューションがないかを考えていたところがこのアプリ開発の始まりになります。)
#仕組みと内容物
仕組みと内容ですが、以下のようになっております。
アプリ(bot)をインストールすると、特定のchannelをSubscribeするようになっております。
ユーザーが何かメッセージを投稿すると、自動でメッセージを翻訳&投稿してくれるような仕組みです。
何をSubscribeするかはslackのdashboardで指定できます。
例えばメッセージ投稿以外にも、「ユーザーがchannelにjoinした時」、「メンションが送られてきた時」などもSubscribeすることが出来ます。
#アーキテクチャ
アーキテクチャは以下のようになっています
画像下部の緑の箇所はログや分析などで使用しているだけなので、実際の動作部分は赤枠で囲った箇所のみになります。
勿論、開発するアプリによりますが、非常にシンプルな構成でアプリ開発ができるのもSlack Appの良いところです。
#開発方法
ここで、実際にSlackアプリを開発したり公開する際に、(私の)考え方や開発の流れについて簡単にご説明したいと思います。
実現したい機能は何か
当たり前ですが、先ずは実現したい機能を決めます。
今回の場合でいうと「(複数の言語に)自動翻訳させる」という部分がそれに当たります。
重要になるのが次で述べる、どのような方法でそれを実現するか、ということです。
どのような方法で実現するか
上記で述べた機能をどのような方法で実現するかを考えます。
先ず考えるのがトリガーとなる部分です。
今回の場合でいうと「ユーザーがメッセージ投稿した時」に当たります。
その他にも例えば、「リアクション追加」、「ファイルアップロード」など様々な選択肢が存在するので、どのアクションがトリガーになるのかを決めます。
またスラッシュコマンドは使うのか、ボタンやダイアログなどの機能を使用することはあるのかなどいくつかのアプローチが考えられますので、UI、UX部分も詳細に決めていきます。
(私たちは入力の手間を省くためにスラッシュコマンドは使用せずに、ボタン&ダイアログのみを使う仕様に決めました。)
スコープの範囲を決める
どのような方法で実現するかを決めたら自ずとスコープの範囲も決まってきます。
Slack社も言っているように、ここでは最低限のスコープ設定になるようにします。
社内利用でも勿論ですが、そのアプリを公開する場合はより注意を払う必要があるかと思います。
https://api.slack.com/scopes
ローカルで開発を行う
実際に作りたいもののイメージが出来てきたら開発に入っていきます。
ここではほとんどの場合、SlackのDashbord上でOAuth、Event SubscriptionsなどのURLを指定する必要があると思いますが、ngrokを使用すると便利です。
https://api.slack.com/tutorials/tunneling-with-ngrok
審査に出す
アプリを公開するためには最後に審査に出す必要があります。
ここでは「適切なスコープが設定されているか」、「ユーザー体験が適切か」などをチェックされます。
リジェクトされた場合は再審査という流れになります。
審査が通っても勝手にリリースされるわけではなく、リリース日をSlack社と調整してリリースすることになります。
公開後の修正&デプロイ
サーバーのリリースは自由に出来る認識ですが、当然OAuthのスコープの変更などがある場合は先にレビューを通す必要があるので、注意です。
したがって先にレビューを出して通ってから、コードをデプロイする流れになります
その他
また別記事でSlack Appへの公開に役立つリンク集という記事を書いたので、必要に応じてそちらもご確認頂ければと思います。
まとめ
ドキュメント、開発ライブラリも整っていてサポートも充実しているので工夫次第で面白い&便利なものがまだまだ実装出来そうです。
ただ日本語ドキュメントが少ないこともあり、日本発のアプリはそれほど公開されていないのかなといった印象だったので、
これを機に今後ますます日本にも広まって欲しいという思いです。