はじめに
こんにちは、DX開発事業部の田村です。
先日のAWS Summit Japan 2025に参加し、AI駆動開発とEverything as Codeについてのセッションを聴講してきました。AIを活用した開発手法の進化と、あらゆるものをコード化することで実現される開発プロセスの革新について、具体的な事例とともに紹介されており、かなり印象的なセッションでしたので内容や所感をレポートとしてまとめます。
概要
ソフトウェア開発に AI を活用するのは当たり前になりました。しかし AI に開発のコンテキストやエンジニアの意図を十分に伝えるにはどうすればよいでしょうか? Everything as Code のプラクティスは、アプリやインフラだけでなく運用やドキュメントなどあらゆるものをコードとして扱うことで、メンテナンス性を高め、人と AI 双方のために整理されたコードベースを構築します。このセッションでは、Everything as Code をソフトウェア開発における基本の型として踏まえ、AWS Cloud Development Kit (CDK) を使ったアプリ構築を例に AI エージェント時代の実践的な開発テクニックを学びます。
コーディング支援のレベルについて
セッションでは、コーディング支援の進化について4つのレベルが示されました。
興味深いのは、このレベル分けが単なる技術の進化段階を示すだけでなく、開発者とAIの関係性の変化を明確に表現している点です。
現在、多くの開発現場はレベル1〜2の段階にあり、AIがコード補完やチャットベースでの支援を行っています。
しかし、レベル3以降では、AIが自律的にコードを探索・編集・テストするようになり、まさに「ドライバーが人間からAIに交代する」という表現が使われていました。
これは単なる自動化ではなく、開発プロセスにおけるパラダイムシフトを表しています。
AI駆動開発とは
AI駆動開発は、AIによるタスクの解決をプロセスに組み込んだソフトウェア開発手法です。
セッションで特に印象的だったのは、「どうすればAIが自律的にコーディングできるか?」「どうすればAIがプロジェクト固有の課題を解決できるか?」という問いかけでした。
これらの問いは、単にAIを使うということではなく、AIを中心に据えた開発プロセスの再設計を示唆しています。
よくある悩み1:AIが意図した通りに動いてくれない
LLMは確率的に次のトークンを推論するため、指示が曖昧だと結果は予測できません。
スライドで示されたように、「ToDoアプリを作って」という指示に対して、LLMはReact + Express、Streamlit、Single HTML fileなど、様々な実装を提案する可能性があります。これは、LLMが文脈や要件を正確に理解できていないことを示しています。
特にシステムはさまざまなシステム要件と変更の積み重ねで構築されます。より適切かつ的確にAIでシステムを構築するには「期待する振る舞いを言語化」していく必要があり、エンジニア自身もAI駆動開発のスキルが必要です。
よくある悩み2:AI駆動開発のスキルや価値が周囲の人に伝わらない
AI駆動開発ではエンジニア自身のソフトウェア開発の基礎が強固なほど、より効果的に実践することができます。そのためAIを活用した開発ではエンジニア自身のバックグラウンドや習熟度に応じて、得られる効果が変わったり異なるアプローチをとったりする可能性があります。
そしてAI駆動開発は自身で繰り返し試すことで、初めてその効果を実感できます。
それゆえに、そのスキルや価値が周囲に伝わりづらいという状況があるようです。
Everything as Codeとは
Everything as Codeは、バージョン管理、テスト、デプロイという同じ原則を活用して、開発ライフサイクルのあらゆる側面を管理する手法です。
セッションで強調されていたのは、これがネットワーク/インフラストラクチャ、ドキュメンテーション、構成など、開発ライフサイクルのあらゆる側面の保守性とスケーラビリティを高めることを目的としている点でした。
Everything as CodeがAIと人の協働を促進する
このスライドで示されているように、Everything as Codeは単なる技術的アプローチではなく、人とAIの協働を促進するための基盤となります。
特に注目すべきは:
- あらゆるものをコードで管理することで変更を追跡可能にする
- 再現性と一貫性を目的とする
- プレーンテキストで書かれたコードは人間にもAIにも理解しやすい
- 人間しか知らないことをなくす(手動での設定変更、暗黙的なルールやオフラインの会話を排除)
「プレーンテキストで書かれたコードは人間にもAIにも理解しやすい」というポイントは、Everything as Codeの中核となる考え方です。バイナリファイルや専用フォーマットではなく、プレーンテキストを使用することで、人間もAIも同じ情報源から作業できるようになります。
「人間しか知らないことをなくす」という点は、手動での設定変更や暗黙的なルール、オフラインの会話を排除することを指しています。これにより、すべての情報がコードとして記録され、誰もが(そしてAIも)アクセスできる状態が実現されます。
“Gitリポジトリを見ればすべてわかる”状態にする
“Gitリポジトリを見ればすべてわかる”状態にすることで、Infrastructure、Configuration、Policy、Security、Documentation、Operation、Observability、Databaseのすべてがコードとして管理されており、OSSからやり方を学ぶというアプローチも示されています。
チケット単位での議論やコードレビュー指摘の共有、CIのエラーログなどプロジェクトの全体像が一箇所で把握でき、AIも人間も同じ情報源から作業できるようになります。
Documentation as Codeと実践例
Documentation as Codeの実践において、Markdownは重要な役割を果たします。スライドに示されたコード例は、AWS CDKリポジトリでの実装を示しており、以下の特徴があります:
- Markdownは記法がシンプルで記述しやすい
- 少ないトークン数で構造化できるため生成AIと相性が良い
- Gitでバージョン管理できる
- Excel設計書からの脱却には文化的な障壁もあるが現実的に推進(PDFやWordにも変換可能)
Documentation as Code / 対象者ごとに構造化する
さらにドキュメントを対象者ごとに構造化することの重要性が示されていました。Gitリポジトリ内のドキュメント構造が明確に定義されており、Users(利用者)、Contributors(貢献者)、AI、Profiler Reviewer、Profiler Test Expertなど、それぞれの役割に応じたドキュメントが用意されています。
これにより、各ステークホルダーが必要な情報に素早くアクセスできるようになっています。
Everything as Codeの実践例まとめ
Everything as Codeの実践で重要なポイントは、「AIが課題解決のために必要な情報を自律的に探せる状態」を作ることです。
Gitリポジトリ構造の例では、apps、agents(AWS Lambda)、api(AWS Lambda)、infra(AWS CDK)、web(Amazon CloudFront)といった技術スタックと、design、instructions、CONTRIBUTING.md、README.mdといったドキュメントが統合的に管理されています。
Infrastructure as Codeとして、インフラ構成だけでなくアプリやデータベーススキーマまでAWS CDKで全体管理、デプロイされています。
Documentation as Codeとして、ユーザー向け、コントリビューター向けにプレーンテキストでドキュメントが整備されています。
システム開発に必要な情報が全てGitリポジトリに集約されていますので、リポジトリを見れば人間もAIも必要な情報を探すことができる環境となっています。
AI駆動という叡智と型
どんなに便利なサービスや開発手法でも、時間をかけてマスターして初めてその価値に気づくプラクティスもあります。
セッションではそうした叡智に関して、次のような引用を用いて説明していました。
「型」による叡智の伝達と発露
セッションで特に印象的だったのは、「型」という概念の導入です。
このスライドでは、思考方法や課題解決プロセスの修得を要求するプラクティスを「型」と捉えることが示されています。叡智のパッケージとしての型は、主体への内在化を通じて、主体を通した異なる形での発露を許容します。
これはプラクティスの単なる模倣ではなく、各人が自分なりの形で技術を昇華させることを意味しています。
Everything as Codeという概念も「型」として捉えることで、以下の3つの要素が実現されます:
- すべてをコードで記述する
- Gitを信頼できる唯一の情報源にする
- 一貫性と再現性を保つ
実践を通してマスター(内在化)することで、「どうすればコードに残せるか?」を常に検討できるようになります。
これも単なる技術的なアプローチではなく、組織としての開発思想や思考の変革に繋げることができます。
「AI駆動開発の型」はそれぞれが編み出すもの
AI駆動開発は技術の進化が激しいだけでなく、使用する人、組織、対象によって多様な解釈があります。
「型」は本来柔軟に変化するものであり、ソフトウェア開発の「基本の型」をもとに、自分自身の「AI駆動開発の型」を編み出すことが重要と説明がありました。
「型」的な開発プラクティスの習得を組織で支える
「探索する → 内在化する → 主体を通して発露する」というプロセスが重要であり、以下の2つの要素が強調されていました。
共通認識の醸成
- AI駆動開発は組織の能力を拡張するもの
- 「型」は外から眺めるのではなく、内在化しなければ叡智を把握できない
- 「型」は人によって受け取り方や活用方法が異なる
場の提供
- 失敗が許容され、多様性を受け入れる実践者のコミュニティを作る
AI駆動開発のような未成熟な「型」的な開発プラクティスでは、各人が型を模索するべく行動して、それを全体還元していくプロセスを回すことでより効果的なプラクティスへと成熟していくものだということです。
そしてそれは、個人だけでは成り立たず組織全体としての理解と支援が必要になります。
まとめ
本セッションを通じて、AI駆動開発とEverything as Codeが単なる技術トレンドではなく、ソフトウェア開発の本質的な変革を促すものであることが理解できました。
最近では生成AIによるコーディングエージェントが登場し、開発エンジニアの働き方も一変してきており、生成AIを使った開発から、生成AIと協業して開発する手法へと変わってきていることを実感しています。
コーディングエージェントを使う中でも、生成AIへの効率的な情報の渡し方は課題となっており、今回のEverything as Codeはとても興味深いプラクティスでした。
自分なりの「AI駆動開発の型」を編み出し、それを組織全体で共有・発展させていく文化を醸成していきたいと思います。