ブックレビュー 加嵜長門ほか『試して学ぶ スマートコントラクト開発』

投稿日:

DMMブロックチェーン研究室の手による、スマートコントラクト開発マニュアル。スマコンが社会インフラを担う近未来にビジネスパーソンとして求められる能力・知識とは何かを見通せるようになります。

書籍情報

試して学ぶ スマートコントラクト開発
  • 著者:加嵜長門/著 篠原航/著 河西紀明/著 金志京/著 佐々木亮彰/著 田中克典/著 平野浩司/著 ほか
  • 出版社:マイナビ出版
  • 出版年月:20190130

スマートコントラクト開発のゆりかごから墓場までをくまなく学べる本

仮想通貨バブルの隆盛と崩壊のプロセス、そしてそれを繰り返し伝える報道のおかげもあって、ブロックチェーン技術とは・スマートコントラクトとは何かといった基本的知識については、一般のビジネスパーソンにもだんだんと知られるようになってています。

本書はその次の段階の、「スマートコントラクトを開発する」とは具体的にどういうプロセスを踏み、どのような作業を積み重ねて完成させていくものなのかという、おそらく他人に対して説明をするのが最も難しい部分を、新人エンジニア教育マニュアルがごとく丁寧に文書化 した、大変貴重な一冊です。

加嵜長門ほか『試して学ぶ スマートコントラクト開発』P342-343

しかも、とりあえず動くスマートコントラクトを作れるようになっておしまいにするのではなく、ユーザーの問題解決につながる効果的なアプリケーションをどうやって設計するのかという プロダクトデザインの視点 や(第3章)、開発したスマートコントラクトをチェックし社会インフラとして安定的に運用するための テスト手法(第7章)、さらには 脆弱性監査サービスの紹介(第9章) までを内容に網羅しています。

高い視座からの意識啓蒙と、それを実行レベルに落とし込む方法の具体的な手ほどき、その双方を兼ね備えています。

「なぜそれが必要とされたのか」までを説明しているから理解が進む

本書全体の構成は、ホスト役のユーザーが「ルーム」を作り、そこでゲスト役のユーザーが良いQ&Aを行うごとに報酬を与えるEthereumベースのDApps(非中央集権型アプリケーション)をサンプルプロダクトとして、実際にテスト環境でそれが動くのを試せるまでを、開発環境構築を助けてくれる各種ツールのインストール方法を含め、ひとつひとつ手ほどき するものとなっています。

以前、このメディアでご紹介した『スマートコントラクト本格入門』にも、そうした「試して学ぶ」体験要素はありました。しかし同書では、ある程度のソフトウェアの開発経験がない方には、途中でついて行けなくなる(少なくとも基礎知識はネット等で自分で調べる)部分があったのは否めません。

それに対し本書は、そうしたソフトウェア開発経験がまったく無い方でも、説明の手順を守って丁寧にこなしていけばとりあえず動かせるようにまではなる配慮が行き届いています。

開発をかんたんにしてくれるサービス・ツールを、アカウント作成・インストールの方法まで含め紹介

さらに、単にサンプルコードの各行ごとの処理内容を解説するだけで終わっているようなプログラミング文法解説書のレベルにとどまるものではなく、開発するスマートコントラクトがなぜそう設計されているのか、そう設計すべき必要がどこから生まれるのかといった、コードの背景にある意味・目的までを一つ一つ、根気よく説明 してくれます。

コントラクトはその内部に状態変数としてデータを保持できますが、今回のアプリケーションでは何故あえてデータベースを使用するのでしょうか。
第一の理由はガスコストです。データの保存・書き換えを実行するたびにユーザーがガスコストを負担するのは、ユーザー体験上望ましくありません。
(中略)
また、ユーザーの観点では、質問するたびにガスコストを支払う必要があると、身銭を切ってまで質問する経済的な利益があるかを検討することになり、投稿数が期待できない可能性もあります。
第二の理由はトランザクション処理完了までのタイムラグです。トランザクション処理の発行からブロックへ取り込まれるまで、最短でも数十秒を要します。ルームオーナーがルームの設定値を頻繁に変更する可能性があり、書き換えた内容の反映に毎回数十秒も掛かってしまうと、ルームオーナーとしてはストレス要因でしかありません。(P218-219)

これにより、ソフトウェア開発経験がなく、コードの解説だけを読んでもそうした開発の勘所が理解できないような初心者であっても、深い理解に到達できるわけです。

スマートコントラクト時代のビジネスパーソンに求められる能力・知識を定義

本書を読むと、スマートコントラクトの何が難しいのかが分かります。プログラム言語の習得が難しいのではなく、目指す成果が得られるインセンティブ設計、例外が発生した場合の分岐処理、人間と機械を橋渡しするUIといった「ビジネス全体および個々の取引が意図どおりスムーズかつ安定的にまわる仕組み」を“設計”する部分こそが難しく、かつ腕の見せどころになっていく だろう、ということです。

だとすると、おそらくそうした「仕組み」の試行錯誤があまり必要ないシンプルな契約から、自然言語 → Solidityのようなプログラム言語に置き換えられ、自動化されていくようになるはずです。具体的には注文書/注文請書と呼ばれるような、

といった定形項目に特約を1つ2つ加えるレベルにフォーマット化された契約からスマートコントラクト化され、電話交換手やたばこ販売店が機械に置き換えられたのと同様、そこで処理を担っていた人間が真っ先に置き換えられていくことはまちがいありません。

Harris & Ewing, photographer [Public domain], ウィキメディア・コモンズより

しかも、そうしたスマートコントラクトの締結・履行プロセスは、本書でいくつも紹介されているようなスマートコントラクト監査サービスがチェックもしてくれるわけで、その面での公認会計士・税理士・弁護士、そして経理・税務・法務といった専門職の出番はほとんどなくなってしまいます。

本書は、一見するとスマートコントラクトを開発しようとしているエンジニアのための一冊のようでいて、実のところは、今後10年内には訪れるであろうスマートコントラクト社会において、その“設計”部分で価値を発揮できるビジネスパーソンになるための能力・知識とは何かを定義し、予言する一冊と言えます。

(橋詰)