コーヒータイム

日々読んだ本を紹介しています。英語や中国語書も時々。面白そうだと感じる本があれば、ぜひあなたも読んでみてください!

【おすすめ】素晴らしく分かりやすいコンピュータのルールブック『世界でもっとも強力な9のアルゴリズム』

 

世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

 

誰もが一度は思ったことがあるだろう。

「検索トップにきているサイトはどうやって選んだのだろう?」

「今自分がネットショッピングで入力したクレジットカード番号は安全だろうか?」

「コンピュータがフリーズしたせいで最初からやり直しだ(怒)フリーズしないアプリはないのだろうか?」

この本はこれらの質問に答えてくれる。素晴らしいことに、コンピュータの前知識なしでもわかるような説明で。

本書をたとえるならば、学研漫画の「ひみつシリーズ」のようなものだと思う。本書は漫画でこそないものの、わかりやすさは同じくらいだ。コンピュータアルゴリズムという数学の塊のようなシロモノを噛み砕き、たとえ話にして、小学生の算数程度の理解力と想像力があればなんとなくわかるようにしてくれている著者の仕事は、ただただ素晴らしい。

著者自身、こんなことを最後の方に書いている。

この本の著者として私がとても驚いたのは、(偉大なアルゴリズムである)これら大きなアイデアは、どれもコンピュータプログラミングやコンピュータ科学の予備知識を一切必要とせずに説明できることだ。

有毒動物のひみつ (学研まんが ひみつシリーズ)

有毒動物のひみつ (学研まんが ひみつシリーズ)

 

 

小学生の算数程度の理解力があれば本書を楽しめると書いたが、中学生程度の数学能力があればなお面白くなる。

たとえば中学数学で学ぶものの中でもなんの役に立つのかよくわからない「素数」「素因数分解」。わたしは素因数分解を学んですぐ忘れ去ってしまった。だが素因数分解が、あなたのクレジットカード番号を、第三者に読み取られることなく安全にオンラインショッピングサイトとやりとりできる「公開鍵暗号法」のアルゴリズムのうち「RSA法」の根幹をなすものだと知れば、もう少し面白がることができるのではないだろうか。

あるいは、超高速でさまざまな可能性を総当たりできる量子コンピュータが、機密保持されている情報の「鍵」を破れる日がくるかもしれないと知ったら?  「量子コンピュータなんてなんの役に立つの?」と聞いてくる人に、「大げさに言えばあなたのオンラインクレジットカード取引や銀行取引の情報が盗み放題になります」と言えば、一発で分かってくれるだろう。(実際に利用されている公開鍵暗号法はもっと複雑なので、量子コンピュータが実用化されてもすぐに破られることはないだろうが)

 

本書で紹介されているコンピュータアルゴリズムの多くは、人類が昔から使用してきたものにヒントを得ている。たとえば検索トップにくるサイトを決めるために、学術書でよく見かける「索引」「引用」を利用しているし、秘密保持のために使用するのは「合言葉(に近いもの)」だ。著者はこのほかにも多くの素晴らしい例え話を使って、アルゴリズムを解説している。

一つだけ紹介してみよう。またクレジットカード番号の安全問題に戻るが、一番の問題は、あなたのことをなにもしらないオンラインショッピングストアに、どうやってあなたのクレジットカード番号を読み取るための「合言葉」を知ってもらうかである。クレジットカード同様、「合言葉」も機密情報であるけれど、インターネットでは基本的にすべてが公開されるから、「機密情報を読み取るための合言葉」を安全に伝えるために、別の機密情報保持方法が必要になる。こうなっては鶏が先か卵が先かという話になってしまう。

では「合言葉」をどう伝えるか。著者はこれを「絵具の色を伝えるゲーム」でうまく説明している。

伝えたい秘密は、絵具を混ぜて作った特定の色だと考えるようにしよう…自分が混ぜた絵具を誰が持っていくかは予測できないということになる。このルールは、実際には通信はすべて公開されていなければならないというルールを拡張しただけのものである。

あなたがオンラインショッピングサイトに伝えるべき「合言葉」は、「共有された秘密の混合色」にたとえられる。第三者に作り方を教えることなく、あなたとオンラインショッピングサイトが「同じ秘密の混合色」、すなわち「合言葉」を作ることが目的だ。著者はこれを次のステップにまとめた。

  1. あなたと秘密を伝えたい相手が、それぞれ自分の「秘密色」を選ぶ。たとえば、あなたは青色、相手は赤色としよう。
  2. あなたか、秘密を伝えたい相手が、新しいこれらとは異なる色を公開する。たとえば黄色としよう。この黄色の絵具が入った壺は公開場所に置かれており、あなたと相手だけではなく、通りすがりの誰もが好きに持っていくことができる。
  3. あなたと相手が、それぞれ公開色1壺と秘密色1壺を混ぜた絵具を作る。あなたは緑色、相手はオレンジ色になるはずだ。あなたと相手はそれぞれの色を「公開秘密混合色」として公開する。この絵具もまた、誰もが好きに持っていくことができる。
  4. あなたは相手の色(オレンジ)を持ち帰り、それに自分の秘密色(青色)を1壺混ぜる。混合色は茶色になるだろう。相手も同じことをする(相手は緑色に赤色を混ぜる)。やはり茶色になる。
  5. というわけで、あなたと、あなたが秘密を伝えたい相手が持つべき「合言葉」は茶色だ。あなたか相手の秘密色を手に入れない限り、第三者は公開された情報(オレンジと緑色と黄色)だけでは、「赤・青・黄が1:1:1で混ぜられた茶色」という「合言葉」を得ることはできない。

素晴らしい!  実際には、絵具は数字となり、絵具を混ぜることは数値計算となり、(かなり乱暴に言えば)混ぜられた絵具を分析して、もとの絵具を突き止めるやり方が素因数分解となる。

この仕組みやほかの仕組みを利用することで、わたしたちは個人情報や機密情報をオンラインでやりとりできる。オンラインショッピングやネットバンクが現代社会にどれほどの影響を与えたかはもはや説明不要だろう。ひとつのアルゴリズムが社会丸ごと作り変えてしまった。文字通り「世界を変えた」のだ。

 

技術が「世界を変えた」ことは、これまでの人類の歴史で何度もあった。というより、高校以前の数学や理系教科書に載っているようなことは、ほぼすべてが「発明当時の世界を変えた」ものであると言ってもおおげさではないと思う。たとえば鉄道輸送。化学の戦争といわれた第一次世界大戦でドイツを支えた「空気から爆薬を作る」方法(窒素からアンモニアをつくるハーバー・ボッシュ法。なおこれは化学肥料の生産方法でもある)。飛行機技術。原子力発電と核爆弾。これらはいずれも目に見える大型機械を必要とするし、それがなにをするのかも見てわかる。

一方、コンピュータアルゴリズムは、普段目に見えないところに組みこまれた、形がないものであり、その働きに人々があまりにも慣れたために、強力さに気づくことが難しい。

著者はコンピュータアルゴリズムの強力さと偉大さを、とてもわかりやすく覗き見させてくれる。覗き見たアルゴリズムの世界に魅了され、もっと見たいと思う人々が、数学知識を身につけてどんどんその世界に深入りしていく。だが最初の扉を開けることがなによりも肝心で、本書はその役割を素晴らしい形で果たしている。