🤖

AWS Summit 2025セッション感想:AI駆動開発を成功させる「Everything as Code」の実践方法

に公開

AWS Summit 2025セッション感想:AI駆動開発を成功させる「Everything as Code」の実践方法

はじめに

AWS Summit 2025のセッション「AI駆動開発とEverything as Code」(DEV-57)を視聴し、非常に興味深い内容だったため、要点をまとめて感想を共有したいと思います。

このセッションでは、以下の2つの重要なポイントに焦点が当てられていました:

  1. どうすれば生成AIに意図を伝えられるか
  2. どうすれば組織や周りの同僚に生成AIを使った開発の考え方やプラクティスを伝えられるか

特に、IaCを拡張した「Everything as Code」の考え方を導入することで、AIを活用した開発体験を向上させる方法について詳しく解説されており、実践的な内容が多く含まれていました。

本記事では、「1.どうすれば生成AIに意図を伝えられるか」に絞って解説したいと思います。

AIエージェント時代のソフトウェア開発の変革

コーディング支援ツールの進化

セッションでは、コーディング支援ツールの進化を3つのレベルに分けて説明していました:

レベル1:従来のIDE機能

  • IDEやテキストエディタに組み込まれたコード補完・リファクタリング機能
  • 生成AI登場以前から長らく使われてきた基本的な支援機能

レベル2:生成AIによる支援

  • 2023年頃の生成AI進化により実現
  • インラインでのコード補完や提案機能
  • コメントや関数名から関数の中身を自動生成
  • チャットアプリでAIと対話しながらの設計・コード生成

レベル3:AIエージェントによる自律的開発

  • AIエージェント自身が自律的にコード編集、探索、テストを実行
  • プログラミングタスクをエンドツーエンドで完了
  • 人間からAIへのタスク主体の移行

AIコーディングエージェントの仕組み

一般的なAIコーディングエージェント(Claude Code、Amazon Q Developer、Gemini CLI等)は以下のような構造で動作します:

  • オーケストレータとしてのアプリ:LLMに推論させ、外部環境との橋渡しを行う
  • ツールによる環境アクセス:アプリ組み込みツールやMCP(Model Context Protocol)を活用
  • コンテキスト管理:プロンプト文字列の適切な管理

この変化により、テキストデータを使ってコードを編集するタスクの主体が人間からAIに移ったと言えます。よく車の自動運転に例えられ、運転席に座るのが人間からAIに交代したような状況です。

ただし、まだまだ人間からの詳細な指示が必要であり、人間が与える指示によって高い性能を発揮したり、反対に曖昧な指示によって全く見当違いのタスクをこなしてしまうような状態です。

AI駆動開発でよくある2つの悩み

セッションでは、AI駆動開発でよくある悩みが紹介されています。

悩み1:AIが意図した通りに動いてくれない

LLMは確率的に次のトークンを推論するため、文脈の捉え方が広いと全く見当違いの回答が返ってくることがあります。

問題点:

  • プログラミング言語、フレームワーク、ライブラリ、デザインがランダムになる
  • 再現性がない結果となってしまう
  • 本番環境では保守性の高いコードが必要

例えば、下記のような指示はLLMが広い意味での解釈を可能とするため、想定したライブラリやデザインとは異なるものが返ってくる可能性が高いです。

アンチパターン
# 下記のような指示は色んな意味での解釈が可能
# 「HTMLのみを使う」「React + Expressを使う」「Streamlitを使う」等など
TODOアプリを作成してください。 

解決策:

  • エンジニアが期待する振る舞いを言語化し、AIに明確に指示する
  • 確率的な選択のリスクを避ける仕組みづくり
  • AI駆動開発のスキルをエンジニア自身が身につける
グッドパターン
あなたはハーバード大学卒業の優秀なソフトウェアエンジニアです。 # ロール
次の要件にしたがって、TODOアプリを作成してください。

# Claudeの場合はxmlタグでプロンプトを構造化することが推奨されています。
<タスク>
1.フロントエンドを React + Vite で作成
2.バックエンドを Express で作成
3.tsc --noEmit で型エラーを修正
</タスク>

<要件>
- 各タスクの左側に完了ボタンを置く
- ダークテーマを有効にする
</要件>

悩み2:AI駆動開発のスキルや価値が周囲に伝わらない

AI駆動開発の特徴として以下が挙げられます:

  1. 既存スキルの上に構築される:従来のソフトウェア開発プラクティスへの習熟度の上に、言語化と生成AIへの理解を加えて構築
  2. 個人差が大きい:同一の事象に対して人によって異なるアプローチを取る
  3. 実践が必要:外から眺めるだけでは把握できず、自分の手で繰り返し試す必要がある

