最新 追記

高木浩光@自宅の日記

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

2010年08月08日

不正指令電磁的記録罪創設刑法改正が前進か

毎日新聞のスクープ記事によると、6年前から店晒しになっていた不正指令電磁的記録罪を新設する刑法改正案を、共謀罪から切り離して提出することを法務省が検討しているそうだ。

    サイバー犯罪:「ウイルス作成罪」創設へ 刑法改正を検討, 2010年8月7日

    コンピューターウイルスを使って個人情報を流出させるなどのサイバー犯罪を阻止するため、法務省はいわゆる「ウイルス作成罪」を新たに創設する刑法改正の検討に入った。(略)法務省は早期の法案提出を目指す。(略)

    同種の刑法改正案は共謀罪を創設する組織犯罪処罰法改正案とともに03年以降3度、政府が国会に提出し、いずれも廃案となった。今回はサイバー犯罪防止の重要性がより高まっているとして、共謀罪を除き提出する方向で検討している。

そのまま切り離して再提出するのか、少しは直す余地があるのか。また、不正指令電磁的記録罪の他のバンドルして出されていた部分も出てくるのかといった点はまだ明らかにされていない。前回の提出法案では以下のものが含まれていた。

  • 犯罪の国際化及び組織化並びに情報処理の高度化に対処するための刑法等の一部を改正する法律案要綱, 法務省, 国会提出法案など
    • 第一 刑法の一部改正
      • 一 国外犯処罰
      • 二 封印等破棄
      • 三 強制執行妨害目的財産損壊等
      • 四 強制執行行為妨害等
      • 五 強制執行関係売却妨害
      • 六 加重封印等破棄等
      • 七 公契約関係競売等妨害
      • 八 不正指令電磁的記録作成等
      • 九 不正指令電磁的記録取得等
      • 十 わいせつな電磁的記録に係る記録媒体等の頒布等
      • 十一 電子計算機損壊等業務妨害の罪の未遂
    • 第二 刑事訴訟法の一部改正
      • 一 差し押さえるべき電子計算機に電気通信回線で接続している記録媒体からの複写
      • 二 記録命令付き差押え
      • 三 電磁的記録に係る記録媒体の差押えの執行方法
      • 四 電磁的記録に係る記録媒体の差押状の執行を受ける者等への協力要請
      • 五 保全要請等
      • 六 電磁的記録の没収のための所要の規定整備
    • 第三 組織的な犯罪の処罰及び犯罪収益の規制等に関する法律の一部改正
    • 第四 刑事事件における第三者所有物の没収手続に関する応急措置法の一部改正
    • 第五 国際捜査共助法の一部改正
    • 第六 条約による国外犯処罰
    • 第七 地方税法及び国税徴収法の一部改正

Twitterでの世間の反応を見ると、案の定、「ウイルス」「作成」という言葉のイメージに引きずられた感想が流れている。毎日新聞は8月8日の「MAINICHI RT」紙にこのニュースを掲載、Twitterでの反応を載せている。

写真
図1: 2010年8月8日のMAINICHI RT紙

写真
図2: MAINICHI RT紙に掲載されたあるtweet

私がこの法案の条文を初めて耳にしたのは、2004年だったか、経産省から電話があって、こういう法案があるけどどう思うかと訊かれたときだった。元々「ウイルスの定義をどうするんだ?」と思っていた私としては、「そういう作り方があるのか。なるほど。」と思った記憶がある。

そのときを思い返すと、要するに、他人を騙してプログラムを実行させる行為を処罰できるようにする話なんだと理解して、「なかなかいいんじゃないの」との感想を持ったのだと思う。

しかし、その後、情報ネットワーク法学会のセミナーで改正案の解説を聴講しに行ったところ、強い違和感を覚え、2004年5月15日の日記に疑問点を書いた。この時点では、不勉強なため法律についての考え方がまるでできておらず、独り言をつぶやいたにすぎなかった。

2年後、未だ成立していないこの改正案について、とうとう「「不正指令電磁的記録に関する罪」に「作成罪」はいらないのではないか」という日記を書いた。これに対し、石井徹哉先生からトラックバックを頂き、何往復かに渡って議論……というか、刑法の考え方を諭してくださった。要するに、文書偽造の罪を考えるときに、偽造私文書行使罪(刑法161条)があれば私文書偽造罪(同159条)(行使の目的での私文書の偽造)は要らないのか、いや、現にあるじゃないのという指摘であった。

このやり取りを通して、疑問を呈すなら相手の土俵の上で、つまり法律の領域の言葉と概念で説明しなければ、けっして聞き入れられるものではないことを痛感した。

そして、ググっても見つからなかった、法制審議会刑事法(ハイテク犯罪関係)部会の議事録を見つけ、それを読んだところ、何を言えば問題点を指摘できるのかがわかり、やっと言いたいことを書けるようになった。

その後も、繰り返し同じことを説明方法を変えて主張してきた。

要するにどういうことか、今日tweetしたことを貼っておく。

  • 正確な通称は「供用目的ウイルス作成罪」「供用目的ウイルス取得/保管罪」なわけだが、「供用目的」という主観的目的要件での限定では不安だという向きは、猥褻図画販売目的所持罪のことをどう考えるのか。みんな所持しているのに。
    約18時間前
  • そして「供用目的」の意味がキモ。供用とは他人の使用のために提供することを言うように、単に提供するのとは違う。人の電子計算機で実行されるのに用いられるように供するという、そういう目的までもが求められる目的要件になっている点に注意。
    約18時間前
  • ところが本当は「供用目的不正指令電磁的記録作成罪」であり、「不正指令」が何かというと「人が…使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令」であるわけで、そうであるか否かを誰が決めるの?という話がある。
    約18時間前
  • 私が思うに起草者の元々の趣旨は、「人が…に際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせる」ような実行の用に供する目的での作成を罪としたかったんだろうと思う。この違いを区別する必要性に気づかずに法案が書かれてしまったのだと思う。
    約17時間前
  • その区別の必要性は、法制審議会で議論されておらず、一度だけあった発言「作成者が,その意図が,コンピュータの誤作動をさせる目的があったかどうかということを抜きにして,作成する行為そのものをここまで取り上げるのはどうか」がそれに近いが、スルーされている。*1
    約17時間前
  • 元々の趣旨の点、実際、法務委員会で法務省刑事局長がそのように答弁している。→「『…実行の用に供する目的』とは、人が…に際してその意図に沿うべき動作をさせず、またはその意図に反する動作をさせるべき不正な指令を与える状態にする目的を意味しております。」*2
    約17時間前
  • ならばちゃんとその趣旨(刑事局長答弁)に沿うように法文を作り直してよ、というのが私の意見。しかしその区別の必要性がおわかりでないかもしれないと不安。なぜなら、個人がプログラムを開発して無償提供する文化に触れていない方々にはその肌感覚がないだろうから。
    約17時間前
  • 先日刑法学の先生とお話しした際、独や英での法ではdual useが問題になってしまっていて、日本ではそれを回避しようとしてこの起案になったのではないかと伺った。発案は良かったと思うが、法文に起こす段階で立法技術的にミスをしたということなのだと思う。
    約17時間前

