こんにちは。テクマトリックスの長久保です。

本ブログは、以下のオンラインセミナーの内容をまとめたものです。
普段のブログとは異なり、私個人の考えを元に作成していますので、一つの考え方として参考にしていただければ幸いです。

ソフトウェア開発基盤構築ソリューションチームでは、定期的に開発環境に関わるセミナーを実施していますので、ぜひ情報収集方法の1つとして役立てていただければと思います。
https://www.techmatrix.co.jp/product/software-dev/seminar/special/index.html

はじめに

GitHub CopilotやChatGPTなど、生成AIによるコード自動生成も当たり前の時代になってきました。
セミナー内でアンケートを取らせていただいたのですが、今回のセミナー参加者の方も多くの人がAIを活用されているようでした。

例えばAIエージェントを用いると次の様な簡単な指示でも、電卓を作成してくれます。

こちらはClineを利用して実行した画面です。AIエージェントを利用することで、Visual Studio Code上でコードを自動生成することも可能になりました。

また、現在開発を取り巻く環境はどんどん変化しています。
例えば以下のように「素早く」開発するニーズについては様々な場所で語られていることでしょう。

IPA 独立行政法人 情報処理推進機構, DX白書2021_第4部 DXを支える手法と技術
https://www.ipa.go.jp/publish/wp-dx/qv6pgp0000000txx-att/000093702.pdf,  (閲覧日: 2025-06-02)

こういった世の中のニーズと生成AIによるコードの自動生成はとても相性がよさそうです。AIにコードを書かせれば開発効率が上がる、そう考える人もいるかと思います。
しかし、ここで「AIが生成したコードの品質は、誰が担保するのか」という問題に直面します。

AIが生成するコードの課題

生成AIは確かに便利ですが、完璧ではありません。AIが生成するコードには以下のような問題が潜んでいる可能性があります。例えば以下のケースは当然AIが生成したコードでも発生し得ます。

  • 一見正しく見えるが、エッジケースで動作しないコード。基本的なケースは動くが、境界値や例外処理に問題がある
  • セキュリティ上の脆弱性を含むコード。SQLインジェクション、XSS、認証の不備など
  • プロジェクトの規約やアーキテクチャを無視した実装。可読性、保守性の観点で良くない。
  • ライセンス上問題のあるコードの混入リスク
    public ResultSet searchUser(String username) throws SQLException {
        Statement stmt = connection.createStatement();
        String query = "SELECT * FROM users WHERE name = '" + username + "'";
        return stmt.executeQuery(query);
    }

先日生成AIに書いてもらっていた際に出力されたコードです。個人的に利用するツールだったため、無視しましたが、製品のコードに混在していては非常に大きな問題になり得ます。

これらはAIに限らず人間でも起きることです。そのため通常開発プロセスにはコードレビューが挟まり、品質を担保します。

ただ、人間と異なるのは生成AIのコードの生成速度の方が圧倒的に早いという点です。

CIなしでAI生成コードを導入するとどうなるか

CIが整備されていない状態で生成AIを導入しようとすると、人間がボトルネックになります。AIが高速でコードを生成しても、それをチェックする仕組みがなければ、人間がすべてを目視でレビューしなければなりません。結果としてレビュー負荷が高まってしまい本来の業務ができなくなったり、レビュアーが見逃してしまい、品質の低いコードが混入するということも起きるでしょう。

CIがAI生成コードの品質を担保する

ここでタイトルの「なぜいまCIが必要なのか?AI時代に備えた開発プロセス改革」が大切になってきます。CIを導入することで品質ゲートを設けることができます。

開発者の指示 → AI がコード生成 → プルリクエスト or コミット → CIで自動検証 → レビュー → マージ

CIが以下のチェックを自動で行います。

  • 静的解析がコードの問題を検出
  • 単体テストが機能の正しさを確認
  • SBOMチェックが依存ライブラリの問題を検出

AIが生成したコードであっても、人間が書いたコードであっても、同じ基準でチェックされます。これにより、コードがどう作成されたかに依存せず、一定の品質を担保できるようになります。

