Help us understand the problem. What is going on with this article?

Slack上で動く自動翻訳アプリ(Slack Translation App)を開発&リリースした話

はじめに

この度、Kiara TranslationというSlack上で動く自動翻訳アプリ(Slack Translation)をリリース&Slack Appに公開しました。
開発や公開方法、留意すべき点などについて知見を共有し、今後Slack Appを開発される方の参考に少しでもなればと思います。
また多言語で開発やお仕事をされている方の助けになれば幸いです。
(Slackを多国籍&多言語で使用しており、何か良いソリューションがないかを考えていたところがこのアプリ開発の始まりになります。)

仕組みと内容物

仕組みと内容ですが、以下のようになっております。
スクリーンショット 2019-08-16 13.54.14.png

アプリ(bot)をインストールすると、特定のchannelをSubscribeするようになっております。
ユーザーが何かメッセージを投稿すると、自動でメッセージを翻訳&投稿してくれるような仕組みです。

何をSubscribeするかはslackのdashboardで指定できます。
例えばメッセージ投稿以外にも、「ユーザーがchannelにjoinした時」、「メンションが送られてきた時」などもSubscribeすることが出来ます。

アーキテクチャ

アーキテクチャは以下のようになっています
スクリーンショット 2019-08-16 13.56.00.png
画像下部の緑の箇所はログや分析などで使用しているだけなので、実際の動作部分は赤枠で囲った箇所のみになります。
勿論、開発するアプリによりますが、非常にシンプルな構成でアプリ開発ができるのもSlack Appの良いところです。

開発方法

ここで、実際にSlackアプリを開発したり公開する際に、(私の)考え方や開発の流れについて簡単にご説明したいと思います。

実現したい機能は何か

当たり前ですが、先ずは実現したい機能を決めます。
今回の場合でいうと「(複数の言語に)自動翻訳させる」という部分がそれに当たります。
重要になるのが次で述べる、どのような方法でそれを実現するか、ということです。

どのような方法で実現するか

上記で述べた機能をどのような方法で実現するかを考えます。
先ず考えるのがトリガーとなる部分です。
今回の場合でいうと「ユーザーがメッセージ投稿した時」に当たります。
その他にも例えば、「リアクション追加」、「ファイルアップロード」など様々な選択肢が存在するので、どのアクションがトリガーになるのかを決めます。

またスラッシュコマンドは使うのか、ボタンやダイアログなどの機能を使用することはあるのかなどいくつかのアプローチが考えられますので、UI、UX部分も詳細に決めていきます。
(私たちは入力の手間を省くためにスラッシュコマンドは使用せずに、ボタン&ダイアログのみを使う仕様に決めました。)

スクリーンショット 2019-08-16 14.34.47.png

スコープの範囲を決める

どのような方法で実現するかを決めたら自ずとスコープの範囲も決まってきます。
Slack社も言っているように、ここでは最低限のスコープ設定になるようにします。
社内利用でも勿論ですが、そのアプリを公開する場合はより注意を払う必要があるかと思います。
https://api.slack.com/scopes

ローカルで開発を行う

実際に作りたいもののイメージが出来てきたら開発に入っていきます。
ここではほとんどの場合、SlackのDashbord上でOAuth、Event SubscriptionsなどのURLを指定する必要があると思いますが、ngrokを使用すると便利です。
https://api.slack.com/tutorials/tunneling-with-ngrok

審査に出す

アプリを公開するためには最後に審査に出す必要があります。
ここでは「適切なスコープが設定されているか」、「ユーザー体験が適切か」などをチェックされます。
リジェクトされた場合は再審査という流れになります。

審査が通っても勝手にリリースされるわけではなく、リリース日をSlack社と調整してリリースすることになります。

審査通過後は以下のような画面になります

スクリーンショット 2019-07-08 16.29.14.png

公開後の修正&デプロイ

サーバーのリリースは自由に出来る認識ですが、当然OAuthのスコープの変更などがある場合は先にレビューを通す必要があるので、注意です。
したがって先にレビューを出して通ってから、コードをデプロイする流れになります

その他

また別記事でSlack Appへの公開に役立つリンク集という記事を書いたので、必要に応じてそちらもご確認頂ければと思います。

まとめ

ドキュメント、開発ライブラリも整っていてサポートも充実しているので工夫次第で面白い&便利なものがまだまだ実装出来そうです。
ただ日本語ドキュメントが少ないこともあり、日本発のアプリはそれほど公開されていないのかなといった印象だったので、
これを機に今後ますます日本にも広まって欲しいという思いです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした