先日合同会社DMM.com ブロックチェーン研究室より、新しく出版された本を献本いただきました。DMM.com ブロックチェーン 研究室のみなさま、本当にありがとうございました!
https://twitter.com/akiet97/status/1098148379949846528
DMM.comの前著『ブロックチェーン アプリケーション開発の教科書』とも比較しつつ頂いた本の内容全てに目を通しましたので、本記事ではこの本の内容について気になっている方やDMMのみなさんに向けて率直な書評を書きたいと思います。
内容としては
- 前著と比較した本著の全体像について
- 具体的な章ごとの内容
- 良いと思った点/もっとこんなことが読みたい!という個人的な要望
に分けて書いていきます。みなさんの参考になればと思います。
『試して学ぶ スマートコントラクト開発』の全体像について
本著のコンセプトはスマートコントラクトの中でも特にメインで開発に使用されるEthereumと専用言語Solidityにフォーカスし、これらを利用したアプリケーション(Dapps)を開発するための手順を示したものです。
『ブロックチェーンアプリケーション開発の教科書』との違いについて
前著『ブロックチェーンアプリケーション開発の教科書』では、前半部分のほとんどをブロックチェーン とは何か?ビットコインとイーサリアムはどう違うのか?と言ったブロックチェーンの基本的な情報に割いており、実際にDapps開発を行うために必要な解説は約135ページとコンパクトに抑えられていました。
これに対して本著『試して学ぶ スマートコントラクト開発』では先述のようなコンセプトがあるため、全11章のうち発展的な開発/イーサリアムの知識のパートを除いた1~9章、合計約330ページにわたりDMM.com ブロックチェーン研究室が実際にDapps開発に際して使用したツールやノウハウを余すところなく公開しています。
情報のアップデート
また、前著の執筆以後の開発環境の変化や議論の進化を取り込むべく、流行の開発ツールやCryptoZombiesのような学習サイトの解説、イーサリアムのDapps開発を終え、よりイーサリアム自体に興味が湧いた人のための発展的なスケーラビリティ解決策のページなども加えられており、これ一冊でイーサリアムに関しての現状の議論の全体像はほぼキャッチアップできる構成になっていると思いました。
ただ、あくまでもスマートコントラクトの開発のための本ですので、多少のブロックチェーンの前提知識を前提としている記述も見受けられます。もしエンジニアで全くのブロックチェーンの初心者の方であれば、前著の前半部分を読んでから本著を読み始めた方が良いです。
では以下、具体的な章立てと内容について解説していきます。
章ごとの内容と感想
1章 スマートコントラクトの基礎知識
スマートコントラクトの定義についての議論を整理し、何が実現されるのか、ユースケース、課題などが記述されています。
2章 Solidityによるスマートコントラクト開発
Solidityについてゲーム形式で学習できるCryptoZombiesというサービスと、ブラウザベースの綜合開発環境Remix,イーサリアム特有の概念についての解説です。
ブロックチェーンに馴染みがないエンジニアにとっては、Ethereumを開発するための独自言語Solidityは初めて聞くかもしれません。その際にCryptoZombiesで学習することが多かったのですが、CryptoZombiesは説明が簡潔すぎる/レベルが高く、初学者にはハードルが高いとされていました。本著では本物のゲーム画面を用いながらコードを解説しているので、ぜひ本著を脇に置いてゲームをプレイしてみると良いかもしれません。
3章 プロダクトデザイン
スマートコントラクトの開発に特化したUXデザインの話です。UXデザインの学習の必要性やユーザーテストの重要性が概観されています。
6章と関連しているので、続けて読むとわかりやすいと思います。
4章 開発環境の構築
Mac,Windows,Linuxにおける開発ツール群(Docker,Geth,Ganache,Mode.js,Trufle,Git,VSCode)とインストール方法などを説明しています。
イーサリアムの開発には独自のツールが必要になりますが、それらの全てについてインストール方法がコード付きで解説されています。
5章 開発用ブロックチェーンの構築
開発用のチェーンを作るためのノードのたて方と、P2Pネットワーク内での動作に焦点が当てられています。
イーサリアムのネットワークにはプライベートネット、テストネット、メインネットの3種類がありますが、基本的にはローカルでプライベートネットを構築し、成果物をテストネットにデプロイすることが多いです。本著もこの5章以降ではプライベートネット上で開発し、最後にテストネットへデプロイする流れで解説しています。
あと最近流行しているKubernetesについても、コンテナのデプロイまで説明されています。プロトコル(devp2p Ethereum Wire Protocol)、ノード探索処理、ログによる動作確認もこの章で解説されています。
ちなみに本著でも解説されていますがプライベートネットの構築はGethoを使えば一瞬で終わるのでオススメです。
6章 スマートコントラクトの設計
3章で解説されていたDappsのプロダクト案を実現するために必要なスマートコントラクトの設計〜実装、フレームワークを説明しています。
Truffleとセキュアなスマートコントラクト開発のためのライブラリOpenZeppelin,コンパイル、プライベートネットへのデプロイ、動作確認に至るまで、実際に開発する上でのコツが沢山書かれています。
7章 テスト手法と自動化
Ethereumのスマートコントラクトは一度デプロイすると書き換えることができませんので、デプロイする前に入念なチェックが必要になります。
ブロックチェーン開発の初心者にとっては困惑しがちな点ですが、その際に必要となる実践的なツール(Mythril Classic,Quantstamp Betanet)などについて紹介されており、心強いでしょう。
8章 Webアプリケーションの実装
ブラウザでのスマートコントラクトの実装についての解説です。Dapps開発でも必要になるフロントエンドのフレームワークReact,Web3.js,データベース(MySQL)、バックエンドAPIについてもフレームワークやライブラリ、データ同期に至るまで全て実際のコードを用いて解説されており、有用です。
9章 テストネットへのデプロイ
実際に世界中のイーサリアムネットワークに自分たちの成果物をデプロイする段階で、実際に使用されるツールをデプロイ前〜後に至るまで解説しています。
(Etherscan)やセキュリティ監査サービス、ユーザーテストなどが解説されています。
10章,11章 発展的なDapps開発/Dapps開発の未来
実際の開発には9章までを読めば十分かと思われますが、10章以降では現在のEthereumを取り巻く環境と開発状況について解説されています。
特に本格的にEthereum沼に浸かって開発したい!と思った人にとっては、ERC規格やPlasma,Shardingと言ったスケーラビリティ問題は必須となるので、本著で概要を勉強しておくと良いかもしれません。
よかった点と要望
本著では実際のDapps開発の手順について、バックエンド〜フロントエンドに至るまでの全チームメンバーにとって必要であろうと思われる情報を網羅しています。
DMM.comでは現在Quest(α版)、D・Asset(β版)などのDappsが実際に開発されており、この経験を生かして書かれていること、執筆陣のレベルの高さや情報の新しさといった要素を加味すると現状日本でもっとも実践的なDapps開発の実用書でしょう。
その上で、あくまでも個人的な要望ではありますが、手広く知識をおさえることを重視しているために少々情報が飛び飛びになっている章(例えば3,6章など)については、纏めてある方がよりチームでの開発を行いたい読者にとってはページを参照しやすいのではないか?と思いました。
あとサンプルコードがネットからダウンロードできるとなお使い勝手が良いなと思いました。もっとも、サンプルコードは本の中でも参照すべきURLを提示しているので、そこを見れば問題ないのかもしれませんが。
いずれにせよ読んでいてすごく勉強になる本ですし、エンジニアでなくともブロックチェーンやりたい!と思っている人であれば前著もしくは1,2,4,5,8章あたりは読んでおいて損はないです。イラストや実際のコードが充実しているので、スラスラ読めます。もちろんエンジニアにとっても、情報の流れるスピードが早く、正確な情報をキャッチアップするのが難しいDapps開発の心強い味方になってくれると思いますので、ぜひ一読をオススメします。