先ほどのSQLインジェクションの例も、静的解析を行っていれば検出ができます。最近の生成AIは、例えばJavaですとMavenビルド用のpom.xmlの更新も含め自動で実行してくれます。そうなると今までよりもSBOMチェックの重要性は増してくるでしょう。

「AIがコードを書き、CIがチェックする」というワークフローが確立されれば、人間のレビュー負担は大幅に軽減されます。開発者は本来の設計やお客様のための機能開発に集中できます。

変化する点と変化しない点

生成AIの世界ではモデルやサービスが日々進化しています。ChatGPTやGemini、Claudeなど様々なモデルが次々と登場し、コード生成の精度も向上し続けています。

コードの生成だけでなく、脆弱性やテスト生成の精度を高める方向での進歩もめまぐるしいものがあります。
効率と品質を両立する「AI時代の開発ワークフロー」とは?のオンラインセミナーでも触れたように、弊社取り扱い製品である「dotTEST」でも生成AI連携ができるようになり、より効率的にテストができるようになってきています。また、最近ですと、コードの脆弱性を修正するためのAIエージェント「CodeMender」がGoogleから発表されました。
Introducing CodeMender: an AI agent for code security

これからも様々なツールやサービスが公開されていくでしょう。

ただ、開発者がしたい以下のことは変わらないと思います。

  • 高品質なソフトウェアを作りたい
  • 効率的に開発を進めたい
  • セキュアなシステムを維持したい

AIモデルがどれだけ進化しても、生成されたコードの品質を担保する仕組みの重要性は変わりません。むしろ、AIの活用が進むほど、その重要性は増していくと思います。

この先について確たることは言えないものの、AIが前提となった開発が本格化する前にCI基盤を整えておくことを強く推奨します。

よくあるQ&A

良くいただく質問についても少し触れておきます。

Q:CIの導入には時間がかかるのでは?
A:最小限のCIであれば、そこまで大がかりにしなくても導入可能です。最初から完璧を目指さず、段階的に拡充していくアプローチをお勧めします。もしお困りの際は、弊社のソフトウェア開発基盤構築ソリューションにご相談ください。

Q:小規模なプロジェクトでもCIは必要?
A:むしろ小規模なうちに導入すべきです。プロジェクトが大きくなってからの導入は、既存コードへの対応や関係者への周知・定着が大変になります。最初から習慣化しておく方が良いです。

Q:AIのコード生成能力が向上すれば、CIは不要になる?
A:個人的にはそうは思いません。AIの能力が向上しても、「検証」の必要性は変わりません。AIが生成するコード量が増えるほど、自動的な品質チェックの重要性は増します。人間のコードにもレビューが必要なように、AIのコードにも検証が必要だと思います。

Q:CIでのチェックが厳しすぎると開発速度が落ちるのでは?
A:導入初期はそう感じることもあるかもしれないですが、長期的には逆です。CIがない環境では、本番障害対応やバグ修正に時間を取られ、結果として開発速度が低下します。CIは「シフトレフト」の典型例だと思います。

まとめ

生成AIによるコード自動生成が普及する今、CI環境の整備はこれまで以上に重要になっています。

  • AIが生成するコードは完璧ではないため、品質チェックの仕組みが必要
  • CIを品質ゲートとして導入する。コードの変更があるたびに、人間が書いたコードもAIが書いたコードも同じ基準でチェック。
  • CIなしでAIを導入するとレビュー負荷が爆発し人間がボトルネックになったり、レビューの見落としなどによる品質低下のリスクが高まる。

生成AI時代において、CIは単なる開発ツールではなく、必須のインフラかと思います。もしまだCI環境を導入していないのであれば、今のうちに整えていきましょう。

宣伝

弊社では、CI環境構築以外にも様々な環境構築・運用支援、コンサルティングサービスを提供しています。詳しい内容はこちらでご紹介しています。CI/CDや開発環境構築、運用でお困りの方はご相談ください。

By nagakubo

主にCI環境構築をメインで担当しています。 Certified CloudBees Jenkins Engineer (CCJE)