岡崎市立中央図書館事件についての雑感

 
 岡崎市立中央図書館事件 議論と検証のまとめというサイトを作った。今月18日にアカウントを取得して,まる1日かけて原型を作り,以後3日を費やして各方面からの指摘や要請,Tweet などを反映しつつ,協力者と共に内容を拡充していった。
 
 議論のまとめサイトを作るために,それまでに行われた取材,検討,検証,議論,そういった様々なものを,librahack氏が逮捕された当時からのログを紐解いて全て読んだ。
 当然,関連する法令にも目を通した。
 
 それを踏まえての雑感を書き残しておこうと思う。
 

一番悪いのは誰だ

 
 はっきり,明言できる。証拠も揃っている。議論も尽くされた。
 
 愛知県警が最も罪深い。
 
 なぜか。
 愛知県警が最も多くの過ちを犯したからだ。
 
 過ちとは何か。
 捜査に入る前の予断,捜査課程での検証不足,捏造された自白調書,不当な逮捕,20日間におよぶ勾留,検察に対して嫌疑不十分としないよう要請。
 全て警察組織としてあるべきではない姿だ。
 捜査に入る前の予断があったことは明らかだ。岡崎市立中央図書館は警察官に促されて被害届を出したことがわかっている。つまり,警察官が「これは事件にできる」と判断したことになる。
 捜査課程での検証不足も明らかだ。提出されたアクセスログを見れば,毎秒一回を下回るスローなクローリングであったことは明らかで,それは決して悪質ではなく,むしろサーバの負荷をよく考慮したクローリングであったことが一目瞭然だったはずだ。なのに警察は「悪質なサイバー犯罪」との予断を覆せなかった。
 そして,自白調書。librahack氏が一言も発していない「結果的にDoS攻撃となった」という文言,何故かそのことに対して「責任は取る」といった内容が含まれていたこと,その自白調書は形式上偽計業務妨害を成立させ故意を認める内容であったらしいこと*1librahack氏の法的無知や家庭事情を背景にその調書にサインせざるを得なかったことがわかっている。
 
 少なくともこの三点については,警察法第二条の2に違反している可能性が高い,と俺は考えている。
 警察法の第二条を引用しておこう。

(警察の責務)
第二条  警察は、個人の生命、身体及び財産の保護に任じ、犯罪の予防、鎮圧及び捜査、被疑者の逮捕、交通の取締その他公共の安全と秩序の維持に当ることをもつてその責務とする。
2  警察の活動は、厳格に前項の責務の範囲に限られるべきものであつて、その責務の遂行に当つては、不偏不党且つ公平中正を旨とし、いやしくも日本国憲法 の保障する個人の権利及び自由の干渉にわたる等その権限を濫用することがあつてはならない。
 第二条に,確かに「犯罪の鎮圧及び捜査,被疑者の逮捕」という責務が含まれている。一見すると愛知県警は正しいように見えるが,第二条の2でそれは覆される。
 「その責務の遂行に当つては、不偏不党且つ公平中正を旨とし、いやしくも日本国憲法 の保障する個人の権利及び自由の干渉にわたる等その権限を濫用することがあつてはならない。」
 不偏不党かつ公平中正,だったと言えるだろうか?
 職権を濫用していないと言えるだろうか?
 
 不偏不党かつ公平中正なら,何故「悪質なサイバー犯罪」との予断のもとに捜査を行い,自白調書を捏造したのか。
 
 そして逮捕,勾留だ。朝日新聞記者の取材によって,最初の勾留期限である10日目,6月5日ごろには,愛知県警も名古屋地検岡崎支部も共に「これは攻撃ではなかった」との認識を持っていたことが明らかにされた。
 何故ここで釈放できなかったのか。
 
 合わせて20日,勾留期限を一度延長しての取り調べ。そして,起訴猶予処分。
 警察はlibrahack氏に「君は罪を犯したんだよ,でも反省しているから許されたんだよ」といった態度を取ったという。
 しかし,実際は違っていた。
 警察は検察に対し,「罰金刑(略式起訴)か起訴猶予処分とする」よう要請していた。
 そして検察は起訴できないと判断したのだろう,要請通り起訴猶予処分とした。
 
 これが不偏不党かつ公平中正と言えるか?
 
 愛知県警はまさに不法行為を行ったとして,批判されるべきではないのか?
 
 この期に及んでまだ事実関係を把握できず,警察に問題は無かった,警察にはアクセスログの解析能力やICTにまつわる常識的な技術力さえ不要などと妄言を垂れ流す輩がいる。
 馬鹿か。
 警察は犯罪の捜査をその職責としている。たとえハイテク犯罪といえども,捜査能力,つまりは常識的な,できれば高度な技術力を有する必要がある。
 この期に及んで「プロが主張しているなら警察は覆せない」などと妄言を垂れ流す輩がいる。
 馬鹿か。
 被害を訴える者がたとえその道の専門家だろうと,警察は公平中正であることが求められている。
 
 警察に予断を許せなどとは言語道断だ。戦前の高等警察か特高警察でも再現したいのか。警察に違法行為をせよとでも言うのか。
 
 話を戻そう。
 
 愛知県警に続いて取り上げるべきは,名古屋地検岡崎支部だろう。
 警察と共に20日の勾留を行い,警察の求めるままに起訴猶予処分を下した。
 警察と共に,librahack氏の拘留中に罪を構成しえないことを認識しつつ,嫌疑不十分または嫌疑なしとせずに,警察の求めるままに起訴猶予処分とした。
 検察官は公訴を行うことができる。それは警察官にはない権限だ。その権限を行使するかどうかは,検察官が証拠を吟味し,捜査した結果に基づく判断であるべきだろう。
 それができなかった。
 
 名古屋地検岡崎支部は批判されてしかるべきだろう。
 
 続いては三菱電機インフォメーションシステムズ株式会社だ。
 岡崎市立中央図書館と強固な関係を築いておきながら,他の図書館で露見した不具合の情報を共有していなかったことが明らかになっている。
 図書館に納品したシステムのうち,WEB機能については致命的な欠陥があったことはすでに明らかだ。
 そもそもそのような欠陥をもった製品を納品したことそのものも批判されてしかるべきだが,製品の不具合についてカスタマーに全く情報提供しなかったことも批判されるべきだろう。
 図書館職員は情報システムに明るいわけではない。MDISの主張を信じるほかには無かっただろうことは容易に想像がつく。
 しかし,3月の時点で「これは攻撃ではない,過去にあった不具合と同じものだ」と認識しておきながら,それを岡崎市立中央図書館に伝えなかった事実がある。
 
 これは信頼できる関係だろうか?
 
 最後に図書館だ。
 岡崎市立中央図書館は,ミスを犯した。
 被害届の提出より先に,アクセスログと一部利用者の個人情報を警察に渡したという。
 図書館として信頼できる行動であったか?
 そして大羽館長の言動はWEBの世界で通用するものだったか?
 
 否,だろう。
 
 しかし,図書館職員が,情報システム,ICT技術に無知なのは責められるべきではない。彼らは単に無知であり,信じるべき三菱電機インフォメーションシステムズから適切な支援を受けられなかったのだから。
 

