theNet by CLOUDFLARE

AI支援開発に関するCTOガイド

エンジニアリングプロセスにAIを組み込む際に考慮すべき事項


生成系AIには多くの利用方法がありますが、企業にとって、AIによる開発支援がもたらすメリットが大きく期待できます。世界初のAIソフトウェアエンジニアであるDevin AIのような最近のイノベーションにより、AIの統合は、エンジニアリングプロセスと成果物全体の効率を向上させようとするテクノロジーリーダーにとって、魅力的な選択肢となっています。

組織がコード開発にAIを組み込む方法はいくつかあります。その1つが、GitHub Copilotのようなツールを使って定型コードを自動的に作成し、AIによるペアプログラミングペアプログラミングを実施する方法です。もう1つの方法は、Devinのような自律型のAIデベロッパーを活用し、人間の開発者と共に独立して作業する可能性を持たせることです。

AIによる支援を受けながら行う開発は、企業にいくつかの利点をもたらし、今後の開発の未来を形作るでしょう。しかし、テクノロジーの利点を最大限に活かすために管理しなければならないさまざまなセキュリティリスクももたらします。


AIを活用した開発のメリット

開発者の81%が既にGitHub Copilot、Tabnine、Amazon CodeWhispererなどのAIベースのコーディングアシスタントを使用して、質問への回答や難しいコードを記述しています。AIがますます進化し普及するにつれて、開発チームはますますAIへの依存度を高めるでしょう。

開発にAIを取り入れることは、開発チームにとって以下のような潜在的な利点があります:

  1. 効率性の向上:AIは、基本的な質問への回答からコードの自動生成、UIの自動設計まで、さまざまな開発タスクを自動で行うことができます。これにより、市場投入までの時間を短縮し、開発コストを削減し、企業は少ない人材でより多くのことを行えるようになります。ある調査によれば、GitHub Copilotを使うことで、開発者はコーディングタスクを55%速く完了できることがわかりました。この効率向上によって、組織は人員を削減したり、生成するコードの量を劇的に増やすことができます。

  2. 開発者の疲弊を低減:生成AIには定型コードの作成を自動化する機能があるため、開発者は単純なコードを繰り返し記述する必要がなくなります。開発者エクスペリエンスを向上させることで、開発者がそれらの作業にうんざりして疲弊したり、離職してしまうリスクを低減することができます。2023年には開発者の73%が、キャリアの中で燃え尽きを経験したと回答しています。開発者の60~75%が、AIによるタスクの自動化が仕事の満足度を向上させると回答しています。

  3. より良いコード品質:AIはコードの記述に加え、開発プロセス中のコードに関するバグや脆弱性、その他の問題を自動的に検出することもできます。本番環境に入る前に問題を発見して解決することで、パッチの発行やデータ漏えいの修復に時間とリソースを浪費するリスクを低減することができます。

  4. 専門的な開発:AIは、開発チームが知識や経験の問題から社内で対応できない専門的なコードを記述することができます。専門知識が不要になることで、外部の専門家を雇ったり、その分野の専門家を惹きつけるための多額の報酬を支払う必要がなくなります。

  5. 開発者への教育とスキルアップ:生成AIは、開発者に「必要なとき即座に」トレーニングを提供し、コードのセキュリティを強化し、開発初心者をより早く育成できる可能性を持っています。平均して、開発者はAIによるコード提案の30%を採用しているされ、開発初心者になるとその採用率はさらに高くなります。これにより、脆弱性管理のコストが削減され、企業は開発チームの能力を最大限に活用できるようになります。


AI開発のリスク

生成系AIは強力なツールですが、完璧なソリューションではありません。AIを開発プロセスに組み込むかどうか、またどのように組み込むかを検討する際には、CTOはリスクや組織への影響も考慮する必要があります

最近発生したサムスンの情報漏洩は、AI利用の適切な管理を怠った場合のリスクを示す典型的な例です。同社は以前、生成AIの利用を禁止していましたが、従業員の生産性向上のためにその禁止を解除しました。その後3週間足らずで、同社は半導体の研究開発データ、ソースコード、社内会議の記録などの機密情報を、コードのエラー修正や会議の議事録の自動生成を試みる中で、ChatGPTに漏洩させたとされています。このデータはOpenAIがアクセス可能で、モデルの訓練に使われた可能性があり、結果として他のユーザーにも公開されてしまう可能性があります。

開発にAIを利用することの最大のリスクには、次のようなものがあります:

  1. 機密データの漏洩:生成AIツールは常時学習するように設計されており、ユーザーが入力した情報を元にモデルを訓練することがあります。生成AIツールに対して入力された機密データやコードサンプルがモデルの一部となり、他のユーザーに表示される可能性があります。2023年に、サムスンがChatGPTを介して計らずも半導体の機密データを流出させてしまいましたが、これらのツールはプライベートなAPIエンドポイントなどの機密情報を提案に含めることもあることが調査で確認されています。

  2. 低品質なコード:生成AIは完璧ではなく、誤った回答やや低品質のコードを生成する可能性があります。自動生成されたコードを使用すると、ユーザーエクスペリエンスに悪影響を与えたり、アプリケーションに脆弱性を生じさせたりする可能性があります。

  3. コードの理解度の低下:開発者はコードを書き、その理解も持っているため、問題が発生した際に「即時に対処」することができます。AIが生成したコードはブラックボックスのようなもので、何か問題が発生した場合に開発チームが修正することが難しくなる可能性があります。

  4. AIのハルシネーション:開発において、AIのハルシネーションが原因で、生成AIが存在しないパッケージやライブラリの使用を推奨することもあります。攻撃者がこの存在しないパッケージを作成した場合、これを使用するように作成したアプリケーションに、脆弱性や悪意のあるコードを挿入することができます。

  5. ライセンスの問題:AIの推奨や自動生成されたコードが、ライセンス条件に対応しないサードパーティ製コードを使用する場合があります。例えば、AIがコピーレフトライセンスのコードを使用した場合、組織はそのコードをオープンソース化する必要があるか、知的財産権に関する訴訟に直面する可能性があります。

  6. クラウド支出の増加:AIで生成されたコードは、有料サービスを要求したり、ストレージ、コンピューティング、その他のクラウドリソースを利用する上で効率性が考慮さていない可能性があります。その結果、最適化されていないコードによりクラウドに対するコストが増加する可能性があります。

