【AIなのか?】ソースコードの不備をAIで見つける富士通、新しい診断ツール

スポンサーリンク
1: ノチラ ★ 2017/12/26(火) 17:21:11.16 ID:CAP_USER
人工知能(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/

job_programmer

2: 名刺は切らしておりまして 2017/12/26(火) 17:26:36.00 ID:yYV5sgJ0
スケジュールの不備を見つけて訂正してくれませんかね

3: 名刺は切らしておりまして 2017/12/26(火) 17:29:13.55 ID:WcBvM/ly
AIでもなんでもないと感じるが・・・

4: 名刺は切らしておりまして 2017/12/26(火) 17:29:22.78 ID:daDF0DXd
コメント密度ってw

6: 名刺は切らしておりまして 2017/12/26(火) 17:33:52.22 ID:K90JuWPS
プログラミングも全部AIでやれや

8: 名刺は切らしておりまして 2017/12/26(火) 17:50:58.85 ID:6SPU/QXr
作業工数を見積もれる営業AI作れよ
文系バカ営業を救ってやれ

9: 名刺は切らしておりまして 2017/12/26(火) 17:53:09.02 ID:G60HM30Q
画像診断だとw

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

10: 名刺は切らしておりまして 2017/12/26(火) 17:55:04.63
あぁ、これ欲しいわ。
複雑になると抜けたり間違ったりするもんなあ。

14: 名刺は切らしておりまして 2017/12/26(火) 17:59:38.45 ID:jbzeVbWD
>>10
何色が密集しているかで測定するんだろうね。
何が書かれているかは一切見ない。
まるで富士通の品証みたいじゃないか。

11: 名刺は切らしておりまして 2017/12/26(火) 17:58:22.87 ID:udwKBhNQ
どこかのバカ上司が、これでok出ないとダメとか言って、まともなソースを糞ソースにさせるわけだ

84: 名刺は切らしておりまして 2017/12/26(火) 22:10:44.41 ID:2cxyBi4a
>>11
いや、これで正しいと思う。
糞ソースにするのは不具合修正で手抜きすると糞ソースになるからな。

88: 名刺は切らしておりまして 2017/12/26(火) 22:59:00.43 ID:udwKBhNQ
>>84
素晴らしいソースをわざわざ糞コードにさせられる作業が発生する可能性があるって意味で書いたんだけども
さすがに40行とかだと分割して欲しいが、分割するとわかりづらくなる場合もあるし

13: 名刺は切らしておりまして 2017/12/26(火) 17:58:37.67 ID:DaRsmv4j
全面的に依存するのは危険だと思うけど、
ちょいとツールに通せば短時間で診断してくれるなら
コーディングの工程に追加すればいいよね。
軽いならIDEに組み込んで常時監視してもいい。

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

17: 名刺は切らしておりまして 2017/12/26(火) 18:08:22.83 ID:Um16OM5T
>>13
実質IDEに組み込んでるツールと大して変わらないとなぜ思わないの?

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

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

そしてそれは今もある。

18: 名刺は切らしておりまして 2017/12/26(火) 18:10:49.49 ID:d0gkknQS
>>17
>要するにtypo発見ツールでしかない。

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

32: 名刺は切らしておりまして 2017/12/26(火) 18:33:24.13 ID:Um16OM5T
>>18
言語処理なんて不要だよ。

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

102: 名刺は切らしておりまして 2017/12/27(水) 12:38:23.88 ID:tVh8V4Vd
>>13
富士通はその本末転倒が大半の会社だから

103: 名刺は切らしておりまして 2017/12/27(水) 12:40:22.15 ID:2Qfsj8sl
>>102
社員が働かないので有名な不治痛

15: 名刺は切らしておりまして 2017/12/26(火) 18:04:22.39 ID:d0gkknQS
これはかなり大胆なアルゴリズムだな。だが巷間言われる「特徴量まで勝手に学習」を
台無しにしているとも取れる。前処理によほど自信があるのか、実際に効果が出ているのか。

19: 名刺は切らしておりまして 2017/12/26(火) 18:13:06.19 ID:4Dr77Bux
とりあえずAIって言っておけ感
はやり言葉に乗っかるだけで成功したの見たことない

20: 名刺は切らしておりまして 2017/12/26(火) 18:13:23.89 ID:3Pe7wkcp
全部日本語でも改行とコメントさえ適切なら通るんか

21: 名刺は切らしておりまして 2017/12/26(火) 18:23:54.67 ID:d0gkknQS
>>20
>キャラクターコード1文字ごとに色を付与しているという。そのうえで、色付けした1文字分を1ピクセルの画像にする。

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

22: 名刺は切らしておりまして 2017/12/26(火) 18:25:31.45 ID:zEcVKgQr
FindBugsで十分じゃない?

23: 名刺は切らしておりまして 2017/12/26(火) 18:25:38.33 ID:ouVG6hZZ
>>1
でも、仕様書がバグってるんだからどうしようもないじゃないですか?

24: 名刺は切らしておりまして 2017/12/26(火) 18:27:12.84 ID:RAHFgKgv
>if文やfor文の直前にコメントがあるかどうかなどを検出している。

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

29: 名刺は切らしておりまして 2017/12/26(火) 18:32:13.00 ID:IckEwawP
本末転倒
AIにそれがわかるなら
AIが書けよ

31: 名刺は切らしておりまして 2017/12/26(火) 18:33:13.33 ID:F74DUqTk
AIを活用すれば無能役人や偏向記者を無くせるのにな

33: 名刺は切らしておりまして 2017/12/26(火) 18:34:56.72 ID:Um16OM5T
>>31
馬鹿はAIが神様か何かだと思ってる。

35: 名刺は切らしておりまして 2017/12/26(火) 18:40:45.15 ID:cZVlpMmh
コメントなんて陳腐化するもん評価対象にすんなし

37: 名刺は切らしておりまして 2017/12/26(火) 18:43:15.69 ID:3do6zRDg
プログラミングをすると
考え方がネガティブになる

39: 名刺は切らしておりまして 2017/12/26(火) 18:46:48.95 ID:J7NvbY8I
>>37
ダメなケースを全部考慮しないと気が済まないからねw

42: 名刺は切らしておりまして 2017/12/26(火) 18:53:00.52 ID:3/E4dIRG
>>39
それもあるけど
あまりの無理解と無理強いで
人間不信になるよ

41: 名刺は切らしておりまして 2017/12/26(火) 18:52:10.15 ID:3/E4dIRG
こういうのって、わかってる人からするとマイナスにしかならないんだよね

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

それだけのためのツール

45: 名刺は切らしておりまして 2017/12/26(火) 19:05:07.69 ID:D2qcVzUO
AI「全部、コメントにしちゃえば不備がなくなります」

49: 名刺は切らしておりまして 2017/12/26(火) 19:09:41.31 ID:0kNUmQkr
念じるか希望を述べるだけで
最適アルゴリズムとサンプルコードのサイトを表示する
AIとかにして
最終的にしたいことを云うだけで勝手に実装してくれる
統合開発環境用AIを作ってw

51: 名刺は切らしておりまして 2017/12/26(火) 19:11:47.35 ID:IckEwawP
不備判定されたとして
どう直せってアドバイスするのかな

52: 名刺は切らしておりまして 2017/12/26(火) 19:11:51.18 ID:rScVk/Zi
人工知能が機能や文脈を理解できない以上無意味
逆にそれができるなら自動でプログラム組める

53: 名刺は切らしておりまして 2017/12/26(火) 19:12:21.26 ID:0kNUmQkr
用件定義からして矛盾、無駄を弾き出して
IT化すべきか否かも判断してくれれば
営業から必要なくなるw

54: 名刺は切らしておりまして 2017/12/26(火) 19:13:11.88 ID:pW2IGFZc
富士通は昔からソース解析ツール出してたし、正統進化かね。

57: 名刺は切らしておりまして 2017/12/26(火) 19:19:25.50 ID:IckEwawP
AI:美しくない。書き直せ

60: 名刺は切らしておりまして 2017/12/26(火) 19:26:38.53 ID:62KDdH7i
ただの正書法違反検出ツール

64: 名刺は切らしておりまして 2017/12/26(火) 19:37:18.84 ID:eriDK7F3
AI活用は賛成だが富士通と聞くと胡散臭い
自分とこのプロジェクトの管理も出来ないデスマ大好きプロパーを先に何とかしろ

65: 名刺は切らしておりまして 2017/12/26(火) 19:42:00.91 ID:GyQFuItt
経営陣の不適格度診断をAIにやらせろよ

66: 名刺は切らしておりまして 2017/12/26(火) 19:42:04.46 ID:Li3Y9/kq
ここにみずほ銀行勘定系システムのソースコードがあるじゃろ

71: 名刺は切らしておりまして 2017/12/26(火) 20:04:56.99 ID:vJWEcSn9
>>66
ワロタwww

79: 名刺は切らしておりまして 2017/12/26(火) 21:37:15.91 ID:vDKsqo4u
>>66
あれは無事終ったんだろうか。

68: 名刺は切らしておりまして 2017/12/26(火) 19:50:40.09 ID:aiZqvPdT
画像認識プログラムに傾倒して何か出来ますなアピールは最早、IT屋のインスタ映えだな
勝手にプログラム作ってくれないなら自社lint整備したほうが早いだろ

76: 名刺は切らしておりまして 2017/12/26(火) 21:31:36.08 ID:UMEbacVh
http://d.hatena.ne.jp/pon0927/20120507/1336318046

auのISW11Fを開発するときにこのツールがあったなら・・・

90: 名刺は切らしておりまして 2017/12/27(水) 02:30:49.72 ID:2W/Is1wl
AIと言えるようなもんじゃないだろこれ
本文読む限り、コード読み込んでパターンに合ってなかったらエラー吐くだけ

91: 名刺は切らしておりまして 2017/12/27(水) 02:58:44.63 ID:/MX02ZVE
その前に要求仕様の不備を指摘してくださいお願いします
誰のせいで何度も仕様がひっくり返ってスパゲッティになったと思ってるんですか

99: 名刺は切らしておりまして 2017/12/27(水) 12:24:05.94 ID:Nynmk3eL
> もう1つの理由としては米グーグルの2012年の研究発表を挙げる。大量の画像を学習させることで、ネコを識別できるようになったもので、ここからツール開発の着想を得た。

これが全てだろ
完全に素人の発想
グループのAIやってる部署に相談しなかったんだろうか

109: 名刺は切らしておりまして 2017/12/27(水) 14:52:59.02 ID:6lLjdutB
コメントの内容まで見てないだろうなw

あと、試行錯誤して増築増築してるソースはクソなんだが、
そういうのもコメントさえまともならOKなのか?

112: 名刺は切らしておりまして 2017/12/27(水) 18:05:20.98 ID:BtME4ycQ
>>109
コメントがメンテされてなくて実際の処理と違ってて、
AIでも誤判断する事案が多発しそうだな。

111: 名刺は切らしておりまして 2017/12/27(水) 18:00:50.26 ID:TmOaWrIL
「見逃して」
みたいなアノテーションが登場する

113: 名刺は切らしておりまして 2017/12/27(水) 18:59:37.99 ID:/eWaqvYJ
これは上からAIをソース分析に利用しろって命令がきて、
今でも使ってんだよバカヤローって言えなくて、
素人目にもディープラーニングっぽく見えるやり方で
適当にやり過ごそうとしたら、
逆に幹部の注目を集めちゃって公式発表されちゃったのかな。

115: 名刺は切らしておりまして 2017/12/27(水) 19:32:33.01 ID:rcBV6qVb
理想論かもしれんけど
コメント無くても読みやすいのがいいソースコードだと思うの

119: 名刺は切らしておりまして 2017/12/27(水) 20:22:18.89 ID:ROv5m2UV
>>115
プロジェクトに関わってるうちはコメントなくても平気だけど
2、3ヶ月も別のことやってから前のコード見ると
仕様とか諸々ど忘れしていることあるから
コメントは入れておくべき

異論は認める

120: 名刺は切らしておりまして 2017/12/27(水) 20:33:44.15 ID:kn6/XZPD
>>119
コメントは調味料みたいなものだと思ってる。
まず素材の味ありき。
調味料どばっとかけなきゃ食えないのなら作り直した方がいい。
調味料間違えたら素材の味が死ぬこともある。

122: 名刺は切らしておりまして 2017/12/27(水) 20:55:39.62 ID:IKhOAtrw
>>120
お前、筋が良さそうだな
一緒に仕事したいわ

125: 名刺は切らしておりまして 2017/12/28(木) 00:26:17.34 ID:MGJCWtrZ
前からコード診断するのあるだろう。AI言いたいだけやん。

126: 名刺は切らしておりまして 2017/12/28(木) 00:32:58.06 ID:PI+J87bo
>>125
PGReliefね。

128: 名刺は切らしておりまして 2017/12/28(木) 09:02:35.12 ID:6Tn6w5pm
>>126
あれ案外静的解析としては優秀なんだよな
人的リソース費やすよりコスト安くつくし

ただそういうツールをグループ会社内でもフリーで使わせるわけではないあたりがけち臭いんだよなあ
子会社の作ったものなんだからそこは潤沢にライセンス料支払ってやって使えるシステム全部で使えばいいものを

127: 名刺は切らしておりまして 2017/12/28(木) 08:37:23.38 ID:WMaCl/bN
>>125
ネストの深さはそうだけど適量なコメントというのは確かにAIの出番かも
静的解析で問題なしと判断されたソースからプログラマの個性による粗を検出できるものなんだろう
好意的に解釈すれば
絶対にそんな大したものでは無いだろうけど

70: 名刺は切らしておりまして 2017/12/26(火) 20:04:38.41 ID:Im8EPxIv
すげーな,マーケットにリリースされてもいないツールの内容を知っていたり,
批判したり擁護したりwwww

ランキングをポチッとお願いします!

 

引用元: http://egg.5ch.net/test/read.cgi/bizplus/1514276471/

スポンサーリンク
スポンサーリンク
スポンサーリンク
自然科学・テクノロジー
シェアする
piment-chanをフォローする
スポンサーリンク
スポンサーリンク
みかんタイムス

コメント