Morita)/大江戸スタートアップ「著作権法第47条の10.js」どんな意味かは後で「どうせなら、切りとる部分は二流のエンジニア発言か、法律の循環的複雑度計算の部分だよねー。先日掲載した開発者イベント「デベロッパーズサミット2015」基調講演記事について読者のおひとりからそんな声をいただいた。リクエストにお答えして、ドワンゴ川上量生会長兼CTOが法律の循環的複雑度(とはなんぞや)について語ったところを書いちゃおうと思う。ドワンゴでCTOとしてやった唯一の仕事まずドワンゴ川上会長はCTO(チーフ・テクニカル・オフィサー)という肩書きでありながら、本人いわくCTOらしい仕事をしておらず「象徴CTO」(川上会長)のような存在だ。そんな中でCTOとしてやった唯一の仕事が「循環的複雑度」の話だ。循環的複雑度とは何か。要は、プログラムにどれだけバグが出やすいかを判別するための計算方法だ。さかのぼること2年前、ドワンゴの生放送サービスである「ニコニコ生放送」のコードに、循環的複雑度が600を超えるメソッドがたくさん入っていることが判明したことがあった。循環的複雑度が75を超えるとバグの混入確率は98%、「いかなる変更も誤修正を生む」状態になると言われていて、要はニコニコ生放送は動いてるのが不思議なくらいバグがめちゃくちゃ出やすい状態だった。その話を受けて、ドワンゴの業務とは一切無関係に始めたのが「法律をプログラムとして分析したらどうなるか」という話だ。商法はいいコード、著作権法はやばいコードまず分析してみたのは商法だ。商法第16条の原文はこちら。商法第16条の原文(houko.com)見てもらえば分かるとおり堅苦しい役人言葉でお世辞にも読みやすいとはとても言えない。条文をJavaScriptのコンパイラに通る形で書きなおし、実際に循環的複雑度を測定してみたところ数値的には「11」と低かった。10以下は「非常に良い構造」と言われているので、商法は読みづらいだけで、法文としては問題がなかったわけだ。第47条の10の原文がこちら。第47条の10の原文(houko.com)......なんというかもう日本語ではない。「見た瞬間に読む気をなくす」(川上会長)ほどの複雑さだ。循環的複雑度の合計は103。コードとしてめちゃくちゃバグが出やすく、「コピペされてる箇所がある」(川上会長)とさえ言われるありさまだ。プログラムとしてバグりやすい法律があるというのは、要はそれだけ法律が改訂しづらい状況にあるということ。立法機関が現状に合わせて法律を変えようにも、そもそも法律を書く行為そのものがめちゃくちゃ難しい状況になっているというわけだ。「内閣法制局というものがあり、素人は法律を変えられないことになっている。なっているかといえば『素人が法律を作るとバグが出るので直せない』という状況になっているから。法律を書き直した方が良いんじゃないのというとき、プログラム開発の現場の知見で分析することで、定量的にいかに書き直さなきゃいけないのかというのを提言できるんじゃないかと」(川上会長)そこまで考えるなら、もう議員として立候補してくれてもいいんじゃないか。政党名はニコニコ党とか言って。2.0シンポジウム」という著作権について考える会でも話していたもの。そのときはKADOKAWAの角川歴彦会長から「川上くん、あれ話してよ」と言われて話したもので、社外秘の情報を「ここだけの話」としてこっそり出したような雰囲気だったのだ。今回も書くのは遠慮してたわけだけど、考えてみればみんなツイートしてたし遠慮する必要なかった。そのとき川上会長は人工知能が作った作品の著作権について話していた。これも面白い話だから読んでみてね。