<前の日記(2010年12月13日) 次の日記(2010年12月17日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 2263   昨日: 1295

2010年12月14日

やはり起きていた刑事的萎縮効果による技術停滞 岡崎図書館事件(13)

12月12日の夕方、Twitterの#librahack界隈で以下のサイトが発掘された。

  • 杉並区立図書館 新着図書 更新情報 (非公式), http://www.naotaka.com/library/

    更新停止のお知らせ

    突然ですが、2010年6月22日をもちまして、「杉並区立図書館 新着図書 更新情報 (非公式)」の更新を停止させていただきます。

    当ページをご利用の皆様にはご迷惑をおかけしますが、ご理解のほど、よろしくお願いいたします。

    画面キャプチャ
    図1: 閉鎖後の画面

6月22日といえば、librahack.jp が公開された翌々日だ。東京の杉並区立図書館といえば、使われている図書館システムは三菱電機ISのMELIL/CS(新型)だ。

このサイトの公開された当時に書かれたサービス説明が、以下にある。

  • 杉並区立図書館の、「その日の新着図書」がわかるサイトを作ってみた, naotaka blog - ちょっと便利なソフトを創りたい、iMac (Early 2008) ユーザーのブログ, 2009年2月13日

    杉並区立図書館の、その日の新着図書が一目でわかるサイトを作ってみました。

    公式ホームページでは、一ヶ月間の新着図書が一度に表示されます。でも、毎日チェックしている身にとっては、その日入った本だけが知りたい情報だったりします。

    数百冊リストアップされている図書情報から、脳内で前日との差分を取り出すのも、なかなか骨の折れる作業です。こういった単調で、面倒な定型作業は、人間ではなく、機械の方が適任でしょう。 このサイトを作ったお陰で、一度に数分から十数分かかっていた手動によるチェック作業が、数秒に短縮されました。

    更新情報は、RSSでも出力するようにしてあるので、直接サイトにアクセスしなくても、livedoor ReaderGoogle リーダーのようなRSSリーダーでもチェックできます。

    このサイトの利点

    • チェック時間の短縮
    • RSSリーダーでの購読が可能
    • ページ移動のためのクリックが不要に(クリック数: 10回→0回)
    • 新着図書の履歴を、過去までさかのぼれる

    図書館側のメリット

    新着図書をチェックしたいだけの利用者の方が非公式サイトを利用するようになれば、公式サイトへのアクセス負荷を軽減できます。RSSはFeedBurnerを介して配信しているので、高負荷になっても安心です。

    杉並区立図書館のホームページは、たまに応答が遅くなったりすることもあったので、負荷軽減にもお役に立てるのではないかと思います。

    仕組み

    (略)

    まとめ

    地域限定な、ちょっと便利なサイトですが、杉並区の図書館をご利用の方はお試しください。

早速、開発者ご本人にメール取材を試みたところ、翌日、お返事を頂くことができた。以下、ご本人の了解を得てメールインタビューの内容を紹介する。

サイトを作った動機は、「librahack.jpの『なぜプログラムを作ったか』とほぼ同様の理由」とのこと。「図書館ホームページが使いづらく、必要な情報(その日の新着図書)が得られないため」作ったのだそうだ。

杉並区立図書館の「新着図書案内」のページにある「一般の本」のリンク先に出てくる、11カテゴリのうち、「文学」と「現代小説など」を除く*1、9つのカテゴリについて、それぞれのリンク先の新着図書リストのページを自動取得し、スクレイピング(必要な文字列部分の削り出し)をしてデータベースに格納、これを毎日1回行い、前日との差分をとって当日の新着図書とし、それを画面に表示していたそうだ。

librahack.jpとの違いは、各図書の書誌情報の中身までは取りにいかない点と、自分専用ではなく当初から公開サイトとしていた点とのこと。

稼働していた当時の画面のHTMLを送って頂いた。以下の図2のように、指定された日の新着分の図書が、書名と著者名、出版社などとともに表示され、書名部分のリンク先は、杉並区立図書館の当該図書のページになっている。

画面キャプチャ
図2: 閉鎖前の画面*2

書誌情報の中身まで取りにはいかないとはいえ、アクセスするページ数はそれなりの数になっていたようだ。杉並区立図書館の場合、新着図書のリストは(岡崎市とは異なり)25件ごとに分割されたページとして表示される*3。昨日の時点で調べたところ、対象ページは全部で120ページほどあった。これらに自動アクセスしていたということになる。

自動アクセスは、librahack.jpと同様に「シリアルアクセス」*4であり、アクセス間隔は、librahack.jpとは異なり、アクセスの間に3秒ずつのsleepを入れるという方法をとっていたとのこと。

エラー処理はとくに作り込んでいたわけではなかったが、HTTPが正常なレスポンスを受け取れなかった場合(400番台や500番台のステータスコードを受信した場合)には、Pythonの例外が発生してループを抜けるため、その時点でプログラム全体が終了するようになっていたとのこと。*5

プログラムは、librahack.jpと同様に、さくらインターネットのレンタルサーバに設置していたとのことで、sleep時間を3秒に設定したのは、「さくらインターネットにプロセスを停止されない程度のプログラム実行時間」となるよう考慮したためとのこと。

しかし、さくらインターネットのプロセス停止の基準が不明であるため、もしこれで停止されるなら、待ち時間を短くすることを含め、検討し直すつもりだったそうだ。

連続アクセスすることについては、「自分の運用するサイトのアクセスログを観察した経験から、Googleなどのクローラーが普通に1、2秒間隔で連続アクセスしているので、それと同程度かそれ以上の間隔なら問題ないだろうと判断」したとのこと。

公開サイトとして製作した背景には、スクレイピングの教科書として読んだ本「Spidering Hacks」に書かれていた「世の中に還元する」という章の内容に影響されたこともあるのだそうだ。

実際、公開されたこのサービスは、製作したご本人以外にも少なくとも数人の常時利用者(Google Reader登録者等)がいたらしい。

閉鎖の理由について尋ねたところ、次の通りだった。

「librahack.jpを読んですぐに閉鎖を決めた」とのこと。業務妨害事件自体は逮捕時の報道で知っていたが、「サイバー攻撃」といった何らかの悪意によるものだったのだろうという認識だったそうだ。それが、librahack.jpを読んで、自分と同じようなことをしていただけと知り、大変驚き、頭が混乱、「犯罪なのか?」と、言葉にすると「えっ?えっ?」という状況だったという。

「自分も逮捕されたらどうしようと恐れたし、今でも怖い」とのこと。

当初の議論で、一部に中川氏に対する批判や非難の声が少なからずあったため、それを目にするのが辛く、読んでいて心が痛くなったそうだ。

ただ、中川氏の「お詫び」の影響もあってか、自分にも至らないところがあったと、同様に反省の気持ちが強くあるとのことで、「ネットや図書館のあり方について、誰かを批判したり、主張したりする気持ちにはなれない」とのことだった。

見よ、これが愛知県警と名古屋地検が日本全土にまき散らした萎縮効果だ。これから発展していくはずの日本のWebの若い芽が摘み取られてしまった。

杉並区立図書館の場合、このように連続アクセスしても、閲覧障害は発生していなかったと思われる。なぜなら、ここのMELIL/CSは新型であり、DB接続は、都度接続方式かコネクションプーリング方式が使われていたはず(8月21日の日記参照)で、岡崎市の旧型のような構造的欠陥(8月29日の日記参照)は存在しないからだ。シリアルアクセスでこの程度の連続アクセスは、cookieオフであっても、何ら問題なく処理されるだろう。

しかし、もし、杉並区が旧型MELIL/CSだったなら、どうなっていたか。もし、「文学」と「現代小説」のカテゴリも対象にしていたとすると、200ページほどの連続アクセスとなる。3秒間隔で200ページにアクセスすると、ちょうど10分かかる。岡崎市同様にASPセッションタイムアウトが10分に設定されていたなら、あとは、DB接続の上限が何本だったかだ。岡崎市では約1000本*6だったが、他の図書館でははたして何本なのか。三菱電機ISは、7月から8月にかけて、朝日新聞神田記者の取材に対して、この本数を「セキュリティ上の理由」で回答を拒んだという経緯がある。図書館によっては200本程度かもしれないとすると、閲覧障害が出ていたかもしれない。

このプログラムの場合、中川氏のプログラムとは違って、1度HTTPのエラーが発生すると、Pythonの例外処理によってループを抜け、プログラムが終了するようにはなっていたわけだが、それでも、旧型MELIL/CSは、閲覧障害が1度発生すると、しばらく(タイムアウトまで)の間、その閲覧障害が続く構造になっているので、やはり閲覧障害は目立つ形で生じたと思われる。その場合でも、その閲覧障害は、ちょうどそのタイミングにたまたまWebブラウザで見に行った人にしか気づきかれにくいものになっている。したがって、この製作者の場合でも、もしそういう状況になっていた場合、事態に気づけなかっただろうと推測する。

ご本人曰く、「運が悪ければ、中川氏ではなく自分が逮捕・勾留されていたかと思うとゾッとします」とのこと。

中川氏が、IPアドレス制限ではなく、さくらインターネットによるプロセスの強制終了を疑ってしまったことについて、「わかる気がする」とのことで、さくらインターネットではないものの、他の共有サーバーでプロセスを強制終了された経験があり、「自分も誤った判断をしてしまったかもしれない」という。

また、中川氏が3か所のIPアドレスからアクセスしたことが悪質とみなされたっぽいことについても、「自分もテストの際は自宅から、運用時はレンタルサーバーの2か所からアクセスしている」「自分もそう見なされたかも」とのこと。

今回の私のインタビューに際して「プログラム作成時の記憶がすぐには思い出せなかった」そうで、そのことからも、中川氏が取り調べの際に有効な自己弁護ができなかったことに「同情を禁じ得ません」とのことだ。

ところで、こうした新着図書のページに対する需要は、この2名だけのものではない。東京の中野区立図書館では、2008年9月の時点で以下の文書が公表されていた。

  • 中野区立図書館に寄せられたご意見・ご要望, 2008年9月

    ご意見・ご要望

    現在ネットで新着図書を確認しようとすると新着図書の件数が多すぎてチェックするのに手間がかかり過ぎます

    新着図書のページの左下にある更新日を信用してチェックすると毎日新着図書が更新されている事になりますので新着図書を早く読みたいと思った場合毎日チェックする必要があるのですが、現在の仕様ですと重複してチェックをしなくてはならず、件数が多い分類ですとそれに時間を取られすぎてしまいます。

    こういった状況の改善の為に以下のような提案をさせて頂きます。

    まず新着図書の更新日は実際に新着図書を上げた日に更新に変更する。

    新着図書の表示件数が20件で固定されているのも時間が余計にかかる要因の一つですので普通の検索の時と同じように100件の表示も選べるようにする。

    そしてこれは普通の検索の時も同じなのですがページを飛ばしてジャンプ出来るようにする。(例えば書名で並べている際にラ行の本を見るのに次へで行くしかないのは面倒です)

    利用者が重複してチェックしないでも済むように新着図書を上げる際には前回の新着図書から新しく入庫した本を見られるようにする。(例:9月13日に新着図書を上げる場合、前回が9月6日だったとしたら9月6日〜9月13日の新着図書という形を提供する)

    システム的な問題で改善が困難であるのならば別ページを作ってリンクを張り、そこに上記のようなリストを載せるだけでも助かりますのでご検討お願い致します。

    (略)

    図書館からの回答または対応経過

    (略)

この中野区も、三菱電機ISのMELIL/CS(旧型)採用の図書館である。もしこの意見提出者が、コンピュータプログラムを書く術を持っていたなら、どうなっていたことか。さすがに警視庁なら、愛知県警のような愚かなことはしなかったはず、と信じたい。

ちなみに、その他の目的で、図書館に対してクローラを走らせたことがあるという人は、Twitterで何人もみかけた。

さて最後に、あらためて、「岡崎図書館事件 その1」で書いた、5月に岡崎署に電話してO警部補*7と話したときのことを再掲しておきたい。

私:情報セキュリティの研究をしている者ですが、26日の朝日新聞報道で、岡崎市立図書館のホームページに集中的にアクセスして閲覧しにくくしたということで、業務妨害罪の疑いで逮捕という実名報道がありましたが、技術者の観点からすれば、連続してアクセスするソフトウェアを作って使うということは、通常よくすることであって、たしかにちょっとミスをすれば過大な負荷を先方にかけてしまうこともあるかもしれないですが、それによって逮捕されるとなると、これはちょっと恐ろしい話で、今後の産業の発展に萎縮効果が出るのではないかと懸念するのですが、いかがでしょうか。

警:まだ捜査中ですので、捜査の内容をお伝えすることはできないですので、報道で発表のとおり、そこまでしかお伝えすることはできないですけども、はい。

私:はい。……。

警:闇雲にただサーバが機能が低下したからということで逮捕したわけではないものですから、そこまでに至るものというのはまだお話でいないですけども。

私:はははー。何かあるんですね?

警:そういうことです。

私:なるほど。

警:通常、高木さんがおっしゃる通りなんですよね。そういった可能性というのは非常にあると思うんですよ。ただそれだけをもってですね、逮捕するということはできないと思うんですよね。

私:そうですよねー。

警:裁判官の許可も当然必要ですし。

私:業務妨害罪は、過失罰の規定はあるんでしたかね。

警:ないですね。

私:ないですよねー。報道からすると、過失でやってしまってもこのように逮捕されてしまうのかなという感じがそうとう世間で広がってしまっていて、こわいこわいという話が出ているのですね。産業の萎縮につながりかねないと思うのですよ。その観点でこれはかなり問題のあるケースで、過去にも事例がなかったと思うのですけども。このような不安感を与える事案というのはなかったと思うのですよね。

警:過去にですが、ケースバイケースで細かいところまではわかりませんが、サーバが負荷がかかって停止に追い込まれたということで同じような業務妨害という起訴事例はあるんですね。

私:でもそのときは、何か嫌がらせするとか何か恨みがあってというようなケースで、最初に報道される時点で、そういった情報も出ていたと思うのですね。

警:はいはい。

私:でも今回何もなくて、ただ連続してアクセスするプログラムを作っていたという報道が大半で、ごく一部の報道では、情報を必要としていたのでそういうものを作ったという供述で、業務妨害の意図は否認しているという報道も出ておりましたが。

警:はいはい。

私:過去に前例がないと申したのは、通常はなるほどと思う、恨みがあったとか嫌がらせをしていたといった点も合わせて報道されていたと思うのですね、かつてあった事例としては。そういうものがないこういう形で出るというのは今回が初だと思うんですよね。

警:報道の方がですね。

私:でも、報道が出るというのはこれ警察の発表次第ですよね。

警:そうですね。

私:つまりそちらで発表されたその時点で、たしかに故意でもって業務妨害をしている*2というのを疑わせるのに十分なだけのポイントというのが、発表になかったのかなと。報道されてないということは。そういう状況でこういうのを流すというのはよくないのではないでしょうか。

警:不安を煽るということですね。

私:はい。産業の発展に対して萎縮を招くと。ただでさえGoogleのような検索サービスとかをやるにあたって、アメリカに全部取られてしまって日本企業が世界で勝てないという状況がある中で、こういうケースでいきなり逮捕で実名報道となるということが繰り返されていれば、誰もそういったリスクをとった産業の新しい……マッシュアップとかいうのですよ最近、プログラムで自動的にいろんなところから情報を集めてきて何か構築して、より発展的なサービスを提供するというのは、マッシュアップなどと呼ばれて海外では頻繁に行われているのですが、そういったものをやろうとすること自体、リスクと考えてしまって産業の発展を阻害しかねないと、思います。

警:はい。

私:何がいけなかったかといえば、何らかの、そちらでは確信を持っていらっしゃる、業務妨害の意図を持ってやったと思われる何らか、その点が公表しないまま報道された、しかも実名報道で。という点が今までにない事態だと思います。

警:新聞の、報道のあり方ですね。

私:報道は、警察発表に基づいてですよね。

警:もちろんです。もちろん、はい。それが不安感を煽るし、産業の萎縮を、発展を阻害するということですね。

私:はい。

警:わかりました。

私:記者に対する発表で、肝心なポイントである確かに業務妨害でやっていると思われるポイント、そこをしっかり付けた上で今回発表されたのでしょうか。記者がそこを抜かして書いちゃったのであれば、報道の責任でしょうけども。記者に伝えるにあたってそのポイントを発表されたのですか。

警:同じ組織内で恐縮ですが私は一捜査員でして、発表は警察の上層部が検討の上マスコミ発表しているものですから、こういった意見が多々ありますよと、実は高木さんだけじゃないのですねお電話頂いているのは。組織の上層部に上げまして今後検討していかなければいけないのかなと思います。ただ、捜査自体は、故意という部分は認められるという情報を持っておりますので、それはそれで進めていきますけども。報道の発表のし方について産業の今後の発展が阻害される、萎縮するのではないかという、不安感を煽っているという方がたくさんみえるということは上層部に伝えたいと思います。

私:はい。朝日新聞の記事では「目立ったトラブルは確認されてないといい」ということになっていて、なんら故意でやったわけでもないかのように報道されていて、何か発表のし方に問題があったように思うのですけどもね。

警:わかりました。その点も踏まえまして。

私:はい。是非ご検討頂きたいと思います。

警:わかりました。はい、わかりました。

私:どうもありがとうございます。

警:どうもありがとうございました。

*1 これらを除いたのは、これらは数が多く、ご自身の興味の対象から外れていたためとのこと。

*2 このHTMLはテスト時のものとのこと。

*3 2010年2月か3月ごろまでは、25件固定ではなく、件数を選ぶ機能があった(図書館側に)ため、100件ずつ取得していたが、仕様が変更された後では25件ずつ取得していたとのこと。

*4 1つのアクセスが終わってからでなければ次のアクセスを開始しない。つまり、同時並行アクセスはしないというアクセス方法。DoS攻撃では通常、同時並行アクセスが行われる。

*5 エラー処理をしっかりと作り込みはしなかった理由について、確実にデータを取得したいわけでもないので、再取得の試行を行わず、数日間データの取得ができなかったら、その時点で対処しようというスタンスで運用していたとのこと。

*6 先日の三菱電機ISの会見での日経新聞記者の質問では「1100本」とされている。

*7 中川氏を釈放するときに「図書館には行かなくていいからね」と言ったという警部補(=警部補A)。

本日のTrackBacks(全6件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20101214]

「やはり起きていた刑事的萎縮効果による技術停滞 岡崎図書館事件(13)」より気になった点を

『新着図書 更新情報 (非公式)」の更新を停止』って残念ですね
せっかくの便利なものなのに

『数百冊リス...

高木浩光氏の"自宅の日記"から。 やはり起きていた刑事的萎縮効果による技術停滞 岡崎図書館事件(13) http://takagi-hiromitsu.jp/diary/20101214.html こちらの記事への疑問です。本来であれば丁重な文章に努めるべきところですが、そうしますと大変長い文章となってしま..

高木浩光@自宅の日記 - やはり起きていた刑事的萎縮効果による技術停滞 岡崎図書館事件(13)

検索

<前の日記(2010年12月13日) 次の日記(2010年12月17日)> 最新 編集

最近のタイトル

2024年11月11日

2024年07月28日

2024年07月27日

2024年07月07日

2024年04月07日

2024年04月01日

2024年03月23日

2024年03月19日

2024年03月16日

2024年03月13日

2024年03月11日

2023年03月27日

2022年12月30日

2022年12月25日

2022年06月09日

2022年04月01日

2022年01月19日

2021年12月26日

2021年10月06日

2021年08月23日

2021年07月12日

2020年09月14日

2020年08月01日

2019年10月05日

2019年08月03日

2019年07月08日

2019年06月25日

2019年06月09日

2019年05月19日

2019年05月12日

2019年03月19日

2019年03月16日

2019年03月09日

2019年03月07日

2019年02月19日

2019年02月11日

2018年12月26日

2018年10月31日

2018年06月17日

2018年06月10日

2018年05月19日

2018年05月04日

2018年03月07日

2017年12月29日

2017年10月29日

2017年10月22日

2017年07月22日

2017年06月04日

2017年05月13日

2017年05月05日

2017年04月08日

2017年03月10日

2017年03月05日

2017年02月18日

2017年01月08日

2017年01月04日

2016年12月30日

2016年12月04日

2016年11月29日

2016年11月23日

2016年11月05日

2016年10月25日

2016年10月10日

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|10|11|12|
2017|01|02|03|04|05|06|07|10|12|
2018|03|05|06|10|12|
2019|02|03|05|06|07|08|10|
2020|08|09|
2021|07|08|10|12|
2022|01|04|06|12|
2023|03|
2024|03|04|07|11|
<前の日記(2010年12月13日) 次の日記(2010年12月17日)> 最新 編集