AI駆動開発時代におけるCI/CDやインフラについて
※本記事はまだ記述中です。後日更新予定です。
本エントリはクリエーションラインアドベントカレンダー 11日目の記事です。
世間と同様にクリエーションライン社内でも生成AIを利用したAI駆動開発について話題が尽きず、bolt.newの登場によって、今後の開発について更により活発な議論が繰り広げられています。
私は元々Kubernetesなどを中心したインフラエンジニアであることもあり、CI/CDやインフラ目線でAI駆動開発について考えてみたいと思います。
bolt.newのような生成AIによる開発は現在のところプロトタイプ開発やPOCなどで主に使用されるでしょう。
これはAIによる生成物がまだプロダクションの品質ではないということもありますが、
顧客と会話しながら要望がすぐに反映されて動くものが見えるということがプロトタイプ開発にマッチしているからだと思います。要望を追加したり、意見を変えても文句ひとつ言わず対応してくれますしね。(Token量で追加課金が必要ですが)
ただ、近い将来AIの品質も向上するし、品質よりもリリース速度をより優先するプロダクトが出てくる可能性もあります。例えば、開発者が品質を考慮して作成した場合30日かかるとします。AIで生成すると1日で作成できます。※AIで作成した場合も最低限のテストは実施している想定。
早くリリースできるということはその分だけユーザのフィードバックやサービスそのものへの改修に時間をあてることができます。30倍の速度でリリースができるので、同じ時間で30のサービスをリリースするようなゲームチェンジャーも現れるかもしれません。もちろんプロジェクトの種類や業界によって求められる品質は異なりますが、そのような可能性があるということになります。
サービスの企画側や提供者は開発者ほどコードの品質を気にしてなく、中身がブラックボックスであっても機能テストが通っていれば問題ないと考える人も多いかと思います。開発者は品質の重要性を訴えていくのが、仕事になるかもしれません。
話を一旦戻しまして、CI/CDについて一度おさらいしたいと思います。CI/CDとは「Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー)」の略称です。
- 開発チームの各環境でのビルド、テスト、およびデプロイメントを統合的に管理し、自動化を行うことにより開発チームの負荷を増やすことなく迅速かつ頻繁にリリースを継続できる環境を提供します。
- 自動テストやセキュリティチェックもパイプラインの中で実行することができ品質の向上やセキュリティ強化なども図れます。
1. AIによる継続的開発
AIが生成したコード(およびそれを元にしたアプリケーション)に対し、フィードバックを行いコードの修正を行うを繰り返すことは
CI/CDをより高速に回すことにも似ています。
ただし、生成AIによる変更は改善が必要な個所の修正のみではなく全体を大きく変更してしまう可能性があります。
変更前のソースをバックアップしておく必要があると有識者の方も仰っています。
また、生成AIによってどのような変更が行われたのかについても生成AI側のみで履歴として残っており、開発者が統合的に履歴を追うことができません。
直接開発者がコードの修正を行うこともあるが、開発者が行った更新とAIが変更した更新が明確にわかる必要があります。
少し脱線しますが、copilotなどを使用してコードの一部を生成AIで作成してもらう、つまり補足的な使い方の場合、
コードをコミット/マージした人がコードに責任があるべきではという議論があるようです。
少量のコードであれば可能であるが、難しい議論だと思います。
話を戻すとCI/CDツールのコード管理として以下の機能が求められると思われます・
- AIによる修正、変更を管理し、巻き戻しにも対応できること
- 変更内容、つまりAIに対して入力したプロンプトも管理できること
- AIによる修正なのか、メンバーによる修正なのかを分類できること
- AIによる大量の変更に対応できること (履歴やログの増加)
2. 品質の向上
現在の生成AIにおいてもテストコードの追加を要望すれば...