法務省刑事局長の答弁というのは、2008年1月26日の日記で書いたように、以下の発言であり、2回、同趣旨のことが言われていることからして、これが言い間違いということはないのではないかと思う。

(大林政府参考人 = 法務省刑事局長 大林宏)

○大林政府参考人 今回新設いたします不正指令電磁的記録作成等の罪は、人の電子計算機における実行の用に供する目的で行われることが必要とされております。

そこで、この「人」という解釈でございますが、刑法の他の規定と同じく、犯人以外の者ということでございます。また、「電子計算機における実行の用に供する目的」とは人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、またはその意図に反する動作をさせるべき不正な指令を与える状態にする目的を意味しております。

したがって、不正指令電磁的記録作成等の罪が成立するためには、不正指令電磁的記録、すなわち、コンピューターウイルスが、犯人以外の者が電子計算機を使用するに際してその意図に沿うべき動作をさせないか、またはその意図に反する動作をさせるべき不正な指令を与える状態にする目的を犯人が有していることが必要でございます。(略)

衆議院議事録, 第162回国会 法務委員会 第26号, 2005年7月12日

しかし、実際に提出されている法案の条文は、「人の電子計算機における実行の用に供する目的で」としか書かれていないわけで、「実行」には何も限定がかかっていない。文章通りに解釈すれば、どういう実行であれ他人に使わせる目的であればこの目的要件を満たしてしまうわけで、他人に使わせているソフトウェアの全ての作者はこの目的要件を満たしてしまう。*3

そうすると、あとは、そのプログラムが客観的どのように評価されるかしだいということになってしまい、結局ふりだしに戻って、「意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令」とは何なのか、どう線引きするのかという話になってしまう。

このような私の主張に対し、法律に詳しいと思しきブロガーの方などから、「その懸念は故意で落ちるから心配ない」という趣旨の指摘を何度も頂いた。つまり、プログラム作成者がそのプログラムが「人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせる」ものであると認識していないならば故意がないことになると。

しかし、その場合、一旦そう認識させられたならば、プログラム提供を中止しなければならないのかという問題が残る。

たしかに、客観的な評価として危険なプログラムとされるものを作ってしまった場合には、その危険をなくすよう直した方がよいことには違いないが、直さないで提供し続けていると犯罪になるというのは、間違っていると思う。

このことについては2008年6月21日の日記で書いた。それに対してさらに「やはり「故意」で解決できるのではないか。」というトラックバックを頂いており、反論を書きたかったのだが、今見てみるとリンク先が消えていて読めない。この記事のはてブエントリに冒頭部分が残っているので引用すると、

結論を先に述べると,以下のようになります。やはり「故意」の問題として処理すれば足りるのではないか。高木氏の『構成要件(の一部)に該当するだけで不安』という考えは杞憂ではないが,積極的に放置したような場合でないと処罰されないと考えられるため,許容でき...

という書き出しだったようだ。やはり、「積極的に放置したような場合でないと処罰されない」とあるように、放置してはいけないという前提での主張のように見える。

私が言いたいのは、たとえ、プログラムの動作内容が誤解されやすいもの(その結果、利用者の意図に反する実行がなされる)であっても、プログラムの作成者に、誤解させて実行させる目的がない限り、それは犯罪ではないということだ。

というわけで、このような問題認識に基づいて、私も2006年10月22日の日記で修正案を書いている。

(不正指令電磁的記録作成等)
第百六十八条の二 人の電子計算機における実行の用に供し、人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせる目的で、次に掲げる電磁的記録その他の記録を作成し、又は提供した者は、三年以下の懲役又は五十万円以下の罰金に処する。

一 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録

二 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録

2 前項第一号に掲げる電磁的記録を人の電子計算機における実行の用に供し、人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせた者も、同項と同様とする。

3 前項の罪の未遂は、罰する。

(不正指令電磁的記録取得等)
第百六十八条の三 前条第一項の目的で、同項各号に掲げる電磁的記録その他の記録を取得し、又は保管した者は、二年以下の懲役又は三十万円以下の罰金に処する。

直すべき点がわかるようにあえて冗長に直接的に書き直したものなので、刑法の法文としては不格好な構成になっているに違いないが、そこはプロが直してほしいと思う。

ところで、日弁連は、2003年7月に「ハイテク犯罪に対処するための刑事法の整備に関する意見」を発表しており、その中で、「不正指令電磁的記録等作成等の罪の新設等」として、次のように主張していた。

とりわけ,不正指令電磁的記録等の作成については,それらの予備的行為の中でも最も早い段階を犯罪行為として捉えようとするものであるし,不正指令電磁的記録取得罪及び同保管罪は,コンピュータ・ウイルスが送りつけられるという,いわば被害者的な立場の者について犯罪が成立する可能性があることを考えると,我が国においては,これらの犯罪の新設については時期尚早と言うべきであり,立法事実が存しないと言わなければならない。

たしかに、2003年7月当時は、まだ、いわゆる「仁義なきキンタマ」ウイルスが登場しておらず、日本発の悪質なウイルスはあまり出てきていない時期だった。それが、その年の暮れには「仁義なきキンタマ」が登場して、翌年から大規模な被害が連続して大量に発生する事態となった。

Winnyネットワーク等でのウイルス流通が止まらないのは、わざとウイルスばかり集めて溜め込んで共有状態を維持し続けている輩がたくさんいることであり、彼らがそれをやめない限りウイルス被害はなくならないわけで、供用目的取得罪や供用目的保管罪がそこに有効に働いてくるはずである。このことについては2008年2月3日の日記に書いた。

それに対して、2003年7月の日弁連の意見書は、次のように主張していた。

財団法人社会安全研究財団が2002年3月にまとめた「不正プログラム対策に関する調査研究報告書」は,故意に不正プログラムを使用するなど悪質な行為は何らかの法的規制が必要であるが,その保有・入手・流通・製造段階での規制については,ヒアリング調査の結果賛否両論であり,まず,使用のみを規制の対象とし,その効果を見て保有・入手・流通・製造について段階的に規制すべきであるとの意見が出されており(同報告書38,39頁),これが現時点での我が国での代表的な見解と考えられる。

