AIによるソフトウェア開発を支援する「Project CodeNet」をIBMが公開 ~オープンソースのデータセット、コードの検索・類似性・制約を判定

IBMは5月11日(現地時間)、AIによるプログラム・コードの理解と変換を可能にするオープンソースのデータセット「Project CodeNet」を公開した。

約1400万のコードサンプル、5億行のコード、55のプログラミング言語で構成される大規模なオープンソース・データセットで、これを利用することにより、問題のあるソースから適切なソースへの変換や、レガシーな言語のプログラムから最新の言語で書かれたプログラムへの移行などに役立てることができる。あるいは、4000種あるコーディングに関わる問題のいずれかを解決可能という。

またProject CodeNetは、画像処理分野の発展に大きく貢献した画像データセット「ImageNet」とよく似た特徴(大規模性、多様性など)を備えるという。IBMは、「ImageNetがコンピュータビジョンにもたらしたものを、AIによるコード開発にもたらすことを目的にしている」と意欲を語っている。

Project CodeNetは、主に次の3つのユースケースが想定されている。

コードの検索
COBOLなどのレガシー言語から別の言語へのコードの自動変換

コードの類似性
異なるコード間の重複と類似性の特定

コードの制約
開発者の固有のニーズとパラメータに基づく各種制約のカスタマイズ

またGitHub上のProject CodeNetの説明では、以下のようなユースケースが挙げられている。

・コードの検索やクローンの検出
・正常なコードか、または問題のあるコードかの区別・判定
・問題のあるコードから正常なコードへの修正の過程を追跡できるため、コードの自動修正の検討に利用できる
・各コードサンプルには、CPU実行時間とメモリ使用量がラベル付けされているため、回帰研究や予測に利用できる
・多様な言語のプログラムを含めため、コード変換のベンチマークに利用できる

最近、「AI for Code」と呼ばれる、プログラムの開発やデバッグ、メンテナンスなどにAI技術を適用する取り組みが進んでいる。この背景には、産業・社会の至るところでソフトウェアが適用され、より高い開発生産性や品質が求められていることに加えて、企業や社会の基盤を形成しているソフトウェアの老朽化の問題がある。そこへAIを適用し、プログラム開発・保守全体のプロセスを劇的にモダナイズしようというのがAI for Codeである。

Project CodeNetもAI for Codeの取り組みの1つだが、Project CodeNetは、プログラミング判定サイトの「AIZU Online Judge」と「AtCoder」で得られた膨大なデータを基に開発された点が大きな特徴である。

またIBMでは、次のような点も特徴として挙げている。

・コードサンプルには55種類のプログラミング言語が含まれる。主な言語は、C++、C、Python、Java。

・コードサンプルには、コードサイズ、メモリ使用量、CPU実行時間、承認やエラーの種類を示すステータスなどが注釈として付けられている。また90%以上の問題に、入出力フォーマットの仕様を含む問題の説明が付いている。

・問題によっては、説明文から入力/出力のサンプルを抽出し、データセットの一部として提供している。ユーザーはこれを利用したり、追加のメタデータの抽出やAIモデルの出力の検証を行える。

以下は、Project CodeNetに収録されているコードの言語と比率である。

言語サンプルコード数
C++8008527
Python3286314
Java712153
C754058
Ruby250403
C#235107
Rust127210
Go99125
Haskell56292
Kotlin47030
JavaScript58395
PHP41932
D33438
Scala27283
Nim20852
OCaml12879
Perl14481
Fortran15059
Lisp10523
Julia10779
Awk9595
Pascal8727
TypeScript7647
Bash17257
Lua5518
Swift6562
F#4568
Crystal5026
Bf3966
Scheme3546
dc3489
Sed2336
Cython2515
Octave2388
Visual Basic2116
Objective-C1379
COBOL1277
Vim1061
Clojure847
Standard ML468
Prolog289
MoonScript298
Unlambda278
Elixir458
Dart539
bc253
Ada135
Text1724
Dash81
Haxe107
Racket60
Erlang69
Zsh41
Forth25
Ceylon383
合計13916868

・GitHub「IBM/Project CodeNet」 

[i Magazine・IS magazine]

More Posts