ブックレビュー 鳥谷部昭寛ほか『スマートコントラクト本格入門』

投稿日:

現状Amazon等で「スマートコントラクト」をキーワード検索すると、トップに出てくるのが本書『スマートコントラクト本格入門』です。

書籍情報

スマートコントラクト本格入門
  • 著者:鳥谷部 昭寛 著,‎ 加世田 敏宏 著,‎ 林田 駿弥 著
  • 出版社:技術評論社
  • 出版年月:20170301

全7章立てになっており、1〜2章がFintech・ビットコイン・ブロックチェーンといったスマートコントラクトを理解するのに必要な前提および背景知識、3〜5章がスマートコントラクトの概要・活用方法・法規制、6〜7章がサンプルコードを使って実際にブロックチェーンとスマートコンラクトを実践体験、という三部構成をとっています。

前中半5章までのパートでは、エンジニアらしいロジカルな文章と豊富な挿絵で、ブロックチェーン技術とそれをベースにしたスマートコントラクトで将来何ができるようになるかを解説。技術評論社から出ている本だけあって、技術的に誤解のないよう厳密な説明を心がけているのが随所に伺えます。これはもちろん本書のいい点でもありますが、やや説明が冗長かなと思う場面もちらほら。基本的な概念については、先日このメディアでご紹介した経産省のテキストなど、全体像が掴める文献を読んでからこの本にとりかかったほうがいいかもしれません。

一方驚かされたのは、この早い刊行タイミングにもかかわらず、

といった、法律家や弁護士もまだ研究中の、スマートコントラクトに関する法律問題にも言及しているところ。企業法務関係者にとってはありがたいですね。

そしてつづく後半6〜7章の技術分野のパートでは、サンプルコードを使ってブロックチェーンとスマートコントラクトを自分で触って体感できるようになっています。本書を手に取られた非エンジニアの方は、特に楽しみに期待されているところでしょう。ただ、私の印象としては、このパートは「入門」というには少しハードルが高めかなという印象でした。というのも、そもそもそのサンプルコードが動く前提となる開発環境の構築方法について、サポートがほとんどないのです。

この点については、本書P127からはじまる6章のトビラに、はっきりとこのような注意書きがありました。

本章と7章は、プログラミングの技術的な解説となり、プログラミングを一度でも経験したことのある技術者を対象としています。したがって、スマートコントラクト開発に関わること以外の基礎的な技術・プログラミング用語の説明は省略しています。

例えば、GethというGo言語のイーサリアム開発環境があるのですが、その構築・インストールについての説明がこんな感じ。

P138の冒頭、唐突に

Homebrewを使うと簡単です。Homebrewをインストールした状態で、ターミナルで以下のコマンドを打ち込んでください。

とあります。しかし、そもそもそのHomebrewとは何で、それをどうやってインストールするのかの記載もありませんし、Homebrewをインストールするための「ターミナル」がなんであるかの説明もありません。一般の方は戸惑われるのではないでしょうか。

それでも、「本書を頼りにブロックチェーンやスマートコントラクトをどうしても触って試してみたい」という方のために、以下、非エンジニアが開発環境を設定する手順の中でつまづきそうなところを、同じく非エンジニアである私の実体験をもとに以下リストアップしてみました。

1. Xcodeをインストール 所要時間:約60分

Homebrewをインストールするには、まず最初にXcodeというOS Xの開発環境からインストールしなければなりません。これを30分ぐらいかけてDLし、さらに30分ぐらいかけてインストールするところからスタートです。ここで半分以上の方が挫折する気がしますが、頑張りましょう(笑)。XcodeはAppStoreからDLできます。
https://itunes.apple.com/jp/app/xcode/id497799835?mt=12

2. Homebrewをインストール 所要時間:約20分

先述のとおり、本書には肝心のHomebrewのインストール方法が記載されていません。ネットを検索するとすぐに出てくる情報ではありますが、上述のXcodeをインストール完了した状態で、こちらに従ってターミナルにスクリプトを打つことで、Homebrewをインストールできます。
https://brew.sh/index_ja.html

3. Javaをインストール 所要時間:約5分

私がハマってしまって数日抜けられなかったトラップがこれ。開発者にとっては入っていて当然すぎるからか、本書にはJavaインストールの必要性について言及がありませんでした。これを入れておかないと、後にgethの開発環境をインストールし構築している途中で

==> Checking out tag v1.7.x

が出たままスタックすることになるはずです。

インストール方法についてはそれほど難しくはないのですが、私はこちらを参考にしました。
https://qiita.com/seijikohara/items/56cc4ac83ef9d686fab2

4. GMPとGoのコンパイラをインストール 所要時間:約40分

本書P139に本当にさらっと一言

ビルドには、GMPとGoが必要です。持っていない方は、事前にインストールしておいてください。

と書いてあるものの、説明は本当にそれだけ(笑)。Homebrewをインストールした状態で以下を実行することで、インストールできます。それぞれ20分ほどかかります。

$ brew install gmp
$ brew install go

以上、1〜4を乗り越えれば、ようやくP138からはじまるGethの構築に取り掛かることができるのですが、P143にもう一つ、大きなトラップが・・・。

5. genesis.jsonファイルの修正 所要時間:約10分

ブロックチェーンを動かそうとする際、ジェネシスブロックと呼ばれるチェーンの最初のブロックを定義するgenesis.jsonファイルを作成する必要があります。しかし、本書P143記載されているソースコードでgenesis.jsonファイルを作成すると、エラーになってしまいブロックチェーンが動かないのです。同じように、こちらのブログの方も、このトラップにはまってお困りになったご様子でした。

私は、こちらの方のgenesis.jsonをお借りして解決しました。
https://qiita.com/oggata/items/eea4d5e37f38785f6079

こうしたトラブルを自分で解決する過程で技術そのものを理解していくことにもなるので、将来のために必要な修行と思うことにしましょう。以上、本書完走のご参考にしていただければ幸いです。

(橋詰)