Share
Embed
Transcript
31 slides
-
仕様駆動開発で開発スピードが爆速になった! その結果生まれたバックログ管理の課題と対策 KDDI DIGITAL GATE 兼 KDDIアジャイル開発センター 開発戦略本部開発9部 中島智弘 KAG AI
Week: Final Night Offline Meetup! -
今から話すこと Learning Outcome ・仕様駆動開発、AI駆動開発によって生まれたPMの負荷・課題が分かる ・課題に対してどう向き合うかを考えるきっかけになる(≠答えが分かる、対策が分かる) ・AI技術の進歩で開発プロセスは変わり続ける Target Audience ・PjM/PdM/SM/PO/POリードをしている人 ・スクラムというフレームワークの中で働いている人
・AI駆動開発になんらかの課題を抱えている人 今日話さないこと/やらないこと ・プロダクト価値との向き合い方、お金の生み出し方 ・あっと驚くAIのデモ、誰でもできるAIの使い方 -
課題に対してどう向き合ったか 自分でも週末cc-sddで個人開発やってみて理解する そもそもSpec-Driven Development(仕様駆動開発)とは - AIに「構造化された仕様書」を渡して開発を進める手法 - 仕様をMarkdownで記述し、リポジトリで管理 - AIが仕様を読み取り、設計・実装・テストを生成
代表的なツール・フレームワーク - Kiro(AWS)、SpecKit、cc-sdd など -
Vibe Codingと仕様駆動開発の違い Vibe Coding 仕様駆動開発 入力 プロンプト 曖昧で雰囲気でOK 構造化された仕様書 ブレ
大きい (意図とずれやすい) 小さい (仕様に沿った結果) 追跡性 困難 仕様書が残る 実装の追跡ができる -
requirements.mdの例 # Requirements Document ## Introduction ユーザーは現在地または任意の都市の天気情報をリアルタイムで確認でき、週間予報や気象アラートも受け取れるアプリケーションを構 築する。 ## Requirements
### Requirement 1: 現在の天気表示 **User Story:** ユーザーとして、現在の天気情報を確認したい。それにより外出の準備を適切に行える。 #### Acceptance Criteria 1. WHEN ユーザーがアプリを開いたとき THEN the system SHALL 現在の気温・湿度・風速を表示する 2. WHEN ユーザーが都市名で検索したとき THEN the system SHALL 該当都市の現在の天気情報を 2秒以内に返す 3. IF 位置情報サービスが利用できない場合 THEN the system SHALL 都市名の手動入力フォームを表示する 4. WHILE 天気データを取得中 the system SHALL ローディングインジケーターを表示する ### Requirement 2: 週間天気予報 **User Story:** ユーザーとして、7日間の天気予報を確認したい。それにより週間の予定を計画できる。 #### Acceptance Criteria 1. WHEN ユーザーが「週間予報」タブをクリックしたとき THEN the system SHALL 7日間の日別予報(最高気温・最低気温・天気アイコ 複数のRequirementからなる 1つのRequirement=1つのユーザーストーリーと複数の受入条件 -
スクラムのプロダクトバックログアイテムと requirements.md似てる? # Requirements Document ## Introduction 本仕様は、AWSにTerraformでデプロイする天気予報 Webアプリケーションを定義する。 ユーザーは現在地または任意の都市の天気情報をリアルタイムで確認でき、
週間予報や気象アラートも受け取れるアプリケーションを構築する。 ## Requirements ### Requirement 1: 現在の天気表示 **User Story:** ユーザーとして、現在の天気情報を確認したい。それにより外出の準備を適切に行える。 #### Acceptance Criteria 1. WHEN ユーザーがアプリを開いたとき THEN the system SHALL 現在の気温・湿度・風速を表示する 2. WHEN ユーザーが都市名で検索したとき THEN the system SHALL 該当都市の現在の天気情報を 2秒以内に返す 3. IF 位置情報サービスが利用できない場合 THEN the system SHALL 都市名の手動入力フォームを表示する 4. WHILE 天気データを取得中 the system SHALL ローディングインジケーターを表示する ### Requirement 2: 週間天気予報 **User Story:** ユーザーとして、7日間の天気予報を確認したい。それにより週間の予定を計画できる。 #### Acceptance Criteria 1. WHEN ユーザーが「週間予報」タブをクリックしたとき THEN the system SHALL 7日間の日別予報(最高気温・最低気温・天気アイコ ン・降水確率)を表示する 2. WHEN ユーザーが特定の日付をタップしたとき THEN the system SHALL その日の時間帯別詳細予報を展開表示する 3. IF 週間予報データの取得に失敗した場合 THEN the system SHALL キャッシュされた最新データを表示し、「最終更新 : [時刻]」を明示 する requirements.md ユーザーストーリー 「xx(ユーザー)としてxx(機能)したい。 xx(提供価値)だから。」 受入条件 ・xxができること。 ・xxができること。 ・xxができること。 プロダクトバックログアイテム 複数のRequirementからなる 1つのRequirement=1つのユーザー ストーリーと複数の受入条件 Requirementはバラバラにできない 1つのユーザーストーリーと 複数の受入条件 他のPBIと依存関係はない -
プロダクトバックログアイテムってどうしたらいいの? requrementsと同じ??いや、 Specに近い?? ユーザーストーリー 「xx(ユーザー)としてxx(機能)したい。 xx(提供価値)だから。」 受入条件 ・xxができること。 ・xxができること。 ・xxができること。
①Specを作る ②requirements.md (仕様書)ができる ③design.md (設計書)ができる ④tasks.md (タスクリスト)ができる ⑤プログラムコードが生まれる ⑥動作確認 ? プロダクトバックログアイテム -
(Kiroで採用している )「AI DLCは新しい用語と習慣を導入します」 スクラムじゃないらしい AI 駆動の高度に協調的なアプローチを反映してAI-DLC は新しい用語と習慣を導入します。従来の「スプリント」は「ボルト ( bolts )」に
置き換えられます。これは、週単位ではなく時間や日単位で測定される、より短く集中的な作業サイクルです。エピックは作業単位 ( Units of Work) に置き換えられます。 この用語の変更は、この手法がスピードと継続的デリバリーを重視していることを強調していま す。同様に、他の一般的なアジャイルの用語も AI 中心のワークフローに合わせて再定義され、この手法のソフトウェア開発における革新 的なアプローチをより適切に表現する用語体系が作られています。 https://aws.amazon.com/jp/blogs/news/ai-driven-development-life-cycle/ -
解決したい課題に立ち戻る 細かく刻んでゴールを目指す アイアンだけでうち続ける Before After 飛距離が飛ぶドライバーが出てきた 時間はかかる。でも 細かく刻む必要がなくなった わざわざ途中の目標でパター使う必要ない 今までの仕事の姿勢
・「宵越しのタスクは持たない」 ・プロダクトバックログは 1日に収まるサイズ ・常にリリース可能な状態を維持 ・どこで終わっても良いように細かく分割!! 飛距離が出るんだから、 直近の旗(仮説検証ポイント)に辿り着ければいい!!! -
チームで話して生まれた Working Agreement PodはDaily Sprintをベースとし、「宵越しのタスクを持たない」ことを大切にしてきた。 しかし、AIコーディングの普及により状況が変わった。 • 短期での実装速度は上がった一方、人間が期待する結果になるよう修正するコストが大きくなっている • 1日単位のスプリントを回そうとすると、検証する必要がないのに顧客説明のためにバックログを細分化し、
不要な修正作業が発生するという不整合が起きた • 顧客の期待値醸成は大切だが、それよりも「検証したい仮説を検証するためのアクション」に注力すべきである 私たちの選択 • リリース可能な状態は 1週間単位 を目指す • 1週間おきに到達ゴールを TrelloのEpicとしてPOLが記載する。チームはその達成にコミットする • 到達ゴールにはシンプルな検証に必要な受け入れ条件を記載する • AIと協働する中でより良い方法が見つかった場合は、受け入れ条件を POLと一緒に見直す • 手段は柔軟に、目的(仮説検証)は見失わない Daily Sprintを辞めてWeekly Goalだけ計画を立てることにした 一個一個のバックログの正確性より検証したい仮説に集中できるようになった PMは顧客やステークホルダーと対話する時間が増えた -
requirements.mdはEARSという記法で記されている EARS(Easy Approach to Requirements Syntax) ・Rolls-RoyceのエンジニアAlistair Mavinが2009年に提案 ・要件記述のための構文テンプレート ・自然言語の曖昧さを排除
・航空宇宙・自動車業界を中心に広く採用 EARSは、人間が人間に誤解なく伝える為に作られたフォーマット。 アジャイルソフトウェア開発宣言「プロセスやツールよりも個人と対話を」 人間はコンテキストを持つ。だから、人間とは対話すればよかった。 AIはコンテキストを持っていない状態で始まる。(2025年現在) だから、AIと対話する為には誤解なく伝えられるEARSが向いていた? -
今後は仕様駆動開発一択なのか? 今後も仕様駆動開発一択? AIが人間並にもっともっとコンテキストを保持するようになれば、 AIとの「対話」だけで相互理解できる日がくるのでは またDaily Sprintに戻る日がくる気がしている いや、もっと早くなるかも (個人の意見) EARSは、人間が人間に誤解なく伝える為に作られたフォーマット アジャイルソフトウェア開発宣言「プロセスやツールよりも個人と対話を」 人間はコンテキストを持つ。
だから、人間とは対話すればよかった。 AIはコンテキストを持っていない状態で始まる。(2025年現在) だから、AIと対話する為には誤解なく伝えられるEARSが向いていた? -
まとめ ・AI技術の変化で開発プロセスは変わった ・変化に対応するためにDaily Sprintを採用していた ・仕様駆動開発で開発スピードの飛距離が伸び、1日で区切りにくくなった ・自分で仕様駆動開発触った ・EARSというフォーマットに触れた ・スクラムとAI DLCは別のフレームワーク ・原点に帰って課題を整理した
・Daily Sprintを辞める決断をした ・今の所いい感じ?でもこれが正しいかどうかはまだ分からない ・皆さんの環境ではどうしてます?懇親会で教えてください!