Yuigo・ん・・・湿っぽい

モルック、システムエンジニア、その他趣味。大学生のころから使っているので、昔の記事は恥ずかしいし今の思想とは異なっていることが多いです。

参加レポート: Slack Dev Meetup Tokyo #1 〜App ディレクトリにアプリを公開しよう〜(自分用メモ) #SlackDevJP

connpassページ

https://slack-dev-jp.connpass.com/event/138388/

Bolt

https://qiita.com/girlie_mac/items/93538f9a69eb4015f951

TypeScriptで作られているフレームワーク、色々とよしなにやってくれますよとのこと(トークン検証とか認証とか?)

Boltはバックエンド部分にあたる。ドキュメントが日本語化されたのでどんどん使えるぞ(TypeScriptやってみようかな…)

Herokuで動かす

Heroku簡単、シンプルなコードでBoltは動かせる、BotにはトークンとSECRETが必要(Appの設定画面にあるはず)

サンプルをGitHubに公開してます。雨雲レーダーはYahoo APIのアカウントがあればOK、アニメーションGIFを作って投稿する

AWS lambdaで動かす

Serverless FW(yamlで構成情報を書いて作ってもらう。Ansibleみたいなやつ?)を使うと便利(AWS SAM CLI)、リクエストが少なければコストが少ない

https://serverless.com/framework/docs/

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/serverless_app.html

デメリットが時間制限とかかな?重い処理はアレかも

サンプルあります

3秒ルール

リクエストから3秒以内に応答しないとタイムアウト扱いになる。Herokuだと対応が簡単だけどLambdaは注意が必要。別のLambdaに渡す(非同期で別のLambdaを起動ってなんですか)?

複数ワークスペース対応

複数のワークスペースで使えるようにするには別途対応できるように作業が必要(App ディレクトリに公開するときとか?)

Appの設定ページから公開できる(今んとこ予定は無いかな〜)

新しい仕組みへの移行

Slack Appの中で色々な機能を実装できるようになった(それまでは別々のAppを設定したりしていた)認証方法も変わりました。

表示UIもBlock kitというものが登場したので、よりキレイなものを作れます(JSONで作れたんだっけ?)

失敗しないSlackアプリの作り方

ナビタイムジャパンの人

NAVITIME for Slackというアプリを作りました(自社にも導入済み)

http://corporate.navitime.co.jp/topics/pr/201907/02_4820.html

なぜ?->ビジネスパーソンの移動を簡略化するため、コミュニケーションコストの削減(チャット内に共有できるので便利)、全世界での移動をサポートしたい

Slackアプリを作るのは初

課題

  • 少ないステップ数で実現する
  • 検索条件や設定をストレスなく変更する
  • 視認性の良い経路案内の表示

少ないステップ数

経路案内をコマンド1回で表示するようにした(AIで文面を自然言語解析して経路を推測する)

ストレスなく変更

ユーザーが使い慣れた普段のUIをSlackにも再現する必要があった。

視認性の良い経路案内

複雑なUI構造を再現できるか?

Block kit

https://api.slack.com/lang/ja-jp/slash-block-kit

複雑なUIを実現できる!普段のNAVITIME UIをSlack上に表現することができた

構成要素

  • Layout Blocks
    • 50個まで重ねることができる
  • BlocK elements(上に内包される)
    • typeごとに利用可能なものが異なる

HTMLパーツに値するものがそれぞれ用意されているイメージ。そんなに苦労せず使えそう

細かい条件を指定したいときはダイアログやモーダルを出せる

JSONAPIにPOSTするだけのシンプルなインタフェースで使いやすい

チャンネルのリストやユーザーのリストはBlock kitに用意されているので、そのセレクトボックスを設置すれば簡単に使える

Slack AppをApp Directoryに公開するまで

カオナビさん

https://www.kaonavi.jp

誰にでも使える人材管理システムを作っています

なぜSlack連携

メール通知をしても、担当者があまり見てくれないので、いつも使ってるSlackに通知しようという経緯

通知が最初の目的だったが、視点を変えてみる…チャット以外にもSlackを利用している。様々な業務をSlackを通して実現されるのが理想であり、カオナビのAppもSlackを通して利用できるようにできるのではないか、と計画(ビジョンを明確にする。大事だー)

で、その上でスモールスタート→通知機能をまず作る。アンケート回答依頼や目標設定依頼

App ディレクトリの申請から承認には2週間ほどかかるそうですと聞いていたが、実際には1日で結果が来ていた。仕様については最近日本語ドキュメントができた

開発内容はシンプルだけどテストは慎重に行いました。実際にはリジェクトが合ったりして6ヶ月以上かかった(見積もりを超えた)

承認後、Publishするまでは実際に公開されないので、スケジュールを調整できる

社内の反応

シームレスにやり取りできる、Slackの方が通知がわかりやすい、定期的なレポートがほしい、など

今後の展開

コネクテッドパートナーとHRを盛り上げたい、サービス同士の連携を強化したい

Slackをチャットからワークスペースに替える活用方法+(多分世界最速)AWS Chatbotのデモ

AI目標達成支援 banto(トライアルできるよ)

https://banto.jp/

新しい人が来たときにオンボーディングでSlackの使い方を教えてあげるなんてことができると良い感じにスタートできる

サーバーレス

サーバーレスは安い。

AWS Chatbot

https://aws.amazon.com/jp/chatbot/

今朝ニュースが来た、Lambdaを書かなくてOKになる、DevOpsの通知を行うことができる?スラッシュコマンドとかアプリとのインタラクションは未実装だけどそのうち対応しそう、βリリース

ワークスペースと連携する、設定画面で通知先チャンネルとかIAMとかを設定、購読するAWS SNSを選択する、これだけで完了(!?)

CloudWatchアラーム(EC2が落ちたーとか)を仕込んでおけば、SNSのトピックに通知するのでSlackにも投稿される(グラフ付き!)かなり詳細なUIでSlack上には表示される、すごい

現状サポート外のAWSサービスからのSNS通知はSlackには飛ばない(のでテストしにくい)、適切なIAMを探すのがちょっとめんどい?

自分でAWS通知をLambdaとかでつくるよりもかなり楽になります

オススメSlack

Geek bot

https://businesschatmaster.com/slack/chat-meeting-geekbot

アジャイル時のデイリースクラムに役立つ。遠隔での朝会や情報収集も簡単になります

PomoDoneApp

https://pomodoneapp.com/

作業に集中するために使う、仕事内容を宣言することで通知設定を自動で変更してくれる(集中するときに切断する作業を自動化する)

スケジュール

IFTTTを使ってGPSで感知して出社と退勤を投稿する

https://ifttt.com/

Zapier

https://zapier.com/

ザフィアー。emojiに応じて翻訳をする、みたいなコマンドを簡単に作れる(!)

チャンネル新規作成の通知(これは自分もやってるぞ :house: と思ったけどLambdaでやってるから使っている労力が違う…)