それからもう7年、状況はすっかり変わってしまっているのだから、日弁連は改めて、不正指令電磁的記録罪について意見書を作り直すべきではないだろうか。

*1 法制審議会刑事法(ハイテク犯罪関係)部会第3回会議にて

*2 2005年7月12日の衆議院法務委員会にて。

*3 実際、法制審議会刑事法(ハイテク犯罪関係)部会の議事録に目を通すと、この目的要件の解説が何回も何回も出てきているけども、「他人に実行させるつもりがないなら罪にならない」という説明しか出てこない。たとえば、「自分のコンピュータでウイルスをテストする分には,この要綱の案で申し上げますと,「人の電子計算機における実行の用に供する目的」がありませんので,当然当たらないというように考えております」という発言が繰り返し出てくるが、それ以上につっこんだ説明は出てこない。

本日のリンク元 TrackBacks(6)

2010年08月09日

岡崎図書館事件 日記予定

岡崎図書館事件について その1」に続く今後の日記予定。

岡崎図書館事件(2) 何があったのか、図書館はどうしたのか、事実関係の聴き取り
6月20日のこと、Twitterで @librahack から言及された。見に行ってみると http://librahack.jp/ というサイトが出現していた。なんと、岡崎図書館事件で逮捕された方は不起訴処分になっていた。@librahackからフォローされていたのでダイレクトメールで連絡が欲しいとコンタクト。メールで何があったのか事実関係を……
岡崎図書館事件(3) 業務妨害は故意がなくても犯罪だというデマの蔓延
Twitterで「逮捕はしかたない」と言う人が何人もいて驚いた。刑事責任と民事責任を混同している人、刑法の過失犯の概念を理解していない技術系と思しき人々がいる中、法律に詳しいと自称する人が、「業務妨害罪は危険犯だからそういうものだ」とか言い出す人が続けざまに現れた。それは間違いだろうと私は……
岡崎図書館事件(4) 同じ三菱電機IS採用の他の図書館でも同様の不具合が自然に起きていた
東京の中野区立図書館で「鈴木」で蔵書検索したところ応答が全然帰って来ず、5分くらい経って500エラーの画面になった。図書館に電話してこの症状について通報したところ、検索以外の通常のアクセスでもしばしば画面が出なくなる事象が、何年も前からしばしば起きているという。その原因というのが……
岡崎図書館事件(5) 国会図書館の施策で全国の公共機関のWebサイトが消滅する
平成22年4月1日施行の改正国立国会図書館法に基づき、国立国会図書館が、国・地方公共団体等の公共機関を対象に、インターネット上で公開されている資料のWebクローラによる収集を開始したという。その説明資料によると、クローラのアクセス間隔の基準は「1秒以上」だという。中野区立図書館の場合……
岡崎図書館事件(6) Anonymous FTPで公開されていたGlobal.asaが示すもの
もしや三菱電機ISのシステムはフリーソフトを使っていたりはしないかと、「WwKensaku.aspx」でググってみたところ、そこに現れたのは、Anonymous FTPサイト専門の検索サイトだった。そこでさらに「WwKensaku.aspx」で検索してみると、なんとそこに現れたリンク先は ftp://210.……

本日のリンク元 TrackBack(1)

2010年08月11日

国会図書館の施策で全国の公共機関のWebサイトが消滅する 岡崎図書館事件(5)

平成22年4月1日施行の改正国立国会図書館法に基づき、国立国会図書館が、国・地方公共団体等の公共機関を対象に、インターネット上で公開されている資料のWebクローラによる収集を開始したという。その説明資料によると、クローラのアクセス間隔の基準は「1秒以上」だという。中野区立図書館の場合、/robots.txt が置かれておらず、セッションタイムアウトは実測で600秒*1であることから、1秒間隔でクローラが来ると*2、散発的につながらない状態がしばしば発生すると思われる。

目次

  • /robots.txtで自ら姿を隠す公共図書館
  • 国立国会図書館法第25条の3第2項に違反
  • 国会図書館が公共機関のWebサイトを消滅させる虞れ

/robots.txtで自ら姿を隠す公共図書館

中野区立図書館や岡崎市立中央図書館は、三菱電機インフォメーションシステムズ(以下、三菱電機IS)の図書館システム「MELIL/CS」を採用しており、同じシステムを採用している全国の図書館の一覧が以下にある。

「MELIL/CS」には旧型(ASPによる実装)と新型(ASP.NETによる実装)の2種類があり、URL中のファイル名の拡張子が「.asp」のものが旧型、「.aspx」が新型として見分けられる。

旧型「MELIL/CS」を採用している全国の図書館を見てまわると、半数以上のところで /.robots.txt を配備していることがわかる。中には、ルートディレクトリに置かなければ意味をなさないのに、サブディレクトリに置いているところもある。

表1: 旧型「MELIL/CS」採用図書館における /robots.txt の有無
設定URL図書館名都道府県
ありhttp://www.record-unet.ocn.ne.jp/robots.txt新冠町図書プラザ北海道
ミスhttp://www3.city.tokyo-nakano.lg.jp/tosho/robots.txt中野区立図書館東京都
なし――真鶴町まなづる図書館神奈川県
なし――小田原市立図書館神奈川県
ありhttp://www.lib.chigasaki.kanagawa.jp/robots.txt茅ヶ崎市立図書館神奈川県
ありhttp://www.kagalib.jp/toshow/robots.txt(9月11日訂正)
http://www.kagalib.jp/robots.txt
加賀市立図書館石川県
ありhttp://www.library.okazaki.aichi.jp/robots.txt岡崎市立図書館愛知県
ありhttp://library.city.mizunami.gifu.jp/robots.txt瑞浪市民図書館岐阜県
ありhttp://www.tosyokan.kani.gifu.jp/robots.txt可児市立図書館岐阜県
ありhttp://www3.city.yawata.kyoto.jp/robots.txt八幡市民図書館京都府
ありhttp://www.lib.city.nagaokakyo.kyoto.jp/robots.txt長岡京市立図書館京都府
ミスhttp://www.library.koryo.nara.jp/toshow/robots.txt広陵町立図書館奈良県
ありhttp://www.yamatokoriyama-library.jp/robots.txt大和郡山市立図書館奈良県
ありhttp://www.city.kaizuka.osaka.jp/robots.txt貝塚市民図書館大阪府
なし――摂津市民図書館大阪府
なし――尼崎市立図書館兵庫県
ありhttp://www-lib.city.fuchu.hiroshima.jp/robots.txt府中市立図書館広島県
ありhttp://www3.city.kanonji.kagawa.jp/robots.txt観音寺市立図書館香川県
ありhttp://www.library.dazaifu.fukuoka.jp/robots.txt大宰府市民図書館福岡県
なし――上峰町図書館佐賀県
なし――武雄市図書館佐賀県
なし――松浦市立図書館長崎県

