![見出し画像](https://assets.st-note.com/production/uploads/images/20461127/rectangle_large_type_2_149a14a4ad2f6bdf21988e911b1ee4a5.png?width=1200)
『教養としてのコンピューターサイエンス講義』を読み終えて
ここ2週間ほど通勤時間のお供だった本をようやく読み終えた。
普段は読んだ本の感想を書いたりすることはなく、せいぜいTwitterで軽くつぶやく程度なのだが、今回は気まぐれに感想(?)を書いてみる。
CS界のレジェンドによる一般向け教養書
本書は、ブライアン・カーニハン教授の著書 "Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security"(2017年)の翻訳版である。帯のキャッチコピーは以下のとおり。
著者のカーニハン教授は、C言語やUNIXに関する多くの研究実績や著作等で知られる代表的な研究者・教育者。ここ数十年の急速なIT技術の発展をリアルタイムかつ第一線で体験されてきたレジェンド的な人物である。
ちなみに、プログラミング学習者が最初に唱えるであろう "Hello World!" はカーニハン教授が起源らしい。
本書は、大学の教科書として書かれているためか、図表がほとんどなく、基本的に文字ばかりである。その上、約500頁とそこそこボリュームがあるので、私のような門外漢が読むには結構な時間を要する。
下記のとおり、カバーされている内容も、一冊の本としては相当に広い。
第0章はじめに
第1部 ハードウェア
第1章 コンピューターの中には何があるのだろう?
第2章 ビット、バイト、そして情報の表現
第3章 CPUの内部
第2部 ソフトウェア
第4章 アルゴリズム
第5章 プログラミングとプログラミング言語
第6章 ソフトウェアシステム
第7章 プログラミングを学ぶ
第3部 コミュニケーション
第8章 ネットワーク
第9章 インターネット
第10章 ワールド・ワイド・ウェブ
第11章 データと情報
第12章 プライバシーとセキュリティ
第13章 まとめ
翻訳書特有の読みにくさも手伝って、正直、序盤は読み進めるのが少しつらかった。しかし、多少プログラミングの知識・経験があったためか、第2部(ソフトウェア)あたりから面白くなってきた。そして、後半になるにつれて、点と点がつながってくるような感覚をおぼえた。
末尾の解説(坂村健教授)でも言及されているが、本書の特に素晴らしいところは、技術の内容だけでなく「なぜそうなったのか」という歴史的な背景とセットで理解できるようになっている点だと思う。これは、ここ数十年の技術の発展をリアルタイムかつ第一線で体験してきた著者ならではという気がする。
本書を手に取ったきっかけ
昨年末に、「SmartRoppo」という法令リサーチツールを公開した。
リーガルテックのプロダクトを自作してみました!
— カルアパ (@lawyer_alpaca) December 14, 2019
①APIからデータ取得
②下位規則レファレンス
③括弧ハイライト
まだバグも多く未完成ですがとりあえず公開します。ご意見ご要望等いただけると嬉しいです!#legalAC
法令APIを利用したリサーチツールを自作してみたhttps://t.co/5pW4bSEOaH
公開後、想定ユーザーである法律実務家はもちろん、エンジニアやデザイナーの方からも大きな反響をいただき、とても嬉しかった。
未熟なプロダクトながら、こうした反響をいただけた要因の一つには、「何のバックグラウンドもない弁護士がゼロから自力で開発した」というストーリーにあったのではないかと思う。
プロのエンジニアの方からは「本当に一人で作ったの?」と、よくわからない疑いをかけられたりもしたが、実際、今振り返ってみると、当時の自分がどうやって思いついたのか謎なコードもある。
そのくらい、開発しているときは、がむしゃらにやっていたのだと思う。弁護士業務の合間を縫って、とにかく設計どおり動くものを作ろうと、必死でエラー地獄と戦っていた。
ただ、その一方で、書いてあるコードの意味自体は理解できても、それが実際にコンピュータの中でどう動いているのか、どういう仕組みで動いているのか、よく理解できていなかった。もともとCS分野のバックグラウンドがなく、いきなり実践から入っているので、当然といえば当然である。
そうした基礎的な仕組みをもっと学んでみたいと思った。それは何のためかというと、単純な好奇心(面白いから)である。プログラミングを学び始めたのも、原点はそこにあった(と思う)。
そして、簡単なCS関連の本を読みあさる中で出会ったのが本書であった。
"Law"と"Code"は交わるか?
弁護士業の合間を縫って、今もプログラミングの学習は細々と継続している。だからといって「これからの法律家にはテクノロジーの知識が必須だ」とか「法律家もプログラミングを学ぶべき」などと言うつもりはない。法律実務家としてまだまだ未熟な自分にそんな大層なことを言う資格はないし、作る楽しさを共有できる人だけやればいいと思っている。
ただ、一方で、かのローレンス・レッシグ教授が提唱する "Code is Law" ではないが、テクノロジーの大きな流れとして、法(契約)とコードの境目がなくなっていくような、両者が徐々に収斂していくような、そんな感覚をもっている。
それが最初に起こるのは(あるいは既に起きているのは)、ブロックチェーン技術を利用した分野、とりわけ、ステーブルコインやセキュリティトークンといった分野ではないかと思う。
ステーブルコインやセキュリティトークンは、単なる「電子化されたお金」「電子化された権利」ではない。その本質は、プログラマブルであること、つまり、コードで記述された契約(スマートコントラクト)を組み込むことができ、その契約を自動執行することができるという点である。
スマートコントラクトの実装にあたっては、バーチャルな記録と現実世界(物理的な人の行動や物の移動)をどうリンクさせるかが課題となる。この点、金融取引は、一言でいってしまえば、抽象化された債権債務のやり取りなので、バーチャルな世界に馴染みやすいのだと思う。
将来的に、ステーブルコインやセキュリティトークンが実用化されれば、それを用いた取引のルール、つまり行為規範としての契約は、スマートコントラクト(コード)によって記述され、自動執行されるようになるように思われる(もちろん全てではないと思うが)。この場合、自然言語で記述された契約(書)は併存してもよいが、少なくとも、スマートコントラクトの内容と整合させる必要がある。つまり、法律家側にも、スマートコントラクトあるいはスマートコントラクトに合わせた契約書を読み書きできるスキルが求められてくるようにも思われる。
前述の「法(契約)とコードの境目がなくなっていくような、両者が徐々に収斂していくような感覚」とは、言語化すると、こういう感覚である。こうして考えると、本書で学んだ知識も、長い目で見れば、法律家としての仕事に役立つ日がくるのかもしれない(し、ならないのかもしれない)。。
本質的な部分は陳腐化しない
テクノロジーの世界は、法律の世界とは比べものにならないほどのスピードでアップデートされていく。「すぐに役立つ本」は、すぐに「役立たない本」になる。
本書は、最新の言語やフレームワークの使い方が載っているわけでもなく、大量のサンプルコードが載っているわけでもない。そういう意味では、おそらく、読むのに時間がかかる割には「すぐには役立たない本」だと思う。
ただ、本書の随所にちりばめられている基本的な技術思想やアイデアは、廃れることなく、最新のテクノロジーを理解したり、テクノロジーによって生じた問題(たとえばCoinhive事件)について考える際のヒントを与えてくれると思う。
この本は、これらのシステムがどのように機能し、どのように私たちの生活を変えているのかを理解することを目的としています。最新のシステムは必然的に一時的な姿に過ぎないので、今から10年後には、現在のシステムが、ぎこちなく陳腐化しているように見えることは確実でしょう。(中略)
ただ幸いなことに、デジタルシステムの基本的なアイデアは変わることがないでしょう。そのため、基本的なアイデアを理解しておけば、未来のシステムも同じように理解できます。さらに、そうした未来のシステムがもたらす挑戦やチャンスに対して、有利な立場で取り組むことができるでしょう。【本書27頁より抜粋】
「教養としての」という邦題には、そういうメッセージが込められているのだと感じた。
この記事が気に入ったらサポートをしてみませんか?