責任関係

 
 一部の愚か者はlibrahack氏が三菱電機インフォメーションシステムズを訴えればよいと吹聴しているが,それはできない。
 三菱電機インフォメーションシステムズはlibrahack氏に対して何ら不法行為も違法行為も行っていないのだから。
 
 責任関係を明らかにしておこう。
 
 まず,三菱電機インフォメーションシステムズは図書館に対して責任がある。仕様を満たす製品を納め,情報システムの運用を適切に行う責任だ。
 今回の事件に関して,三菱電機インフォメーションシステムズは図書館の求めに応じてアクセスログを提出した。情報システムの運用に関して,図書館が主体であったことが知られている。三菱電機インフォメーションシステムズはあくまでも運用を委託されていた立場だったのだろう。保守契約の有無は明らかになっていない。
 図書館は三菱電機インフォメーションシステムズと警察に責任がある。三菱電機インフォメーションシステムズに対して情報システムの運転指示を行っていた。また,被害届を取り下げることもできた。
 細かくは,図書館館長の大羽氏個人はlibrahack氏に対して責任が発生した。
 先日の報道対応においてlibrahack氏のクローラが違法ではないと知っていた,と発言したためだ。
 警察と検察はlibrahack氏に対して責任がある。
 先に示したように,librahack氏に対して不適切な,あるいは不当な対応をしたことによるものだ。
 
 librahack氏がもし戦うなら,警察を相手取ることになる。そして,大羽館長を相手取る事もできるかもしれない。
 しかし,勝ち取れるものは微々たる金銭と表面上の謝罪だけだろう。それではいけない。
 

