【読書メモ】僕らはそれに抵抗できない「依存症ビジネス」のつくられかた

コカインは現在では麻薬として禁止されている薬物の一種なのは周知の事実だと思う。麻薬が問題で禁止されている原因はその依存性の強さにある。しかし、このコカインは19世紀から20世紀のはじめには普通に市販されていたのもまた事実である。コカ・コーラのコカはコカインのコカから来ているのは有名な話である。では、なぜ依存性がこれほど問題になるかというと、これもよく知られている通り、その事以外ができなくなり、働いたり、家族と過ごしたり、トイレに行ったりという極めて一般的な生活を送ることが困難になってしまうからだ。

聞きかじったところによると海外などでは比較的用意に麻薬が手に入るっぽいが、日本の場合だとかなり厳しく取り締まられているためか、手に入れるのは難しいように思う。行くところに行けば入手可能だと思うが、普通に生活を送っている人が手に入れるのは難しいだろう。(プロ野球選手や霞が関では手に入るっぽいが)

『僕らはそれに抵抗できない「依存症ビジネス」のつくられかた』は、現代の依存症について書かれた本でなかなかおもしろかった。

僕らはそれに抵抗できない 「依存症ビジネス」のつくられかた

僕らはそれに抵抗できない 「依存症ビジネス」のつくられかた

 

依存症の世界へようこそ

警察活動などのおかげで我々日本での依存症が根絶されたかというとそうとは言えない。スマホソーシャルゲームやオンラインゲーム、あるいはInstagramなどのSNSは実のところ現代における依存症の最たる原因になってしまっている。

ソーシャルゲームには依存症にさせるための要素が至るところに散りばめられている。例えば、スタミナというシステムがある。このスタミナというシステムでは、数時間ごとに一定数の値が加算されていき、ある値になるとゲームがプレイできるようになる。このスタミナシステムは無料でプレイできてありがたいと思いきや、これが依存症への架け橋となっている。これは、本にもそう書いてあるし、自分も体験したので間違いないので信じてもらって良い。こいつは非常に良くできたシステムである。

スタミナシステムのあるゲームのやりはじめは1. プレイをする、2. スタミナが減る、3. スタミナが貯まり1にもどる、というループだが、だんだんこれが、1. プレイをする、2. スタミナが減る、3. スタミナが溜まってないかスマホを何度もチェックする、4. 依存症になるというループになってしまう。ソシャゲをやったことのない人はそんな簡単にハマるわけがないと思うかもしれないが、事実、このループにいとも簡単に人間はハマってしまう。しかも、スタミナシステムは依存症への第一歩に過ぎず、その後、ギャンブルと同じ射幸心を煽るガチャ、限定イベントなど、あの手この手でプレイヤーを依存症の道へ引きずり込んでいく。

こういった事例は別にソーシャルゲームだけではなく、マラソンみたいなものなどにも広がっていらしい。驚くことに、ランニング距離を監視するスマートデバイスなどにより、マラソンが中毒になってしまうのだ!当然無理な運動を続けた人間は怪我をしたり体を壊してしてしまう。人間、数値が出ると目標がその数値になり本質を見失いがちである。SNSのいいねなども全く同じ構造である。

現代の麻薬製造業

ソシャゲもマラソンもどれもこれも、はじめは楽しむだったり、健康になるという目標だったのに、いつの間にか悔しい思いをしたり、怪我をするために行為を行ってしまっている。ようするに依存症になってしまっている。しかも、現在のインターネットを使ったサービスの多くが人を依存症にさせるように設計されてしまっており、自らを律することが出来ない意志の弱さが悪いとか言った問題ではなくなってきている。昔はオンラインゲームに依存してしまうのは一部のゲームマニアだけだったが、スマホなどの普及に以前とは段違いの人口にリーチしてしまっている。

更に残念なことに、これらを行うためにハイテクの技術、流行りの言葉で言うところのビッグデータ技術や人工知能技術がこれでもかと言うほど投入されている。一流大学でコンピュータサイエンスを学んで生み出しているものが、現代のコカインとも言うべきものであると考えるとなんとも皮肉である。麻薬もたいへん儲かるらしいし、SNSやソシャゲも大変に儲かるらしいし、人を依存症にさせるビジネスはというのはどうも儲かるようにできているのだろう。経済学の需要と供給曲線で考えると、需要曲線がやたら上に押し上げられる感じだろうか。

依存症とその対策

