ContractS開発者ブログ

契約マネジメントシステム「ContractS CLM」の開発者ブログです。株式会社HolmesはContractS株式会社に社名変更しました。

AI駆動開発時代、コードの品質とセキュリティをどう守るか

はじめに

最近、セキュリティ関連のウェビナーに参加して、1つびっくりしたことがあります。

「仮に、自分たちがAIを使わない選択をしていたとしても、依存しているOSSにはすでにAI生成コードが入っている」ということです。

自前で全て作っているアプリやサービスでなければ、気づけばAIが書いたコードの上で動いている。世の中の流れは自分たちの意思とは関係なく進んでいて、もうこの流れを止めることはできないほど、AIが世の中に浸透してきていることを強く実感しました。

その昔Googleが出てきて「ググる」が日常になったように、開発のやり方も急速に変わってきている。気づけば自分の中でも行動変容が起きている。。

もう「使うな」では止まらない

いくつかの調査データを見ると、その加速具合がよくわかります:

  • 2028年までに75%の開発者がAIコードアシスタントを利用予定(Gartner)
  • 現状25%のコードがAI生成、2030年までに95%へ(Microsoft)
  • AIコーディングアシスタントの使用を禁止している企業のうち、76%がポリシー違反の利用を認識(2026 OSSRAレポート)

特に3つ目の数字は印象的でした。禁止しているのに76%が使っている。 ただ、それだけみんなAIに興味があるし、実際にやってみて便利で役に立っているから使いたくなってしまう。 その気持ち、とってもよくわかります。

AIが書くコードのどこが危ないのか

これまでの経験から、コード生成においては、AIはかなり進歩を感じています。 時に動かないプログラムだったこともあれど、よほど抽象的な指示をしなければ、かなり正確にこちらの意図を汲んだコードを生成してくれるなという実感があります。 ただ、AIも必ずしも完璧なコードを生成してくれるわけではないというところは考えさせられましたし、もっともなことだと思いました。 AIの学習データにも、脆弱性を含むコードがきっと含まれているし、世の中にはそういうコードが溢れているだろうから、それを元に吐き出すAIのコードも同じように脆弱性を含むコードを生成してしまうこともある。当然と言えば当然ですね。

しかも、全く同じ指示でも毎回同じコードを生成してくれるかというとそうではないといったお話も「確かに」と思いました。

AIは「当たり前」を汲み取ってくれないんですよね。セキュリティ要件は暗黙知が多いからこそ、明示的な指示や検証の仕組みがないと品質を担保できない。この辺りはまだまだ仕組みで補っていく必要があるなと気づかされました。

AI開発の段階と、自分の現在地

ふりかえると、最初はChatGPTやGeminiに質問して答えを聞く→聞いた内容を元に自分の手で編集する、というのが主流でした。それが徐々に、AIに作業の一部や全体をやってもらうスタイルにシフトしていったように思います。

サブエージェントを駆使して作業を任せるところは一部やっていますが、複数のAIが自律的に動いてコードを書いてくれるような使い方はまだまだです。それでも日々AIを使っていく中で、もうAIが欠かせない重要な存在になってきているなと感じます。

そしてここで問題になるのは「AIが書いたコードを人間がどこまでレビューできるか」ということです。

AIが自律的に書くコードの量がさらに増えてくると、全部人力でレビューするのは無理が出てきます。ツールによる自動検証を前提にした開発フローを考えておく必要があると思っています。

攻撃側もAIを使う時代

もう1つ深刻だなと思ったのが、攻撃側もAIで武装しているという現実です。

今後さらにAIの進化が進み、高度なAIモデルが世に出てくると、攻撃する側のスピードも格段に速くなります。脆弱性の発見・悪用のコストとスキルレベルが大幅に低下し、これまで専門知識がなければできなかった攻撃が、ずっと手軽にできるようになってしまいます。

ということは、こちらも素早くパッチを適用していかないと、ほったらかしにしている間に攻撃されてしまう。そんな危険を孕んでいることに危機感を覚えました。

これを「脆弱性パッチの洪水」と表現していたのを聞いて、「なるほど」なと思いました。 発見される脆弱性が爆発的に増え、脆弱性を発見してから攻撃までの時間が劇的に速くなると、これまでの「脆弱性が公開されたら数ヶ月かけてパッチを当てる」サイクルでは、もう間に合わなくなります。修正サイクルそのものの見直しが急務だと感じました。より一層、CI/CDやDevSecOpsの最適化が求められる時代になっていきますね。

じゃあどうするか

自分のチームでも考えていることとしては、静的解析をCI/CDに組み込んでAI生成コードも人間のコードも同じ基準で自動チェックする仕組みを作ること。それからパッチ適用サイクルの短縮もチームとして向き合うべき課題だと思っています。

「速く書ける」だけで終わらせず、品質とセキュリティを仕組みで担保していく。それが次のステップですね。

まとめ

  • AI生成コードは便利ですが、品質・セキュリティの検証は人力では限界があります
  • ツールによる自動検証をCI/CDに組み込む必要があります
  • 攻撃側もAIで高速化しています。修正サイクルの見直しが急務です
  • 本質は「使うな」ではなく「どう安全に使うか」のガバナンス設計です

AIで速く書けるようになった分、品質・セキュリティの担保にどう向き合うかというのは新たな課題です。速さもさることながら、安全・品質のバランスを仕組みで解決していかなければと思っています。

参考資料