読者です 読者をやめる 読者になる 読者になる

理系男子の独り善がり

仕事や生活に役立ちそうな(実際に役立つかは別として)数学・物理ネタをつらつらと書いていこうと思ってます.

ざっくり見積もること

数学とも物理とも言うのが難しいような話ですが,最近のニュースから数字を拾って話を書いてみます.後で出てきますが,どちらかというと物理です(笑)


先日発覚した大規模な個人情報漏洩を取り上げます.思っていた以上に早期に犯人が見つかったので,びっくりしたところもありましたが,出元がわかったことは大事なことだと思います.

 

データベースとは?

今回ニュースのでは「データベース(DB)」という言葉が飛び交いました.ITに関わっていない人は,いまいちピンとこないかもしれません.パソコンやスマホで言うところの「電話帳」や「住所録」といったもののでっかいものがデータベースと呼ばれるものになります.
企業で扱うデータベースとなると,顧客情報や製品情報,売り上げなど様々な情報をもつことになります.ITシステムの中で一番大事にされるサーバといっても過言ではありません.通常は,蓄える情報のカテゴリや管理するシステムごとにデータベースシステムも分けられることが多いです.「クレジットカードの情報は漏れていない」とありましたが,データベースシステムが異なっていたからだと思われます.システムが異なっているとは言え,必要に応じてシステム同士が連携することはありますのであしからず.

 

スマホに500万人分も?

実際には1,000万人以上の個人情報が入っていたそうです.そんなにも大量のデータが入るものでしょうか?ここでは,それを検証してみたいと思います.つまり,500万人分のデータの容量を計算してみるということです.
どんなデータがどのような状態で保存されていたのかわからないのに,そんなことできるの?と思われるかもしれません.厳密にはそのとおりです.しかし,ある程度推測を立てて見積を立てれば,技術的に可能かどうかを示すことはできるでしょうし,その見積を元にさらなる見積を考えることもできるようになります.とりあえず,やってみましょう.

 

仮定を立てる

ダイレクトメールが送られてきたということを鑑みて,以下の項目が漏れたと仮定します.

  1. 氏名(子供)
  2. 年齢(子供)
  3. 氏名(保護者1名)
  4. 郵便番号
  5. 住所
  6. 電話番号

もしかすると,保護者の情報は必要ないかもしれませんね.それぞれの項目について,文字数や桁数を固定長で決めてしまいます.あくまでも「ざっくり」です.

  1. 全角10文字
  2. 数字2ケタ
  3. 全角10文字
  4. 数字7ケタ
  5. 全角40文字
  6. 数字10ケタ

コンピュータでは半角1文字を1バイトとして管理します.全角はその倍の2バイトで管理されます.
「管理する」というのは,その文字に背番号をつけておいて,コンピュータの中ではその番号で表現するということ(感じ)です.「全角10文字」は「20バイト」になります.以下,全角を2倍,半角をそのままの数字として加えると,139バイトになります.これが仮定した一人分のデータとなります.

 

見積と考察

ここまでくれば,かけ算を計算するだけです.
 139(バイト/人)×5,000,000(万人)=695,000,000(バイト)≒662(メガバイト)
となります.バイトからキロバイト,メガバイトへの変換では「1,024で割る」という操作をおこないます.普通用いる接頭語のメガ(10^6)やキロ(10^3)とコンピュータの世界のメガ,キロは少し異なっています.しかし,いまの「見積の世界」ではどちらで計算しても構いません.所詮は誤差の範囲だからです.
というわけで,1ギガバイトのメモリに悠々収まる容量であることがわかりました.たとえ,一人分の情報が倍になったとしても,1.3ギガバイト強ということですから持ち運びには十分ですよね.

後追いになりましたが,データはテキスト形式(ExcelやWord形式ではなく)であることを前提としていました.このようなファイルには「ファイル圧縮」という技術を使うことで 容量を1/10以下にすることが可能となります.ますます持ち運びが容易くなり,コピーする時間自体も短縮できるということになります.スパイ映画なんかで,「コピーまだっ!」みたいなシーンがありますが,その心配が減るということになります.

 

フェルミ推定

このように仮定を立てて,「ざっくり見積もる」ことをフェルミ推定と呼ぶことがあります.一時期,少し流行った言葉なので,聞いたことがある人もいると思います.フェルミというのは,イタリアの物理学者で,このようなざっくり見積が得意な人でした.
大胆に仮定を立てることも大事ですが,立てた仮定(根拠)を理解しておくことが大事です.見積が間違っていたときには,その仮定を見直す必要があるからです.

 

たまには,新聞を読みながら頭の中でざっくり見積してみるのも,いい頭の運動になるのでは?と思います.