🫧

ぼくのかんがえた最強のチーム開発AI活用

に公開

この記事の内容は100%人間が生成しています。
ここで言う「AI」は、claude codeなどのAI Agent系サービスのことを指しています。
ここで話すAIの特性等は、体系的に学んだものではなく、筆者の体感です。

チーム開発とAI活用って相性悪くない?

きっとこの記事の読者さんは、バイブコーディングを嗜んだ経験があるだろう。AIにざっくりした要求をポイと投げれば、それが文書化され、設計が組まれ、タスクに切り出され、タスクの上の方からチョチョイのチョイ〜っと実装されていく。そんな様を眺めていると・・・

これ、一人でやった方が効率いいわね。

そんな考えが頭をよぎる。

チームでのAI活用は、そこそこ課題がある。
以下のような事象を観測した覚えはないだろうか?

  • 品質の低いMRが量産され、レビュアーが苦しめられる
    • 変な方針で無理やりバグ修正している、足並み揃えてない実装等
    • もうウチがゼロイチで実装し直していいですかぁ・・・?
  • AIが巨・プロンプトに耐えきれず、指示を無視しまくる
    • 議事録も開発ルールも受け入れ基準も、何もかもをdoc/に入れとけば、きっとAIがいい感じに全部見てくれて開発中ずっと厳守してくれるよね。そんな訳ないよね。
  • プロンプトに誤った情報や無茶な要求が書いてあり、AIのノイズになっている
    • 既存コードに対して一切手を入れずに、カバレッジ率100%にしろってそんな無茶な・・・
    • フォルダ構成図の情報が古いせいで、AIが一回古いフォルダ構成でファイル検索かけちゃってるよ・・・
  • 他人が作ったプロンプトや自動化スクリプト、使わない
    • 上記のような事象がままあるため、もはや使う気が起きない
    • 何が起きるかわからないスクリプトも怖いので使う気が起きない
  • プロジェクト内でのAI活用方法が統一されていない
    • AI戦国時代の渦中なので、皆各々好きなAIを使っている
    • CLAUDE.mdをこだわって書いたとて、claude使ってなかったら意味ない
    • kiroでタスク管理しようって言っても、kiro使ってなかったらタスク進捗更新されないです
  • 既存実装の品質が低いと詰む
    • 既存実装の品質が低く、AIがそれにあわせて品質が低いコードを書かざるをえない状態になっている
    • 既存実装の品質が低すぎて、AIがもはや実装不可能な状態になっている

ぼくのかんがえた最強のチーム開発AI活用

解決策です。

大前提

  • ドキュメント全般はgit管理する
    • Figmaなど、どうしてもgit上で扱えないものは、MCPで接続できるようにしておく
  • DBスキーマ定義やリソースデプロイはコードベースで行う
    • 世の中には、まれに手作業でDBスキーマ更新・リソース変更しているプロジェクトがある。ビビる。ほとんどの場合はコードベースでやった方がいいと思う・・・

ドキュメンテーション

AIが動きやすいようにシンプルに、明示的に。
コンテキストの肥大化はAIの精度をモロに下げる。

書かなくていい情報は書かない

見ればわかる情報や、別ファイルに書いてある情報をいちいち書かない。
更新モレ予防にもなる。
ex...
❌ディレクトリのツリーを詳細に書く
⭕️「ディレクトリはクリーンアーキテクチャに基づいた構成です」とか「MVCモデル」だけ書く

❌「webアプリはlocalhost:5173で接続できます、db接続文字列は~~~です」と書く
⭕️「接続情報はcompose.yaml参照」と書く

プロンプトを中途半端に使い回そうとしない

個人用プロンプト置き場を作り、gitignoreする

そもそもAIは個人と喋っていて、複数人と喋っているものではない。
他人の対話用プロンプトをそのまま使っても、「今これ私が喋りたいことじゃないな」と上手く噛み合わないことが多い。
.gitignoreしたtemp/フォルダを掘り、そこに各々自分用のプロンプトを入れよう。

最低限共通認識として持っておきたい情報だけ、docに書いておく

CLAUDE.mdやCODEX.mdには、「そのdocを見るように」とだけ書いておく。
docは必要最小限の情報のみにする。

「この時にはこのプロンプトで実行する」を徹底する

しっかりした詳細設計書がもうあり、その通りに動く物を作らないといけない、といった時にコンテキスト肥大化を防ぐテク。
何をする時にどのドキュメントを見れば良いかを明示する。

  • 「APIいじる時はAPI設計書見て〜」とか
  • 「実装いじる時はコーディング規約とテスト規約見て〜」とか
  • 「デザイン実装する時はMCPサーバ経由でFigma見て〜」とか
    参考

https://qiita.com/tomada/items/e27292b65f723c4633d9

実装

プロジェクトの開発最初期に、その後の実装の軸となる「一連のレイヤーを網羅する」機能を1つ実装する

例えばダッシュボードwebアプリなら、認証 ~ UI ~ APIリクエスト ~ API内認証 ~ DB更新 ~ APIレスポンス ~ UI更新 などの、一連のレイヤーを網羅するように機能を実装する。
ワンパステストが通るように、と言った方が伝わるだろうか。
そして、「この技術要素、この作り方を軸にしていれば、後の実装は全部AIに任せても大丈夫そうだね」と思えるまでレビューする。
最後に、レビューを通過したら、開発プロンプトに「XXX(軸にした機能)と足並みを揃えて実装してください。」と入れる。

※このセクションは、AIの精度が上がったら将来的に消えると思われる
(2025年10月時点)未だに、偶にAIがビミョーな実装をすることがある。
たまたま最初にAIがビミョーな実装をして、他の実装が後に続いて・・・となると大変しんどいため、このセクションを設けている。
最初の骨組みさえよければ、それを真似るよう指示を出せばいいので。

人力実装は基本禁止

案件情報や設計が出揃っていて、あとはフレームワークに沿って実装するのみ、となれば、もはや人力でコーディングする必要はない。
フレームワーク=枠組みである。それに沿ってコーディングすれば、誰がやっても似たような実装になるようになっている。じゃあもう人間が実装する必要はないですね?そうですね?
AIがフレームワークに忠実な実装をしていれば、後々に改修作業が発生した際、人間もAIも確認すべき箇所を探しやすくなる。

複雑度が高い箇所・重要度が高い機能はこの限りではない。AIにどれだけ仕事を取られても、人間には「責任を取る」という仕事が最後まで残り続けるのだ・・・

E2Eテストのテスト名を自然言語で書いて、仕様書=テストにする

以下は、ログイン機能の仕様書=テストの例。
重要度が低い機能は、コードに対する人力レビューなしでこのテストのみで品質担保をしてもいいと思う。
仕様書=テストの例

その他

案件特性に合った導入の仕方をする

ゼロイチ開発であれば上記の運用を導入しやすいが、既存アプリのリプレイス案件や、納品後の不具合修正フェーズといったプロジェクトだと、運用を変えるコストが高く、メリット < コストになりかねない。
そのような場合は、デグレが怖い箇所だけE2Eテストを導入するとか、部分的に運用を適用すると良い。

終わりに

お読みいただきありがとうございます。
ご指摘やご意見あれば気軽に投げていただければと思います。
では〜👋

Discussion