コーディングやコードレビューといった作業の効率化は、システム開発のスピードアップに欠かせない。記述したプログラムにバグが多く含まれていれば、コードレビュー時に手戻りが頻繁に発生する。プログラムの致命的なバグを見落としてリリースすると、最悪の場合は悪意のある第三者にセキュリティーホールとして突かれてしまう。
バグがないプログラムの開発は難しいとはいえ、バグが少ないまたは存在しない安全なコードを作成し、効率的にコーディングをするにはどうすればよいのか――。このような課題解決に有効なAI(人工知能)が登場し始めた。例えば米Microsoft(マイクロソフト)の「GitHub Copilot(ギットハブ コパイロット)」や米Amazon Web Services(AWS)の「Amazon CodeGuru Reviewer(アマゾン コードグル レビュアー)」である。
OSSプロジェクトから最適なコードを学習
Copilotはマイクロソフト傘下の米GitHub(ギットハブ)が2022年6月21日に正式サービスを始めた。プログラマーがVisual Studioといった開発ツール上でコードやコメントなどを入力すると、AIが既に記述されたプログラムや学習した内容、コーディング規約などからコードの候補を提案するサービスである。米OpenAI(オープンエーアイ)が作成した事前学習済み言語モデル「Codex」を利用し、GoやJavaScript、Python、TypeScriptなど数十種類のプログラミング言語に対応する。
一方、AWSが2020年6月29日から一般提供しているのがCodeGuruである。アプリケーションの効率改善やコードの品質向上を支援するAIサービスという位置付けだ。CodeGuruはAmazon CodeGuru Reviewerと同Profilerの2つのサービスで構成されている。このうちCodeGuru Reviewerはコードをレビューする際のバグの発見をAIで支援するものだ。リポジトリーに保存したコードの改善点や修正点を提示する。対応言語はJavaとPythonだ。
CopilotやCodeGuru Reviewerはどのように最適なコードを学習しているのか。日本マイクロソフトの服部佑樹App Innovationアーキテクト統括本部Cloud Solution Architectは「AIの学習には主にオープンソースソフトウエア(OSS)のプロジェクトのコードを使っている」という。GitHubのリポジトリーには大量のコードが蓄積されているが、「(GitHubの)利用企業内で記述したコードは使っていない」(服部Cloud Solution Architect)とする。
CodeGuru Reviewerも同様に、「OSSプロジェクトやAWS社内で利用しているコードを学習させている」(アマゾン ウェブ サービス ジャパンの金杉有見子技術統括本部インターネットメディアソリューション部シニアソリューションアーキテクト)という。これらのコードをルールマイニングやロジスティック回帰、ニューラルネットワークなどを活用した教師あり機械学習モデルで学習する。