1: 名無し

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

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

関連記事:できの悪いソースコードをAIで発見、富士通が不採算案件の抑制へ

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

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

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

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

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

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

AIに診断させる画像データは、40ピクセル×120ピクセル(ソースコード40行×120桁分)を基本単位とした。理由は、人間の可読性の判断に近くするためだという。「プログラマとレビュアーがPCを利用してレビューをする場合、40行程度のソースコードを画面に表示・共有して進めることが多い。そこでAIにも40行単位で可読性を診断させるようにした」(森崎氏)。

 この40行分ごとに、可読性が高い箇所を「1」、低い箇所を「0」として分析結果を出力する。可読性が低い原因としては、複雑なネスト構造や、if文やfor文の直前にコメントがあるかどうかなどを検出している。原因を分析しやすくするため、ソース診断ツールでは「複雑度」と「コメント密度」については、全体の可読性とは別にそれぞれ表示している。
以下ソース
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/122501258/

2: 名無し

スケジュールの不備を見つけて訂正してくれませんかね

16: 名無し

>>2

ハイワカリマシタ。

アナタハ1230カラ0103マデ、リユウナシ デヤスムノデスネ。

バグ トシテ トリケシマシタ。

3: 名無し

AIでもなんでもないと感じるが・・・

4: 名無し

コメント密度ってw

5: 名無し

誰が喜ぶの?
だって、日本のソフトウェアに信頼性なんて定義されてねえんだからさ
動きゃいい奴らしかいない

6: 名無し

プログラミングも全部AIでやれや

8: 名無し

作業工数を見積もれる営業AI作れよ
文系バカ営業を救ってやれ

9: 名無し

画像診断だとw

つまり適当にチェックするって事じゃw

10: 名無し

あぁ、これ欲しいわ。
複雑になると抜けたり間違ったりするもんなあ。

14: 名無し

>>10
何色が密集しているかで測定するんだろうね。
何が書かれているかは一切見ない。
まるで富士通の品証みたいじゃないか。

11: 名無し

どこかのバカ上司が、これでok出ないとダメとか言って、まともなソースを糞ソースにさせるわけだ

84: 名無し

>>11
いや、これで正しいと思う。
糞ソースにするのは不具合修正で手抜きすると糞ソースになるからな。

88: 名無し

>>84
素晴らしいソースをわざわざ糞コードにさせられる作業が発生する可能性があるって意味で書いたんだけども
さすがに40行とかだと分割して欲しいが、分割するとわかりづらくなる場合もあるし

13: 名無し

全面的に依存するのは危険だと思うけど、

ちょいとツールに通せば短時間で診断してくれるなら

コーディングの工程に追加すればいいよね。

軽いならIDEに組み込んで常時監視してもいい。

このツールでの評価点を上げるために変な書き方が工夫されるようなら
本末転倒だけどな。

17: 名無し

>>13

実質IDEに組み込んでるツールと大して変わらないとなぜ思わないの?

40行程度の判断なんだから、プログラムやモジュール全体を見て判断なんかしていない。

要するにtypo発見ツールでしかない。

そしてそれは今もある。

18: 名無し

>>17

>要するにtypo発見ツールでしかない。

全く違う。typo発見なら通常の言語処理を行うはず。何も分かっていないな。

32: 名無し

>>18

言語処理なんて不要だよ。

タイプのパターン登録して逸脱見てれば良い。
パターン登録を学習させるというのがこれの売りだが、正直学習より登録の方が手間が少ないと思うよ。

15: 名無し

これはかなり大胆なアルゴリズムだな。だが巷間言われる「特徴量まで勝手に学習」を
台無しにしているとも取れる。前処理によほど自信があるのか、実際に効果が出ているのか。

19: 名無し

とりあえずAIって言っておけ感
はやり言葉に乗っかるだけで成功したの見たことない

20: 名無し

全部日本語でも改行とコメントさえ適切なら通るんか

21: 名無し

>>20

>キャラクターコード1文字ごとに色を付与しているという。そのうえで、色付けした1文字分を1ピクセルの画像にする。

ということなんで全部日本語だとすぐはじかれるだろうな。

28: 名無し

>>21
キャラクターコード一文字なら2byte文字でもええやん

22: 名無し

FindBugsで十分じゃない?

23: 名無し

>>1
でも、仕様書がバグってるんだからどうしようもないじゃないですか?

24: 名無し

>if文やfor文の直前にコメントがあるかどうかなどを検出している。

//コメント入れないといけないのでとりあえず、
みたいなの乱立してよけい可読性落ちるだろ

26: 名無し

富士通に頼めばバグなしなるの?

27: 名無し

ソフト開発の契約の不備を見つけるAIツールは?

29: 名無し

本末転倒
AIにそれがわかるなら
AIが書けよ

30: 名無し

どうせ糞MISRA

31: 名無し

AIを活用すれば無能役人や偏向記者を無くせるのにな

33: 名無し

>>31
馬鹿はAIが神様か何かだと思ってる。

34: 名無し

