0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIDLC(AI-Driven Development Lifecycle)を学んで感じたこと ─ AIは開発ライフサイクルをどう変えるのか?

0
Posted at

はじめに

最近、社内の勉強会でAIDLC(AI-Driven Development Lifecycle)というテーマが上がった。

最初に聞いたとき、「まあAIでコード補完するやつでしょ」くらいに思っていた。でも調べてみると、それは全然一部の話でしかなくて、要件定義からリリース後の運用まで、開発ライフサイクル全体にAIを組み込むという考え方だと知った。

日々の業務でGitHub CopilotやClaude、ChatGPTを使いながらも「なんとなく便利だな」で止まっていた自分にとって、AIDLCはその活用を体系的に整理する良いフレームワークになった。

この記事では、AIDLCの概要と開発工程ごとのAI活用例を整理しつつ、実際に使ってみて感じたリアルなメリットや課題を書いていく。


AIDLCとは?

AI-Driven Development Lifecycle の意味

AIDLCは、AIを開発工程の特定の場所だけでなく、ライフサイクル全体のドライバーとして位置づける開発アプローチのこと。

従来の開発では、AIはせいぜい「コーディングの補助」として末端に使われることが多かった。AIDLCはそれを拡張して、要件定義・設計・実装・テスト・レビュー・運用の各フェーズにAIが関与することを前提とした考え方だ。

従来開発との違い

観点 従来の開発 AIDLC
AIの関与範囲 コーディング補助が中心 全フェーズ
ドキュメント 手動作成が基本 AI生成+人間レビュー
テスト設計 経験則に依存 AI補助+観点生成
障害対応 手動ログ確認 AI分析+サジェスト

なぜ今注目されているのか

LLMの精度向上で、AIが「それなりに文脈を理解してアウトプットを出せる」ようになってきた。これにより、コード生成だけでなく、ドキュメント作成・テスト観点整理・レビュー補助まで実用レベルに達しつつある。開発速度を上げながらも品質を落とさない手段として、AIDLCは現実的な選択肢になってきた。


開発工程ごとのAI活用例

要件定義フェーズ

  • 要件整理:ヒアリング内容をAIに投げて、整理・箇条書き化・不足点の指摘を受ける
  • ユースケース生成:概要仕様からユースケース図やシナリオ文を自動生成し、抜け漏れを早期発見

ここでAIを使うと、「こんな考慮が抜けてませんか?」と問われる感覚があって、レビュアーとして優秀だと感じた。


設計フェーズ

  • 基本設計書・詳細設計書:テンプレートとコンテキストを渡すだけで初稿が出てくる
  • API仕様整理:エンドポイント一覧や入出力パラメータをMarkdown/OpenAPI形式で整理
    設計書作成は「時間はかかるが思考は少ない」作業が多い。AIはその部分を肩代わりしてくれるので、自分はより上位の「設計判断」に集中できるようになった。

実装フェーズ

  • コード生成:関数仕様を渡せばベースコードを生成
  • リファクタリング提案:既存コードの問題点指摘と改善案の提示
  • テストコード生成:実装コードから単体テストを自動生成

試験フェーズ

  • 試験項目書作成:仕様書から試験観点を抽出し、試験ケースを列挙
  • テスト観点生成:正常系・異常系・境界値・セキュリティ観点など、視点の抜け漏れを補完
    ここは特に効果を感じた。ベテランエンジニアの「経験値」に依存していた試験設計が、AIによってある程度民主化される感覚がある。

レビューフェーズ

  • MRレビュー補助:差分コードの問題点・改善提案を事前整理
  • 設計レビュー:設計書の論理的一貫性チェック
  • セキュリティ観点:SQLインジェクション・認証漏れなどの典型的リスクを指摘

運用フェーズ

  • 障害分析:エラーログをAIに投げて原因候補を洗い出す
  • ログ解析:大量ログの傾向分析と異常検知
  • ナレッジ整理:障害対応の振り返りをドキュメント化

実際のAI活用事例

抽象的な説明だけでは伝わりにくいので、実務で取り組んだ具体的な事例を紹介する。


事例1:詳細設計書の作成

課題

既存システムへの機能追加に際して、詳細設計書の作成が必要だったが、コードベースが大きく仕様理解に時間がかかっていた。担当者によって設計書の粒度もバラバラで、属人化が課題になっていた。

AIへの入力内容

対象モジュールのソースコード一式と、設計書テンプレートを渡したうえで、以下の条件を明示した。

  • 「推測で補完しない。必ずコードの記述を根拠にすること」
  • 「不明な仕様は"要確認"と記載すること」
  • 「クラス図・シーケンス図はMermaid記法で出力すること」
    AI出力

