Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

aws chaliceで作るslack翻訳bot

133 views

Published on

MasterCloud #9 新春クラウドLT大会 (マスタークラウド) - connpass
https://mastercloud.connpass.com/event/74392/

でのLT発表資料になります

#mastercloud
#aws
#slack

Published in: Technology
  • aws chaliceで作るslack翻訳bot // Speaker Deck https://speakerdeck.com/uchimanajet7/aws-chalicedezuo-ruslackfan-yi-bot
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

aws chaliceで作るslack翻訳bot

  1. 1. aws chaliceで作る slack翻訳bot 2018年01月23日 内田 学 @MasterCloud #9 新春クラウドLT大会
  2. 2. 2 自己紹介 内田 学(うちだ まなぶ) uchimanajet7 JAWS-UGやSORACOM UGに参加してます AWSとGolangが好きです 自社サービスを開発するチームに所属しています SORACOM UG
  3. 3. こんな経験ありませんか? Photo credit: Bernie Goldbach on Visual hunt / CC BY-NC-ND
  4. 4. こんな経験ありませんか? 4 What do you do when you receive "Slack" message in English?
  5. 5. こんな経験ありませんか? 5 You 英語のメッセージか・・・ よくわからないからGoogle 翻訳にコピペして確認しよ う
  6. 6. こんな経験ありませんか? 6 You これから毎回コピペして 翻訳するのはちょっと手間 がかかるなぁ・・・
  7. 7. 面倒を解決するには?
  8. 8. 面倒を解決するには? 8 You 英語ができれば問題ない し、これをきっかけに英語 の勉強を始めようかなぁ
  9. 9. 面倒を解決するには? 9 You コピペしないで翻訳でき れば、手軽だし面倒じゃな いかもしれない
  10. 10. すぐに試せること
  11. 11. すぐに試せること ‣ 残念ながらすぐに英語ができるようにはならない・・・ ‣ コピペをしないで翻訳できるような仕組みがあればよさ そう ‣ Slack社が公開しているSlack Appが手軽で便利そう ‣ slackapi/reacjilator: A translation bot that translates a message when a user reacted with an emoji ! " # $ % & ' ( ) * + - https://github.com/slackapi/reacjilator 11
  12. 12. すぐに試せること ‣ このSlack Appを使えばメッセージに対して国旗の 絵文字でリアクションすることで、その国の言語に 翻訳されてスレッドとして返信されるようになる ‣ GitHubリポジトリにはHerokuのDeployボタンも あるのでNode.jsとGoogle翻訳APIで問題なければ 手軽に使える 12
  13. 13. 試してみた
  14. 14. 14 http://uchimanajet7.hatenablog.com/entry/2017/12/18/102237
  15. 15. 変更したのは
  16. 16. 変更したのは ‣ プログラムはNode.jsが得意ではないので慣れている言語にしたい ‣ 動産環境は使い慣れているAWS上で動作させたい ‣ AWS Chalice (Python Serverless Microframework for AWS)を利 用してPythonに変更 ‣ AWS Lambdaを利用して動作するように変更 ‣ aws/chalice: Python Serverless Microframework for AWS - https://github.com/aws/chalice 16
  17. 17. 変更したのは ‣ Your app should respond to the event request with an HTTP 2xx within three seconds. If it does not, we'll consider the event delivery attempt failed. After a failure, we'll retry three times, backing off exponentially. ‣ Events API | Slack - https://api.slack.com/events-api#responding_to_events ‣ AWS Lambdaのコールドスタート時や翻訳APIの応答を待っていると3 秒のリミットを超えることがある ‣ リミットを超えると送信元で失敗となりイベントが再送されるので、複 数回同じメッセージが翻訳されることになる 17
  18. 18. 変更したのは ‣ Amazon API Gateway経由でslackからのイベントを受け 付けてAmazon SNSに送信するAWS Lambdaと、 Amazon SNSからメッセージを受け取って処理を行う AWS Lambdaの2つに分けて非同期で処理 ‣ AWS Lambdaのコールドスタートで3秒以上かかった場合 には効果がないが、翻訳APIの処理待ちでイベントが複数 回送信されることはなくなった 18
  19. 19. 変更したのは ‣ 翻訳APIは無料で使える枠がありかつ、登録も簡単な ところの方がありがたい ‣ Microsoft Translator API は無料枠があるが、アカウ ント登録にクレジットカード登録があり多少面倒 ‣ Translator Text API - 自動翻訳 | Microsoft Azure - https://azure.microsoft.com/ja-jp/services/ cognitive-services/translator-text-api/ 19
  20. 20. 変更したのは ‣ Yandex Translate API ならば、既存のGoogleアカウント でサインアップできる ‣ 無料枠もありサインアップした後、API Keyを払い出せば利 用可能 ‣ 対応している言語数も多く、入力文字列の言語自動判別も 可能 ‣ Translate API — Yandex Technologies - https://tech.yandex.com/translate/ 20
  21. 21. 変更したのは ‣ しかし、どうやらYandexはロシア発の企業 ‣ 翻訳APIを利用する=文字列がAPIに送信される ‣ すべてのslackチャンネルでメッセージが送信されるの は不安がある ‣ 翻訳が実行されるチャンネルを限定したい ‣ Yandex - Wikipedia - https://ja.wikipedia.org/wiki/Yandex 21
  22. 22. 変更したのは ‣ イベントの送信元でコントロールすることはできない様子 ‣ イベントを受けた方で指定のチャンネル以外は受け付けないようにす る ‣ slack上で表示されているチャンネル名ではなくIDで管理されている ‣ チャンネルのIDを調べるのにはchannels.list APIを使えばよい ‣ 手軽なのはchannels.list APIの動作テストページで実行して結果を確 認すること ‣ channels.list method | Slack - https://api.slack.com/methods/channels.list/test 22
  23. 23. まとめ Image via Attribution Engine. Licensed under CC0.
  24. 24. まとめ ‣ Node.js, Google翻訳API, Heroku で問題なければ公式 そのままでお手軽に使える ‣ コードも簡単で動作も軽いのでFaaSでの動作も問題無し ‣ AWS Chaliceは単純なものを作るのには手軽で便利 ‣ YandexのAPIは 翻訳する場合もあるが手軽 ‣ 外部のAPIを呼び出す場合は処理時間に注意 ‣ 時間がかかる場合には非同期処理にして対応する 24
  25. 25. まとめ ‣ 翻訳APIに関してはAmazon Translateに期待 ‣ Amazon Translate – ニューラル機械翻訳 – AWS - https://aws.amazon.com/jp/translate/ ‣ AWSのサービスであればSDKを利用できる ‣ IAM認証も利用できるのでAPIキーの管理も不要となる ‣ 外部APIに文字列を送信する必要がなくなる ‣ 現在はプレビューなので利用したい場合には申請が必要 25
  26. 26. Appendix ‣ aws chaliceを使ってslackの翻訳botを作ってみた #aws #chalice #slack #bot - uchimanajet7のメモ - http://uchimanajet7.hatenablog.com/entry/2017/12/18/102237 ‣ aws/chalice: Python Serverless Microframework for AWS - https://github.com/aws/chalice ‣ slackapi/reacjilator: A translation bot that translates a message when a user reacted with an emoji ! " # $ % & ' ( ) * + - https://github.com/slackapi/reacjilator ‣ [Japanese] Developing a bot for your workspace 翻訳ボットを作る! - https://www.slideshare.net/tomomi/japanese-developing-a-bot-for-your- workspace-82133038 26
  27. 27. Appendix ‣ JAWS-UG(AWS Users Group – Japan) - https://jaws-ug.jp/ ‣ SORACOM User Group とは - https://pages.soracom.jp/usergroup.html ‣ 効果的な導入・運用のための Amazon Web Services活用入門 | マイ ナビブックス - https://book.mynavi.jp/ec/products/detail/id=54224 ‣ Who am I? - https://uchimanajet7.github.io/whoami/ 27

×