【PC遠隔操作事件】C#でのプログラム作成能力を巡って(第6回公判メモ)
4月15日に行われた第6回公判では、右陪席裁判官が戸苅左近裁判官に代わったため、更新手続きが行われ、主任弁護人の佐藤博史弁護士が意見を述べた。続いて検察側の証拠の要旨告知の続きを行い、犯人からのメールやメッセージを全文読み上げた。午後からは、派遣先で2ヵ月間ほど同じチームにいた元同僚の証言が行われた。
更新弁論で佐藤弁護士は「片山さんが犯人であれば、存在するはずの証拠が決定的に欠けている」と強調。また、検察側が公判が始まってから「ファイルスラック領域にiesys開発の痕跡が残っていた」という点を犯人性の最大の根拠にし始めたと指摘し、「公判前整理手続きでは全く主張していなかった。こういうやり方は、争点を明確にする公判前整理手続を反故にするもの」と批判した。にもかかわらず、裁判所は検察に理解を示しているとして、「なぜ裁判所は検察に肩入れするのか」と声を荒げた。
元同僚が「被告人からC#のプログラムを受け取った」と証言
証人は、2011年11月から12月の2ヶ月間、片山氏と同じ乙社に派遣され、リーダーのO氏、片山氏と一緒に不動産オークションシステムの開発に関わった、プログラマーのM氏(48)。
検察側主尋問によれば、M氏は片山氏から"SQL REPLACE"と題するC#で書かれたプログラムを受け取ったことがある、という。そのきっかけは、2011年11月下旬頃の朝のミーティングで、乙社が従来使っていた全国版のオークションシステムの画面と機能の関係を表にするツールを作ることを提案。するとO氏は片山氏に作成を指示した。片山氏は作成するのに2~3時間を要したが、その間M氏は、ただ完成するのを待っていた。途中、一回だけ彼の席に近づいて後ろから肩越しに片山氏のPC画面をのぞき込んだ。
以下、検察官の倉持俊宏検事との主なやりとりは次の通り。
倉持 被告人のPCで何をしていたか
M氏 VisualStudioを使ったC#のプログラムが書かれていたと思います。
倉持 C#と分かったのはなぜか。
M氏 C#特有のキーワードが片山さんが書いているプログラムにあった。
倉持 具体的には
M氏 "using"と"namespace"
倉持 何か被告人に確認しなかったか。
M氏 なぜC#なのかを質問しまして、「C#で組むと早くできる」という趣旨の回答が返ってきた。
倉持 他にC#は使いやすいとかは言っていたか
M氏 得意と言っていたかもしれません。そこははっきりしない。
倉持 どのような形でプログラムを受け取ったか
M氏 ソースコードを丸ごと圧縮した形で、IPメッセンジャーというコミュニケーションツールに添付して送ってもらい受け取りました。
倉持 ソースコードで送ってもらったのは?
M氏 プログラマーの習慣として、どういう動作をするか分からないものは自分の環境で動かさないことになっているから。
倉持 ソースコードを確認してから自分のPCで実行したかったのか。
M氏 はい
倉持 コンパイルが必要ですね。
M氏 はい。圧縮ファイルを解凍して、VisualStudioを片山さんにインストールしてもらってその中で実行しました。
倉持 被告人にインストールしてもらったのか
M氏 はい
倉持 解凍した後、C#のソースコード一式と分かったか
M氏 はい
倉持 どこからC#だと分かったか。
M氏 ん?
倉持 圧縮されたファイルが解凍していくつかのファイルがありましたね。
M氏 はい。
倉持 ファイルにつけた名前がありましたね。
M氏 ん?
倉持 ファイルに拡張子がついていましたね。
M氏 ソリューションファイルとかいう名前がついていました。
倉持 どういう拡張子でしたか
M氏 .sln
倉持 VSで開いてみて、やはりC#で作成したものだと分かりましたね。
M氏 はい
倉持 ファイルの拡張子は?
M氏 .cs
倉持 ソースコードのボリュームはどれくらいか
M氏 200行くらい
倉持 関数はいくつ使われていたか
M氏 2つか3つくらい
倉持 SQL REPLACEのソースコードを見て、被告人のプログラミング能力についてどう思ったか
M氏 普通だと思った
倉持 実行してみて不具合はあったか
M氏 なかったと思う。
倉持 他に被告人からC#のプログラムを受け取ったことは?
M氏 ないです
捜査段階の調書とは食い違う証言
反対尋問には、まず竹田真弁護士が立った。乙社でのPC環境や仕事の納期などについて尋ねた後、片山氏が作ったSQL REPLACEに話は移った。M氏に送られたのは圧縮されたsqlreplace.zipという形で送られた。
竹田 SQL REPLACEはどういう機能か
M氏 不動産オークションシステムの全国版、静岡版の機能と画面の関係を表にする。
竹田 SQL REPLACEの意味は?
M氏 SQL置換
竹田 表題とあなたの説明する機能は一致しないように思えるが
M氏 確かに…。
竹田 警察でSQL REPLACEのソースコードを見せられたことは?
M氏 見せられていない。
竹田 検察官調書ではデータを抽出するためのプログラムと供述しているが
M氏 検察ですか?……検察……どういう言い回しをしたのか覚えていません。
竹田 SQL REPLACEは、データを抽出するのではない?
M氏 画面と機能の関係を表示する
竹田 警察官調書や検察官調書では、データを抽出するためのプログラムと述べている。
M氏 はい
竹田 今日の法廷では一覧化すると述べている。これは、前の供述とは異なるのか。
M氏 んー
竹田 先ほど、プログラムは200行くらいと証言した
M氏 はい
竹田 平成25年6月15日付のあなたの検察官調書では、100行程度と供述しているが
M氏 その時はそう言ったかも。
竹田 平成25年4月24日付警察官調書でも100行程度のプログラムとある。そのように述べた記憶は?
M氏 記憶はおぼろげですが、言ったかも
竹田 使われている関数は、2つか3つと今日は証言した。
M氏 はい
竹田 6月15日付検察官調書では、関数は1つしか使っていないと述べているが
M氏 記憶はちょっとない。
竹田 そう述べていない、という記憶は。
M氏 それもない
竹田 4月24日付警察官調書でも、1つの関数しかないと述べている。
M氏 記憶定かでない。はっきり「1つ」とは言い切っていないと思う。
竹田 警察官調書では言い切っているが、記憶にはないか
M氏 ない
竹田 片山さんが作業するのを後ろから見ていた時間はどれくらい
M氏 1~2分ぐらい
竹田 そうすると、被告人が3時間かかったとして、残りの時間は直接見ていない
M氏 はい
竹田 インターネットで公開されているソースコードを組み合わせればできるものではないか
M氏 それは分からない
「あなたには記憶がないのか!」で激しい応酬
続いて反対尋問に立った佐藤弁護士は、M氏の能力について、「あなたが2ヵ月で乙社を辞めなきゃいけなくなったのは、あなたの能力不足ではないか」など、かなり直截な質問をした後、問題のプログラムについての質問に入った。
佐藤 (調書の中で)本件で事情を聞かれる経緯を述べているところで、あなたは、片山さんとのメールを確認していったところ、添付ファイルで見覚えのあるもの以外に、名前からはすぐに中身が分からない添付ファイルが1つあると言って、それにマルをつけている。
M氏 名前から中身が想像できないファイルが……
佐藤 1つだけあった、と
M氏 ……
佐藤 sqlreplace.zipの中身が分かる手がかりがあったのか
M氏 中身は、片山さんに送って下さいといったものがある、と
佐藤 記憶ですか?
M氏 記憶というか、その時にお願いしていますから。
佐藤 しかし、あなたは見覚えのないファイルと言っているんですよ。
M氏 ……
佐藤 sqlreplace.zipというファイル名だけでは、何のことか分からなかった、と
M氏 ……
検察官 ソースコードで分かったと言っている
佐藤 (検察官が証人に)答えを教えるのはやめてもらいたい!!!!
佐藤 竹田弁護士から聞かれたように、検察官からの質問で「200行」と答えたが、KSでもPSでもあなたは「100行」と答えている。検察官との打ち合わせで、倉持検事から「100行ではないか」と聞かれたことは?
M氏 ない
佐藤 検察官から「関数は1つではないか」と聞かれたことは?
M氏 ないと思う
佐藤 さきほど、検察官からC#であるという根拠を聞かれてすぐに答えられなかった
M氏 はい
佐藤 倉持検事が「拡張子は?」と誘導して思いついた
M氏 えーと…
佐藤 C#のプログラムの拡張子は?
M氏 .cs
佐藤 警察官や検察官に、プログラムの拡張子は.csだとしゃべったことは?
M氏 ……あります
佐藤 警察官調書や検察官調書には全く書かれていない。あなたには記憶というものがないのか。
その瞬間、裁判長が「失礼ですよ」と発言。佐藤弁護士が「なぜだ」と反論しかけると、検察官が2人同時に立ち上がって、声をそろえて「侮辱的だからです」と叫んだ。
激しいやりとりになりそうなところを、裁判長が「私が聞きます」と引き取って、証人に直接尋問した。
裁判長の尋問にも「んー……」
裁判長 あなたは、警察や検察の調書では、どうやら「100行」と述べているようだが…
佐藤 「どうやら」ではない!調書は採用されて、裁判所も見ているはずではないか。
裁判長 (無視して)違いがあるのは、どういうことか
M氏 100行程度だと…
裁判長 どうして(調書と今日の証言が)違うのか、理由、思い当たることは?
M氏 ん……理由……というのは……特には……
裁判長 関数の数も違うようだが、(違いが出る)理由は分かりますか
M氏 関数の数は……んー……
裁判長 それもよく分からない?
M氏 ……
続いて、佐藤弁護士の尋問。
佐藤 あなたは、片山さんが作業している間、見ていたわけではない
M氏 はい
佐藤 片山さんがインターネットからサンプルをダウンロードして加工した可能性は?
M氏 可能性だけなら……(小さい声)あるかもしれない
さらに言いよどむ証人
さらに、野間特別弁護人が初めて尋問に立った。野間氏は仕事の進め方などについて確認。仕事の納期は「決まっていた」というM氏に、野間氏が問いかける。
野間 納期は決まっていなかったのでは?
M氏 そうですね………(右手を額に当てたりこすったりしながら、しばし沈黙)。……ほとんど私か聞かされていなかった。
野間 12月の段階でも、納期は聞かされていなかった?
M氏 12月には……だいたいは決まっていたような気がする
野間 いつ頃?
M氏 ……1月の年明けてすぐ
野間 2012年の1月か
M氏 そうですね……
野間 12月の作業している段階で、1月までにできあがる見込みはありましたか。
M氏 見込み?……見込みは……微妙というか……間に合うかもしれない……と
野間 間に合う、とは言えない状況か?
M氏 ……んとですね……間に合わないというわけでもなくて、なんとも……
野間 片山さんとどれくらいの頻度でファイルの交換をしていたか
M氏 ……え……頻度は……そんな頻繁じゃなかった
野間 週1回程度か
M氏 ……××××(小声で聞き取れない)
野間 週2、3回か
M氏 ………………えー…………思い出せないんですけど、必要な時にやりとりしていた。
野間 (納品するプログラムの)動作テストはどのようにされるのか
M氏 …………動かしてはみてないと思う
野間 動作テストできる段階ではない?
M氏 ……そう……はい
野間 SQL REPLACEは、C#だと早く作れる、と片山さんから聞いた、と?
M氏 はい
野間 なぜC#だと早く作れる、と?
M氏 聞いてないと思います
野間 たとえば、使いやすいプログラムがあるからそれを流用するとか?
M氏 聞いてないと思います。
被告人は「私が作ったものと違う」
この後、短い被告人質問が行われた。
そこで片山氏は、M氏が言ったような機能を一覧表にするプログラムについては「作った記憶がない」と述べ、SQL REPLACEについて、こう説明した。
「タイトル通り、SQLの特定パターンをある文字列に置き換えるものだったと思う」「C#で書かれていた可能性はある」「インターネット上に転がっているサンプルを拾ってきたのではないか」
【江川コメント】
M氏の記憶は実に曖昧で、十分打ち合わせをしているはずの検察側主尋問でさえ、肝心な点を誘導されないと答えられないほどだった。そのうえ、M氏の証言するプログラムの中身が、片山氏が作ったものとは全く別物とするなら、今日の証人尋問はいったいなんだったのだろう…という気がする。
検察側が、なぜチームのリーダーだったO氏を証人に立てなかったのだろうか。片山氏が作ったSQL REPLACEは、仕事の効率化のためのプログラムで、O氏にも当然送ったはず、という。
おそらくO氏は、片山氏がC#でプログラムを書けるとしたい検察側が望むような証言をしそうもないからだ。この点については、検察側は他に証人を見つけられず、M氏に頼るしかなかったのだろう。
検察側による片山氏のC#の能力に関しては、前回の公判に出廷した、片山氏が所属していた会社の上司N課長の証言と今回のM氏で終わった。それを総合すれば、片山氏のC#の経験は、1)チームの一員として修正作業に関わったことが一度ある 2)研修の自主課題として初歩的なプログラムを作成した 3)M氏が証言したSQL REPLACEの作成――の3回。
弁護側は、「これしかない」とみる。この3件で行ったレベルとiesysとの間にはあまりに乖離がある、という点を重く見ているからだ。一方、検察は「C#でプログラムを作ったことがある」点を強調し、「だからiesysも作れたはず」という風に導いていこうとするだろう。
「全く作れない」「熟達している」という両極端での論争ならどちらかに軍配も上げられるだろうが、そうではない程度の問題になると、判断は難しい。今回話題になったSQL REPLACEにしても、検察側は片山氏が独自に作った「可能性」を前提に、弁護側はインターネットで拾ったプログラムを組み合わせただけの「可能性」を前提に話を進めており、どちらも「可能性」と推測の域を出ない。
そもそもiesys作成の難易度が分からないであろう裁判官たちが、このような証言を元に、どのようにして被告人のプログラム作成能力を判断したらいいのだろうか……。