ChatOpsを加速させる!Slack連携アプリをラクに実装するためのOSS「SlackHub」をリリースしました(AWS CDK+Go lang)

ChatOpsを加速させる!Slack連携アプリをラクに実装するためのOSS「SlackHub」をリリースしました(AWS CDK+Go lang)

SlackHub

どんな記事?
  • Slack連携アプリをラクに作るためのOSS「SlackHub」を公開しました!
  • 好きな言語で「ポップアップダイアログ」付きのアプリが簡単に作れます
  • SlackHub本体は、AWS CDK+Goでの実装です

システムの運用をラクにしたい!

おそらく全世界、全エンジニア共通の夢。果ては数十年前のエンジニアから、この思いは変わらないことでしょう。

そうした先人からの知恵と工夫が積み重なって、いまでは「ChatOps」なんてものまで出てきました。

普段使ってるチャットアプリからササッと問いかけるだけで、プロダクトを触れちゃうっていうんですから、そりゃあラクなもんです。

…なんですが、いざやってみるとこれが結構大変で。ChatOpsのツールを作れるようになること自体にかなりの時間がかかります。

というのも、ChatOpsのツールを作るには、

  1. どんなツールが必要か考える
  2. チャットアプリのAPIを理解する
  3. チャットアプリ-ツール間の連携処理を作り込む
  4. ようやくやりたい処理を実装

という長い長いプロセスが不可欠。特にチャットアプリのAPI、連携方法の理解・実装にめちゃめちゃ時間がかかります。

小規模のチームなら、みんなで勉強!でなんとかなるかもしれませんが、数十人規模のチームともなると話は別です。全員にチャットアプリのAPIを理解してもらうのは現実的ではないですし、かといって少人数しかツールを作れないのでは、いつまで立ってもChatOps化は進みません

というわけで、こんなジレンマを解消するためのOSS「SlackHub」をリリースしました!

端的にいうと、Slack APIの処理を代替して、エンジニアがやりたい処理の実装に集中できるようにするアプリケーションです。

スポンサーリンク

どんなツールが作れるの?

なにはともあれ、まずはどんなツールが作れるのか見てましょう。

slackhubのDEMO

こんな具合で、Menuからの選択、ポップアップ(=Modal)を伴うアプリが作れちゃいます。要所だけ取り出すと、以下のような感じです。

処理シーケンス

メンションでツールを呼び出したのち、

  1. ツールMenuから、使いたいツールを選択
  2. ポップアップしたModalにパラメータを入力
  3. やりたい処理をlamndaで実施

という流れ。

このうち、lambdaを呼び出すまでの処理はすべてSlackHubがエンジニアのみなさんに代わって実施します。

見た目と処理実装だけ

なので、みなさんが実施するのは、

  • Modalの見た目の事前設定(専用GUIのドラッグ&ドロップで作れます)
  • やりたい処理のlambdaの実装

だけです!

処理シーケンス(Modalなし)

もちろん、Modalは必要なければ、スキップ可能。この場合は、

  • やりたい処理のlambdaの実装

だけでOKです。

実装はお好きな言語で!

実装言語は任意

SlackHub本体とツールのlambdaは、疎結合な作りになっています。

なので、ツールの実装言語はどの言語でもOK
GoでもJavaでもC++でも、使い慣れたものを使ってください。

認証周りもまとめておまかせ!

ほとんどの処理を委譲可

実装がめんどうな

  • メッセージ認証
  • ツールごとの利用ユーザー制限
  • ツールリストの作成・送信
  • Modalの作成・送信
  • InputのJSONの整形

などなどの処理も、ぜーんぶまとめてSlackHubにおまかせ!裏でひっそりと実施しておくので、エンジニアのみなさんは、やりたい処理の実装に集中してください。

全体シーケンス

ちょっと細かい話ですが、処理の全体シーケンスはこちら。

SlackHubがメンション受信→ModalのInput受け取り、まですべて実施したのちに、InputのJSONを整形して、ツールのlambdaにお渡しします。

エンジニアのみなさんは、このJSONの中身を使って「やりたい処理だけ」実装すればいい、というわけです。

通知もカンタン

処理完了時の通知処理も、できるだけシンプルに実装できるよう工夫しました。

ツールのlambdaに渡すJSONにresponse_urlという項目を追加しています。なにかというと、このアドレスにPOSTリクエストを送るだけでSlackに投稿ができる!というものです。

デフォルトでは、Modalを使う際にはついてこないパラメータなんですが、通知実装がとてもラクになるので、独自にSlackHubで追加してツールのlambdaに渡すようにしています。

ツールの管理もChatOpsで!

SlackHubは「ChatOpsを加速させる」と銘打っているだけあって、ツールそのものの登録、編集、削除、一覧表示もChatOpsで完結できるようになっています。

Official Toolsとして、プリセットで登録してあるので、作れるツールの確認を兼ねて一度触ってみてください。

How to use

アーキテクチャ

SlackHubを使うには、ご自身のAWS環境にSlackHubのセットアップが必要です。

とはいっても、構築はすべてAWS CDKで自動化していますので、大した手間はかかりません。スクリーンショット付きのセットアップマニュアルも作ってありますので、ご参考ください。

代表者の方が一度セットアップしてしまえば、そのあとの操作はすべてOfficial Toolsを使って、エンジニア1人1人が自身で実施できるようになります。

入手、ドキュメントはGitHubから

一度試してみたい、と思っていただけたら、まずはGitHubへ!

セットアップマニュアルのほかに、エンジニアひとりひとりに向けた「ツール実装ガイド」もご用意しています。

今後のロードマップとしては、

  • 公式ツールの拡充
  • ソースのリファクタリング(GO初学者なので、勉強しながら実装してます)

を実施予定です。Contributionも大歓迎ですので、もしご興味あればご参加ください!

最後までご覧いただきありがとうございました。
Jimon(@jimon_s)でした。

-SlackHub

関連記事



このカテゴリの他の記事

記事はありませんでした

CATEGORY
この記事のカテゴリ
SlackHubの親カテゴリ
自作アプリ内の他のカテゴリ
更新チェックはこちらから!