1. HOME
  2. ブログ
  3. 開発ノート
  4. ChatOpsで実現する社内開発フロー自動化プラットフォーム構築ノート
BLOG

ブログ

開発ノート

ChatOpsで実現する社内開発フロー自動化プラットフォーム構築ノート

プロジェクト背景

近年、アジャイル開発や継続的デリバリを加速するために、SlackやTeamsなどのチャットツールを活用したChatOpsが注目を集めています。本プロジェクトでは、社内の開発フロー—GitHubへのプルリクエスト作成、CI/CDステータス通知、JIRAチケット連携、デプロイ承認など—をすべてSlack上のBotコマンドで完結させる自動化基盤を構築しました。これにより、開発者はチャットから直接ワークフローをトリガーでき、コンテキストスイッチを減らして生産性を向上させることを目的としています。

プロジェクト開始時点での課題は、Pull Request 発行後のレビュー依頼やマージ後のデプロイ指示が散在し、手順の属人化・見落としが頻発していたことです。標準化された手順をChatBot化し、誰でも同じコマンドで同一結果を得られる基盤を整備することで、業務システム開発のスループットを高め、運用コストを削減します。

要件定義と技術選定

初期要件として「プルリク発行時にJIRAチケットIDを自動紐付け」「CIビルド結果をSlackで可視化」「デプロイ承認ワークフローをリッチボタンで実行」「リリースノートを自動生成してチャンネルへ投稿」を設定。これらを実現するために、BotフレームワークにはBolt for JavaScript(Slack公式SDK)を、CI/CDはGitHub Actions、JIRA連携はAtlassian REST API、リリースノート生成にはSemantic Releaseを選定しました。

技術設計では、各Botコマンドは内部でGitHub API/JIRA APIを呼び出し、結果をSlackブロックキット形式で返却。認証はGitHub AppとOAuth連携で行い、Botの権限スコープを限定。リリースノートはPRタイトルとマージコミットメッセージを解析して生成、Semantic Versioningに従ったタグ付けを自動化します。

システムアーキテクチャ

プラットフォームは三層構造です。

  1. Slack Bot 層:Bolt アプリケーションが各種 slash コマンドとイベントを受信

  2. API 層:Node.js + Express で Bot のリクエストを受け処理し、GitHub/JIRA/GitLab などの外部 API を呼び出し

  3. CI/CD 層:GitHub Actions でビルド・テスト・リリース処理を自動実行

デプロイは Serverless Framework を利用し、AWS Lambda + API Gateway 上に Bot API をホスト。Lambda のコールドスタート問題を抑えるため、Provisioned Concurrency を設定し、Slack からのリクエストに常時即応。Secrets 管理は AWS Secrets Manager で行い、Bot トークンや OAuth クライアントシークレットを安全に運用します。

また、Bot 層にはリアルタイムでのユーザー入力を検証するミドルウェアを実装し、不正コマンドを弾くことでセキュリティ強化を図りました。

開発フロー

プロジェクト管理はアジャイルスクラムで実施。

  • Sprint 0:Bot 基盤構築と AWS Lambda デプロイ検証

  • Sprint 1:GitHub Actions 連携コマンド(/pr-create, /pr-merge)開発

  • Sprint 2:JIRA チケット自動紐付けとステータス更新機能開発

  • Sprint 3:CI 結果通知とリリースノート生成コマンド実装

  • Sprint 4:UX 改善(ボタン承認フロー、モーダルフォーム)とテスト自動化

各スプリント末に Slack 上で社内ユーザーを対象としたデモを行い、フィードバックを反映。JIRA イシューと GitHub PR をクロスリンクし、進捗可視化を徹底しました。コードは monorepo(Nx Workspace)で管理し、Bot コードと CI/CD 連携設定を一元化。各コマンドごとに E2E テスト(Playwright)を実行し、品質保証を担保しました。

テスト戦略と品質保証

ChatOps基盤の品質を担保するためには、BotレイヤーからCI/CDワークフロー連携まで一貫したテスト戦略が必要です。まずユニットテストでは、Bolt for JavaScript のコマンドハンドラやミドルウェア処理を Jest で網羅的に検証し、GitHub API 呼び出しのモック化には nock を利用します。各コマンドが期待されるペイロードを正しくパースし、適切なブロックキットレスポンスを返すかを自動化し、カバレッジを 90%以上に維持します。

次に統合テストでは、Serverless Offline プラグインを使って Lambda エミュレーション環境をローカルに構築し、Bot-API 層と GitHub/JIRA/API Gateway 連携を End-to-End で検証。Playwright を用いて実際に Slack ワークスペースに接続し、スラッシュコマンド実行→API 呼び出し→Bot 応答という一連のフローを自動化。加えて、GitHub Actions のジョブに Postman/Newman を組み込み、JIRA チケットのステータス更新やコメント投稿が想定どおり行われることを Contract Test として担保します。

E2E テストでは、PR マージ後のリリースノート自動生成、Canary リリースボタンの有効化/無効化、ロールバックシナリオのシミュレーションなど、実運用に近いシナリオを k6 で負荷試験。SLO として「Bot 応答 95パーセンタイル 500ms 以下」「契約テスト失敗率 0.1% 未満」を定義し、夜間バッチで自動検証を実行することで、開発フロー全体の品質維持を図ります。