どうしてこうバラバラなのか解せないが、それ以前に /robots.txt の設定内容も、ほとんどが以下の図1のような調子で、不必要な行が大量にあって異常なものになっている。/robots.txt の仕様をわからないままに書いているように見受けられる。

画面キャプチャ
図1: 「MELIL/CS」における /robots.txt の設定内容
(2010年8月11日現在の岡崎市立中央図書館の /robots.txt より)

このように必死な感じで /robots.txt を配備するのは、そうしないと閲覧しづらくなる不具合が起きてしまうためなのだろうが、こんな設定(すべてのクローラに対して全ディレクトリ拒否)にしてしまうと、Web検索にも出て来なくなる危険がある。

たとえば、「岡崎市立中央図書館」でGoogle検索すると、以下の図2の結果になる。図書館の正式名称は「岡崎市立中央図書館」なのに、検索結果には「岡崎市立図書館」と表示されている。トップページのタイトルは「Libra―岡崎市立中央図書館―」なのに、それが表示されていない。そして、通常ならば表示されるはずのページ概要も現れていない。

画面キャプチャ
図2: 「岡崎市立中央図書館」をGoogleで検索した結果

同様にYahoo!で検索してみると、次の図3のように、「図書館ホームページへ」、「図書館」などとタイトルが悲惨なことになっている。これは、「18歳未満」や「いいえ」で検索したときにYahoo!のトップページが出てくるように、リンク元の情報を基に検索結果が作られているためで、リンク元のタイトルが表示されているのであろう。図書館のWebサーバが全くクロールされていないために、こんな結果になっている。

画面キャプチャ
図3: 「岡崎市立中央図書館」をYahooで検索した結果

同様にbingで検索すると、以下の図4のように、タイトルすら現れない。SEO的に最悪な状況であるわけで、たまたま1番目に出ている状況だと思われる。

画面キャプチャ
図4: 「岡崎市立中央図書館」をbingで検索した結果

そして、同様にBaiduで検索すると、サイトが出てこない。Baiduではリンク元の情報を参考にしていないか、/robots.txt で拒否されているサイトは検索結果に出さない方針なのかもしれない。

画面キャプチャ
図5: 「岡崎市立中央図書館」をBaiduで検索した結果

これは、「MELIL/CS」の /robots.txt を置いている他の図書館も同様で、たとえば、相模原市立図書館を検索すると、次のようになる。

画面キャプチャ
図6: 「相模原市立図書館」で検索した結果

相模原市立図書館は、URLに「.aspx」とあるように、新型の方の「MELIL/CS」を採用しているので、もはや /robots.txt は不要なはず*3だが、旧型同様の /robots.txt が置かれている。

画面キャプチャ
図7: 2010年8月11日現在の相模原市立図書館の /robots.txt

旧型から新型に切り替えられた際に放置されたためかもしれないが、そもそも、このような /robots.txt は消す必要があることに、図書館員も三菱電機ISも気づいていないのではないか。*4

国立国会図書館法第25条の3第2項に違反

昨年改正されて今年4月1日に施行された国立国会図書館法は、第25条の3において、次のように規定している。

第十一章の二 国、地方公共団体、独立行政法人等のインターネット資料の記録

第二十五条の三 館長は、公用に供するため、第二十四条及び第二十四条の二に規定する者が公衆に利用可能とし、又は当該者がインターネットを通じて提供する役務により公衆に利用可能とされたインターネット資料(電子的方法、磁気的方法その他の人の知覚によつては認識することができない方法により記録された文字、映像、音又はプログラムであつて、インターネットを通じて公衆に利用可能とされたものをいう。以下同じ。)を国立国会図書館の使用に係る記録媒体に記録することにより収集することができる。

2 第二十四条及び第二十四条の二に規定する者は、自らが公衆に利用可能とし、又は自らがインターネットを通じて提供する役務により公衆に利用可能とされているインターネット資料(その性質及び公衆に利用可能とされた目的にかんがみ、前項の目的の達成に支障がないと認められるものとして館長の定めるものを除く。次項において同じ。)について、館長の定めるところにより、館長が前項の記録を適切に行うために必要な手段を講じなければならない

3 (略)

「館長が前項の記録を適切に行うために必要な手段」とは何かというと、「国立国会図書館法によるインターネット資料の記録に関する規程」第2条で次のように規定されている。

(インターネット資料の記録を適切に行うために講ずべき手段)

第二条 法第二十五条の三第二項の規定により法第二十四条及び第二十四条の二に規定する者が講じなければならない手段は、同項のインターネット資料を公衆に利用可能としている電子計算機において、館長の定める基準により、法第二十五条の三第一項の記録を行うために必要な情報を加え、又は同項の記録を妨げる情報を削ることとする。ただし、当該者が当該電子計算機について当該手段を講ずる権限を有しない場合は、この限りでない。

「館長の定める基準」とは、平成22年国立国会図書館告示第一号「国立国会図書館法第二十五条の三第三項のインターネット資料等に関する件」に書かれていて、

(国立国会図書館法によるインターネット資料の記録に関する規程第二条の基準)

2 国立国会図書館法によるインターネット資料の記録に関する規程(平成二十一年国立国会図書館規程第五号)第二条の基準は、国立国会図書館の館長が自動収集プログラムにより法第二十五条の三第一項の記録を行うことができることとする。

とある。要するにこれらは、/robots.txt を次のように設定せよという話である。

スライド
図8: 国立国会図書館「改正国立国会図書館法によるインターネット資料の収集について」(2010年3月)より引用

国立国会図書館は、改正国立国会図書館法に基づいたインターネット資料の収集を開始しており、以下のサイトで、「公的機関の皆様へ」として、この法で定められた義務について周知している。

  • 資料収集・保存:インターネット資料の収集, 国立国会図書館

    4) 収集にあたってのお願い

    国立国会図書館法第25条の3第2項及び第3項に定めるとおり、下記のご対応をお願いいたします。

    1. 当館のインターネット自動収集に関して排除指定を行っている場合、その設定の変更・解除

      変更方法については、説明用パンフレット(PDF:394KB)をご覧ください。

    2. (略)

