Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrai...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7

SRE Next 2026の登壇資料です

Avatar for TomoyaKitaura

TomoyaKitaura

July 10, 2026

More Decks by TomoyaKitaura

Other Decks in Programming

Transcript

  1. 自己紹介 北浦 智也(@kitta0108) KDDIアジャイル開発センター リードSRE 勉強会の運営 JAWS-UG SRE支部 JAWS-UG コンテナ支部

    NRUG SRE支部 Observability Conf Tokyo 著書 俺たちのSREとNew Relic KAG Tech Book Vol1 SRE Magazine(物理版) 2
  2. 7つの実践 ― 全体像 # 実践 役割 1 仕様駆動開発(OpenSpec) AIへのインプット品質向上 2

    受け入れ試験 デプロイ後の仕様準拠確認 3 リグレッションテスト 既存APIの後方互換性 4 k6 + ECS Fargate性能試験 非機能要件の検証 5 JIT-PAM 本番アクセスの時限制御 6 ボーイスカウトルール 触れたコードを来たときより良くして返す 7 モブプログラミングとレビュー チーム全員での理解と意思決定 ※ バックエンドAPIサービスの開発で培った実践です ※ 今日は土台となる 第1章(仕様駆動開発)を中心に お話しします 5
  3. 仕様駆動開発 ― 認知を実装より先に固定する 本来の開発は 認知(考える)→ 実装(書く) の順 AI時代はこれが 実装 →

    認知 に逆転しがち (AIが先に書き、人間が後から理解する) 仕様駆動開発(Spec-Driven Development)は、 増幅の元となる認知を 実装より先に固定する ためのプロセス 8
  4. 仕様駆動開発のフロー ― 「認知が先」の構造を作る 曖昧で抽象度の高い要件 ↓ 優先度の高いものを【人間】が決める 仕様の作成 ―― AIの力を借りながら【人間】が作る ↓

    実装 ―――― 【AI】が実装する ↓ レビュー ――― 【人間】がレビューし、【AI】もレビューする ↓ テスト ―――― 【AI】が各種テストを実行し、【人間】が監督する ↓ デリバリー レビューの進め方については 第7章 で触れます 9
  5. OpenSpecとは ― 「変更」と「現行仕様」を分けて管理 人間が判断した意図を、AIに蒸留させたかった → それを Specというドキュメントとして残す OpenSpec を採用 openspec/

    ├── changes/ ← 進行中の変更提案(proposal / design / tasks / spec差分) └── specs/ ← 現行仕様。変更のアーカイブ時に差分が反映され、育っていく 過去の判断に更新があれば specs/ も追従する → 常に現実と一致した 「生きたドキュメント」 が育つ https://github.com/Fission-AI/openspec 10
  6. 仕様の作成 ― AIとの壁打ちで要件の解像度を上げる You: ユーザー新規登録機能を作りたい AI : 認証方式はどうしますか? [メール+パスワード /

    OAuth / パスキー / 自由入力] You: メール+パスワードで。後でOAuthも足せる構造に AI : 想定流量と許容レイテンシは? [書き込み系APIと同じ 10tps・p95 2秒 / 参照系APIと同じ 2,000tps・p95 100ms / 自由入力] You: 書き込み系APIと同じで AI : では要件を整理します → 要件1: ユーザーを新規登録する... AIが 一度に1つずつ質問 し、目的・制約・成功基準を引き出す 揃ってから仕様を生成する ─ HOW(実装方法)はこの段階では書かない ※ superpowers:brainstorming から着想を得たスキルをOpenSpecに導入して実現 https://github.com/obra/superpowers 11
  7. ガードレールは実行計画のなかで作り上げる 実行計画は単なるコーディング作業のリストではなく、 開発から本番リリースまでの工程を定義 1. 受入試験項目作成(開発開始前) 2. ローカル開発(機能実装 + 監視・アラート設定) 3.

    DEV環境デプロイ・各種テストの作成 4. STG環境デプロイ・受入テスト・リグレッションテスト 5. STG環境での正常性確認・性能試験 6. 人間が読む用のドキュメント更新 7. PRD環境デプロイ準備 8. PRD環境デプロイ・正常性確認 実行計画そのものが、テストや監視を飛ばした近道を防ぐ ガードレール さらにその工程の中で、受入試験・各種テスト・監視という ガードレールの実装 も進んでいく 12
  8. TypeScriptで自動化する試験 受け入れ試験は、可能な範囲で TypeScriptのテストコード として実装 正常系 ― 応答・ログ・データの三点で「正常」を定義 APIを叩くと 期待どおりのレスポンス が返る(HTTP

    200/201、仕様への準拠) 正常系のアプリケーションログ が出力される DBに 期待値どおりのレコード が追加される リクエストで再現できる異常系 も自動化 認証エラー(401) 、バリデーションエラー(400)など 15
  9. 受け入れ試験実行用のSkillを自前実装 以前は、マニュアル操作の試験は 人間の手で 行っていた 実行が単調になり、AIに任せられる領域まで仕上がった と判断して実行をAIに移譲 Claude Codeの /goal (ゴールを与えると達成まで自律的に動く機能)を

    上手に使ってくれる、受け入れ試験実行用のSkill を自前で実装 試験項目をゴールとして与えると、AIが環境操作・実行・確認まで進める 実行結果は 人間が読むためのMarkdown として出力される 実行したコマンド・そのレスポンス・結果の判定などが記述されたレポート 人間はそのレポートを確認して判断する 17
  10. 受け入れ試験がそのままリグレッションテストになる 機能Aの受け入れ試験 → 機能B開発時の回帰検証に 機能が増えるたびにテストコードが積み重なり、テストの守備範囲が自然と広がっていく { "scripts": { "regression:dev": "npm-run-all

    --parallel test:acceptance:*:dev", "regression:stg": "run-s test:acceptance:*:stg" } } DEVは並列実行 ― 開発中は素早いフィードバックを優先 (各試験が異なるリソースを対象なので干渉しない) STGは直列実行 ― CIで回すので時間をかけてよい 並列だとどこで失敗したか分かりづらくなるため、失敗箇所の特定しやすさ を優先 Drizzleでテストデータを 冪等に自動投入 19
  11. CI/CDパイプラインへの組み込み STGデプロイ完了後、GitHub Actionsからリグレッションテストを自動実行 name: Regression Test (STG) on: workflow_run: workflows:

    ["Deploy to STG"] types: [completed] jobs: regression: if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - run: pnpm install --frozen-lockfile - run: pnpm run regression:stg env: API_KEY: ${{ secrets.STG_API_KEY }} BASE_URL: ${{ secrets.STG_BASE_URL }} 20
  12. 非機能要件を「テスト可能」にする 「2,000TPSを5分間、p95で100ms以内で応答する」は、 検証する手段がなければ単なる願望 export const options = { scenarios: {

    users_get: { executor: 'constant-arrival-rate', rate: 2000, // 2,000リクエスト/秒 timeUnit: '1s', duration: '5m', preAllocatedVUs: 200, maxVUs: 400, }, }, thresholds: { 'http_req_duration{scenario:users_get}': ['p(95)<100'], 'http_req_failed{scenario:users_get}': ['rate<0.001'], }, }; Requirementsの性能要件を k6の閾値としてコード化 23
  13. ECS Fargate実行基盤とGitHub Actionsトリガー ローカルマシンからの実行 → ネットワーク環境で結果がばらつく ECS Fargate上のk6コンテナ → 再現性のある実行環境

    API レスポンスタイム閾値 エラーレート閾値 想定TPS 書き込み系API p95 < 2,000ms < 1% 10 非同期処理API p95 < 500ms < 0.1% 100 参照系API p95 < 100ms < 0.1% 2,000 GitHub Actions workflow_dispatch で ワンクリック実行 シナリオ・実行時間・TPSをUI上で選択 チームの誰でも性能試験を実行できる状態を作る 24
  14. 25

  15. GitHub Actions + IAM Trust Policyによる時限制御 JIT-PAM = 「必要なときに、必要な時間だけ」本番アクセスを許可 AWSの

    IAM Trust Policy に有効期限付きの条件を動的に追加する仕組み 開発者: workflow_dispatchでアクセス要求(15〜720分) ↓ GitHub Actions: Environment Protection Rulesで管理者承認を要求 ↓ 管理者: 承認 or 却下 ↓ 承認された場合のみ Trust Policy更新 → 時限的アクセス開始 28
  16. 自動失効する仕組み: DateLessThan条件 { "Condition": { "DateLessThan": { "aws:CurrentTime": "2026-03-20T18:00:00Z" },

    "Bool": { "aws:MultiFactorAuthPresent": "true" } } } DateLessThan により、指定時刻を過ぎると 自動的にアクセス拒否 手動での取り消し不要 → 取り消し忘れリスクを排除 MFA必須条件で認証強度も確保 29
  17. ガードレールが増えるほど、AIに任せられる範囲が広がる 仕様 でAIのインプットを整え テスト でアウトプットを検証し JIT-PAM で安全な境界を作る モブプログラミング で判断をチーム全員で行う ガードレール

    効果 仕様駆動開発 AIに正しい方向を示す 受け入れ試験 + リグレッションテスト AIの出力を多層的に検証 k6性能試験基盤 非機能要件を「願望」から「検証済み」に JIT-PAM AIの力を安全に引き出す境界を作る ボーイスカウトルール 触れたコードを来たときより良くして返す モブプログラミングとレビュー 理解と意思決定にチーム全員で集中 39
  18. 42