CCCMKホールディングス TECH LABの Tech Blog

TECH LABのエンジニアが技術情報を発信しています

ブログタイトル

Agentic DevOpsについて調べてSpec-Driven開発にチャレンジしてみた話。

こんにちは、CCCMKホールディングスAIエンジニアの三浦です。

クリスマスが過ぎて、いよいよ2025年も終わりだな、という気持ちになってきました。今年は"AI Agent"がとてもメジャーになり、DifyのようなAI Agentを誰もが構築できる仕組みも浸透してきました。「AI Agentの開発」はエンジニアの専門領域ではなくなってきているように感じます。

そんな中、2026年にエンジニアとしてチャレンジしたいと考えているのが"Agentic DevOps"です。Agentic DevOpsについてはMicrosoftのブログでも述べられていますが、ソフトウェア開発から運用に至るライフサイクル全体でAI Agentを導入し、自動化を実現する新しい開発アプローチです。

azure.microsoft.com

Agentic DevOpsの導入により、アプリをより早く開発し、アプリを安全に保ち、運用をスムーズに維持することが可能になる、と述べられています。

私たちのような研究開発チームでは"とにかくまず動くものを作る"ということが求められることが多いです。一方作ったものの価値が認められるためにはある程度の運用期間が必要で、この運用期間における運用の質も重要だと考えています。しかし、この"新しいものを作る"と"安定して運用する"という2つを両立することがなかなか難しいことがあります。

この課題をAgentic DevOpsで解決できるのでは、と考えています。これまでは人の手が必要だったところをAI Agentに任せ、私たちは次にどんなものを作ろうか、といった企画を立てることに集中出来るような世界を実現してみたいな、と思っています。

Agentによるアプリ開発の難しさ

私自身、最近Github Copilotを使ってVibe Codingでプロトタイプ開発にトライしました。とりあえず最初のバージョンのリリースまでなんとかたどり着けたのですが、かなり課題を感じる開発内容でした。

最初は数行の日本語の指示を与えただけでフロントからバックエンドまで必要なファイル一式をあっという間に書いてくれる動作にびっくりして感動したのですが、細かい修正の指示を与えていくごとにいつまで経っても収束しない、なんだか同じことを何度も繰り返してしまう、どんどん不要な関数が増えていく、といった状態になり、使えば使うほど不安になったりしました。

これは、Agentが過去の作業内容を忘れてしまっていること、そして私自身が日によって指示の書き方にブレが生じていることが大きな要因だと感じました。

この問題に対し、以下の2つのアプローチが必要だと考えました。

  • Agentに常にアプリの仕様書を確認させること
  • 出来るだけプロンプトでの指示をさけること

そしてこれらを実現する開発手法として"Spec-Driven開発"があることを知りました。Spec-Driven開発では最初からコードを書かせるのではなく、Spec(仕様)を固めてから開発を進めます。よくよく考えると新入社員でエンジニアを始めた時と似たアプローチなのですが、当時と違うのはコーディングはAgentが担当する、という点です。

MarkdownによるSpec-Driven Development

Spec-Driven開発について調べていた中で、Githubのこのブログがとても面白いと感じました。

github.blog

このブログの述べられているアプローチでは仕様が記述されたMarkdownファイルを編集することで開発を進めていきます。そして編集されたMarkdownを専用のプロンプトを通じてAgentにコード化(コンパイル)させる流れでコードを生成していきます。実際にこのアプローチで"GitHub Brain MCP Server"というMCP Serverを開発されたそうです。

ブログで紹介されているプロジェクトのファイル構成は以下のようになっています。

.
├── .github/
│   └── prompts/
│       └── compile.prompt.md
├── main.go
├── main.md
└── README.md

README.mdmain.mdが仕様を定めたMarkdownです。main.mdからREADME.mdへの参照が埋め込まれています。README.mdがユーザー向け、main.mdが開発者向けの内容となっています。

compile.prompt.mdはカスタムプロンプトで、先のディレクトリ構成のように配置をしておくとVS Codeからコマンドで呼び出せるようになるそうです。このプロンプトにはmain.mdの内容を参照してソースコードmain.goを生成するための指示が記述されています。

とりあえずやってみる