コードベースに忠実な設計書の初稿が生成された。根拠が明示されているため、どの記述がコードのどの部分に対応するかが追いやすかった。"要確認"タグも適切に入っており、確認漏れを防げた。

得られた効果

初稿作成にかかる時間が約半日から1〜2時間程度に短縮された。レビュー工数をゼロから確認する作業ではなく、品質チェックに集中できるようになった。

注意点・人間が最終判断した内容

AIはコードに書かれた通りに出力するため、設計の妥当性までは判断しない。「このロジックで本当に要件を満たしているか」「他モジュールへの影響はないか」は、エンジニアが責任を持って判断する必要があった。


事例2:試験項目書の作成

課題

画面仕様書から試験項目を起こす作業は経験則に依存しており、担当者によってテスト観点の網羅性にばらつきがあった。特に異常系・境界値・セキュリティ観点が抜けやすかった。

AIへの入力内容

画面仕様書と詳細設計書を渡し、以下を指定した。

  • 「正常系・異常系・境界値・セキュリティ・UI観点に分類すること」
  • 「各項目に"期待結果"と"確認方法"を含めること」
  • 「ユーザー権限ごとにアクセス制御の観点も含めること」
    AI出力

観点ごとに分類された試験項目一覧が出力された。入力値の境界値(最大文字数・空欄・特殊文字)や、想定外の操作フロー(二重送信・ブラウザバック)なども網羅されていた。

得られた効果

試験項目書の作成時間が大幅に短縮され、ベテランエンジニアのレビューも「観点の抜け漏れが少ない」との評価を得た。特に若手メンバーの試験設計品質が底上げされた。

注意点・人間が最終判断した内容

AIが生成した試験項目は「典型的な観点」に強く、システム固有のビジネスルールや過去の障害傾向は考慮されない。そのため、ドメイン知識を持つメンバーが「このシステム特有の観点」を追記する工程は必須だった。


事例3:MRレビューの補助

課題

Pull Request(MR)のレビューで、変更差分の影響範囲を把握するのに時間がかかっていた。特にリファクタリングを含むMRは「何が変わって何が変わっていないか」の判断が難しく、レビュー品質にばらつきが出ていた。

AIへの入力内容

GitのDiff出力と、変更対象モジュールの概要を渡したうえで以下を依頼した。

  • 「変更内容を要約し、影響範囲を洗い出すこと」
  • 「潜在的なバグ・パフォーマンス劣化・セキュリティリスクを指摘すること」
  • 「レビュー時に確認すべき観点をチェックリスト形式で出力すること」
    AI出力

変更の意図の要約、影響を受ける可能性のある関連処理の列挙、レビューチェックリストが出力された。型の不整合や、nullチェック漏れの可能性なども指摘された。

得られた効果

レビュアーがDiffを読み込む前段の「概要把握」工数が削減され、重要な観点に集中してレビューできるようになった。レビュー時間が体感で2〜3割短縮された。

注意点・人間が最終判断した内容

AIのレビューはあくまで補助であり、**「この変更がシステム全体の設計方針と合っているか」「チームのコーディング規約に沿っているか」**といった文脈判断は、人間のレビュアーが担う必要がある。マージ可否の最終判断は常にエンジニアが行った。


事例4:CI/CD・AWSインフラ設定の差分調査

課題

STG環境と本番環境でデプロイ後に動作差異が発生した。ECSのTaskDefinitionやIAMポリシーの設定差分を手動で追うのが困難で、調査に時間がかかっていた。

AIへの入力内容

STG・本番それぞれのTaskDefinition JSONとIAMポリシーJSONを貼り付け、以下を依頼した。

  • 「2環境の差分を項目ごとに比較表で出力すること」
  • 「動作差異につながりそうな設定の違いを優先的に指摘すること」
  • 「本番のみに存在する設定、STGのみに存在する設定を分けて整理すること」
    AI出力

環境差分の比較表と、問題につながりそうな設定の優先度付き一覧が出力された。環境変数の値の違い・IAMポリシーの権限スコープの差異・コンテナリソース設定の不一致などが整理された。

得られた効果

手動での設定比較に1〜2時間かかっていた作業が、AIを使うことで15〜30分程度に短縮された。原因箇所の特定が早くなり、障害対応全体のMTTR(平均復旧時間)改善につながった。

注意点・人間が最終判断した内容

AIは設定の「差分」は見つけられるが、「その差分が意図的なものか、バグなのか」は判断できない。設定変更の経緯・意図を知るエンジニアが、差分の一つひとつを「これは正しい差分か」と判断する工程は必要だった。


事例5:障害発生時のログ解析

課題

本番障害発生時に大量のアプリケーションログ・AWSログが出力され、原因に関係するログを特定するだけで時間を消費していた。

AIへの入力内容

