第11章. コード生成を超えてAIを活用した開発の未来
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
バイブ・コーディングは、AIが私たちのプロンプトから 、コードを生成することから始まったかもしれないが、その意味はコードを書くだけにとどまらない。 AI技術が進歩するにつれて、ソフトウェア開発ライフサイクルのあらゆる側面をトランスフォーマーする態勢が整いつつある。この章では、ソフトウェアにおけるAIの役割が将来どのように拡大するかについて、推測的ではあるが情報に基づいて考察する。AI主導のテスト、デバッグ、メンテナンス、AIがソフトウェア設計やユーザ体験のパーソナライゼーションにどのような影響を与える可能性があるか、AIの支援によるプロジェクト管理の進化、さらにはプログラミング言語そのものの未来までを探る。その目的は、AIが単なるコードジェネレーターではなく、ソフトウェアエンジニアリングに総合的に参加する未来を想像することである。
テスト、デバッグ、メンテナンスにおけるAI
あなたが(手書きであれバイブコーディングであれ)機能を記述するとすぐに、AIツール( )がその機能の単体テストスイートを即座に作成し、潜在的なバグを発見し、おそらくは数秒のうちにそのバグを修正するような未来の開発環境を想像してみてほしい。このシナリオはすぐに現実味を帯びてくる。品質保証とメンテナンスにおけるAIの潜在的な(そしてすでに出現しつつある)貢献について説明しよう。
テストの自動生成
徹底的なテスト作成には時間がかかり、締め切りに追われておろそかになりがちだ。 第7章で見たように、現在のAIアシスタントは、テストを自動生成することでこれを軽減することができる。例えば、コードの一部が与えられると、AIは典型的なケース、エッジケース、エラー条件をカバーする単体テストセットを提案することができる。
AIはコードベース全体を調査し、テストカバレッジが不十分な機能やモジュールを特定し、追加のテストを生成することができる。人間のテスト担当者が思いつかないような入力(ファズテストのようなもの)をシミュレートし、コーナーケースのバグを発見する可能性さえある。利点は、コードベースがより堅牢になり、手作業によるテスト記述が最小限に抑えられることだ。
注意点は、テストはAIが仕様を理解するのと同じ程度にしかならないということだ。したがって、人間がAIが生成したテストをレビューし、ソフトウェアの意図した振る舞いと一致していることを確認する必要がある。インスタンスンス、AIは技術的にはコードが実行する特定の出力を主張するかもしれないが、おそらく要件は異なっていた。
知能デバッグ
デバッグでは、エラーの原因を突き止めるために、ログを検索したり、コードを調べたりすることが多い。 第5章では、AIがスマートなデバッグ・コンパニオンのように機能する方法を紹介した。現在のAIツールの中には、エラーメッセージと問題のあるコードを入力として受け取り、それを修正するための説明とコード変更を返すものもある。
AIが支援するデバッグ・ワークフローがどのように進化するかを垣間見るには、プログラムの実行を監視し、クラッシュや例外が発生したときにスタック・トレースや変数の状態を分析して、原因と思われる箇所を突き止めるAIシステムを考えてみるといい。エラーメッセージを出す代わりに、こう言うかもしれない:
getEmail()の呼び出し時にuserProfilesがnullであったため、アプリケーションがクラッシュした。これは、ユーザ・プロファイルをロードする際のヌル・チェックの欠落を示唆している。 ...