つまり、三菱電機ISの図書館システム「MELIL/CS」(旧型)を導入した多くの公共図書館は、Web検索から姿を隠したというだけでなく、国立国会図書館法第25条の3第2項に違反し、違法状態になっている。*5

図書館員や図書館システム業者がこのことに未だ気づいていないというのは、驚きを禁じ得ない。

表1で「設定あり」とした各図書館に加え、新型の「MELIL/CS」を導入している以下の公共図書館も、/robots.txt によってすべてのクローラに対して図書館の全ディレクトリを拒否している。(2010年8月11日現在)

一方、生駒市図書館など、図9のように「Allow」の設定がなされていて、どうにかしようとしている様子のあるところもあるし、奈良市立図書館の /robots.txt のように、公開すべきディレクトリが除外されている*6ところも少なからずある。

画面キャプチャ
図9: 生駒市図書館の /robots.txt の内容(2010年8月11日現在)

国会図書館が公共機関のWebサイトを消滅させる虞れ

というわけで、国会図書館の周知が足りていないのではないか。もっと強行に、文部科学省から全国の図書館に通達を出すとか、総務省自治行政局から全国の自治体に通達を出すとか、そういったことは行われていないのだろうか。

ところで、そういった周知徹底をするならば、図8で引用した、国会図書館の説明用パンフレット「改正国立国会図書館法によるインターネット資料の収集について」の「ロボット排除について」の説明は、このままではマズいと思われる。

「下記のとおり変更してください」とあるので、意味もわからず切羽詰まって対応する係員が、このとおりに設定してしまう虞れがあるように思う。

つまり、元々どのクローラも拒否していなかったサイトが、新たに /robots.txt を作って、図の通りに「ndl-japan」のクローラだけ許可して、それ以外を全部拒否する設定(図中の「User-agent:* Disallow:/」の部分)を書いてしまう事態が起きる可能性が十分にあるように思える。

ざっくり探してみたところ、大阪医科大学の /robots.txt がちょっと怪しい。「User-agent: * Disallow: /」で全拒否した後、特定の検索エンジンのクローラだけ許可している。これでは一部の検索サイトでヒットしなくなるだろう。

画面キャプチャ
図11: 大阪医科大学の /robots.txt の内容(2010年8月11日現在)

このまま国会図書館の説明用パンフレットで周知徹底がされていくと、全国の公共機関が次々とWeb検索から姿を消していくかもしれない。

追記(24日)

8月24日13時00分の時点で、表1で旧型MELIL/CS導入の「設定あり」とした図書館のうち、観音寺市立図書館が /robots.txt を削除した以外、他はすべて /robots.txt で全クローラを拒否した状態を継続中であることを確認。同様に、新型MELIL/CSについて挙げた6つの図書館のうち、河内長野市立図書館が /robots.txt を削除した以外、他はすべて /robots.txt で全クローラを拒否した状態を継続中。

追記(31日)

8月31日9時55分の時点で、上記の /robots.txt の状況に変化なし。

追記(9月7日)

9月7日23時00分の時点で、加賀市立図書館の /robots.txt が消えたことを確認。他は(9月11日訂正削除)全クローラ拒否を継続中。

訂正(9月11日)

加賀市立図書館の表1のURLが誤っていた。「/robots.txt」としなければならないところを誤って「/toshow/robots.txt」としていた。このリンク先を閲覧して修正状況を確認していたため、上記「追記(9月7日)」で「加賀市立図書館の /robots.txt が消えた」としたのは誤りで、消えたのは「/toshow/robots.txt」であった。現時点では「/robots.txt」が存在しており、全クローラを拒否した状態になっている。(これが、以前からそうだたかは今となっては不明。)

追記(9月11日)

9月10日16時ごろ、岡崎市立中央図書館の /robots.txt が以下の内容に修正された。

User-agent: *
Disallow:
Crawl-delay: 1

「Crawl-delay: 1」の指定は意味がないと思う。

その他の図書館は、9月11日12時00分時点で変化なし。

追記(9月14日)

9月14日12時00分の時点で、加賀市立図書館と可児市立図書館の /robots.txt が修正された(上記の岡崎市立中央図書館と同じ内容に修正された)のを確認。加賀市立図書館には、9月10日の夕方に電話でこの件について問い合わせをしていた。可児市立図書館に対しては何もしていない。加賀市立図書館の /robots.txt の更新日時は2010年9月11日16時14分15秒、可児市立図書館のものは2010年9月11日14時19分38秒となっている。

それ以外の図書館は、9月14日12時00分の時点で変化なし。

*1 ASPセッションのタイムアウト。検索結果の画面で次ページに進めたときにタイムアウトが発生するか否かによって測定したもの。

*2 10分間に600人が訪れたのと同じ状態(DB接続数が)となる。アクセス数として比較すると、平常時の平均に対して約8倍(中野区立図書館の年間アクセス数は400万とのことなので)にあたる。加えて、通常のブラウザによるアクセスにおいて、1人がASPセッション中にアクセスする回数が平均5回と仮定すると、クローラによるアクセスではDB接続数が5倍という計算になるため、DB接続数で比較すると、通常の40倍の数が発生することになると推測される。

*3 新型の「MELIL/CS」は、「コネクションプーリング接続方式」と「都度接続方式」をサポートしており、旧型にあった「一般的なクローラが来ただけで閲覧しづらくなってしまう欠陥」は存在しないのだから、/robots.txt で拒否する必要性がない。

*4 もしくは、三菱電機ISは、旧型のときに図書館に対して「閲覧しづらくなる事象への対策のために /robots.txt が必要」と説明して設置していた手前、新型だからそれが不要というのでは旧型の欠陥を認めることになるため、「/robots.txt を削除します」と言い出せない状態ということなのかもしれない。

*5 日本のソフト別OPACリストから、他のベンダーの図書館がどうなっているか、地方公共団体を対象にざっくり調べてみたところ、/robots.txt をこんなふうに設定しているのは三菱電機ISだけだった。

*6 たまたまそうなったようにも見えるが。

本日のリンク元 TrackBacks(11)

2010年08月21日

Anonymous FTPで公開されていたGlobal.asaが示すもの 岡崎図書館事件(6)

もしや三菱電機ISのシステムはフリーソフトを使っていたりはしないかと、「WwKensaku.aspx」でググってみたところ(図1)、そこに現れたのは、 Anonymous FTPサイト専門の検索サイトだった*1。そこでさらに「WwKensaku.aspx」で検索してみると、なんとそこに現れたリンク先は ftp://210.230.245.201/ (図2)、このリンクをクリックすると図3の画面が現れた。

