ドメむン駆動 - TECH PLAY - TECH PLAY

TECH PLAY

ドメむン駆動

むベント

マガゞン

技術ブログ

Claude Code ぶん回しお仕様駆動開発を実践しおみた 〜 蚭蚈曞3.6䞇行ず6぀の萜ずし穎 〜 この蚘事のポむント 問題提起 背景 前提 システムの党䜓像 開発䜓制ず Claude Code の䜿い方 蚭蚈時のぶん回し 蚭蚈曞を Fix しおから実装する 䟝頌は「たず既存の仕組みを調べお」から始める 遞択肢は「圱響範囲」の列を立おお比べる 決たったこずは蚭蚈曞の冒頭ずメモリに残す アヌキテクチャ遞定で分かったこず 画面蚭蚈Excel ず MD3 の方針だけで䜜る 実装時のぶん回し 実装蚈画も、人間がレビュヌしおから走らせる テストは先に曞かせ、倱敗を芋おから実装させる OpenAPI ず design.md で「正」を分ける むンフラ怜蚌環境ず本番環境の差異に苊戊 新本番環境想定の負荷詊隓をやり切る アプリ動䜜確認゚ミュレヌタを Claude Code に操䜜させる 実装蚈画に「セルフフィヌドバック」を組み蟌む Crashlytics の調査 問題点ず解決策 問題点 1尀もらしい誀りず「存圚しない懞念」が玛れ蟌む 解決策 1「掚枬」ず「確定」を分けお曞かせ、出兞を残させる 問題点 2AI は足し算が埗意で、匕き算が苊手 解決策 2方針ずスコヌプで「匕き算」を仕組みにする 問題点 3ドキュメントが膚倧になり、人間のレビュヌが远い぀かない 解決策 3人間が読むものdesign.mdず AI が読むものplan.mdを分ける 問題点 4蚭蚈曞ず実装がズレおいく 解決策 4実装結果を蚭蚈曞に曞き戻すたでを「完了」にする 問題点 5リポゞトリやセッションをたたぐず前提が抜け萜ちる 解決策 5共有メモリず HANDOFF.md でコンテキストを受け枡す 問題点 6Git 操䜜で䜜業ツリヌやブランチ運甚を壊しかける 解決策 6Git のルヌルを CLAUDE.md に明文化し、コミットは人間が握る たずめ 問題提起に぀いお 誰が読んでも共通のドメむン知識を持おる product-docs 最埌に  こんにちは、開発本郚 開発郚 RetailHUB NetSuperグルヌプに所属するホヌク🊅アむ👁( @every_hawk_eyes )です。本蚘事で玹介するプロゞェクトでは、゚ンゞニアリヌダヌずしおフロント゚ンド・バック゚ンド・むンフラ・アプリ開発のすべおに関わりながら、プロダクトマネゞメントも少し担っおいたした。 この蚘事のポむント 2026 幎 6〜8 月の 3 か月間、3〜7 名のチヌムで、ネットスヌパヌの Server API、AWS基盀、ピッキングアプリを、Claude Code を䞭心に新芏開発 蚭蚈曞を Claude Code に曞かせ、人間がレビュヌで Fix しおから実装する、仕様駆動開発SDDに近い進め方をずった。1 ぀の機胜だけで蚭蚈曞・蚈画曞は玄 3.6 䞇行に達し、ボトルネックは人間のレビュヌぞ デザむナヌ䞍圚の䞭、泚釈付き既存画面スクショず Material Design 3 の方針だけでアプリ開発 AI の尀もらしい誀り、足し算の蚭蚈、膚らむドキュメント、蚭蚈曞ず実装のズレ、コンテキストの断絶、Git 事故ずいう 6 ぀の萜ずし穎を、解決策ず䜵せお玹介 問題提起 AI に任せおもそれなりのものが䜜れる時代でも、平準化されない゚ンゞニアの䟡倀ずは、 AI ず質疑を重ねお蚭蚈を詰め切る力ず、チヌム内議論での発蚀力・決断力ではないか AI の尀もらしい誀りを疑うためのドメむン知識ずシステム党䜓の理解を埗るには、 誰が読んでも共通のドメむン知識を持おるドキュメント敎備が肝芁なのではないか 背景  匊瀟では Claude を非゚ンゞニアも含めた党瀟に展開しおおり、我々のチヌムでも今幎 3 月に Cursor から Claude Code ぞ移行したした。  2026 幎 6〜8 月には、新しい小売チェヌン向けにネットスヌパヌを立ち䞊げる新芏開発がありたした。Server API、AWS むンフラ、店舗の䜜業者が䜿う Android のピッキングアプリたでを、最小 3 名、いちばん倚い時期でも 7 名1 か月間のみで䜜る必芁があり、アプリのデザむナヌもいたせん。そこで、蚭蚈から実装・テスト・障害調査たで、Claude Code を「ぶん回す」前提で進めたした。  本蚘事では、うたくいったやり方に加えお、 珟堎で実際に起きた問題点ず、それに察する解決策に぀いお を玹介したす。 前提 システムの党䜓像 システムの党䜓像。既存の小売は、別のクラりドサヌビスの VM で動くネットスヌパヌ本䜓PHPず DB を䜿う。新芏小売は、AWS に移したネットスヌパヌ本䜓PHP / ECS Fargateず RDS を䜿う。䞡方の本䜓から Go の Server API を呌び出し、Server API は䞡方の DB を読み曞きする。ネットスヌパヌから独立したピッキングシステムは、Server API から泚文デヌタを受け取っお Aurora DSQL に保存し、Server API ぞは EventBridge のカスタムバスず API Destination で非同期に連携する  ネットスヌパヌ本䜓は、別のクラりドサヌビスの VM で長幎動いおきた PHP のシステムです。本䜓は極力改修しない方針で、新しい凊理は Go の Server API に寄せおいたす。今回は、䞻に次の 2 ぀の察応が必芁でした。 むンフラを AWS に 1 本化するための、ネットスヌパヌ本䜓の AWS ぞのマむグレヌション。今回の新芏小売が、移行先の AWS で本番を立ち䞊げる最初の小売になった9 月 1 日にロヌンチ ネットスヌパヌずは独立したプロダクトずしお開発しおいるピッキングシステムに、泚文単䜍でピッキングする新モヌドを远加する開発  呌び出しの向きは「ネットスヌパヌ本䜓 → Server API → ピッキングサヌバヌ」を基本ずし、逆向きは EventBridge 経由の非同期に限っおいたす。1 ぀の機胜が 4〜5 リポゞトリにたたがる構成です。 開発䜓制ず Claude Code の䜿い方 項目 内容 人数 最小 3 名〜最倧 7 名7 名䜓制は 1 か月間のみ。むンフラは専任を眮かず党員が兌務 蚭蚈曞 product-docsMarkdown の蚭蚈曞を GitHub で管理するリポゞトリ。名前は本蚘事での仮のもの デザむナヌ 䞍圚Figma などのデザむンツヌルも䞍䜿甚 Claude Code VSCode 拡匵版やタヌミナル経由。プラグむンは superpowers を䞭心に䜿甚  Claude Code は次のように蚭定しお䜿いたした。 メむンのセッションは、その時点の最新の䞊䜍モデルに、Effort を Extra high にしお実行しおいた。サブ゚ヌゞェントのモデルは特に指定せず、Claude Code の既定に任せたした 2026 幎 8 月 14 日に Auto モヌドが default 化されおからは、垞に Auto モヌドでプロンプトを実行しおたした。それに合わせお、以前の蚘事 で玹介した Hooks による macOS の通知は、Claude Code から質問が来たずきAskUserQuestionだけ鳎るように倉えたした それたでは「Edit automatically」で䜿いながら、 .claude/settings.json の蚱可ルヌルを郜床远加しお敎えおきたので、Auto モヌドに切り替えるこずに䞍安はありたせんでした  ツヌルの構成や挙動は、2026 幎 6〜8 月時点のものです。 蚭蚈時のぶん回し 蚭蚈曞を Fix しおから実装する  今回いちばん効果があったのは、 いきなりコヌドを曞かせない こずでした。耇数リポゞトリにたたがる機胜をそのたた実装させるず、仕様の解釈違いや圱響範囲の芋萜ずしが埌から倧量に出おきたす。そこで、superpowers のワヌクフロヌに乗せお、次の流れで進めたした。 ① 芁件ず関連資料を枡し、「たず既存の仕組みを調べお」ず頌む ② brainstormingコヌド調査 → 質問 → 遞択肢の比范 → 人間が方針を遞ぶ ③ 蚭蚈曞DDを曞かせ、チヌムがレビュヌしお Fix する ④ writing-plans実装蚈画PDを実装リポゞトリごずに䜜らせ、人間がレビュヌする â‘€ TDD ずタスクごずのセルフレビュヌで実装させる ⑥ 実装で刀明した差分を DD / PD に曞き戻させる  これはいわゆる仕様駆動開発SDDです。Birgitta Böckeler 氏の敎理でいえば、実装埌も蚭蚈曞に曞き戻しお保守に䜿い続ける「spec-anchored」に近い運甚です。superpowers の基本のワヌクフロヌずの違いは、蚭蚈曞を専甚のリポゞトリに眮いおチヌムでレビュヌするこずず、実装蚈画を実装リポゞトリごずに分けるこずです。 参考: Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl Birgitta Böckeler 氏、2025 幎 10 月 15 日。SDD を spec-first / spec-anchored / spec-as-source の 3 段階に敎理しおいたす 参考: obra/superpowers GitHub。README の「The Basic Workflow」に各スキルの圹割が曞かれおいたす   AI に任せるのは「調べる・曞く」たで、「決める」のは人間 ず線を匕き、蚭蚈曞も実装蚈画も、人間が OK を出すたで次の工皋に進たせないこずがポむントです。 䟝頌は「たず既存の仕組みを調べお」から始める  「こう䜜っおほしい」ず実装方法から指瀺するより、 先に既存の仕組みを調べさせる ほうが、既存の䜜りに沿った無理のない案が出おきたす。 遞択肢は「圱響範囲」の列を立おお比べる  方針を決める前に、2〜3 個の遞択肢を「凊理の流れ・メリット・デメリット」付きで䞊べさせ、人間が遞びたす。刀断が割れる論点は、ここでチヌムでも議論したす。比范の衚には 倉曎察象の圱響範囲 の列も必ず立おさせおいたす。「1 行远加するだけ」の改修案が、実は 10 以䞊の小売が共有し、毎日䜿われる画面ぞの倉曎だったこずがあるためです。 決たったこずは蚭蚈曞の冒頭ずメモリに残す  議論で決たったこずがチャットに埋もれおいるず、AI は次のセッションでそれを参照できたせん。蚭蚈曞の冒頭に「決定事項サマリヌ」を眮き、レビュヌで受けた指摘は「なぜ」ず「次からどうするか」を付けお Claude Code のメモリに残すようにしたした。こうしおおくず、䞀床受けた指摘を毎回蚀い盎す必芁がなくなりたす。 アヌキテクチャ遞定で分かったこず  EventBridge を䜿った 2 ぀の仕組みバッチの起動ず、ピッキングサヌバヌからの非同期連携は、どちらも遞択肢を䞊べお比べ、 採甚しなかった案ずその理由 を蚭蚈曞に残したした。その䞭で分かったこずは次の 3 ぀です。 前提から芋盎す。NAT Gateway の新蚭コストを避けるためにバッチのタスクをパブリックサブネットに眮いおいたが、芋盎すず NAT Gateway はすでにあり、そもそもの前提が成り立っおいなかった 非同期にするなら、受け手の䜜法たで決める。EventBridge の API Destination は応答埅ちが最倧 5 秒で、リトラむするのは 5xx ず䞀郚の 4xx だけなので、受け手は 5 秒以内に返し、再送しおも盎らない゚ラヌはリトラむされない 4xx で返す。同じむベントが䜕床届いおも結果が倉わらないようにもしおおく 非同期がい぀も正解ではない。ECS のタスク起動に 1 分ほどかかるため、デヌタ連携の開始時に台垳を䜜る凊理は同期にした 参考: Amazon EventBridge のタヌゲットずしおの API 送信先 AWS ドキュメント。5 秒のタむムアりトず、リトラむする゚ラヌコヌドの䞀芧が茉っおいたす 画面蚭蚈Excel ず MD3 の方針だけで䜜る  デザむナヌもデザむンツヌルも䜿わず、むンプットは既存アプリのスクショに芁望の吹き出しを描き足した Excel ず、Material Design 3MD3に沿うずいう方針だけでした。Claude Code は画像を読めるので、スクショを枡しお画面ごずの蚭蚈曞に MD3 のコンポヌネント、色・文字のトヌクン、アクセシビリティたで曞かせ、アプリ開発゚ンゞニアがレビュヌしおから実装したした。これでデザむナヌ䞍圚でも「゚ンゞニアのなんずなくの芋た目」にはなりたせんでしたが、 珟堎の䜜業者が䜿う業務アプリ だから成立した面も倧きいです。 実装時のぶん回し 実装蚈画も、人間がレビュヌしおから走らせる  蚭蚈曞が Fix したら、superpowers の writing-plans で実装蚈画 plan.md を䜜りたす。䜜業を 1 ステップ 2〜5 分の単䜍に分け、ファむル・コヌド・テストの方法たで曞く方針なので、1 本で 2,000 行を超えるこずも珍しくありたせん。plan.md も 人間がレビュヌしおから実装に入りたす 。plan.md を曞き終えるなり実装を始めさせるず、ファむルの数・タスクの順序・コミットの粒床ずいった、こちらの方針が反映されるべき刀断を埌から盎すコストが倧きいためです。 テストは先に曞かせ、倱敗を芋おから実装させる  AI は「テストが通るように実装を寄せる」だけでなく「実装に合わせおテストを盎す」こずもやりがちなので、 先に倱敗を芋る 手順を挟むこずが倧事でした。 OpenAPI ず design.md で「正」を分ける  API の型は OpenAPI、業務的な意味は design.md を正ずするこずで、サヌバヌ担圓ずアプリ担圓が I/F だけ先に合意し、それぞれ Claude Code で䞊行しお実装を進められたした。 むンフラ怜蚌環境ず本番環境の差異に苊戊  移行先の AWS の本番環境は、Claude Code に 今春既に構築枈の怜蚌環境 の Terraform を棚卞しさせ、「怜蚌環境 のこのリ゜ヌス → 本番ではこの名前・この蚭定で䜜る」ずいう察応衚を蚭蚈曞にたずめさせたうえで、玄 2 週間で構築したした。この期間は単に AWS リ゜ヌス䜜成だけで終わらず、セキュリティ察策や、本番環境特有の WEB アプリケヌション偎の蚭定ファむルの蚭定差異を調敎する䜜業も行いたした。 新本番環境想定の負荷詊隓をやり切る  ロヌンチ前の負荷詊隓を1人でやり切る必芁があったためここでも Claude Code をぶん回しおやり切りたした。 目暙倀は掚定ではなく、既存の小売の実アクセスや過去の泚文実瞟デヌタから出したした 環境はコスト節玄のため AWS リ゜ヌス適甚を 3 モヌドで切り替えられるように工倫したした ワヌカヌの枯枇を芋逃さないように倖郚䟝存のモックには本番盞圓の遅延を入れるようにしたした ボトルネックは Web ではなく DB ずいう結果が埗られ、むンデックスの欠萜を芋぀けるこずができたした アプリ動䜜確認゚ミュレヌタを Claude Code に操䜜させる  画面をたたぐ動䜜確認は、Claude Code に Android ゚ミュレヌタを adb で操䜜させ、スクリヌンショットを芋お刀定させたした。匊瀟のテックブログには、iOS シミュレヌタず Maestro MCP で詊した蚘事 もありたすが、今回は MCP を䜿わず玠の adb です。カメラを䜿う画面も、゚ミュレヌタの仮想カメラに QR コヌドの画像を貌れば、実機なしで確認できたす。䞀方で、ラベルプリンタヌやハンディ端末のスキャナヌぱミュレヌタでは確かめられないので、widget テストず人間による実機確認で補いたした。 参考: カメラのサポヌト Android Studio のドキュメント。゚ミュレヌタの仮想シヌンに QR コヌドなどの画像を取り蟌む手順が茉っおいたす 実装蚈画に「セルフフィヌドバック」を組み蟌む  実装蚈画の最埌には、ブランチ党䜓の差分をレビュヌさせるタスクを毎回入れ、 蚭蚈曞に曞かれおいない実装䞊の刀断 倱敗時の扱い、゚ッゞケヌス、競合、再詊行などを重点的に芋させおいたす。人間のレビュヌ指摘が、蚭蚈曞で合意枈みの郚分よりもこうした隙間に集䞭しおいたためです。このレビュヌで、「䜕も遞ばずに適甚するず党件分の重いリク゚ストが飛ぶ」ずいう蚭蚈曞自䜓の欠陥が芋぀かったこずもありたす。 Crashlytics の調査  Firebase MCP 経由で Crashlytics の FATAL を調べさせるず、 別々に芋えおいた 3 件蚈 69 eventsが、1 ぀の共通実装に起因しおいる こずを突き止めおくれたした。 問題点ず解決策  ここからが本題です。3 か月ぶん回しおみお実際に困ったこずず、取り入れた解決策を組にしお玹介したす。 問題点 1尀もらしい誀りず「存圚しない懞念」が玛れ蟌む  AI が曞いた蚭蚈曞は䜓裁が敎っおいお、それらしく読めおしたいたす。しかし実際のレビュヌでは、指摘に察しお次のような回答が返っおくる堎面がありたした。 AI が出したけど誀っおいた内容で、削陀するのを倱念しおいたした。 AI が「こういう問題が起こりうる」ず蚀い始めお、調査したらそんなものはなかった、ずいうやり取りがあっお、そのやり取りをわざわざ蚭蚈曞に入れおしたっおいたした。  むンフラでも、EFS のバヌストクレゞットが尜きるたでの日数や、詊隓環境の維持費月 $3〜20 → 実枬で月 $1.3の芋積もりが、尀もらしい根拠付きで倧きく倖れおいたした。AI は「知らないこず」を知らないずは蚀わず、それらしく埋めおしたいたす。そしお 曞いた本人も AI の出力をすべお把握しきれおいない たた PR が出おしたう、ずいうのが䞀番怖いずころでした。 解決策 1「掚枬」ず「確定」を分けお曞かせ、出兞を残させる 「 事実ず掚枬を区別する 」をメモリにフィヌドバックずしお残す 蚭蚈曞には「未確定事項」の節を蚭け、確定しおいないこずはそこに曞かせる 決定事項には、い぀・どの議論で決たったかを添えさせる AI ずの詊行錯誀の経緯は蚭蚈曞に曞かせない。残すのは 決たった結論ず、その理由 だけ 業務の事実確認が必芁な蚭蚈曞は、業務を知るメンバヌを必ず Reviewer に入れる  加えお、PR を出す前に「 この蚭蚈曞の内容を、自分の蚀葉で説明できるか 」を䜜成者自身が確かめるこずが倧事だず感じおいたす。 問題点 2AI は足し算が埗意で、匕き算が苊手  AI に蚭蚈させるず、「この問題も起こりうるので察策を」「ここも新芏 API を䜜っお」ず、機胜ず考慮事項がどんどん足されおいきたす。たずえばパッキング完了の曞き戻しの蚭蚈曞は、圓初「受け取った偎がピッキング結果を取りに行く API を新蚭する」案でした。これにレビュヌで「本圓に新芏で実装する必芁がある EventBridge にリク゚ストボディで枡せばいいのでは」ず指摘が入り、API を新蚭せずに枈みたした。AI は、工数や運甚コストの芳点で「そもそも䜜らなくおいいのでは」ず 匕き算 をするのが苊手で、このレビュヌはたさにそれを人間が担った䟋です。 解決策 2方針ずスコヌプで「匕き算」を仕組みにする 「無改修で枈む案があるなら、既存コヌドを盎す案より優先する」をメモリに残し、AI の提案の前提にする 刀断が割れる論点は、蚭蚈曞より先に遞択肢比范を䜜らせ、圱響範囲の列を芋お人間が決める 蚭蚈曞の冒頭には「スコヌプに含むもの」だけでなく「 スコヌプ倖 」を必ず曞かせ、倖した論点は「残課題」の節に担圓者付きで残す  「やらないこず」を曞く堎所をあらかじめ甚意しおおくず、AI が出しおきた懞念を「今回はやらない、でも忘れない」ず刀断しやすくなりたす。 問題点 3ドキュメントが膚倧になり、人間のレビュヌが远い぀かない  AI は疲れないので、蚭蚈曞も蚈画曞もいくらでも曞けたす。蚭蚈曞の PR は 3 か月で 68 本ずリポゞトリ別で最も倚く、泚文別ピッキング関連だけで蚭蚈曞・蚈画曞は 箄 3.6 䞇行 、最も倧きい蚭蚈曞 PR は 1 本で 远加 12,670 行 に達したした。  人間がこれをすべお粟読するのは珟実的ではなく、「曞いおあるけど誰もちゃんず読んでいない」箇所から、問題点 1 の誀りがそのたた玠通りしおしたいたす。SDD のツヌルを詊した Böckeler 氏も「正盎、これだけの Markdown ファむルより、コヌドをレビュヌしたい」ず曞いおいたす。SDD はレビュヌのボトルネックを消すのではなく、コヌドから蚭蚈曞ずいう䞊流ぞ移すのだず思いたす。 解決策 3人間が読むものdesign.mdず AI が読むものplan.mdを分ける ドキュメント 䞻な読み手 内容 人間のレビュヌ design.md蚭蚈曞 人間 䜕を・なぜ䜜るか業務的な意味、方針、圱響範囲、未確定事項、非ゎヌル しっかり読んで議論する plan.md実装蚈画 AI どうやっお䜜るかファむル単䜍のタスク、テスト、コマンド ファむルの数・タスクの順序・コミットの粒床を䞭心に芋お、OK を出しおから実装させる  人間のレビュヌ力は有限なので、粟読の優先床を design.md に眮き、蚭蚈曞は画面・サブ機胜の単䜍に分けお 1 本の PR を小さく保぀ようにしたした。実際、レビュヌの埀埩が倚かった蚭蚈曞 PR の䞊䜍 4 本は、 いずれも远加 400 行未満 でした。  PR が倧量にある䞭、具䜓的なレビュヌ方針は次のように分けお実斜したした。 蚭蚈曞DD 議論すべき論点や、Fix が必芁な未決事項を残した状態があっおも PR を出し、チヌムで決めきりたした 実装線集量が倧量ではないもの 今たで通りの担圓 Reviewer が党お目芖でレビュヌをしたした 実装線集量が倚いもの AI にレビュヌさせたした。ただし任せきりにはせず、結果をたず Reviewer ぞ報告させ、その内容を吟味し AI ず䌚話しお、コメント投皿させおいたした 問題点 4蚭蚈曞ず実装がズレおいく  実装しお初めおわかる仕様の穎は、必ず出おきたす。実装䞭に Claude Code が「蚈画にない刀断」をしお解決するず、それが蚭蚈曞に戻っおきたせん。蚭蚈曞が叀くなるず、次の蚭蚈で AI がその叀い前提を読み蟌んでしたい、蚭蚈駆動の良さが逆に仇になりたす。 解決策 4実装結果を蚭蚈曞に曞き戻すたでを「完了」にする 実装が終わったら「蚈画からの逞脱」「実装で刀明した仕様の穎」「残課題」を蚭蚈曞に远蚘するずころたでを、タスクの完了条件にする 蚭蚈曞の冒頭にステヌタス欄「実装枈日付」「未リリヌス」などを眮き、実装のたびに曎新させる  なぜ蚈画から倖れたかを䞀番よく知っおいるのは、実装したセッションの Claude Code なので、その堎で曞き戻させるのが最も安䞊がりです。 問題点 5リポゞトリやセッションをたたぐず前提が抜け萜ちる  1 ぀の機胜が耇数のリポゞトリにたたがるため、A リポゞトリで決めたこずを B リポゞトリの Claude Code セッションは知りたせん。長い䜜業では、途䞭でコンテキストが芁玄されお现郚も萜ちたす。開発人数が増枛する䞭で、人間同士の匕き継ぎに加えお「AI ぞの匕き継ぎ」も必芁になりたした。 解決策 5共有メモリず HANDOFF.md でコンテキストを受け枡す 眮き堎所 スコヌプ 内容 CLAUDE.md 党リポゞトリ共通 / リポゞトリ 前提・ルヌルGit の犁止事項、ドキュメントの眮き堎所など メモリ リポゞトリ レビュヌで受けた指摘や過去の経緯「なぜ」ず「次からどうするか」付き 共有メモリ リポゞトリ暪断 他リポゞトリに圱響する倉曎API 仕様、DB スキヌマ、むンフラ、蚭蚈刀断など HANDOFF.md 䜜業単䜍 セッションをたたぐ䜜業の匕き継ぎいたの状態、次にやるこず、匕き継ぎプロンプト  共有メモリには、䜜業完了時に Skill で「圱響先」「内容」「察応が必芁なこず」を曞き出させ、関連リポゞトリで䜜業を始めるずきに読たせおいたす。「蚭蚈曞のここがただ実装に远埓しおいない」ずいった申し送りも曞かせおいるので、問題点 4 のズレを远跡する台垳にもなりたす。セッションの残りが少なくなったら、その時点の状態を HANDOFF.md に曞き出させおから新しいセッションに切り替えるず、现郚が萜ちる前に区切れたす。 問題点 6Git 操䜜で䜜業ツリヌやブランチ運甚を壊しかける  AI は良かれず思っお Git を操䜜したす。蚭蚈曞リポゞトリの master ぞの盎接コミット、䞊行しお動いおいた別セッションの䜜業ずぶ぀かるブランチの切り替え、別ブランチの䞭身を読む぀もりの git checkout <ref> -- . で未コミットの 27 件のロヌカル倉曎を消す、ずいうこずが実際に起きたした。未ステヌゞの倉曎は Git では埩元できず、残る手段は VS Code のロヌカル履歎だけです。 解決策 6Git のルヌルを CLAUDE.md に明文化し、コミットは人間が握る ## 䜜業ツリヌを壊さない党リポゞトリ共通・最優先 - 調査・参照のためにナヌザの䜜業ツリヌぞ曞き蟌むコマンドを実行しない。 他コミットの内容は ` git show <ref>:<path> ` / ` git worktree add ` などで読む。 - 明瀺的な GO なしに実行犁止: ` git checkout -- . ` / ` git restore ` / ` git reset --hard ` / ` git clean ` / ` git switch ` / ` git stash ` - 䜜業ツリヌには垞に未コミット倉曎がある前提で動く。觊れる前に ` git status ` を芋る。  あわせお、 git add -A は䜿わない、蚭蚈曞リポゞトリのコミット・push・PR は人間が行う、䞊行䜜業は git worktree add でディレクトリを分ける、ずいったルヌルもメモリに残しおいたす。「AI を信甚しない」のではなく、 AI が壊せない構造にしおおく のがポむントです。 たずめ  3 か月間、少人数のチヌムで、Server API・むンフラ・Android のピッキングアプリたでを、Claude Code をぶん回しお開発したした。デザむナヌ䞍圚でアプリを䜜り切れたのも、AWS ぞのマむグレヌションず䞊走しながら本番構築から負荷詊隓たでを回せたのも、AI 駆動ならではだず思いたす。  䞀方で、ぶん回しおみおわかったのは、 AI 駆動開発のボトルネックは AI ではなく、人間のレビュヌず意思決定 だずいうこずです。AI は調べお曞くのは圧倒的に速いですが、尀もらしい誀りを混ぜ、足し算で膚らみ、決めたこずを忘れ、ずきには Git を壊したす。だからこそ、 蚭蚈曞を先に曞き、人間がレビュヌ・議論しお Fix しおから実装する 人間が読むものdesign.mdず AI が読むものplan.mdを分ける 決めたこず・やらないこず・ズレたこずを、AI が読める Markdown に残し続ける AI が壊せない構造ルヌルず worktreeを先に䜜っおおく ずいう「 人間が決めお、AI がぶん回す 」ための仕組みづくりが、結果的に䞀番の生産性向䞊に぀ながりたした。 問題提起に぀いお  AI に任せきっおも、それほど悪くないものができあがっおしたうくらい、モデルの粟床は高くなっおいたす。その䞭で、゚ンゞニアの存圚意矩や胜力の差が平準化されるのでは、ずいう危惧もありたす。ただ、今回の開発プロゞェクトを振り返るず、私は 決しおそうではない ず実感しおいたす。理由は 2 ぀ありたす。 AI ず蚭蚈を詰め切る力は、䞀朝䞀倕では身に぀かない superpowers の brainstorming で AI ず質疑を繰り返し、蚭蚈を Fix させる力は簡単には身に぀かないず思いたす。その議論をチヌムで行うずきの発蚀力や決定力にも、差が倧きく出おくるはずです AI を疑うには、ドメむンずシステムの理解が芁る ハルシネヌションによる誀りや、尀もらしい実装が出おきたずきに、たず疑っおセルフフィヌドバックできるこずが重芁です。そのためには、プロゞェクトのナビキタス蚀語やドメむン知識、システム党䜓の仕様をしっかり理解しおおかなければなりたせん 誰が読んでも共通のドメむン知識を持おる product-docs  蚭蚈曞を眮いおいる product-docs は、AI、゚ンゞニア、問い合わせ担圓、セヌルス担圓の 4 皮の読み手に圹立぀こずを目指したリポゞトリです。Markdown を䞭心に、Claude Code を通しお誰が読んでも共通のドメむン知識を持おるよう、郜床曞きためおいたす。曞き足しおいるのぱンゞニアなので蚭蚈曞が倚いですが、既存システムの仕様やアヌキテクチャをたずめたドキュメントもありたす。  このリポゞトリをチヌムでフル掻甚したおかげで、ドメむン駆動での開発が円滑に進み、スポットで参加した゚ンゞニア 3 名にもパフォヌマンスを発揮しおアりトカムを出しおもらえたのではないかず感じおいたす。 最埌に ゚ブリヌでは、ずもに働く仲間を募集しおいたす。 テックブログを読んで少しでも゚ブリヌに興味を持っおいただけた方は、ぜひ䞀床カゞュアル面談にお越しください corp.every.tv
スタメンでCTOしおおりたす、 @tnir ( X: @takuya_stmn , note: @takuya_stmn ) です。 2023幎9月、スタメン技術ブログで次の蚘事を公開したした。 ドメむン駆動蚭蚈は䜕を解決する手法なのか 蚘事では、TUNAG の技術的負債解消に向けおドメむン駆動蚭蚈DDDの導入を怜蚎しおいる、ず曞きたした。その埌の察倖的な印象ずしお、「スタメンは DDD を積極導入しおいる」ず読たれる堎面がありたした。 本蚘事の目的は二぀です。 圓時の怜蚎衚明ず、いたの実装実態のあいだにある差分を正確に共有するこず その埌に行った小芏暡な詊隓導入PoCから埗た、Rails 文脈での技術的・組織的な孊びを共有するこず 結論を先に述べたす。私たちの蚭蚈の軞は ActiveRecord で、DDD はバック゚ンドのごく小さな範囲で詊したした。その結果、ActiveRecord を軞にする方針を遞んでいたす。ただしこれは DDD党般の評䟡ではなく、私たちの文脈での蚘録です。小さく詊し、合うものを残し、合わないものを手攟すプロセス自䜓は、今でも有効な゚ンゞニアリング刀断だず考えおいたす。 2023幎の蚘事が曞いおいたこず 圓時の蚘事の冒頭は、次のずおりです。 株匏䌚瀟スタメンでは、䌁業゚ンゲヌゞメント構築サヌビス TUNAGツナグの技術的負債解消ず今埌の持続的成長のため、ドメむン駆動蚭蚈(DDD)の導入を怜蚎しおいたす。 蚘事は実装報告ではなく、コアドメむンを軞に「DDD が䜕を解決する手法なのか」を敎理する解説でした。実装詳现は扱わない、ずも明蚘しおいたす。締めは、将来に向けた衚明です。 ぀たり本文の事実は「導入を怜蚎しおいる」たでであり、「すでに積極導入しおいる」ではありたせん。ただし、解説の熱量や「邁進しおいきたす」ずいう結びが重なるず、読埌印象ずしおは積極導入䌁業のように残りやすい面もありたした。このギャップを、いた実装ず怜蚌結果に基づいお補正したす。 圓時の課題提起がなければ、机䞊の議論で終わっおいた可胜性もありたす。怜蚎を公開し、その埌に実コヌドで怜蚌たで進めたからこそ、本蚘事で共有するトレヌドオフが芋えたした。 䜕を、どこたで詊したか 私たちのプロダクトは、倧きくバック゚ンドAPIずフロント゚ンドに分かれたす。 領域 DDD ずの関係 フロント゚ンド 導入なし バック゚ンド党䜓 教科曞的な党面適甚はなし。LoC ベヌスで党䜓の 1% を倧きく䞋回る範囲で、郚分的・実践的な詊隓のみ 詊隓の䞻䟋 瀟内教育・テストナレッゞテスト領域の新芏 API 芋送り埌の比范䟋 タスク䟝頌・ToDo 領域の新芏 API 本蚘事では前者を 業務DXサヌビスA API 、埌者を 業務DXサヌビスB API ず呌びたす。どちらも TUNAG 本䜓から独立した圢で実装されたグリヌンフィヌルドサヌビスのバック゚ンドです。 業務DXサヌビスA API は、MVC でくくるず Model がおおよそ 2,000 LoC 前埌、View + Controller がおおよそ数癟 LoC 芏暡でした。期間は 2023幎12月からの玄3ヶ月です。ここでの DDD は、Evans 流の戊術パタヌンを党面適甚したものではなく、䞍倉条件が重芁な箇所に限定した実甚䞻矩的な導入DDD-lite ずしおも呌ばれるこずがあるでした。蚭問・遞択肢・合栌刀定・受隓セッションなど、「壊れるず困るルヌル」が比范的はっきりしおいる領域だったため、詊隓察象ずしお適しおいたした。 実コヌドでは、たずえば次が確認できたす。 ドメむン局を ActiveRecord から分離した pure Ruby のオブゞェクトがある 遞択肢数・重耇・合栌ラむンなどの䞍倉条件を、生成時や操䜜時に怜蚌する実装がある 䞀郚の曎新経路では、リポゞトリ経由で集玄を再構成しおから氞続化する 䞀方で、次の限界もありたした。 単玔曎新・耇補・䞀郚セッション曎新は ActiveRecord 盎叩きのたた残り、局を迂回した 䞀郚のドメむンオブゞェクトは、振る舞いに乏しいデヌタホルダヌに近い ドメむンむベントや、䟝存逆転を培底した叀兞的構成たでは採っおいない ぀たり「DDD を名乗るに足る郚分実装はあった」が、「プロダクト党䜓の暙準アヌキテクチャになった」わけではありたせん。 時系列は次のずおりです。 時期 内容 2023幎9月 技術ブログで導入怜蚎を衚明 2023幎12月〜玄3ヶ月 業務DXサヌビスA API で郚分的・実践的な DDD を詊隓導入 2024幎3〜4月 PoC 振り返り。本栌採甚を芋送り、業務DXサヌビスB API では採甚しない方針を合意 2024幎5月〜玄3ヶ月 業務DXサヌビスB API を、DDD 非採甚前提で初期開発 珟圚 フロント未導入。バック゚ンドでも局所詊隓の知芋にずどたり、暙準は ActiveRecord を軞にした蚭蚈 業務DXサヌビスB API は「DDD 導入の第2匟」ではありたせん。振り返りの結果、採らないず決めたあずの開発です。境界の分離や倖郚モデルの挏掩防止など、マむクロサヌビスずしお圓然の蚭蚈はありたすが、それを DDD の戊術導入ずは数えたせん。 なぜ本栌採甚を芋送ったか — 技術的・組織的な理由 ここが本蚘事の本題です。「やらなければよかった」ではなく、「䜕が効き、䜕が合わなかったか」を残したす。 1. 本来の課題ず手法がずれた 2023幎の怜蚎の出発点は、TUNAG の技術的負債解消でした。ずころが怜蚌が進むに぀れ、 手法の導入そのものが目的化しやすい 局面がありたした。 負債解消で本圓に解きたかったのは、たずえば次のようなこずだず考えおいたす。 倉曎圱響の芋通しを良くするこず ドメむン知識をコヌド䞊で远跡しやすくするこず チヌムが安党に改修できる速床を保぀こず 䞀方で、局分け・甚語・パタヌンの敎備が進むず、「DDD らしく曞けおいるか」が評䟡軞になりやすい。するず、負債解消や倉曎容易性ぞの寄䞎より、導入の完成床が議論の䞭心になりたす。業務DXサヌビスA API での詊隓は、この目的化を本䜓から切り離しお芳枬するためにも有甚でした。振り返りの結論は明確で、 その時点のスタメンの文脈では、DDD の本栌導入は TUNAG の技術的負債解消に適しおいない 、でした。 2. Rails / ActiveRecord ずの摩擊コストが高かった 業務DXサヌビスA API は Rails API です。ActiveRecord は氞続化だけでなく、ク゚リ・バリデヌション・ラむフサむクル・関連の䞭心でもありたす。ここに戊術的 DDD集玄の再構成、リポゞトリ、pure ドメむンモデルを郚分導入するず、少なくずも次のコストが発生したした。 二重モデル化 : DB 行ずしおの AR ず、ドメむン䞊のオブゞェクトを埀埩させる倉換が必芁になる 経路の分岐 : 䞍倉条件が匷い操䜜だけドメむン経由、単玔 CRUD は AR 盎叩き、ずいう二系統が同居する 認知負荷 : 「この倉曎はどの局に曞くべきか」の刀断自䜓が、機胜远加のたびに発生する 耇雑な採点や、正匏版の蚂正ルヌルのように、壊れ方が高い箇所では、pure なドメむンオブゞェクトに寄せる利点はありたした。逆に、倧半の曎新が CRUD に近い画面・API では、倉換ず局分けのコストが、埗られる安党性を䞊回りやすかった、ずいうのが率盎な感觊です。 Rails way責務を散らさない Model、明確な UseCase、必芁なら concernを䞻軞にした方が、少人数チヌムでの倉曎速床ず孊習コストのバランスが良かった、ずいうのが本栌採甚芋送りの技術的な䞭栞です。 3. 効く範囲が、プロダクト党䜓のボトルネックず䞀臎しなかった DDD が盞察的に効きやすいのは、ルヌルが耇雑で、䞍倉条件の砎壊がそのたた障害になる領域です。業務DXサヌビスA API でも、蚭問制玄や採点のようにその皮の箇所には郚分適甚の合理性がありたした。 しかし TUNAG 本䜓を含むプロダクト党䜓の負債の䞻因が、「集玄境界が無いこず」だけだったわけではありたせん。認蚌委譲、サヌビス分割、スキヌマ契玄、運甚、デヌタ敎合、画面を含む倉曎䌝播など、別皮の耇雑性の方が倧きい局面も倚い。戊術 DDD を局所に厚くしおも、プロダクト党䜓の倉曎容易性が線圢に改善するずは限らない、ずいうのが PoC 埌の敎理です。 4. 小さく詊せたから、倧きく間違わずに枈んだ 芋送り自䜓を倱敗ずは捉えおいたせん。新芏の小さい API で玄3ヶ月詊し、振り返り、次の新芏 API では䜿わないず決めた。この切れ方の方が、本䜓ぞ先に党面適甚するより健党でした。 組織ずしお埗られた敎理は、次です。 DDD は銀の匟䞞ではない 導入を目的化するず、負債解消から離れる Rails 䞭心のプロダクトでは、戊術 DDD の党面適甚より、ActiveRecord を軞に耇雑箇所だけ蚭蚈を厚くする方が珟実的なこずが倚い 手法の採吊は、流行や完成床ではなく、事業成長ず開発生産性保守性・倉曎容易性を含むで芋る いたの蚭蚈方針 PoC 埌の暙準は、ActiveRecord を軞に眮いおいたす。UseCaseアプリケヌションサヌビスでナヌスケヌスの流れずトランザクション境界を担保し぀぀、氞続化モデル偎は ActiveRecord 本来の衚珟力を掻かす。そのうえで、モデルを無秩序に倪らせないために、関心事ごずに concern ぞ閉じる、ずいう圢です。 これは「Fat Model に戻した」ずいう意味ではありたせん。ドメむン局ず AR を二重に持぀コストを䞋げ぀぀、ナヌスケヌスのオヌケストレヌションは UseCase に残し、モデルに散らばりがちな関心事だけを concern で分割する、ずいう遞択です。Concern の濫甚が神オブゞェクトの隠蔜になりうるこずは認識したうえで、DDD-lite の二重モデルより、この分割の方がチヌムの認知負荷ず倉曎速床に合う、ず刀断しおいたす。 察倖的な事実関係は、次で足りたす。 2023幎の蚘事は導入怜蚎の衚明であり、党面採甚の報告ではない フロント゚ンドでは DDD を導入しおいない バック゚ンドでも、LoC ベヌスで党䜓の 1% を倧きく䞋回る範囲での郚分的・実践的な詊隓にずどたる 䞻䟋は業務DXサヌビスA API2023幎12月〜玄3ヶ月 2024幎3〜4月の振り返りで本栌採甚を芋送り、業務DXサヌビスB API2024幎5月〜玄3ヶ月では非採甚前提で開発した 珟圚のスタメンを「DDD積極導入䌁業」ず呌ぶのは実態に合わない 小さく怜蚌し、合わなければ採甚しない、ずいう刀断は今埌も取りうる 手法の是非を奜みで決めず、小さく詊し、事業成長ず倉曎容易性を含む生産性、および本来の課題技術的負債解消ぞの寄䞎で採吊を決める。業務DXサヌビスA API での詊隓ず、業務DXサヌビスB API での芋送りは、その䞀䟋です。 おわりに この蚘事は、過去のチャレンゞ蚈画ブログ蚘事を消すためのものではありたせん。圓時の怜蚎や、その埌の詊隓を吊定するものでもありたせん。むしろ、2023幎の蚘事が課題を蚀語化し、仮説を倖に出したからこそ、机䞊の空論で終わらせず実コヌドでトレヌドオフを怜蚌できたした。話題の手法をスロヌガンで終わらせず、小さなプロダクトに萜ずしお確かめ、本栌採甚を芋送った蚘録です。 ゚ンゞニアリングにおいお重芁なのは、流行を远うこずでも、䞀床遞んだ手法に固執するこずでもありたせん。自瀟のプロダクト特性、フレヌムワヌクの前提、チヌムの認知負荷に照らしお、効く蚭蚈を残し、効かない蚭蚈を手攟せるこずです。今回の PoC は、その刀断をコヌドず振り返りで䞀床通した事䟋だず考えおいたす。 蚭蚈の話をするずきも、採甚の話をするずきも、「スタメンは DDD を積極導入しおいる」ではなく、「小さく詊し、Rails / ActiveRecord を軞に UseCase ず concern で敎理する蚭蚈を䞻軞ずしお遞び盎した」ず読んでいただけるず、実態に近いです。 今珟圚、䞻に採甚しおいるシンプルな Rails Way に準じたアヌキテクチャに関しおは別の蚘事でコメントできればず思いたす。
はじめに 日々の開発においお、AI にコヌドを曞いおもらうこずは日垞になっおきたした。芁件を䌝えれば既存のコヌドベヌスを調査し、その䜜法に合わせお機胜を足しおくれたす。 生成されたコヌドがい぀も正しいわけではありたせんが、それでも「コヌドを曞く」ずいう䜜業そのものは、以前ほど開発のボトルネックではなくなり぀぀あるず感じおいたす。 その䞀方で、AI ず䞀緒に開発しおいるず、「䜕を実装しおもらうか」を決める時間の比重が増えおきたした。この蚘事では、その実感を出発点に、次の 3 ぀を順に考えおみたした。 AI 駆動開発で、蚭蚈はどこに曞いおおくずよいのか 既存の蚭蚈成果物で、実装されたコ

動画

曞籍

おすすめマガゞン

蚘事の写真

AIがコヌドを曞く時代、人間は䜕を保蚌するのか───銬堎さんず考える、開発者に求められる新しい責任ず䟡倀

蚘事の写真

仕様曞通りに実装したのに「そうじゃない」ず蚀われる理由───ミノ駆動さんが語る”前提を疑うための認知の芖点”

蚘事の写真

半導䜓の未来を぀くるのは゜フトりェア゚ンゞニア ― Renesas 365が挑む組み蟌み開発の倉革

新着動画

蚘事の写真

【3分解説】囜産AI「Sarashina」6぀のモデルで䜕ができる

蚘事の写真

「ただ出せない」が続くのはなぜ゚ンゞニアの仕事の進め方、完成床の芋極め方を「おい、ずりあえず終わらせろ」著者・nwii...

蚘事の写真

【解説】文章を生成しない最新AI「Jev」ずは ClaudeやChatGPTず䜕が違うTypeSafe AIの刀断専...