ソリューションのロックイン:AI支援のコーディングアシスタントはまだ発展途上で、新しいソリューションが定期的に登場しています。ワークフローに特定のソリューションを組み込むと、効率が低下したり、新しいテクノロジーが登場した際に高額な切り替えを余儀なくされたりする可能性があります。


AI開発のリスクを管理する

AIには数多くの潜在的利点があり、開発の未来を形作る可能性があります。理想的には、生成AIによって、企業は少ないリソースと短いタイムラインで、より洗練された効率的かつ安全なコードを作成できるようになります。開発にAIを利用することを許可しない企業は、競争に負けたり、優秀な人材を失うリスクがあります。

しかし、開発プロセスを向上させるためにAIを活用しようとするCTOは、この技術のリスクも考慮し、管理する必要があります。以下に、開発にAIを利用する事による最大のリスクを軽減または排除するのに役立つ8つのベストプラクティスを紹介します:

  1. AIが推奨した内容を検証する:AIのハルシネーションはよくある問題であり、こうしたミスはソフトウェア開発において極めて大きなダメージを与えかねません。AIシステムによって生成されたコードと情報を使用する前に、その正確性を自身で確認するようにしてください。

  2. AIのデータリスクを管理する:AIにプログラミングの質問をしたり、定型コードを生成させたりすることは、比較的低リスクです。しかし、機密である知的財産を提供してエラーをチェックさせたり質問すると、データ漏えいのリスクがあります。漏えいのリスクを管理するために、AIの適切な使用について開発者を教育し、データ損失防止(DLP)対策を実施してください。

  3. DevSecOpsの実装:AIはコード開発を迅速に進める一方で、開発者は自分が書いているコードの理解度が低下することがあります。セキュリティに重点を置いた要件の作成やテストなど、DevSecOpsのベストプラクティスを実施することで、セキュリティ上の問題が見落とされるリスクを減らすことができます。

  4. セキュリティテストの自動化:AIが生成したコードは、組織のコードベースに脆弱性や機能しないコードを盛り込んでしまう可能性があります。静的アプリケーションセキュリティテスト(SAST)や動的アプリケーションセキュリティテスト(DAST)などのセキュリティテストを自動化されたCI/CDパイプラインに組み込むことで、安全でないAI生成コードの影響を限りなく小さくすることができます。

  5. 機能的テストおよび非機能的テストの実施:AIが生成したコードは、脆弱性をもたらすだけでなく、低品質であったり、機能しないこともあります。機能要件と非機能要件の両方についてユニットテストを実施することで、コードが正しく機能し、性能も確保することができます。スタイルガイドとプログラミングのベストプラクティスへの準拠を強化することも、問題のあるコードの特定と回避に役立ちます。

  6. ソフトウェアサプライチェーンの監視:AIはパッケージやライブラリを推奨・使用することがありますが、その中には脆弱性や悪意、または存在しないパッケージや、ライセンス条件が合わないものが含まれる可能性があります。ソフトウェア構成分析(SCA)の実施とソフトウェア部品表(SBOM)を維持することは、アプリケーションの依存関係の可視化と、リリース前の検証に役立ちます。

  7. 実行時の保護の実装:開発者による最善を尽くしても、脆弱なコードが本番環境に到達する可能性は残ります。そのため、アプリケーションをWAF、WAAP、RASPなどの防御策で保護し、実行時に攻撃をブロックできるようにする必要があります。

  8. 社内AIの検討:オープンソースの大規模言語モデル(LLM)を利用すれば、企業は自社内でAIシステムを運用できます。AIを社内に留めることで、生成AIを使用することによるデータ漏洩、トレーニングデータの汚染、その他のリスクの脅威を軽減することができます。

Cloudflare for AIは、AIを活用した開発パイプラインやそれが生成するアプリケーションの構築、ホスト、防御に必要なツールをCTOに提供します。AIの力を活用し、セキュリティ・バイ・デザインを実装する方法について学びましょう。

この記事は、技術関連の意思決定者に影響を及ぼす最新のトレンドとトピックについてお伝えするシリーズの一環です。


このトピックを深く掘りさげてみましょう。

電子書籍『コネクティビティクラウド:ITとセキュリティの制御を取り戻す方法』で、AIプロジェクトを簡素化し、安全に進める方法について詳しく学びましょう。



記事の要点

この記事では、以下のことがわかるようになります。

  • AIを使用した開発がエンジニアリングプロセスにもたらすメリット

  • ソフトウェア開発にAIを利用するリスク

  • AIを使用した開発のリスクを軽減または排除するための8つのベストプラクティス


関連リソース


大人気のインターネット関連インサイトの要約を毎月お届けします。