kensyou_jikenboのブログ

yahoo!ブログの同名ブログを移行しました

第5回公判後記者会見

今回の公判は午後だけだったが、内容のインパクトは大きいと思う。
当方が会見を聞いて感じたのは以下のこと。
 ”片山氏の経歴からは「C#出来ない」レベルというのが業界の常識。
  或いはもう少し遠慮して「C#出来るとは言えない」というレベル”

例えばこう考えたら分かりやすいのではないか。
----------------------------
ある会社で2012年7月時点からC#のソフトを作ることになって、プログラマを探した。
派遣会社から以下のような候補者の経歴が送られてきた(「若干関与」や「初歩レベル研修」と云うような言い方は普通はしないが、今回の会見で出た率直な話を記した)
 (1) 2008年2月入社
 (2) 2009年秋…C#プログラム修正に若干関与
 (3) 2010年1~2月…C#初歩レベル研修
 (4) (3)以降~20012年6月…Javaでサーバー側ソフト開発

これで「C#出来る」と判断して採用するか? → 100%有り得ない。
人物面も聞いて、例えば「真面目で努力家」などであれば3ヶ月~半年ぐらいみっちり修行すれば使えるかも知れないということで、将来を考えて採用することはあるかも知れないというレベル。
その場合は別にC#即戦力の人を採用するということが前提になるだろう。
----------------------------
以上の説明でいかがだろうか。

ただ、今回の記者会見で江川氏や神保氏、他の記者の質問を聞いていて以下の事に改めて気づいた。
 ”開発痕跡の話より、開発の話のほうが技術者でない一般の人には理解し難いようだ”
各人の認識抜粋と当方見解を記す(→以降)。
----------------------------
(ⅰ)江川氏
 ・C#プログラム修正で、何千行もの修正に関与したということは能力が高いのではないか(と一般的には受け取られるのではないか)と気にしているようだった
  →言語が違ってもプログラミングの基本は同じなので、仕事で調査することになったら余り知らない言語でも何とかやれる。
    それは「修正」だからであって、動作テストで不具合箇所を特定できたら、その部分のバグを見つけて簡単なものなら治すことは出来るだろう。
   しかし、元のプログラムを作成する能力とは全く別の話。
   (例えば英語を読むのはネットの翻訳機能等を駆使して何とか読めても、書くのは全く別というようなもの) 
   実際片山氏は最初にそのプログラムを書くこともやったが、バグだらけで採用されなかったとのこと。
   また、それなのに修正作業チームには入れたのか?という疑問もあるようだったが、基本はテスト要員で簡単なところの修正はやったという位置づけと考えられ、開発ではよくあるレベルの話。ただそれが技術開発の経験がない一般の人にも的確に受け取られるかは不明かも知れない。

