第3章 バグ検出 バグ検出とコードレビュー
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
会社の収益を担う製品を開発するために、ソフトウェア・エンジニアに会社で最も高い給料を支払っているにもかかわらず、生産時にコストのかかるバグが発生したために収益を失ってしまうことを想像してみてほしい。これは経営者にとって最悪の悪夢であり、悲しいことに毎日起こっている。ソフトウェアは業界全体を自動化し、長い手作業プロセスに取って代わり、以前は不可能だったことを可能にする新しい方法を作成してきた。しかし、バグが根本的な製品の重要な機能を損なうようでは、自動化を効果的に行うことはできない。
この根本的な懸念を緩和するために、QAエンジニア、QAアナリスト、テストエンジニアなど、適切な品質保証(QA)を保証するための職種が長年作成されてきた。また、、本番環境にデプロイされる前にバグを検出するプロセスも開発されてきた。それらのプロセスは、主に2つに分類される:
- コードレビュー
-
このプロセスは、開発中に行われ、本番準備が整ったと判断される前に、チームメンバーがお互いのコードをレビューすることで構成される。チームによっては、、マージする前にプルリクエスト(PR)をレビューして承認しなければならないチームメンバーの最低人数を義務付けているところもある。
- 品質保証
-
このプロセスは、コードが本番環境にプッシュされる前の最後の「ゲートキーパー」として、開発後に行われる。本番環境に一致した環境で行われる、手動または自動テストからなる。これらのテストは、コードレビューを逃れる可能性のあるバグをキャッチするために、ユーザの振る舞いを模倣することを目的としている。
どちらのプロセスでも、バグ、パフォーマンスの問題、セキュリティの脆弱性、その他の不具合が発見された場合、コードはリグレッションされる。つまり、修正すべき具体的な欠陥を含むコメントとともに、コードを開発したソフトウェアエンジニアに戻される。
このようなプロセスは、ソフトウェア開発チームにとって非常に重要なものだが、多くの場合、非常に時間がかかり、非決定的であるため、ボトルネックが発生する一方で、バグが本番環境に現れるのを防ぐという構想が十分に実現されていない。そのため、AIツールが登場するにつれて、業界ではコードレビューを自動化し、バグを検出するプロセスをより迅速かつ決定的にすることに大きな注目が集まっている。すでに何千ものソフトウェア・エンジニアリング・チームが、AIベースの自動コードレビュー・ツールを使用している。
AIコードレビューツールの種類
本章でレビューしたAIツールは3つの主要なカテゴリーに分類され、ソフトウェア開発におけるツールの使用方法は若干異なる。レビューしたツールの中には、複数のタイプの機能を提供するものもある。
- IDEベースのツール
-
IDE ベースのツールは、を、Visual Studio Code、IntelliJ IDEA、Eclipse など、エンジニアがコードを書くために使用するソフトウェア開発環境に直接統合する。これらのツールは、開発者がコードを記述する際に、エラーをハイライトしたり、改善点を提案したり、ドキュメントへのリンクをIDE内で直接提供したりする、リアルタイムのフィードバックを提供する。ここで説明する3種類のツールのうち、コードがローカルに保存されたときにフィードバックを提供するのは、このタイプだけである。この即時フィードバックループは、開発者がその場で問題を特定し修正するのを助け、コード品質を向上させ、後で大規模なレビューを行う必要性を減らす。 ...