人工知能(AI)などを活用し、システム開発プロジェクトのプロセス改革に取り組む富士通。この改革のために、2017年11月から本格活用するツールの1つが「ソース診断」だ。このツールでは、英数字や記号といった文字列の固まりであるソースコードを、テキストデータとしてではなく、画像として分析するという。

 どのような仕組みでソースコードの不備を見つけるのか。ツール活用により、開発プロセスをどう改善するのか。ツールの開発責任者である富士通アプリケーションズの森崎雅稔取締役兼ソフトウェアエンジニアリングセンター長に聞いた。

保守性の低いコードを見逃しやすい

 ソース診断は、ソースコードのレビュー作業の効率化と精緻化を支援するツール。画像化されたソースコードを基に、AIが主に可読性を診断する。ツールで可読性が低い箇所に当たりを付け、該当箇所を集中的にレビューすることによって、レビュアーは作業の効率化と精緻化が見込める。

 ソースコードのレビュー作業を支援するツールとしては、以前からFindBugs、PMDといった静的解析ツールがある。静的解析ツールは、不具合が発生しそうな箇所や、コーディング規約を順守しているかどうか、セキュリティ上の不備がないかなどのチェックに役立つ。ただし、「人間にとっての可読性の観点は検出しにくい」と森崎氏は指摘する。テストで不具合が検出されず、コーディング規約を守っていても読みにくいコードは少なくないという。

富士通アプリケーションズの森崎雅稔氏(中央)ら
富士通アプリケーションズの森崎雅稔氏(中央)ら
[画像のクリックで拡大表示]

 可読性が低いコードを見過ごすと、システム稼働後の保守作業などが難しくなる。とはいえ、ツールでは見つけにくいため、目視によるレビューに頼る部分が多くなる。結果として、大規模なプログラムの場合はどうしても見過ごしが発生しやすかった。

 また、可読性を落とす原因に関する指摘も「レビュアーのセンス任せになりがちだった」(森崎氏)。レビュアーごとの重視する観点の違いによって、指摘の内容がばらつくなどの問題が生じやすかった。これらの課題にメスを入れる狙いで、森崎氏らはソース診断を開発した。

40行単位の画像で善しあしを分析

 ソース診断は、機械学習の手法の1つであるディープラーニング(深層学習)を応用している。ソースコードを画像データに変換し、それをあらかじめ約1万件の教師用データで学習させておいたモデルと照合。AIが可読性の善しあしを分析して、結果を出力する仕組みである。

 画像化に当たっては、まずキャラクターコード1文字ごとに色を付与しているという。そのうえで、色付けした1文字分を1ピクセルの画像にする。色付けによって、単純に画像化するよりも、ソースコードの「特徴」を把握しやすくしている。