モニタリングとアラート設計

ChatOps プラットフォーム稼働後は可観測性を強化し、異常を早期検出できる仕組みが必須です。Lambda 関数には OpenTelemetry Lambda Instrumentation を組み込み、Slack リクエスト受信から GitHub/JIRA API 応答までの分散トレースを Jaeger に収集。API レイテンシやエラー率、Cold Start 発生頻度などを Prometheus Exporter 経由でメトリクスとして蓄積します。

Grafana ダッシュボードでは「平均レスポンスタイム」「エラー率」「API 呼び出しごとのレート制限ヒット数」「Canary 環境でのユーザー承認率」をリアルタイム表示し、Alertmanager で以下の条件を監視・通知します。

  • レスポンスタイム 95パーセンタイル 1,000ms 超過が 5 分以上継続

  • Slack チェネルへの通知失敗率 1% 超過

  • Canary 承認率 80% 未満
    通知は Slack #ops チャンネルおよび PagerDuty へ即時送信し、オンコールチームが迅速に状況把握・対応できるフローを構築しています。

セキュリティ対策

社内向け自動化基盤であるからこそ、Bot と連携システム間の認証・認可を厳格化します。Slack App トークンは OAuth 2.0 の Bot Token スコープを最小限に限定し、Event Subscription や Slash Commands の検証には署名検証(X-Slack-Signature)を実装。GitHub App は最小権限のリポジトリスコープのみを付与し、JIRA 連携は OAuth toke を定期的にローテーションします。

API Gateway と Lambda には WAF ルールを適用し、不正リクエストやブルートフォース攻撃をブロック。重要データの送受信はすべて TLS1.2 以上で暗号化し、AWS Secrets Manager や Parameter Store のアクセスポリシーを厳格化して Bot トークンやシークレットが漏洩しない運用を徹底しています。

パフォーマンス最適化

高頻度で Bot コマンドが実行されることを想定し、レスポンス性能を最適化します。Lambda のコールドスタート対策として Provisioned Concurrency を設定し、初回リクエストから常時 100ms 以下の起動時間を実現。また、API 層の Node.js プロセスでは HTTP Keep-Alive とコネクションプールを有効化し、GitHub/JIRA API 呼び出し時の TCP 握手コストを削減します。

さらに、頻出リクエスト(リリースノート取得やチケットステータス確認)は Redis キャッシュに 1 分間キャッシュし、バックエンド API 呼び出し回数を削減。Bot レイヤーではレスポンステンプレートをあらかじめキャッシュしておき、Slack への応答生成を高速化しています。

運用保守とRunbook整備

運用フェーズでは SRE チームが 24×7 オンコール体制を構築。Confluence 上に Runbook を整備し、主要インシデントシナリオごとに手順を明記しました。例として:

  • Lambda エラー連発:CloudWatch Logs Insights でエラーパターンを検索 → 該当バージョンへロールバック

  • GitHub API Rate Limit 超過:Redis キャッシュ TTL を延長 → ログインターバルを調整

  • Canary 環境承認ボタンが動作しない:Bolt ミドルウェアの署名検証設定を再デプロイ → Slack App 設定再同期

四半期ごとに Chaos Engineering 演習を実施し、Runbook の有効性とチームの対応力を検証。Blameless Postmortem を通じて改善タスクを Jira に自動生成し、Runbook を継続的にアップデートしています。

コストシミュレーションと予算管理

本プラットフォーム導入にかかる初期費用は以下を想定します。

  • 要件定義・PoC:300万円

  • Bot フレームワーク実装:400万円

  • GitHub/JIRA連携コマンド開発:300万円

  • CI/CD パイプライン構築:200万円

  • テスト自動化:200万円

  • モニタリング・Runbook 整備:200万円
    合計:約1,600万円

ランニングコスト(AWS Lambda/API Gateway/Redis)は月額約15万~25万円、Slack/GitHub/JIRA の利用料を含め年間約300万~400万円と試算。AWS Budgets と Slack 通知を連携し、予算超過が 80% を超えたタイミングでアラート発報する仕組みを構築しています。

システム 開発会社 選び方 予算 費用 相場 発注

ChatOps 自動化プラットフォームの受託先を選定する際は、以下の観点で要件定義書・WBS を提示し、見積もり比較を行いましょう。

  1. ChatOps/Slack Bot 開発実績:Bolt/Serverless 環境導入事例

  2. CI/CD 自動化経験:GitHub Actions/Semantic Release を活用した事例

  3. 外部 API 連携力:GitHub App/Atlassian API の実装ノウハウ

  4. テスト自動化:Playwright/k6 を用いた E2E/負荷試験経験

  5. モニタリング&運用:OpenTelemetry/Prometheus/Grafana 導入実績
    相場感は、小規模(800万~1,200万円)、中規模(1,400万~1,800万円)、大規模(2,000万~2,500万円)を目安に、固定価格型・時間単価型双方で条件を比較し、コスト削減と費用対効果を最大化できるパートナーを選定してください。

お問合せ

不明点やお見積りの依頼などお気軽にください。




問い合わせを行う

関連記事