では、このような依存症ビジネスから抜け出すには何をすべきかというと、個人レベルの対策では、まず、環境を変えることが重要だそうだ。例えば、昔ベトナム戦争という戦争があったが、ベトナムに派遣された米軍兵士の間でヘロインが大流行したそうだが、実はヘロインに限らず依存症というのは環境に強く結びついており、米軍兵士がアメリカに戻るとヘロイン依存症から脱却できたそうだ。しかし、一旦同じ環境に戻ると再び依存症が再発したらしい。

当時、麻薬中毒というのはその薬物自体が原因であり、環境などは全く関係ないと考えられていたので、この発見は相当の驚きだったらしい。おかげでこの学説が発表された当初は全く受け入れられずに苦労したそうだ。いつの時代も、新しい考えはなかなか受け入れられないようで大変である。

環境といえば、現在のデジタル環境はとにかくデータを取得されて、人間を依存症にさせることに最適化されすぎている。個人的に特に最悪な発明だと感じるのがプッシュ通知で、放っておくと毎秒通知が届く羽目になり、通知を確認するだけで人生が終わってしまう。集中しているときに通知がくるのは最悪で、最近は通知を全てオフすることを決意し、数時間おきにこちらからポーリングするようにした。通知を全オフにして以降はなかなか快適なデジタルライフを送っている。通知全オフは全人類におすすめしたいソリューションである。脱依存症ライフを送ろう。

今の処、個人情報を扱うようなビッグデータ人工知能はろくなことに使われていないのではないかという気もしてくるが、IoTとか無邪気に言っている諸氏らはここらへんはどう考えているのだろうか。気になるところである。依存症が問題で麻薬などは規制されているのに、デジタル版のコカインとも言うべきサービスは放置してよいのだろうかと疑問も湧いてくる。

さらに、依存症ももちろん問題だが、最近のSNSを通じた選挙などを見ると民主主義の根幹を揺るがすような自体にも発展しており、今後の情報化社会には暗澹たる思いにならざるを得ない。選挙などの話はまた別に紹介したいが、社会5.0とか言っている場合ではないぞという気持ちになってくる。やれやれである。

【読書メモ】天才とは何か

実は、世の中には天才と呼ばれる人がたくさんいるだろう。クラスの中の天才や、会社の中の天才などである。今回読んだ『天才とは何か』という本は、そういった巷にありふれている天才ではなくて、後世に重大な功績を残した、例えばアインシュタインやバッハのような、真の天才について書かれた本である。

天才とは何か

天才とは何か

  • 作者: ディーン・キース・サイモントン,小巻靖子
  • 出版社/メーカー: 大和書房
  • 発売日: 2019/03/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

数学者は人生の早くに功績をあげるが早く死ぬ

本書では、天才はいつ頃功績を残すかや、どのくらいの頻度で功績を残すか、その家族構成などが議論されているが、自分が一番気になったのは、数学者は人生の早い時点で重要な成果を残し、他分野の天才よりも早く死ぬ(平均して6年も!)ということだ。確かに天才ガロアは若くして代数学の分野で重要な成果をあげたが、決闘によって20才のという若さで亡くなっている。しかし、決闘で死んでしまう数学者は稀だろうから、他に何か要因があるのだろうと思う。

残念ながら本書では天才数学者の死因トップ10のようなランキングは乗っていなかったので、その正確な原因はわからないが、確かに天才数学者はあまり良い人生の結末を迎えていない人が多いように思う。

無限について深い洞察を与えたカントールは、自身の業績が認められずにうつ病になってしまっているし、同性愛者であったチューリングも精神を病んでしまっている。ナッシュ均衡のナッシュも統合失調症であったそうだし、思い当たる節が多すぎである。

概念的クリエイターと実験的クリエイター

本書で述べられていた、概念的クリエイターと実験的クリエイターという概念も面白かった。概念的クリエイターは突然閃いて仕事をする人のことで、こういうクリエイターは人生の早い時期に最高の仕事をし、実験的クリエイターは、探求しながら徐々に進んでいくので、膨大な量や知識を備えた人生の後半に最高の仕事をするそうだ。

自分の専門分野はシステムソフトウェアであるが、周りを見渡すと多くの人が実験的クリエイターであるように思う。若いときは知識とスキルが追いつかないので、どうしても時間がかかってしまう。もちろん自分も実験的クリエイターである。

ただ、概念的クリエイター、実験的クリエイターのどちらも、膨大なアウトプット量という下地の上に創造的な産物が得られるそうなので、数は力である。天才になりたければ、とにかくアウトプットするしかないのだ。悲しい現実だが、しょうがないので、日々少しずつアウトプットしていこう…

前期の講義をやり遂げた