画面キャプチャ
図1: 新型MELIL/CSの検索ページURLのファイル名「WwKensaku.aspx」でググった様子

画面キャプチャ
図2: Anonymous FTPサイト専門の検索サイトでの検索結果

画面キャプチャ
図3: ftp://210.230.245.201/ のURLにジャンプしたときの様子

210.230.245.201 をDNSで逆引きすると sasaguri1.uxt.cknet.co.jp となる。http://sasaguri1.uxt.cknet.co.jp/ にアクセスしてみると、以下の図4のようになった。

画面キャプチャ
図4: http://sasaguri1.uxt.cknet.co.jp/ にアクセスした様子

ドメイン名が変だが、これは篠栗町立図書館(福岡県)の正規サイトのようだ。

Anonymous FTPサイトを見て廻ったところ、MELIL/CSのプログラム(VBスクリプト)の一部等が公開された状態になっていた。念のため、ftpコマンドでアクセスしてみたところ、「Anonymous access allowed」と表示され、パスワードなしに接続することができた(図5)。

画面キャプチャ
図5: ftpコマンドで接続すると「Anonymous access allowed」と表示された

公開された状態のMELIL/CSのプログラムのうち、特に重要なものは図6のディレクトリにあった。

画面キャプチャ
図6: /Contents/TOSHOW/ の一覧

ディレクトリを隈無く見て廻ると、「Global.asax」が置かれているように、これは新型の方(ASP.NET版)であるが、旧型(ASP版)の残骸のようなもの*2が随所にあり、旧型のものと思われる「Global.asa」が置かれていた。

その中身は図7のものであった。

画面キャプチャ
図7: 旧型MELIL/CSの残骸と思しき「Global.asa」

肝心の部分のコードは以下のとおりである。

Sub Session_OnStart
(中略)

'エラー対策?
    On Error Resume Next

'図書館用データベース
    Set Session("OraDatabase") = OraSession.DbOpenDatabase(HostName ,LoginPasswd ,Clng(3))
End Sub

Sub Session_OnEnd
    Set Session("OraDyna_Book") = Nothing
    Set Session("OraDatabase") = Nothing
    Set Session("OraSQLStmt") = Nothing
End Sub

まさに、Twitter界隈で皆が予想していたとおりだった。

つまり、7月14日の「サーバ管理者日誌」で「念力デバッグ」として、現象から推測されていたことがほぼ図星で、7月22日の「その後の念力デバッグ」で補正されたものがズバリであった。そして、この推測を基に再現実験が行われた「ぐて〜blog」の7月24日のエントリ「岡崎市立図書館の件のサーバ側挙動の擬似環境下再現実験(その2)」で作成された「Global.asa」は、

Sub Session_OnStart
	Set Session("OraDatabase") = Application("OraSession").DbOpenDatabase("libradb","scott/tiger",clng(3))
End Sub

Sub Session_OnEnd
	Set Session("OraDatabase") = Nothing
End Sub 

というもので、さらに、中川氏が警察の取り調べで見せてもらったというサーバ側アクセスログにあったエラーメッセージの記憶を基に、そのようなエラーメッセージが出るよう、「On Error Resume Next」のエラー処理を追加したのが、7月29日の「ASP実験、Session_OnStartのオブジェクト生成失敗を無視する処理」のときの「Global.asa」であり、まさにその推測は完全に当たっていたということになる。*3

このコードの場合、DB接続はアクセス元のブラウザ専用として確保(ASPセッションに紐付け)され、ASPセッションがタイムアウトするまでの間(7月の時点で岡崎市立中央図書館では実測で620秒くらいだった)、閉じられることなく(使いもしないのに)占有されてしまう。その間に新しい閲覧者(ブラウザが)接続してくると、次々新しいDB接続が確保され、その最大数に達すると、それ以上のアクセスを受付けなくなってしまう。

旧型MELIL/CSの設定ファイルもあった(図8)。

画面キャプチャ
図8: 旧型MELIL/CSの設定ファイル

2003年8月に作成され、少なくとも2005年7月まで正式に活用されていたことが窺える。

iモード版ではcookieが使えないため、Global.asaによるASPセッション中のDB接続の維持ができないことから、アクセスの都度接続する方式をとっているらしく、DB接続のID・パスワードがこの設定ファイルに書かれている(Gloabl.asaではなく)。

他にも管理者用のものと思われる「AdminTools.asp」が公開された状態になっていた。これは旧型であり、2003年5月に開発されたことが窺える。

画面キャプチャ
図9: 「AdminTools.asp」が公開された状態になっていた様子

ここで謎なのが、著作者として個人の氏名が書かれていて、およそ会社の職務で書いたものには見えない文言が書かれている。旧型の.aspに著者名があるものは、どれもこの方によるものになっていた。*4

一方、新型(ASP.NET)の方はどうなっていたかというと、まず、「Global.asax.vb」にはDB接続するコードは書かれていなかった。そして、新型用の設定ファイルに以下の記述があった(図10)。

画面キャプチャ
図10: 新型(ASP.NET版)MELIL/CSの設定ファイルにある記述

「データベースのアクセス方式を指定する」とあり、「0:都度コネクト」と「1:プーリング機能」が選択できるようになっている。

このDB接続の実装は、「Database.vb」にあった(図11)。

画面キャプチャ
図11: 新型(ASP.NET版)MELIL/CSのDB接続の実装コード「Database.vb」の肝心部分

これを読むと、新型のMELIL/CSでは、今回の岡崎市立中央図書館のような事態や、他の各地の図書館で報告されていた不具合(/robots.txtを置かないと一般のクローラが来ただけで支障が出てしまう)が生じないよう、ちゃんとDB接続の管理が作り込まれていることがわかる。「都度接続方式」では、SQL文の実行が終了してASPページの実行が終了する(HTTPレスポンスがブラウザに返される)までに、毎回DB接続を閉じるように書かれている。

このコードが書かれたのは、2006年3月〜2007年2月であり、少なくともこの時点で三菱電機ISは、旧型の欠陥を原因まで含めて承知していたはずと言える。

そして、このAnonymous FTPサイトの存在を朝日新聞の記者*5に通報したところ、数日後にはこのAnonymous FTPは閉鎖されていた。

*1 この時点で「何これ?」とTwitterにつぶやきそうになったが、後になって思えば、思いとどまってその先まで調べてよかったと思う。

*2 もしくは、部分的に旧型のプログラムを流用している、あるいはテスト用ページ(旧型の)を残したままにしているために、旧型のコードの一部が置かれていたと考えられる。

