php

スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。

米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、95%の精度で作者は特定できるそうです。

解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などのクセ以上のものを探し出し、作者を特定するカギにする、というわけです。

研究チームが開発した機械学習ソフトウェアで、Google Code Jamに公開されているコードの分析を試しに行ってみたところ、あるひとりの人が書いた630行のコードを分析すれば、95%の精度でその作者が特定できたそうです。コードの行数を増やして1,900行にすると、特定の精度は97%になるとか!

このコード解析、すぐに使えそうな分野が思い浮かびますよね。そう、当局がハッカーを見つけたり、オンライン詐欺の犯人を特定したり、という使い方です。あと、他人のコードをちょっと拝借、なんていうケースもバレちゃったりするんでしょうか。今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?
http://www.gizmodo.jp/2015/02/your-coding-style-is-like-a-digital-fingerprint.html


スポンサードリンク

3: ストレッチプラム(庭)@\(^o^)/ 2015/02/12(木) 08:43:14.91 ID:iuDyHchX0.net

そうすか


4: ラダームーンサルト(神奈川県)@\(^o^)/ 2015/02/12(木) 08:44:09.38 ID:1JJCOOyg0.net

へー


2: 膝十字固め(dion軍)@\(^o^)/ 2015/02/12(木) 08:42:40.19 ID:ct0Ou2BZ0.net

そんな驚かない


6: ニールキック(茸)@\(^o^)/ 2015/02/12(木) 08:44:33.62 ID:l2mjmUgH0.net

昔からよくわかっているよ


21: トペ スイシーダ(SB-iPhone)@\(^o^)/ 2015/02/12(木) 09:01:02.46 ID:5yDOz9I80.net

ほぼ毎行コメント書いてあるのは俺のだ


55: ダイビングヘッドバット(禿)@\(^o^)/ 2015/02/12(木) 13:49:44.26 ID:lLUeNVfD0.net

俺も変数名にAKBメンバの名前付けちゃうしな~


56: ジャーマンスープレックス(庭)@\(^o^)/ 2015/02/12(木) 13:56:31.87 ID:k0bw3sBh0.net