2019年の前期は数学の講義を担当することになって、えらい大変だった。特に自分は数学が専門じゃなくて、大学の数学の講義を受けた経験があまりないため、どう教えたものかとたいへん迷った。一応、数学自体は独学で勉強していたため何とかなったとは思いたいのだが、さすがに本職の先生には及ばないところもあるだろう。

講義内容的には計算の理論なのだが、せっかくだから、大阪大学の他の講義ではやっていないような面白い内容をやろうと思い、不完全性定理と型システムをやったが、これは本当に大変すぎた。おかげで、土日や帰ったあとからも講義資料の作成をしていたし、数学の証明だけではなくて、プログラミング課題の実装もしていたので時間がどれだけあってもたりなかった。大学はレジャーランドなので土日祝日もなくて大変である。レジャーランドに休園日はないのだ。

現在、講義の最終課題として単純型付きλ計算型推論エンジンの実装に取り組んでもらっている。講義で得た数学の証明論の知識を、実際のプログラミングにまで活かせるので、大変ではあるがかなりの実力がつくのではないかと思う。

後期も講義をいくつか担当するので、また考えないと行けない。今の所、CPUキャッシュコヒーレンスや分散ハッシュテーブルのアルゴリズムを形式検証する講義と、パケットキャプチャを行い、自前で実装してもらった正規表現エンジンでフィルタリングする講義のようなものにしようかと思っているが、まだまだ未定である。前期の講義では、ネットワーク、プログラミング言語理論、数学基礎論、計算理論を行ったので、後期ではCPU、OS、システムプログラミング、分散コンピューティング、モデル検査、形式手法あたりを絡めて教えていきたい。しかし、分野が広すぎる。

サイバーセキュリティの講義と演習を行った

5月25〜26日にかけて大阪大学で高度サイバーセキュリティPBL Iという講義を行った(これも例のごとくProSecというコースの一環である)。講義と言っても講義が6割で演習が4割と言った配分である。この講義は自分以外に、情報通信研究機構から明石邦夫先生を招き講義してもらった。明石先生は、Interop Tokyoという日本最大のネットワークの展示会のネットワーク運用センター(通称NOC)で運用を行っているような人で、ガチでネットワークに詳しいので、かなり面白い話が聞けたと思う。

講義の内容は、ネットワークの基礎から学んで、最終的にOpenBSDのpfを設定してDMZのあるネットワークの構築を行うまでを目標にしている。1日目はネットワークの基本的な内容、いわゆるネットワークスペシャリストに出るような内容を講義し、その後学生同士でチームになってもらい、ウェブブラウザでURLを開いたときにスイッチやNAPTルータの内部で何が起きているかをプレゼンしてもらった。当初ネットワークは全然わからないと言っていた学生が、スイッチ内部のテーブルや、NAPTのアドレス変換について解説できるようになるのはなかなか凄いことではないだろうか。

2日目の講義ではネットワークスタックの実装方法や、radix treeを用いたルーティングテーブルのルックアップエンジンの実装方法といった内容の講義を行ったが、これは普通のネットワークの講義ではやらないような濃い内容になったと思う。また、OpenBSDのpfを使ったDMZネットワークの構築を行う演習の方だが、こちらも当初はBSDを使うのが初めてで、ましてやpfとは一体、という学生が大半だった。しかし、最終的には、完璧でないにしろpfでフィルタリングができるようになった学生がそれなりに居たため大変喜ばしい。

ネットワークの講義というと、いかんせん暗記科目になりがちで、暗記はしたけど実際問題いまいち良く分からないとなりがちだが、本講義では何故そうなっているか、実装はどうなっているかといった哲学と実際の仕組みを念入りに教え、さらにpfも使って演習したため、2日間で一気にネットワークセキュリティに詳しい人材が出来上がってしまった。

大学の講義は実社会で役に立たないと言われがちだが、これほど実社会に役に立つ講義もないのではないかと思う。準備がめちゃくちゃ大変だったが、無事に終わってよかった。終わって安堵するのもつかの間、そろそろ次の講義の準備をしないといけない。こんなに面白い内容が聞けて演習できるなんて(自画自賛)、大学はまことにレジャーランドである。

不完全性定理の理解不完全性

大阪大学に赴任してから半年たったぐらいの2019年2月頃に、離散数学と計算の理論という題目の講義を4月から担当することに決まった。その理由は、その講義を元々担当していた当時研究室の准教授だった先生が、他大学の教授へとご栄転されることが決まったからである。

