ブログトップ 記事一覧 ログイン 無料ブログ開設

SQLer 生島勘富 の日記 このページをアンテナに追加 RSSフィード Twitter

2010-06-29

twitterと岡崎図書館事件とSQL

 しかし、まぁ、なんですな〜。twitterは140字しか書けず、過去ログが読みにくいから、反論が多いであろう内容をtwitterで書くと、そのつぶやきに単純に反論してくる人が、入れ替わり、立ち替わり来るのは疲れる。議論には向かないな〜。

 長く考えないと分からない問題というのは、単純な方向の主張に、分かりやすい主張に向かいがちで危ない傾向だと思った。

業界内のコンセンサスを

 図書館システムが非常に脆弱なものがあると分からないうちに、外からは知りようのない不具合を見つけて、それを突いたのではないか?というような陰謀説には与しないけれど、今回の事件で、図書館システムに脆弱なものがあるということが多くの人に認知されることになった。

 認知された今となって、図書館に限らず、不具合があるであろうサーバのダウンを目的とし、クロールを装ってサーバをダウンさせる愉快犯がいたらどうなるだろう。ベンダーが対処できず警察に相談した場合、警察として被害の大きさや悪質性(頻度)で判断するしかないと思う。

 このような問題は、個人情報流出でも、SQLインジェクションでも同じですが、業界(技術者)に認知されたとき、警察に認知されたとき、一般に認知されたとき、それぞれの段階で、悪意がある悪質な行為と見なされる条件は、同じ行為でも全く違うものになるだろう。

 岡崎図書館の場合、まずは技術者に「クロールが一般的な行為である」という認識がなかったわけで、業界内でのコンセンサスがないうちに、実害が出ている案件で警察が逮捕したことは責めるわけにはいかない。そもそも、サーバが落ちたらすぐに警察に駆け込む人がいるわけはなく、まずは技術者が調査するのですから、調査する技術者にスキルが必要なのです。

 逮捕はひどいと思う。単純に考えれば誰でもそう思う。

 しかし、業界から警察に文句を言うのは違うだろう。

 インターネット上に出す以上、これぐらいのアクセスに耐えられることは、十分に確認しましょう。これぐらいのアクセスでサーバに影響が出る場合は、プログラムの不具合や設定ミスが疑われますから、すぐに調査しましょう。というコンセンサスを業界内で作った上で、捜査当局に、業界としてこういうガイドラインを作りました。捜査の参考として使ってください。というのが筋でしょう。

 WEB系の仕事をしている技術者に取っては、1秒1アクセスなんてのは大したことではないのですが、業務システムを担当してきた技術者に取っては、大変過剰なアクセスに見えるもので、業界内のコンセンサスがないのに、警察に「これぐらい判断すべき」ってのは無茶苦茶な理屈だと思う。

 SIerの多くはネット上には出てこない。ネット上ではWEB系の技術者の方が多いという錯覚に陥りがちですが、SIerはサイレントマジョリティです。業界内で多数決を取ったら、まだまだ、「過剰なアクセス」という人が大多数だと考えた方がいい。

 コンセンサスを得る順番は

     業界(技術者)→ 捜査当局 → 一般人

 で、業界内ですらコンセンサスが十分ないうちに、捜査当局を批判するのはひどい八つ当たりだと思う。

 ※ 岡崎図書館は館内業務も止まっていた前提で書いています。館内業務が止まってないのに逮捕はやり過ぎです。

 警察批判は簡単です。「誤認逮捕された!」って言えば、まぁ、事実ですし、IT技術をよく分からない一般人を巻き込むことすらできるでしょう。反対する人は少ない。しかし、業界内で1秒1アクセスを過剰と感じる技術者を放置して、そんなことをして本当に意味があるのでしょうか。警察が萎縮するだけでしょう。

 反体制が目的ならそれでも良いけれど(いや、反体制に与するつもりは毛頭ないけど)、本当に再発を防止したいなら業界内でコンセンサスを得る活動をすべきばよい。業界内にコンセンサスがあれば警察の手を煩わすこともないし、なかったのです。

じゃあSQLは?

 5万曲が入ったカラオケで、余興で歌いたい曲が5曲あるとすると。

 手続き型でいうと以下の様な処理になるでしょう。

     foreach (int 番号 in 歌うリスト)

     {

       結果セット.add(カラオケ.find(番号));

     }

 それが、

     foreach (song 曲 in カラオケ)

     {

       if(Arrays.binarySearch(歌うリスト, 曲.番号))

       {

         結果セット.add(曲);

       }

     }

 後者は5万回、5件しかない「歌うリスト」とのマッチングをするわけで、手続き型言語で後者が出てきたらバグという認識になると思う(私はバグと認識する)。

 SQLでは「INとEXISTS」の違いになるのですが、スキルシートには10年以上SQLを使っていることになっている人でもこんな取り違いは日常茶飯毎で、「バグや直せ!」ってなことを言うと問題になる(もちろん、気にせず言うけどね)。

 コーディング規約で「INで書いてみて、遅かったらEXISTSで書き直す。」なんて、意味不明なことを書いてあったりもする

 1秒1アクセスを過剰と感じるかどうかと同じで、分かっている人に取ってはバカバカし過ぎる話でも通らないのです。

 当たり前のシステムすら組めなくって悶々として、こんな啓蒙活動をしないといけないなんて本当におかしいんだけどな〜。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Sikushima/20100629/1277791208