エラー発生時刻前後のログ(CloudWatch Logsの出力)を貼り付け、以下を依頼した。

  • 「エラーの発生順序を時系列で整理すること」
  • 「根本原因として考えられる箇所を優先度付きで挙げること」
  • 「関連するエラーコード・スタックトレースを要約すること」
    AI出力

エラー発生の時系列サマリと、原因候補の優先度リストが出力された。「DBコネクションタイムアウト → 後続処理の連鎖エラー」という流れが整理され、調査の起点が明確になった。

得られた効果

障害の初動調査時間が大幅に短縮された。対応メンバーが一目でログの全体像を把握でき、原因特定と暫定対応の判断が早くなった。

注意点・人間が最終判断した内容

AIの分析はあくまで「ログに書かれた情報」に基づくものであり、インフラ構成・デプロイ履歴・直前の変更内容などの文脈はAIには伝わらない。これらを加味した根本原因の断定と、恒久対応の判断はエンジニアが行った。


実際にAIを使って感じたメリット

設計書作成の効率が劇的に上がった

以前は設計書の初稿を書くのに丸半日かかることもあった。AIにたたき台を作らせ、自分が肉付け・修正するスタイルに変えてから、作業時間が体感で3〜4割削減された。

試験項目の整理がラクになった

「このケース、抜けてないか?」の確認をAIに任せられる。自分では気づきにくい境界値や異常系を指摘してくれる。

ドキュメント生成が苦じゃなくなった

エンジニアが一番サボりがちなドキュメント。AIが下書きを作ってくれるなら、完成度を上げるだけでいい。チームへの共有もスムーズになった。

調査時間が減った

「このエラー何?」「このライブラリどう使う?」といった調査をAIに聞くことで、ドキュメントを読み漁る時間が大幅に短縮された。


一方で感じた課題

AI生成内容を鵜呑みにできない

生成されたコードや設計書に誤りが混入することがある。「それっぽいアウトプット」がかえって危険で、しっかりレビューできる目がない人には諸刃の剣だと感じた。

ブラックボックス化のリスク

「AIが作ったから大丈夫」という意識が積み重なると、誰もコードや設計を深く理解しないまま開発が進む。保守フェーズで痛い目を見るのは明らかだ。

保守性の低下

AIが生成するコードは「動く」が「読みやすい」とは限らない。スタイルや命名規則がバラバラになりがちで、長期運用に耐えられない設計になることもある。

理解不足のまま進める危険性

若手が「AIが言ったから」で実装を進めると、自分の中に技術知識が蓄積されない。AIを使うことで成長機会を失うリスクは、チームとして真剣に向き合う必要がある。


個人的な感想

AIDLCを学んで、一番強く感じたのは次のことだ。

「AIはエンジニアを置き換える存在ではなく、開発ライフサイクル全体を加速させる存在だ」

AIが仕事を奪うかどうかという議論は続いているが、少なくとも今の段階では、AIは判断できない。要件の優先順位をどうするか、どこをトレードオフにするか、ユーザーにとって本当に価値があるものは何か──こういった判断は人間にしかできない。

そしてもう一つ、5つの事例を通じて実感したことがある。

「AIを使うほど、設計力・レビュー力・判断力の重要性が増す」

これは逆説的に聞こえるかもしれないが、事例を振り返ると一貫してこの構造になっていた。

  • 設計書の初稿はAIが出せる。でも「この設計が本当に要件を満たしているか」を判断するのは設計力だ。
  • 試験項目はAIが網羅できる。でも「このシステム固有のリスクは何か」を見極めるのはドメイン知識と経験だ。
  • ログの整理はAIが速い。でも「この差分は意図的か、バグか」を判断するのはシステムへの理解だ。
    AIが生成したアウトプットを活かすも殺すも、最終的にはエンジニアの判断力にかかっている。AIを使えば使うほど、その判断を下す場面が増える。つまり、AIはエンジニアの判断力を代替するのではなく、判断が求められる回数と質を引き上げる存在だと感じた。

裏を返せば、設計力・レビュー力・判断力のないエンジニアがAIを使っても、「それっぽいアウトプット」を量産するだけになりかねない。AIを本当に活かすには、技術的な基礎力と思考力こそが武器になる。


まとめ

AIDLCは、「AIを便利ツールとして使う」から「AIを開発プロセスの一員として組み込む」へのパラダイムシフトだ。

今後、チームや組織の単位でAIDLCを導入する動きは加速していくと思う。個人の生産性向上だけでなく、チーム全体の開発速度・品質に直結するからだ。

自分としては、これからも各フェーズでのAI活用を実験しながら、**「どこまでAIに任せて、どこは人間が責任を持つか」**の境界線を探り続けたい。AIをうまく使いこなすことと、エンジニアとして成長することは、矛盾しないはずだから。


この記事が、AI活用を始めたばかりのエンジニアの参考になれば嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?