自分はネットワークシステム、分散・P2Pコンピューティング、ネットワークセキュリティが専門でどちらかというと実装よりなので、数学はあまりやってこなかったのだが、今はプログラミング言語理論を習得するために論理学や計算モデルを勉強していたので引き受けることにした。この講義は大阪大学のProSecというコースを申し込むと、社会人でも受講することができるようになっている(コースは有料だけど)ので、詳細は「大阪大学 prosec」で検索してほしい。(現5月時点で申し込むと、秋からの受講になるだろうが)

プログラミング言語を真面目に初めた理由は、最近はネットワーク業界でもソフトウェア定義や、プログラマブルスイッチなどと言われているため、数年後にはプログラミング言語理論の知識が必要になるのではないかと漠然と思っていたからであった。実際に活かせるかどうかはこれからの研究にかかっているので、乞うご期待といったところである。

そんなこんなで講義を担当することが決まり慌ててシラバスを決めたのだが、自分の担当は以下のようにした。

  1. 命題論理
  2. 述語論理
  3. 計算可能性
  4. 不完全性定理
  5. λ計算
  6. 型システム

4回で不完全性定理まで行くのはかなり駆け足な気がするが(2人の先生で15回なのでこんな感じに)、大阪大学の学生は優秀なので大丈夫だろう。問題は自分の方である。内容を決めたは良いが、勉強のし直しが大変だった。3月からは、家に帰ってからは数学の本を読むことに時間を使った気がする。今はゴールデンウィークだが、不完全性定理はめちゃくちゃ大変で、ゴールデンウィークの半分は不完全性定理で消えてしまった。なぜシラバスに入れたかと自分を恨んだりもしたものだ。ツライ。

不完全性定理を学ぶ上でいろいろな文献を参考にしたが、数年前に買った「コンピュータは数学者になれるのか?」という書籍がとてもためになった。しかし、この本は一般書の顔をしているが数学がある程度わかる人向けなので、誰得感が否めない。前半の1、2章で述語論理の導入から初めて不完全性定理まで行くというハイペースぶりである。自分はとてもためになったので、俺得ではあるのだが。まだ不完全性定理の理解は不完全なので、今後はもう少し落ち葉拾いをしていきたい。

この講義では簡単な原始帰納的関数Haskellで実装したり、型付λ計算で簡単な型推論エンジンを実装したりもする予定なので、内容的にはかなり面白いのではないかと思う。特にうちは工学部なので、数学をプログラミングに活かせたほうが学生にもよいだろう。

他にも、大阪大学のProSecでは、ファイアウォール演習、レジスタマシンのエミュレータ実装演習、多層防御の演習なども自分が担当する予定なので、こちらも準備しないといけない。無事に乗り切りたいところである。

ゴールドバッハ予想の反例を探索するJavaScript

ゴールドバッハ予想とは、2より大きい偶数は2つの素数の和で表せるという予想である。例えば、18 = 5 + 13 や、34 = 3 + 31 となる。

ゴールドバッハ予想が誤りであることを証明するには、その反例を示せば良い。というわけで、ゴールドバッハ予想の反例を求めるJavaScriptを作成したので、ここに公開する。なお、このプログラムは反例が見つかれば停止する。

ゴールドバッハ予想

f:id:ytakano:20190305234235p:plain

ゴールドバッハ予想の反例を求めるプログラムの実行例

プログラミング言語と論理学の狭間にてさけぶけもの

情報科学をやってきたのだから、死ぬまでに一度自作のプログラミング言語を作ろうと思ったのが2016年後半ぐらいである。プログラミング言語オペレーティングシステム情報科学を志した者は誰もが一度は目指す道である(たぶん)。

しかし、思い立ったは良いが、プログラミング言語の研究は論理学を基礎としており、その当時は論理学のろの字もわからなかった。実際には、JAISTの学生時代に小野先生の数理論理学の講義を受けたのだが、その当時は「ANDとOR計算ね」ぐらいの認識しかなかったという体たらくであった。当時は大堀先生もJAISTStandard MLの講義をしていたので、今にして思えば受講しておけばよかったと思う。

そんなこんなで基礎を習得するのに2年弱かかってしまって、今ようやく自作プログラミング言語の実装に取り掛かっているわけである。本報はプログラミングという情報科学にそびえ立つエベレスト、いやオリンポス山登頂を目指しているつもりが、論理学というジャングルへ踏み込むことになった結果得られた知見をまとめたものである。

論理学入り口

独習コンピュータ科学基礎II 論理構造

独習コンピュータ科学基礎II 論理構造

 
論理学をつくる

論理学をつくる

 