我々にできること

 
 朝日新聞の記事を書いた神田大介記者のTweetにある。
 「警察発表があったとは言え、もともとlibrahack氏の名誉を毀損したのは朝日新聞をはじめとするマスコミの報道です。その意味でも今回の記事は必要だったと考えています。」
 
 librahack氏が各所の責任を追及する意思を持たないことがわかっている。
 しかし,この事件のような警察の横暴を許す事はできない。
 たいていの技術者どころか,初歩のプログラミングを学び始めた者ですら,WEBのクローリングを行うプログラム,すなわちクローラを書くことは容易だ。
 Internet Explorerコンポーネントを利用して DOM を解釈させ,アンカータグを辿ってもいい。
 Perl の HTTP モジュールを使って同様の実装をしてもいい。
 TCP/IP 接続を行って HTTP コマンドを吐いてもいい。
 様々な方法で,比較的簡単に実装できる。
 
 その程度のことで逮捕されてはかなわない。
 
 我々にできることは何か。
 
 この事件が,この逮捕が不当であったこと,その理由,それら全てを白日の下に晒すことによって,間接的に librahack 氏の名誉を回復し,同時に全国の技術者達の安全を確保することだ。
 
 そのために,複数の技術者がそれぞれにできることをした。
 ある者は徹底的にソースコードを検証した。
 ある者は法的に矛盾があることを指摘した。
 ある者は状況を再現しようと実験を重ねた。
 ある者は関係各所に電話して事実を調べた。
 そして俺は彼らの仕事の結果にアクセスできるよう,まとめサイトを作った。
 
 心有る技術者達が奮闘している。それはlibrahack氏のためだけではない。全てのICTに関わる技術者のためでもある。
 できる限りの情報へのアクセスができるようにした。知る限りの情報源にリンクを張った。2ちゃんねるのスレッドに関しては協力者が素晴らしい働きで俺の不足を補ってくれた。
 細かな誤りを指摘してくれた人がいた。
 よりよいまとめサイトになるよう指導してくれた人がいた。
 多くの人に感謝すると共に,記録を続けようと思う。それが,たいした技術も持たず,検証能力も低く,法的知識に疎く,実験環境すら構築できず,各所に問い合わせる事すらできなかった俺にできる,たったひとつのことだから。
 