先のブログを見よう見まねで、とりあえずSpec-Drivenな開発をトライしてみました。最近LLMを使った会話型のアプリを作ることが多いのですが、フロントがいつもStreamlitでちょっと違うもので実装したい・・・と考えていたので、フロントとバックエンドで構成される、いったんローカル環境で稼働させることを前提としたアプリを作ってみることにしました。

バックエンドの開発は普段からしているのですが、フロントの開発はほとんど経験がないため、そもそもどんな技術が必要なのかをM365 Copilotのリサーチツールを使って調べてみました。

M365 Copilotのリサーチツールで調べてみました。

このような表にまとまってきました。

そのあと何度かやり取りをして、開発向けの仕様書(SPEC.md)とユーザー向けのドキュメント(README.md)を生成させました。少し手直しをした後、プロジェクトに配置しました。

SPEC.md

このアプリの概要については [README.md](./README.md) を参照してください。


# Azure OpenAI チャットアプリ仕様書(開発者向け)

## 前提条件

- Node.js バージョンは **20.9.0 以上** が必須です。
  - Next.js 16 以降では Node.js 20.9.0 未満では起動できません。
  - 推奨されるインストール方法は https://github.com/nvm-sh/nvm を使用することです。


## 技術スタック

| 構成 | 技術 | バージョン |
|------|------|------------|
| フロントエンド | Next.js / React / TypeScript | Next.js 16.1.0 / React 19.2.2 / TypeScript 5.9.3 |
| UIデザイン | Tailwind CSS | 4.1.10 |
| バックエンド | FastAPI / Python | FastAPI 0.127.0 / Python 3.14.2 |
| LLM連携 | LangChain / OpenAI SDK | LangChain 1.2.0 / openai 2.14.0 |

## セットアップ手順

### バックエンド
...

README.md

# Azure OpenAI チャットアプリ(ローカル最小構成)

## 概要

このアプリは、Azure OpenAI の GPT モデルと対話できる ChatGPT 風のチャットUIを提供します。UIはエメラルド色を基調としたモダンなデザインで、ローカル環境で動作確認が可能です。

## 特徴

- ChatGPT風のチャットUI
- Azure OpenAI による自然な応答
- ローカル環境で簡単に動作確認可能
- ユーザーの入力に対してAIが即座に応答

## 利用方法

1. アプリを起動すると、チャット画面が表示されます。
2. 入力欄にメッセージを入力し、「送信」ボタンを押してください。
3. AIが応答を返します。
...

あとはcompile.prompt.mdを以下のような内容で作成しました。こちらの内容は先のGithubのブログのものをほぼ踏襲しています。

---
mode: agent
---

- Update the app to follow [the specification](../../SPEC.md)
- Build the code with the VS Code tasks.

そしたらGithub CopilotのChatで/compileと入力します。

compileの実行

実行をするとファイル一式が生成されていきました。

ファイル一覧

その後アプリを起動すると、以下のように一通りほしかった動作をしていることが確認できました。

起動したアプリ

ただ使ってみて気づいたのですが、会話の履歴を保持するという仕様をSPEC.mdに記載していなかったため、会話が途切れてしまう動作になっていました。こちらは今後SPEC.mdに追記して改修していきたいと思います。

まとめ

Agentic DevOpsに興味を持って、それに関連するSpec-Drivenな開発をほんの少しですが今回体験してみました。やってみると同じツールを使っているのにVibe Codingとは全然違う!という感想を持ちました。もう少しどっしり腰を据えて開発しているような、そんな気持ちになりました。

あと、仕様を書いた後はGithub Copilotがコーディングをしてくれるのですが、仕様を書く段階では色々なAIを使う必要があるな、と感じました。リサーチ系のAIも使いましたし、もしかしたらモデルの種類も色々変更してみると良いのかもしれません。

また、今回は本当に小さなアプリの開発でしたがもっと規模が大きくなると作らなければいけない仕様書の量も膨大になり、問題が出てくるかもしれません。とにかくAIによる開発については本当に色々な情報があるので、もっとしっかり勉強してみたいと思います。

年末年始を過ごす、良いネタが出来ました。

2026年もよろしくお願いします。

ということで、今回が私の2025年最後の記事になります。1週間に1本必ず更新するように意識していたのですが、なんとか無事に52本の記事を今年も書くことが出来ました。

今年一年、読んでいただきありがとうございました!来年もよろしくお願いします。よいお年をお迎えください🎍