『独習コンピュータ科学基礎 II 論理構造』と『論理学をつくる』は初学者におすすめしたい本である。論理学の教科書というと記号の羅列になりがちで、これがどう情報科学に生きていくのは分かりづらい部分がある。一方、『独習コンピュータ科学基礎 II 論理構造』の方は、論理学的な証明もしつつ、プログラムを証明するとはどういうことかや、プログラムで自動推論するにはどうするかなどを解説しており、論理学が情報科学にどう結びつくかが強くわかるようになっている。この『独習コンピュータ科学基礎 II 論理構造』はポートランド州立大学のコンピュータ科学基礎論の教科書であり、内容も大学の講義に耐えうるものだ。

『独習コンピュータ科学基礎 II 論理構造』は、論理学をどう使うかということが主題で、論理学そのものについてはあまり深くはない。例えば、演繹体系は自然演繹法のみ利用しており、様相論理や直観主義論理などの非古典的論理の解説はなく、演繹体系の健全性や完全性の証明はおざなりな感じは否めない。『論理学をつくる』では、情報科学に活かすというよりも、より論理学になった感じの書籍であるが、内容は大変明快で初学者にもわかりやすい。『独習コンピュータ科学基礎 II 論理構造』では触れられていなかった様相論理や直観主義論理も解説されている。

数学や論理学を専攻するのでなければ、この2冊、もしくはどちらかを抑えておけばよいのではないかと思う。つまり、『独習コンピュータ科学基礎 II 論理構造』∨『論理学をつくる』である。

論理学の奥地へ

情報科学における論理 (情報数学セミナー)

情報科学における論理 (情報数学セミナー)

 
論理と計算のしくみ (岩波オンデマンドブックス)

論理と計算のしくみ (岩波オンデマンドブックス)

 

自分は『情報科学における論理』は、JAIST時代に小野先生の数理論理学の講義教科書として購入した。本書は『独習コンピュータ科学基礎 II 論理構造』に比べるとずっと理論よりとなり、プログラミング言語などの関わりよりも、論理そのものを学ぶ、まさに数理論理学という本である。内容は、古典的論理から様相論理、直観主義論理、λ計算まで幅広く書かれている。

『論理と計算のしくみ』は『情報科学における論理』よりもさらに広い範囲をカバーしている。例えば、ゲーデル不完全性定理や、型付きλ計算型推論まで含んでいる。しかし、本書は極めて理論的であるため、論理学の応用を目指す人にとっては幾分難解な箇所もあるように感じた。例えば、無限の論理式を含む式とか、無限という言葉がカジュアルに出てきて抽象度がかなりあがっている。

情報科学における論理』と『論理と計算のしくみ』は、論理学を応用として使ってみるうちに、その理論的背景を知りたくなった場合に読めばよいのではないかと思う。例えば、モデル検査の理論的背景にはクリプキ構造や様相論理があり、背景知識までを正確に理解するにはこれら書籍を参考にするしか無い。

そしてプログラミング言語

型システム入門 −プログラミング言語と型の理論−

型システム入門 −プログラミング言語と型の理論−

  • 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男
  • 出版社/メーカー: オーム社
  • 発売日: 2013/03/26
  • メディア: 単行本(ソフトカバー)
  • クリック: 68回
  • この商品を含むブログ (11件) を見る
 
Programming Distributed Computing Systems: A Foundational Approach (The MIT Press) (English Edition)

Programming Distributed Computing Systems: A Foundational Approach (The MIT Press) (English Edition)

 

プログラミング言語の定番本として挙げられる本といえば『型システム入門』、通称TaPLがあるが、個人的には論理学の教科書で基礎を学んだあとに読んだほうがわかりやすいのではないかと思う。例えば、本書の22章 型再構築には単一化と呼ばれる操作のアルゴリズムが載っており、単一化アルゴリズムは『独習コンピュータ科学基礎 II 論理構造』、『情報科学における論理』、『論理と計算のしくみ』にも載っているが、『型システム入門』の説明が一番わかりにくい。

『Programming Distributed Computing Systems: A Fundamental Approach』は英語の本だが、λ計算、π計算、アクターモデル、Join計算、アンビエント計算など並行計算モデル書かれた良書である。λ計算の説明は本書が一番わかりやすかった。前半の理論部分の解説は良いのだが、後半の実装部分がツール類が古くて動かないものばかりなので読まなくても良いかもしれない。

以上が2年弱勉強して得られたざっくりとした知見である。自分は論理学の専門家では無く、あくまでも論理学のユーザであるため異なっている箇所もあるかもしれないが、なにかの役に立つかもしれないと思い簡単にまとめた。それでは良いハッキングライフを。