*3 私が朝日新聞からの依頼を受けたのはそれより後。

*4 一方、新型の .vb のコードには、別の方の名前がローマ字で記載されていた。

*5 7月16日に、情報ネットワーク法学会のこの事件をテーマにした座談会に取材にいらしていて、お目にかかっていた。

本日のリンク元 TrackBacks(9)

2010年08月24日

Macっ娘ならオートメータ君つかいたおすわよね

iPhoneといっしょにMacに乗り換える子が多いみたい。Mac買ったらまず開くのは「アプリケーション」フォルダなんだけど、左隅にいるちょっと気になるロボット君、「Automator」君っていうんだけど、知ってた?

画面キャプチャ

開くとこんな感じ。いろいろ並んでてよくわかんないけど、「インターネット」を選んで、「Safariの現在のWebページを取得」を選択。

画面キャプチャ

これを右のところにドラッグして、追加。こんな感じ。

画面キャプチャ

次は「WebページからリンクURLを取得」*1をドラッグして、その次に「URLをダウンロード」もドラッグね。

画面キャプチャ

こんな感じになるんだけど、もう完成。あとは、Safariで図書館サイトに行って、新着図書のページへGo!

画面キャプチャ

そしたら、Automator君の「実行」ボタンを押すだけ!

画面キャプチャ

リンク先のアドレスが抽出されて、

画面キャプチャ

もりもり取りにいって、はい終了。

画面キャプチャ

22ページ取りにいって19.277秒。けっこうアグレッシブ。ウェイトは1秒より短いみたい。

ばっちり取れてる。

画面キャプチャ

これが世界標準のMacの機能。5年前からあったみたい。クローラーキモいなんて言ってるコーダー女子もいるみたいだけど、パソコンくんばっか相手にしてると時代に取り残されちゃう。

至言だわ。

ちなみに、Automator君は /robots.txt は見ないみたい。見た目はロボットだけど。

*1 2006年の「Mac OS X 10.4.7 Update (delta) について」によると「Automator の「Web ページからイメージの URL を取得」アクションや「Web ページからリンク URL を取得」アクションで、Cookie やセッションを要求する Web サイト(特に、URL と共に認証情報が渡される場合)に対するサポートが、今まで以上に充実しました。」とのこと。

本日のリンク元 TrackBacks(2)

2010年08月29日

三菱図書館システムMELIL旧型の欠陥、アニメ化 - 岡崎図書館事件(7)

21日の日記で示したMELIL/CS(旧型)の構造上の欠陥について、その仕組みをアニメーションで表現してみる。

まず、Webアクセスの仕組み。ブラウザとWebサーバはHTTPで通信するが、アクセスごとにHTTP接続は切断される*1。以下のアニメ1はその様子を表している。

アニメ1: HTTP接続とWebアプリのセッション管理

このように、アクセスが終わると接続が切断されて、次のアクセスで再び接続するのであるが、ブラウザごとに毎回同じ「セッションオブジェクト」に繋がるよう、「セッションID」と呼ばれる受付番号を用いて制御されている。

なお、赤い線は、その接続が使用中であることを表している。

次に、「3層アーキテクチャ」と呼ばれる、データベースと連携したWebアプリケーションの実現方式について。3層アーキテクチャでは、Webアプリケーションが、Webサーバからデータベースサーバ(DB)へと接続して、SQL文実行をDBに要求する。

以下のアニメ2は、3層アーキテクチャにおける、ブラウザからWebサーバへのHTTP接続と、WebサーバからDBサーバへのDB接続のタイミングを表している。

アニメ2: いわゆる「3層アーキテクチャ」の一般的構成(都度接続方式の場合)

このように、HTTP接続を維持したまま、DB接続でSQL実行を要求し、SQL実行が終わって、結果をブラウザに返すとき、DB接続とHTTP接続を切断する。このような実現方式は「都度接続方式」と呼ばれる*2

複数のブラウザからアクセスがあるとき、SQL実行が十分に短時間であれば、DBサーバ上でのSQL実行は同時に1つとなる(アニメ2の前半)が、あるSQL実行が長時間にわたった場合には、複数のSQL実行が同時に走ることになる(アニメ2の後半で青い丸が2個ある状態)。この数が過多となると、サイトが「重い」状態となる。

そして、メリル方式(旧型MELIL/CS)の場合を以下のアニメ3に示す。メリル方式では、セッションオブジェクトが作られると同時にDB接続が作成され、その後HTTP接続が切断されても、DB接続は維持されたまま、そのセッションオブジェクト専用として使われる。アニメ3では、DB接続が3本までに制限されている場合を想定している。(実環境ではその100倍前後の本数で運用されている。)

アニメ3: メリル方式(旧型MELIL/CS)の場合

このように、3台の端末のブラウザがアクセスしてきた時点で、DB接続の上限の3本を使い尽くし、4台目のブラウザがアクセスしてくると、DB接続に失敗して、そのブラウザは何度アクセスしてもエラー画面*3になってしまうという「閲覧障害」が起きる。(DBでの処理が「重い」かどうかに関係なく。)

そしてアニメ3の後半では、一部の端末がいなくなって10分が経過すると、セッションのタイムアウトが起きて、当該セッションオブジェクトが消滅し、消滅と同時にそのセッションが握っていたDB接続が切断されて、DB接続に空きができ、5台目の端末が接続できるようになる(閲覧障害が解消する)という様子を表している。

これがメリル方式の特徴であり、もし、永遠にDB接続が切断されないバグであったなら、毎日すぐに閲覧障害になって使い物にならないから、さすがに放置されることはなかったであろうが、このように、セッションタイムアウトまでの期間中に一定数のブラウザがアクセスに来たときだけ閲覧障害が起きるという、微妙なものであった。

次に、ブラウザがcookieオフ設定である場合をアニメ化してみる。

以下のアニメ4は、cookieオフのブラウザ、あるいは元々cookie機能を持たない自動アクセスプログラム(Googlebot等のWebクローラ等)が連続アクセスするときの様子を表している。

アニメ4: cookie非対応クライアントによる連続アクセス

このように、cookie非対応であることから、同じブラウザからのアクセスであることを識別できないため、次々と新しいセッションオブジェクトが作られて処理される。しかし、一般的には、Webサーバ上のセッションオブジェクトはほぼ無尽蔵に作成できるので*4、とくに問題はない。

次に、cookie非対応で都度接続方式のサイトに連続アクセスした場合の様子を、アニメ5に示す。

アニメ5: 都度接続方式におけるcookieオフでの連続アクセス