つまり、ソフトウェアに対する知識(デザインパターンやソフトウェアアーキテクチャパターンなど)が深いほど、AIに対して実現したいアーキテクチャを適切に言語化することができ、結果としてAIの精度が高くなります。

逆に言えば、このような抽象度の高いスキルはAI時代にも必須のスキルであると言えます。

Everything as Codeによる解決アプローチ

Everything as Codeとは

Everything as Codeは、バージョン管理、テスト、デプロイという同じ原則を適用して、ネットワークインフラストラクチャ、ドキュメント、構成など開発ライフサイクルのあらゆる側面の保守性とスケーラビリティを高めることを目的としたソフトウェア開発手法です。

人とAIの協働をスムーズにする理由

Everything as Codeが人とAIの協働をスムーズにする理由:

  1. 変更の追跡可能性:あらゆるものをコードとして管理することで変更が追跡可能
  2. 再現性と一貫性:IaC、Policy as Codeなど、再現性と一貫性を中心とするプラクティス
  3. コンテキストの共有:人間だけが知っている情報を減らし、AIと人間のコンテキストの差を小さくする

実践的なアプローチ

Gitリポジトリを見ればすべて分かる状態」を目指します。

Gitリポジトリには下記のようなものが保存されています。

  • ファイルとして保存されたもの
  • 課題管理やプルリクエスト
  • CI/CDの結果

課題チケットの意思決定プロセスや議論の途中経過をAPIで取得し、LLMに要約させてAIエージェントの指示に活用することも可能になります。

Amazon Q Developerによる開発ライフサイクル支援

セッションではAmazon Q Developerがソフトウェアライフサイクル全体を支援するということにも触れられています。

ソフトウェア開発ライフサイクル全体への対応

エンジニアの仕事はコードを書くだけではありません。下記のようにコーディング以外にも幅広く対応する必要があります。

  1. 機能の計画
  2. ソフトウェア実現のための設計
  3. コーディング
  4. テスト作成
  5. デプロイ・運用

つまり、「3.コーディング」だけを支援するAIではなく、計画、設計から運用まで全てを支援するAIが必要となります。

Amazon Q Developerは、このライフサイクル全体を支援する幅広い機能を提供します:

  • コード生成などのAIコーディングエージェント機能
  • 運用中のトラブル原因調査
  • アーキテクチャ図の設計支援
  • 要件から最適な設計を考案

多様なインターフェース

Amazon Q DeveloperはIDEやCLIなど様々なインターフェースで利用可能で、以下の機能を提供します:

  • コードベースに基づいたチャット
  • インラインでのコード補完
  • AIエージェント機能:与えられたタスクを自律的に解決

Documentation as Codeの実践

Markdownと生成AIの相性

Markdownは以下の理由で生成AIと相性が良いとされています:

  • 記法がシンプルで人間にも記述しやすい
  • 少ないトークン数で文章を構造化可能
  • 実際にOSSやSDKでもAIへの指示のためにMarkdownファイルが活用されている

上記に記載の通り、Markdownなどのテキストフォーマットは人間にも理解しやすいものとなります。
そのため、レビューもしやすくかつAIに対する指示にも扱えるという点から適したフォーマットであると言えます。

ドキュメントの3つの分類

プロジェクトのドキュメントは対象者によって3つに分類されます:

  1. エンドユーザー向け:README.mdやdocs配下

    • プロジェクトの概要や使用方法
  2. 人間とAI両方が参照:CONTRIBUTING.mdやdesign配下

    • ルールや指針
  3. AI専用:instructions配下

    • プロジェクト固有の知識
    • ロールごとの指示

まとめ

AI駆動開発を成功させるためには、単にAIツールを導入するだけでなく、以下のような取り組みが重要であることが分かりました:

  1. 明確な指示の言語化:AIに期待する振る舞いを具体的に伝える
  2. Everything as Codeの実践:人とAIのコンテキスト差を埋める
  3. 組織全体での理解促進:個人のスキル向上と組織への浸透
  4. 適切なツール選択:Amazon Q Developerのような包括的なソリューションの活用

AI駆動開発は単なる技術的な変化ではなく、開発プロセスや思考方法、プログラミングパラダイム全体の見直しを伴う大きな変革です。この変化に対応するため、エンジニア個人のスキルアップと組織全体での取り組みが求められていると感じました。


この記事が、AI駆動開発の導入を検討される方々の参考になれば幸いです。

Discussion