自分を攻略していく記録

自分がやりたいことを達成するには何をすればいいのか、その攻略していく過程をつらつらと

ブロックチェーンまわりの技術本を書きました

2019年3月にKADOKAWAからブロックチェーンプログラミングのためのコンピュータサイエンスがわかる本という本を出版した。内容はプログラミングの基礎的な話から最後はBitcoinやEthereumの内容について踏み込んでいく、というもので共著での執筆だった。5章立てで僕は最後の章(Ethereumについて)をメインに担当した。諸事情があり4章(Bitcoinについて)もほぼ大半を執筆した。

執筆のきっかけは大学の友人経由で話をもらい、そこで「やってみるか」という感じで引き受けた。当初50ページほどという話だったので、1ヶ月くらい週末や平日の夜に時間を割いて執筆をした。結局、コラムだったり5章以外の修正等を行ったのでその後もちょくちょく時間を割いた。

本の構成

CHAPTER1: コンピュータ基礎

データ構造とアルゴリズム、CPUの仕組みなどを扱う。

いきなりメモリの話とかになるので、完全にプログラミング初心者だともしかすると少し圧倒されてしまうかもしれない。逆にすこしかじったことがある人だと心地よいくらいの難易度だと思う。

CHAPTER2: 暗号とセキュリティ

共通鍵暗号公開鍵暗号ハッシュ関数、デジタル署名などを扱う。

ブロックチェーンに限らず、インターネット関連のニュースとかで目にするようなセキュリティ周りの話。公開鍵と秘密鍵の関係だったり、ハッシュ化の仕組みだったり。

CHAPTER3: ネットワーク

プロトコル、HTTP通信、Websocket、P2P通信などを学ぶ。

ブロックチェーン以前に分散型データベースの「分散型とは」といった内容も触れるので個人的にも学びが大きい章だった。

CHAPTER4: ブロックチェーン応用(Bitcoin編)

Bitcoinを題材に、ブロックチェーンの仕組みを学ぶ。

CHAPTER5: ブロックチェーン応用(Ethereum編)

Ethereumを活用したアプリケーションの開発を学ぶ。スマートコントラクトを用いたアプリの仕組みを理解する。

執筆に際して実際に簡単なアプリを作ったが、そのコードが以下のリポジトリ。Vue.jsでWebのフロントエンドを実装して、SolidityでEthereumのスマートコントラクトを書いてある。

github.com

感想

今回は初めての本の執筆で、なおかつ共著だったが、思っている以上に大変だった。共著でも各人のパートが完全に独立しているなら良いのだが、今回はそこまで独立していたわけでもなく、5章ともなると1~4章をしっかり考慮しないと、情報の過不足だったり、本の難易度が急に変わってしまう。例えば、Ethereumで利用されているマークルパトリシアツリーというデータ構造が1~3章のデータ構造の部分で解説されていたっけ?みたいな感じ。

あとで辛い思いをしないように最初にちゃんと構成を考えたり、なるべくあとで修正しやすいように気をつけたり、他の人のレビューを受けて修正したりと、複数人でプロダクト開発をしているかのような感覚で、ある種の面白さがあった。本の執筆もプロダクト開発と通ずるところがあるな、と。と同時に、本を出すことのハードルが非常に下がってきているようにも感じた。有志で好きにウェブサービスを作って公開できるようになったのと同様に、本もそれに近い状態になってきているんだろうと思った。紙媒体だと在庫の管理やお金周りの観点から少し骨が折れるが、Kindleのような電子書籍だとかなりハードルが低くなっている。MyISBNを使えば、個人で出版社を通さずとも紙の本を出版できるらしい(使ったわけではないので詳しくはわからない...)。

何はともあれ、出版までできてよかった。少しプログラミングかじったことがある人だとちょうど良いくらいの難易度になったと思う。