*1:逮捕前の調書→「結果的にDoS攻撃」「責任を取る」という内容があったらしい 朝日新聞記者神田大介氏の取材による検察調書→「取材のニュアンスからは、調書上は業務妨害罪がきちんと成立していること、それが未必の故意などではないこと、が感じられました」 librahack氏の記憶による最終検察調書→「罪となるような表現は一切なかったと思います。」

 プログラミングしようぜ!

 
 みんなもっとプログラミングしようぜ!
 
 俺がガキの頃,パソコンは「マイコン」なんて呼ばれてな。ソフトなんて少なくて高くてカセットテープで,MSXのROMを挿すだけってのは斬新でな。
 基本的に「マイコン」ユーザは,プログラマーだったんだ。
 だってソフトがねーんだもん。作らなきゃ仕方ないんだよ。
 月間マイコンポプコム,PIO,忘れちゃならねぇマイコンベーシックマガジン。プログラミング雑誌が毎月山のように売られてた。
 今みたいにDVD-ROMなんて添付されてない。ちょっと前のCDでもない。ソースコードがそのまんま印刷された本だ。信じられないだろ?シューティングゲームソースコードのまま載ってるんだ。
 だから改造もできる。自機をカッコよくしたり,一発で死ぬのをライフ制にしたり,もっと簡単に無敵状態にしたり。敵のキャラ絵や動きを変えたり,マップもいじれたなあ。
 時はアドベンチャーゲーム華やかなりし頃。謎解き系のゲームなのにプログラムがそのまま載ってる!なのに謎解きが楽しめる!
 暗号ってやつだ。マップやアイテムのデータが暗号化されてるってわけ。
 まだまだあるぞ。プアーな音源をミュージックマクロランゲージなんて文字列で演奏するんだ。
 サウンドカードがついてない機種じゃあビープしか鳴らない。そのビープ音を操って,単音だけど音程を出すテクニックとかあったなあ。
 
 みんなプログラマーだったんだ。
 BASICから始めて,マシン語をやって,アセンブラ書いて。逆スクロールができたときは大喜びしたね。
 目の前でテレビにつながれている「マイコン」が,俺の自由になる。ハイテクが指先で踊るんだぜ。サイコーじゃないか。初代PASOPIA,Z80CPU4MHz,64KBメモリ。俺の初恋の相手だ。
 
 時が下って学生の頃。
 PC-9801RX2。忘れもしない。MS-DOS3.1D。世界標準の「OS」が動くんだ!
 夢中になったね。当時はまだあった中古ソフト屋で Turbo C なんて買ってきてさ。古いけど MS-DOS2.11 システムコールリファレンスなんて買ってきてさ。「ベーマガ」だって現役だ。N88-BASIC(98) でベーシック書ける。TurboCでC言語もかじる。MASMでマクロアセンブラかじる。おもしれーのなんの。四角い箱に乗っかったCRTディスプレイの真っ暗な中をMASMで書いたドットが降ってくる。たったそれだけで感動したね。
 そしてTurboC!ガキの小遣いで買えるギリギリの五千円!奮発したね!
 BASIC とはちょいと違うんだぜ。コイツは関数型言語っていうんだ。BASICのサブルーチンなんて目じゃねーぜ!
 もちろんゲームもしたさ。たくさんしたね。中古ソフトで買ってきてプロテクト外し。こいつがまた楽しいんだ。プロテクトをどうやって外すか。メーカーとの知恵比べだ。フロッピーの特定セクタだけNULLで埋める?それともわざとコピー失敗するセクタを作る?うまくいけば元のソフトは速攻で中古屋に転売。そんな時代だった。
 プロテクトをやっと破ったと思ったら,ゲームの途中で滝の中に取り残されたりしてな。しまった!コピー失敗だ!って思ったときはもう元ソフト売っちゃってたりしてな。
 プロテクト破った!って思ったら,「こんなことしてるヒマがあったら履歴書書いて送って来い!」なんてメッセージが出たりしたっけな。
 
 さらに時代が下って社会に出る頃。
 やってきたのが Windows ってやつだ。こいつは手強いね。コンソールでしかプログラミングしたことなかったから,画面が作れねーんだ。オブジェクト?なんだそれ?C++?クラスって何だ?
 しばらくプログラミングから離れた時期だな。俺はオヤジと一緒に土建屋やってた。ノートパソコン持って出張に行って,公衆電話から音響カプラとポケットモデムつないでニフティサーブパソコン通信ってやつだ。楽しかったなあ。プロバイダの企画を提案して,「ネットスケープvsインターネットエクスプローラ 業界人覆面対談!」みたいなことが実現してな。
 ネットってすげー!って思った時期。
 
 それから,俺はプログラマーに戻った。
 ちょっとしたソフト屋に転職してな。そこで始めて,Visual Basic ってのを触ったんだ。
 こいつはすごいぜ,VB4ってやつだ。なんたって画面がすぐできる。イベントプロシージャってやつに処理を書けば,ボタンを押したときに反応する。ああ,なつかしの関数を .bas モジュールに書く日々!
 VB5になってクラスの概念がやってくる。Quick-Cなんてコンパイラ使ってFAもやった。VB6を使いこなせるようになった頃,俺はずっとしまいこまれていたPC9801RX2に,FreeBSD(98)ってのを入れた。はじめてのUNIX系OS
 まだ洗練されていなかったPerl4でちまちまツール書いたなあ。IRCデーモンをインストールして同僚とチャットしたっけ。BSDじゃあgccがフリーでついてくるんだぜ!こいつぁすげぇ!
 
 やがて俺は独立してフリーランスになる。新しい開発環境,Linux環境。Perl,C,VB,VC,Java。設計して書いてデバッグして結合テストして・・・
 プログラマーがいつのまにかSEになって。で,今の会社にもぐりこんだときはコンサルタントだ。
 仕事で書くことはほとんどなくなった。
 
 でも俺は書いている。
 
 こんな楽しい遊びを知ってもらいたくて書いている。
 
 ハッカージャパンの後ろのほうで,ひっそりと,だけど,いつのまにかもうすぐ十年。
 手にとってくれたら嬉しいな。
 そして一緒に遊ぼう。WindowsだってUNIXだって遊べる。Visual Studio はなんたってタダで初級版が手に入るんだ。知ってるか?今じゃJavaだってVisualStudioみたいにEclipseってのでサクサク書けるんだぜ?
 IIS入れてASPならVBScriptかな。ブラウザでリッチな動作をさせるにはJavaScriptも書けたほうがいい。LinuxApache入れてCGIならPerlで充分かな。PHP?あれはちょっと苦手。本当はASPも苦手。データとコードが混在するのはちょっとね。
 
 おまいさんの目の前にあるコンピュータは何で動いてる?
 Windowsかい?Mac OS Xかな?それともLinux?渋めにOpenBSDとか選んじゃったりした?
 どんな環境でも大丈夫。一緒に遊べるさ。
 
 楽しもうじゃないか。そこにあるコンピュータは,もっと自由に動かせるんだ。
 手を伸ばそう。インターネットにアプローチしよう。ほんの数年前まで夢みたいなことが今ならできる。知ってたか?そのコンピュータは世界に向かって手を伸ばせるんだ。ブラウジングするだけじゃない。ブラウジングされる立場になってみないか?世界中ともっと深く確かに繋がろう。さあ,開発環境はそこにある。WindowsならWSHが。MacLinuxBSDならもっとリッチな開発環境が最初から揃ってる。ちょっと手間をかければたいていのものが準備できる。俺たちが遊ぶのに小遣いはいらない。こんなエキサイティングなゲームがほとんどフリーで遊べるんだ。さあ,キーボードに手を乗せて。少し深呼吸しようか。吸って,吐いて。準備はいいかい?今までとはちょっと違う,アクティブなコンピューティングの世界が待っている。
 
 さあ,プログラミングしようぜ!