記事を書いた人
こんにちは!
株式会社マーズフラッグの城倉です。
現在、SREを担当しております。
社内での業務に取り組みながら、知識の拡充を目指して日々成長を追求しています。
この記事が皆さんのKendra活用の一歩になれば幸いです!
記事の構成
はじめに
Slackで過去のやり取りを探すとき、こんな経験ありませんか?
- キーワードを変えて何度も検索
- 複数のチャンネルを行ったり来たり
- 結局見つからず諦める
AWS Kendraを使えば、「あのとき話してた〇〇の件」みたいな曖昧な記憶からでも、関連する会話を見つけられます。
この記事では、KendraとSlackを連携させる手順を解説します。
読んでほしい人
- Slackの情報検索に時間がかかっている人
- AWS Kendraに興味がある人
必要なもの
- AWSアカウント
- Slack workspaceの管理者権限
AWS Kendraについて
機械学習を使った検索サービスです。
特徴
- 質問文での検索に対応
- 文脈を理解して関連情報を提示
- 検索結果を重要度順に並べる
Slack連携のメリット
- 過去の議論をまとめて検索
- チャンネルをまたいだ情報収集
- 「誰がいつ言ったか」まで記録
まずは全体像を理解しよう!
今回やることは、シンプルに3ステップ:
- Slack側の準備:アプリを作成してトークンを取得
- AWS側の準備:Kendraインデックスを作成
- 接続と検索:SlackとKendraを繋いで検索
手順1:Slack側の準備
Slackアプリを作成して、Kendraからアクセスできるようにします。
アプリの新規作成
https://api.slack.com/apps を開いて:
- 「Create New App」をクリック
- 「From scratch」を選ぶ
- アプリ名と対象workspaceを入力
- 「Create App」で作成
権限の付与
「OAuth & Permissions」メニューから「Scopes [Bot Token Scopes]」へ。
以下の権限を追加します:
基本となる権限
-
channels:historychannels:read -
groups:historygroups:read -
users:readusers:read.emailusers.profile:read -
team:readusergroups:read
追加で必要な権限
-
im:historyim:read -
mpim:historympim:read -
emoji:readfiles:read
トークンの発行
- 「OAuth & Permissions」メニューから「OAuth Tokens」へ移動
- 「Install to Workspace」を実行
- 権限確認画面で承認
- 「Bot User OAuth Token」をコピー
メモ:xoxb-から始まる文字列です。後で使うので保存しておきましょう。
チャンネルへの追加
作成したアプリは、追加したチャンネルのみ読み取れます。
やり方
- チャンネル内で
@アプリ名とメンション - 「追加しますか?」と聞かれるので承認
これで対象チャンネルの情報が取得可能になります。
手順2:Kendra側の準備
インデックスを作る
Kendraコンソールを開いて:
- 「Create an index」を選択
- 名前を入力(例:slack-index)
- エディションは「Developer edition」
- IAMロールは新規作成
- 作成を実行
待ち時間:15分ほどかかります。ステータスが「Active」になるまで待ちましょう。
データソースを追加
インデックスができたら:
- 「Data sources」タブを開く
- 「Add data source」をクリック
- 一覧から「Slack」を探して選択
接続情報の入力
名前と言語
- データソース名を決める
- 言語は「Japanese」
Workspace情報
- Team ID:SlackのURLから確認できます
https://app.slack.com/client/T12345678/... この T12345678 の部分
トークンの保存
- 「Create and add new secret」を押す
- Secret nameを入力
- Valueに先ほどのトークンを設定
{
"token": "xoxb-..."
}
IAMロール
- 新規作成を選択
- 名前を付けて次へ
同期の設定
取得対象
- Public channelsにチェック
- 特定チャンネルを指定するか全体か選択
オプション
- ボットのメッセージも含めるか
- アーカイブ済みも含めるか
スケジュール
- 最初は「Run on demand」(手動)がおすすめ
- 後から定期実行に変更可能
同期範囲
- どこまで過去に遡るか指定
設定を確認して「Add data source」で完了。
手順3:同期と検索
最初の同期
データソース一覧で「Sync now」を実行。
進捗が見られるので、完了するまで待ちます(数分程度)。
「Documents」の数字が増えていれば成功です。
検索を試す
- インデックス画面で「Search indexed content」
- 言語を「Japanese」に設定
- 検索ボックスに質問を入力
試してみよう
キーワードより文章で聞いた方が精度が上がります:
良い例:
「先月の障害対応でどんな対策を取った?」
「新機能のリリース予定はいつ?」
「AWSコストの話題が出たのはいつ?」
あまり良くない例:
「障害」
「AWS」
結果には投稿者やチャンネル、日時も表示されます。
おわりに
これでSlackの過去ログを自然言語で検索できるようになりました。
できるようになったこと
- 曖昧な記憶から情報を探せる
- 複数チャンネルをまとめて検索
- 重要度順に結果が並ぶ
発展させるなら
- PrivateチャンネルやDMも対象にする
- Google DriveやNotionも連携
- 独自の検索UIを作る
Slackは情報の宝庫です。Kendraで掘り起こしてみてください。