>>55
俺の先輩のモーヲタみたいな事やめれ(´・ω・`)

後から見た人、ドン引くから。


29: ファイヤーバードスプラッシュ(愛知県)@\(^o^)/ 2015/02/12(木) 09:35:54.29 ID:VbIAhl2m0.net

自分のソース以外読みにくくて仕方がないってことはそういうことだろうな


16: メンマ(茸)@\(^o^)/ 2015/02/12(木) 08:52:26.12 ID:AVx9aAIr0.net

俺が書くとベーシックみたいだとよく言われる


36: フォーク攻撃(関東・甲信越)@\(^o^)/ 2015/02/12(木) 09:59:36.43 ID:ydSa4TcvO.net

>>16
大きくはmain以下にズラッと
ひたすら命令が続く書き方を好む人間と
object単位で処理を分割する書き方を好む人間に分かれるな

前者は初心者、スクリブト書き、組み込みコード書きなどの
短い書き捨てプログラムを書く人間

後者はシステムエンジニア大規模アプリケーション
サーバー開発者
ミドルウェア開発者などの長いメンテナンスが必要なプログラムを書く人間

これは適性があるから
書くプログラムにも反映されるな


俺はパッチだらけの汚いプログラムを見るとゴミだと思うが
その方が心からうれしい人間もいるみたいだから
癖はあるんだと思うわw


8: イス攻撃(東京都)@\(^o^)/ 2015/02/12(木) 08:45:39.25 ID:jihSHDI10.net

インデント論争


48: ジャーマンスープレックス(庭)@\(^o^)/ 2015/02/12(木) 12:01:57.22 ID:k0bw3sBh0.net

>>1
これ、当たり前。
論理設計段階のフローチャートですら癖でるからな。

俺、大学の卒論の一部でシステム作ったけど、その後後輩が別論文で丸コピしたの使ったらしく、教授に怒られてた。


58: リキラリアット(長野県)@\(^o^)/ 2015/02/12(木) 16:03:17.64 ID:miwyh3hw0.net

要するに、匿名掲示板に匿名で書いてても「誰が書いたか?」は、意外とバレバレだって事だ。


47: ときめきメモリアル(芋)@\(^o^)/ 2015/02/12(木) 11:13:16.76 ID:E3fah8KS0.net

データに無い新しい人のソースは分から無いだろ


51: サソリ固め(庭)@\(^o^)/ 2015/02/12(木) 12:35:09.30 ID:udolfTtu0.net

>>47
いずれ開発ツールはオンライン専用になるし
大学や企業にはソース提供させるんじゃね?


12: クロイツラス(チベット自治区)@\(^o^)/ 2015/02/12(木) 08:47:54.10 ID:95S2KjJ20.net

>今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?

わかってないじゃんおまえw
つかおまえ文筆業で餌食ってるくせに、文体で作者特定できるくらいでいちいち驚くのかよ


34: ときめきメモリアル(茸)@\(^o^)/ 2015/02/12(木) 09:53:52.58 ID:jQKQWpZO0.net

作者の名前がコメントに書いてあるし


38: 張り手(関西・北陸)@\(^o^)/ 2015/02/12(木) 10:09:42.75 ID:9UrBs321O.net

しかしイスラム国は特定できないという不思議


39: ファルコンアロー(catv?)@\(^o^)/ 2015/02/12(木) 10:11:59.28 ID:T4zh+jBw0.net

ゆうちゃん、バレバレですやん


33: ショルダーアームブリーカー(愛知県)@\(^o^)/ 2015/02/12(木) 09:51:10.67 ID:pQBq8wDh0.net

これはコンパイル済みのプログラムをリバースエンジニアリングしても分かるってこと?そんな馬鹿なw


15: スターダストプレス(大阪府)@\(^o^)/ 2015/02/12(木) 08:50:35.75 ID:/dpQGK870.net

>当局がハッカーを見つけたり、
オンライン詐欺の犯人を特定したり、という使い方です。

コンパイルか難読化してたら意味ないだろこれ…だれがわざわざ素のソースコード晒すんだ


17: アイアンクロー(家)@\(^o^)/ 2015/02/12(木) 08:53:43.80 ID:kF0JRyE/0.net

>>15
これ
プログラミングど素人が書いた記事だわ


50: サソリ固め(庭)@\(^o^)/ 2015/02/12(木) 12:33:55.87 ID:udolfTtu0.net

ソース見られるとか
スクリプトレベルの話か?


43: ハーフネルソンスープレックス(家)@\(^o^)/ 2015/02/12(木) 10:38:59.25 ID:6SlMyCF30.net

オープンソースが前提のコード解析しただけだろ


40: ミラノ作 どどんスズスロウン(茸)@\(^o^)/ 2015/02/12(木) 10:20:22.08 ID:RjG1gUfL0.net

実行コードから割り出してウィルス作ってる奴特定しろよ


9: レインメーカー(茸)@\(^o^)/ 2015/02/12(木) 08:45:56.10 ID:NtJTD2/F0.net

プロジェクト毎に異なるコーティング規準に沿って書いた各コードを
全て俺の書いたものと判断できるのかな?


13: ナガタロックII(やわらか銀行)@\(^o^)/ 2015/02/12(木) 08:48:14.07 ID:eBpd25I20.net

>>9
ロジックの組み立て方でバレることもあるんだよなぁ


28: フェイスクラッシャー(やわらか銀行)@\(^o^)/ 2015/02/12(木) 09:33:45.58 ID:okAc8BKG0.net

>>13
それでは精度95%以上にならない


41: カーフブランディング(庭)@\(^o^)/ 2015/02/12(木) 10:23:19.46 ID:pcqkpjG/0.net

K&Rとか山ほどいるし自動整形もあるから無理じゃね


46: マシンガンチョップ(埼玉県)@\(^o^)/ 2015/02/12(木) 11:00:39.65 ID:QpCgUPZY0.net

自分のスタイルでコードを書き上げた後に、
ある程度コールグラフを展開するだけで認識できなくなると思うわ
完全ベタに変換してもいいけど。


10: タイガースープレックス(神奈川県)@\(^o^)/ 2015/02/12(木) 08:46:40.36 ID:tB96gILn0.net

改変時は元のソースの癖や規約を完全にコピーするから
俺の改変箇所に関しては不可能だ


24: ローリングソバット(茨城県)@\(^o^)/ 2015/02/12(木) 09:11:57.21 ID:G4jCKzJ70.net

>>10
禿同


11: サソリ固め(dion軍)@\(^o^)/ 2015/02/12(木) 08:46:59.50 ID:hURcWdkQ0.net

わざと色んな書き方混ぜてクセでばれないようにしてる


60: グロリア(やわらか銀行)@\(^o^)/ 2015/02/12(木) 16:58:54.24 ID:A2lpD7UK0.net

ほぼコピペで作ってるからばれない


42: ハーフネルソンスープレックス(家)@\(^o^)/ 2015/02/12(木) 10:38:05.37 ID:6SlMyCF30.net

一文字グローバル変数の時代が来たか


63: ツームストンパイルドライバー(東京都)@\(^o^)/ 2015/02/12(木) 17:23:31.53 ID:YjUdIeZD0.net

日本の奴隷はコーディング規約を守っているのでバレません


元スレ:http://hayabusa3.2ch.sc/test/read.cgi/news/1423698076/