このように、アクセスごとにセッションオブジェクトは次々新しいものとなるが、「シリアルアクセス」でアクセスしている限り、DB接続とSQL実行は同時に1つであり、とくに問題は起きない。

ところが、メリル方式の場合はそうはいかない。cookieオフで連続アクセスするとアニメ6のようになる。

アニメ6: メリル方式におけるcookieオフでの連続アクセス

このように、3回アクセスした時点でDB接続が上限に達し、4回目以降はエラーとなる。そして、10分後には、セッションタイムアウトとなって、DB接続は解放され、元の状態に戻る。

岡崎図書館事件では、朝日新聞の記事によると「10分間にアクセスが約1千件を超えると、ホームページの閲覧ができなくなり」とあり、DB接続の上限が1000本だった。仮に1秒に1.5回のアクセスペースだとすると、10分で900本のDB接続を占有することになり、他に一般の利用者が100人以上いたならば、閲覧障害が生じることになる。もっとも、最初のアクセスから10分が経過すると、最初のアクセスで作られたセッションがタイムアウトし、DB接続が次々解放され始めるので、閲覧障害は解消されたはずである。

このことについて、「サーバ管理者日誌」の7月27日のエントリ「シリーズ・クロールとDoSの違いと業務妨害罪と(7) - 念力デバッグ再び」が、この閲覧障害発生のタイミングを図1のように推定していた。

グラフ
図1: 推定された閲覧障害のタイミング(「サーバ管理者日誌 2010年07月27日」より)
(ここではDB接続の上限を400本と仮定)

青い線は、連続アクセスが順調に進んだ期間を表しており、線が途切れている部分が、閲覧障害発生中の期間を表している。

このように、閲覧障害は、一旦起きるとずっと続くというものではなく、グラフのように断続的に、あるいは一時的に発生するものであった。その発生割合は、連続アクセスの速度と、DB接続の上限本数と、セッションタイムアウトの時間によって決まる(多くなったり少なくなったりする)。

ただ、アニメ3に示したように、一旦接続エラーになったブラウザ(アニメ3における4番目の端末のブラウザ)は、10分が経過した後も、DB接続のないセッションオブジェクトに繋がり続けるため、何度リロードしても閲覧障害が解消していないように見えただろう。この状態は、ブラウザを再起動する(あるいは、10分間以上リロードをしないで我慢して、タイムアウトさせてからリロードする)まで続く。(追記:※1この様子を表すアニメ8を以下の最後に追加した。)

そのため、閲覧障害の発生期間がグラフのように部分的であっても、たまたまその期間中にサイトに訪れた利用者は、その後ずっとリロードしても閲覧できなくなることから、苦情の電話に至ったものと考えられる。

ちなみに、メリル方式のことを、DB接続を維持するものであることから、「コネクションプーリング」と呼んでいる人をTwitter界隈で稀に見かけたが、それは間違いで、こういうのをコネクションプーリングとは言わない。

コネクションプーリングとは、以下のアニメ7に示すような方式のことを指す。

アニメ7: コネクションプーリング方式(cookieオンの場合)

つまり、事前にDB接続を一定数確保して接続プールとし、Webアプリのセッションは、空いている任意のDB接続をプールから獲得して使用し、使い終えたら切断しないでプールに戻すというもの。都度接続方式に比べて、DB接続の確立に要す時間を省くことができ、レスポンスが早いと言われる。1990年代後半にその必要性が認識され、1999年ごろまでに確立し2000年ごろには広く知られていた

このようなコネクションプーリング方式や、都度接続方式を用いて3層アーキテクチャを構成していたならば、岡崎図書館事件の閲覧障害は起きなかった。これらの方式で閲覧障害が起きるとしたら、ひとつひとつのSQL実行の処理時間が相当長い場合*5、つまり、1つのSQL実行が終わらないうちに次のSQL実行が始まり、それが繰り返されて積み重なっていくような場合に限られる。「シリアルアクセス」ではそのようなことは起きないので、起きるとすれば、本当にたくさんの人が同時に訪れたときや、「パラレルアクセス」での真のDoS攻撃が行われた場合であろう。

21日の日記で示したように、2006年に開発された新型MELIL/CSでは、「都度接続方式」と「コネクションプーリング方式」が実装されている。

追記(9月3日)

上記※1で述べていた、閲覧障害発生中のタイミングで訪れたブラウザでは閲覧障害解消後も閲覧障害が続いているように見えるという、その様子を、以下のアニメ8に示す。

アニメ8: cookie非対応クライアントによる連続アクセスと
cookieオンのブラウザのアクセスが混在したときの様子

追記(2021年1月11日)

上の各アニメをFlashからYouTube動画に変更した。

2010年10月4日に置いていたニコニコ動画版も以下に埋め込んでおく。

アニメでわかるMELIL旧型の欠陥(岡崎図書館事件)

*1 Keep-Aliveについては、ここでは省略している。

*2 三菱電機ISの新型MELIL/CSの設定ファイルおよびコード上のコメントによると。

*3 旧型MELIL/CSでは、Global.asaにおいて、セッション開始時にのみDB接続を試みるように書かれていた。そのときエラーが発生しても、「On Error Resume Next」によって無視するように書かれていたため、初期化されない変数を抱えたまま、セッションオブジェクトは生成される。それ以降、そのセッションに接続するブラウザは、何度リロードしてもエラー「オブジェクトがありません」となる状態になったのではないかと考えられる。(エラー発生時にセッションを破棄するコードが書かれていなかったのならば。)

*4 無尽蔵にセッションを生成できるのは、Webが、HTTP接続をアクセスの都度切断するものとして設計されているため。もし、HTTPが接続を維持するタイプのプロトコルであったなら、セッション期間中のアクセス者数は、数百人ほどが限界になっていただろう。昔、Webが登場する前、Anonymous FTPをよく利用していたものだが、接続しようとすると「既に100人がログインしている」として接続を拒否されることがよくあったものだ。DB接続でも同様であり、使わない接続を維持し続けるのは無駄であり、3階層アーキテクチャでWebと結合すると、一般的なWebクローラが来ただけで破綻してしまう。

*5 旧型MELIL/CSでは、蔵書検索でのキーワード検索が異常なほど遅いという指摘も出ている。しかし、岡崎図書館事件で行われたアクセスは、蔵書検索ではなく、「TosCode」で指定された書誌ページへのアクセスであり、そのSQL実行は十分に短く、他の利用者への迷惑となるとは通常考えられない。

本日のリンク元 TrackBacks(11)

最新 追記

最近のタイトル

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|
最新 追記