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

『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発

Avatar for GO Inc. dev GO Inc. dev
September 29, 2026

『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発

GO TechTalk #34 データサイエンティストの生成AI活用で発表した資料です。

■ YouTube
https://www.youtube.com/watch?v=7t9fIeBU2MQ
■ connpass
https://jtx.connpass.com/event/370877/

Avatar for GO Inc. dev

GO Inc. dev

September 29, 2026

More Decks by GO Inc. dev

Other Decks in Technology

Transcript

  1. サービスを支えるアルゴリズムサーバー ここ開発してます バックエンド API ユーザー アプリ アルゴリズム サーバー ▪ ▪

    ▪ コールバック 配車 プラットフォーム 情報取得 リアルタイムETA サービス (予約/運行管理) アルゴリズムサーバーの役割 ▪ 予約・運行管理 ▪ APIリクエスト駆動で検索・提案・ キャンセルなど ユーザーや運行の状態管理や配車依頼 ▪ 一定周期のバッチ処理(運行最適化) ▪ 経路データ、提供エリア関連のデータ生成 ▪ 車両配置最適化など ▪ 探車・配車依頼 ML予測 サービス 相乗りマッチング MySQL データ生成 BigQuery / S3 配給計画 役割が多岐にわたり複雑 & 「相乗り」という特殊なドメイン (※) ETA (Estimated Time of Arrival): 到着時間予測 © GO Inc. 6
  2. バイブコーディングの限界 バイブコーディングは「部分的に動くものを作る」ことはすごく得意 ◦◦機能追加して </> 開発者 AI 部分的な実装 一見動作する ただし、規模が大きくなると Context

    Drift チャット履歴が流 れ初期要件を忘却 他の機能との不整合 機能追加のたび に別の場所が壊れる 統一性のない開発 実装方針がバラバラ で一貫性が失われる 収拾がつかないことに。。。 © GO Inc. 10
  3. バイブコーディングの限界 『GOエコノミー』のアルゴリズムサーバーは非常に複雑 複雑なアルゴリズム 非同期処理・外部連携 • 経路生成 • 相乗りのマッチング • 運行最適化

    • 運行・ユーザー状態管理 • 機械学習・統計処理 etc. • 車両探索依頼 etc. このような複雑性を持つ開発では特に、 対話ベースの場当たり的な実装では全体の整合性を保てない © GO Inc. 11
  4. スペック駆動開発とは スペック駆動開発(SDD: Spec-Driven Development) ▪ コードを書き始める前に、「仕様(Spec)」を明文化 ▪ 仕様書を「唯一の正解 (Source of

    Truth)」として、AIエージェント に参照させながら実装させる ▪ AIエージェントがシステムの全体仕様を把握できる ▪ → 整合性が保たれた開発が可能 ▪ 仕様書という前提知識が残るため、会話の文脈が切れてもAIがコン テキストを保ったまま実装を進められる © GO Inc. 14
  5. SDDの基本サイクル 代表的なSDD開発ツール ▪ GitHub Spec Kit ▪ ▪ SDD実践のためのCLIツール (内部はエージェントスキル)

    ▪ SDDを前提にしたAI IDE Amazon Kiro GitHub Spec Kitの主要サイクル 1. Specify : 要件整理 → 成果物 spec.md 2. Plan : 技術設計 → 成果物 plan.md 3. Tasks : 実装タスクへの分解 → 成果物 tasks.md 4. Implement : AIエージェントが実装 5. converge : 仕様を満たしているか検査 © GO Inc. 15
  6. Claude Codeの自作SKILL群として導入 SDD導入する上での検討事項 ▪ Spec Kit や Kiro は有用な実践例 ▪

    ▪ 一方で、プロセスや成果物が固定化されやすい 導入初期は試行錯誤しながら運用を確立したい → Claude Codeの自作SKILL群でSDDプロセスを実装 SDDの思想を取り入れつつ、運用はチームに合わせて柔軟に © GO Inc. 16
  7. SKILL構成 ▪ /idea ▪ /specify ▪ ▪ ▪ .steering/YYYYMMDD-<name>/idea.mdを新規作成 「背景・目的・実現したいことを記載」(対話ベースで書かせてる)

    ▪ ▪ idea.mdを読み込み、仕様書を新規作成・更新 仕様書の種別に応じて、以下サブスキルを呼び分ける ▪ /uc-design, /entity-design, /algorithm-design, /grpc-log-spec ▪ 仕様書の種別と管理に関しては後述 変更箇所のユーザー承認を得たら、workplan.mdを作成(何を実装するか合意) ▪ /implement ▪ workplan.mdを読み込んで、どのタスクまとめて実装するかユーザーに確認してから実装 仕様書を唯一の正解とし、仕様書にない挙動は実装しない ▪ 内容に応じてAIが判断するが、大体全タスクまとめて実装することが多い デフォルトはTDD(テスト駆動)で実装。完了後はテスト結果を通知して承認を得る ▪ ▪ 実装内容と仕様書の整合性を確認し、ズレがあれば仕様書を修正 仕様書↔実装ファイルの相互参照を追記 ▪ ▪ ▪ /finalize © GO Inc. 17
  8. AIが迷わない仕様書体系 仕様書はAIエージェントが作成・更新 (/specifyで実行)する (人間ではなくAIが編集する → AIが迷わないような仕様書管理が大事) 「まず全体を理解してから詳細を見る」 導線を提供することが重要 ▪ 階層的に管理

    ▪ ▪ ▪ ▪ L1 : Project Context ▪ 全体ルール ▪ 機能の振る舞い ▪ 複雑なロジック、外部連携詳細 L2 : Use Case Spec L3 : Tech Detail 概要 → 詳細の順で理解可能なように下階層への参照を記載 © GO Inc. 21
  9. 仕様と実装の整合性を保つ仕組み /finalize フェーズ ▪ 実装が仕様書通りかを確認 (仕様書と実装の相互参照) GitHubでコードと一緒に管理 ▪ Pull Requestで仕様変更をレビュー

    ▪ コードと仕様の乖離を防ぐ [重要!] 組織として取り組む ▪ 『GOエコノミー』のアルゴリズム開発では、基本的な開発はSDDで 行うことが前提 (更新されなくなったら陳腐化する) ▪ 「普段の開発フロー」として定着させることで更新が継続 ▪ ▪ 仕様書の差分が増えるため、PRの説明文を整えるSKILLなども整備され た チームでのAIとの向き合い方のアップデートも重要 © GO Inc. 22
  10. まとめ ↓ ▪ 課題:複雑なドメインではバイブコーディングが機能しなかった ▪ スペック駆動開発と仕様書の管理により解決 (コードを書くことはほぼ無くなった) ▪ 仕様書は「人間が読むもの」→「AIエージェントが読んで動くもの」に。 それに合わせた管理方法が重要

    ▪ 仕様書がコードとセットで管理されることで、副次的な効果も ▪ 不具合調査、分析、仕様検索にも生成AIが活用可能に これからの働き方 AIエージェントと協業することを前提とした開発フローの設計が重要 © GO Inc. 31