なんでITに明るい人って
性格悪い人多いの?
プログラムに心壊されたの?

43: 名無し

>>34
暗い人が逃げの一手で来る場合もあるけど
環境が劣悪で人間不信がどんどん酷くなるんだよ

35: 名無し

コメントなんて陳腐化するもん評価対象にすんなし

36: 名無し

この程度のことならディープラーニングいらないし
この程度のこと言われても役に立たない

37: 名無し

プログラミングをすると
考え方がネガティブになる

39: 名無し

>>37
ダメなケースを全部考慮しないと気が済まないからねw

42: 名無し

>>39
それもあるけど
あまりの無理解と無理強いで
人間不信になるよ

38: 名無し

Webページを
・ユーザーが選択した商品の情報
・常に表示されるメニュー
・関連商品へのリンク
で色分けしてネットショッピングのページの見易さ、有用さを数値化してくれ。
1番目の情報がページ面積の何%とか。

40: 名無し

AIが小姑化するのか

41: 名無し

こういうのって、わかってる人からするとマイナスにしかならないんだよね

わかってない人達が
自称管理者を名乗って
「何かをした」つもりになれる

それだけのためのツール

44: 名無し

>>41
頭悪そ

46: 名無し

>>44
なんで?
教師データの良し悪しを誰がどう定義してるかわかってるの?

56: 名無し

>>46
デバックツールの利点難点を言ってみ?

61: 名無し

>>59
なんか指南書とかあるのかな

69: 名無し

>>56
デバック?

45: 名無し

AI「全部、コメントにしちゃえば不備がなくなります」

47: 名無し

何か方向性が間違っているwww

48: 名無し

世の中に何の良い影響も与えてない会社っていうイメージ

49: 名無し

念じるか希望を述べるだけで
最適アルゴリズムとサンプルコードのサイトを表示する
AIとかにして
最終的にしたいことを云うだけで勝手に実装してくれる
統合開発環境用AIを作ってw

50: 名無し

警告件数が多すぎて「動いてるからいいや」って嫌気がさすパターンだわ

51: 名無し

不備判定されたとして
どう直せってアドバイスするのかな

52: 名無し

人工知能が機能や文脈を理解できない以上無意味
逆にそれができるなら自動でプログラム組める

53: 名無し

用件定義からして矛盾、無駄を弾き出して
IT化すべきか否かも判断してくれれば
営業から必要なくなるw

54: 名無し

富士通は昔からソース解析ツール出してたし、正統進化かね。

55: 名無し

>>54
どっちに進んでも進化って呼べるところがすごいな
無敵じゃん

57: 名無し

AI:美しくない。書き直せ

58: 名無し

なんでも自動で行わせることをなんでもAIって付けてるだろ

60: 名無し

ただの正書法違反検出ツール

62: 名無し

aは赤、bは青とかで色つけるの?
シンタックスカラーリングでなくて。

63: 名無し

診断をAIでできるんなら、ソースの記述そのものをAIにやらせろよ。

64: 名無し

AI活用は賛成だが富士通と聞くと胡散臭い
自分とこのプロジェクトの管理も出来ないデスマ大好きプロパーを先に何とかしろ

65: 名無し

経営陣の不適格度診断をAIにやらせろよ

66: 名無し

ここにみずほ銀行勘定系システムのソースコードがあるじゃろ

71: 名無し

>>66
ワロタwww

79: 名無し

>>66
あれは無事終ったんだろうか。

67: 名無し

作り直した方がマシな糞ソースが多すぎだわ。

68: 名無し

画像認識プログラムに傾倒して何か出来ますなアピールは最早、IT屋のインスタ映えだな
勝手にプログラム作ってくれないなら自社lint整備したほうが早いだろ

70: 名無し

すげーな,マーケットにリリースされてもいないツールの内容を知っていたり,
批判したり擁護したりwwww

72: 名無し

COBOLって、変数名を「XH558Z6」とかしちゃうんだろ。
そして変数名とその意味の照合表作って管理するんだよな。

74: 名無し

もうAIがコード書けば不具合ないだろうに。

75: 名無し

糞コードをAIに置き換えるから
プログラマなんてイラネ
って話じゃなかったんかい

77: 名無し

PGReliefのすごいやつ?

78: 名無し

最初からAIで作れんの?

80: 名無し

なんつーか「富士通」ってだけで頼りない感

81: 名無し

単なるプログラムをAIと呼ぶ風潮

85: 名無し

まず、このAIのバグを発見するAIが必要だな

86: 名無し

富士通が自社案件に使いたいかどうか

87: 名無し

頑張れば100年後にはRubocop先生くらい使えるようになってるだろう…

89: 名無し

プログラマーが見つけられないからAI使うんだな。

90: 名無し

AIと言えるようなもんじゃないだろこれ
本文読む限り、コード読み込んでパターンに合ってなかったらエラー吐くだけ

91: 名無し

その前に要求仕様の不備を指摘してくださいお願いします
誰のせいで何度も仕様がひっくり返ってスパゲッティになったと思ってるんですか