(ⅱ)神保氏
 ・「ソースコード」と「テキスト」という言い方をしていた。
  →「テキスト」は「コメント」のことを言っているようである。
    公判で証人がそういう言い方をしたのかも知れないが、技術者は普段コメントのことをテキストとは云わない。
    なぜならソースコードもテキストであるから、コメントをテキストと言ったら(間違いではないが)笑われる。
  ・「(C#の)コードを読むことはできるが書くことは出来ない」→この認識は合っている。

(ⅲ)どこかの記者
  ・「コメントアウト」を「コメントを書くこと」と誤解しているようだった。
   →これは全く意味が違う。
    例えばプログラムの或る行が「x=y+1;」となっていて、それをC#において「//x=y+1;」と頭に「//」を付けると、「x=y+1」の行は無効になる。
    「//」を付けるとコードではなくコメントになり、プログラムの動作に影響を及ぼさなくなるためで、これを「コメントアウト」と呼んでいる。
    C#でコメント化する方法はもう一つ有り、「/*(コード)*/」と云うように「/」と「*」で挟むと複数行でもコメント化して無効化出来る。(「//」はその行の終わりまでの効力)
   テストをして不具合が出たら、問題がありそうなコードをコメントアウトで無効にして、別のコードで動かしてみて不具合の挙動が変わるかどうか見るというようなことは常套手段。公判での説明がコメントやコメントアウトに対して何か特別な印象を与えるものだったのか。
----------------------------
結果的に今回の結論は片山氏の「C#出来ない」という主張に大きな信憑性が加わったと当方は見る
しかし、それだけでは「隠れて勉強したのではないか」というような憶測も出てくる。
まずは佐藤氏が「勉強していたらテストプログラムを沢山作るはずだが、そのプログラムや痕跡は全く見つかっていない」という反論をしていた。
(ネットにあったC#ソフトを改変して渡したという件は、次回公判でそれを受け取った人が証人で出るとのことだが、「半日か1日で作って改変も僅か」という弁護側の主張はどうやら正しいようである)

加えて当方が重視している開発期間の問題がある。
隠れて勉強しても業務で使っていなければ能力はなかなかアップしない。
また、通常の言語と同様にプログラム言語も使っていないと段々忘れてしまう。
C#の研修をやって、その後はJavaになって2012年7月時点だと2年半ぐらい経過している。
思い出す所から始めなければならない。
そんな面倒なことをやる気になるかという問題もあるが、もし思い出しながら隠れて勉強したとしても、そう簡単にスキルは上がらない。
このところ開発期間を考える際に指標にさせてもらっている、警察庁のエース級であろう新井氏とはレベルが相当異なって来るのは当然。(C#だけでなくクライアント側ソフト開発の経験差も大きい)

その新井氏がテスト期間除いて一ヶ月程度と見た開発なら、片山氏が隠れて勉強して開発したとして、少なくとも倍の2ヶ月はかかって不思議はないだろう。
片山氏も2ヶ月ぐらいという見立てなので一応合致している。

このような推測に異論のある技術者がいるかどうかと、その異論の内容が今後当方にとっては興味深い事項になる。
本事件は色々なことを教えて来てくれているが、とうとう技術者の開発に対する見識も問う場面まで作り出したようである。

さらに付け加えると、新井氏の見立てにテスト期間を足すと少なくとも1.5ヶ月程度が目処になるだろう。
片山氏だとそれが2倍で3ヶ月になる可能性も充分ある。
仮にぐっと短めで考えて2ヶ月としても、初回犯行用iesys2.0のコンパイルは7月26日だから5月末には開発開始となる。
検察側はそこまでの開発期間を主張するのだろうか。

以上
[追記]
今回の会見で佐藤氏は検察側主張の開発期間を「6月中旬から8月中旬の約2ヶ月」としていた。
これはその間の7月以降医者にかかっていたということを言う為だったので基本的には問題ない。

しかし、「C#出来るか出来ないか」の問題は開発期間も込みになってくる。
その場合の開発期間は、完了が「7月26日iesys2.0コンパイル」か、更に前の「7月23日バージョンなしiesysコンパイル」と考えられる。
また、始まりに関しての検察側主張も、今回佐藤氏が述べた「6月中旬」ではなく「遅くとも6月下旬までに開発を始めた」であったはず。
遅くともだから6月中旬も入ってくるということかもしれないが(或いは単なる記憶違いか)、初回犯行用の開発期間想定は非常に重要であり注意が必要。

検察側の開発期間の話に引きずられないようにするには、弁護団で公式見解をまとめてその期間をいつも使うようにした方が良いと思われる。
具体的には「開発期間」と「改訂期間」(プログラムの目的的に改「良」とは云いにくい)に分けるのが適切と思う。
 「開発期間」・・・終了は前述7月26日か7月23日。
           始まりは6月下旬か、或いはもう少し前か。
           本格的開発はCSRF後(当方はこの見方)という事も充分有り得るだろう。
 「改訂期間」・・・開発期間の終了以降8月20日頃まで。

追記以上