はじめに
ブロックチェーン開発をはじめたいと学習してみる人が増えているものの、適切な学習方法が分からずに挫折する割合は非常に大きいです。
本記事ではブロックチェーンの概要を示した上で、理解すべき各ツールとそれらを学習すべき順番を紹介していきます。
そもそもブロックチェーンとは
「ブロックチェーンがどう動いているか」を説明するのは非常に難しいのですが、「ブロックチェーンの性質」をまず説明します。
差し当たりブロックチェーンは「改ざんしたり複製したりする事が難しいデータベース技術」だと思って大丈夫です。
例外はありますが、一旦はこのシンプル理解から出発するのが早道です。
改ざんの難しさを成立させるために、暗号技術・P2P技術・プルーフオブワーク、その他コンセンサスアルゴリズムといった各技術の組み合わせを利用しています。
そしてこれを応用してできた「改竄・変更がとても難しいプログラム」がスマートコントラクトです。
誰も変更ができないために信用があり、その上プログラムによって取引できるというとても便利な電子通貨がスマートコントラクトによって実現されています。
学習の始め方
ブロックチェーンプログラミングを始めようと思うと、初めにイーサリアムなどのスマートコントラクトの書き方, Solidityの書き方を学ぼうと考えるかと思います。
しかし、イーサリアムの仕組みはビットコインから大きな影響を受けており、スマートコントラクトの理解はビットコインの理解が大前提となっています。
そのため一見遠回りかもしれませんが、ビットコインを理解するのがブロックチェーン理解の最初の一歩となります。
学習の順番
学習は以下の順番でしていくのが最適だと考えています。
弊社の新人にもこの手順に従った学習プロセスを推奨しています。急がば回れです。
- ビットコイン(ブロックチェーン)の概念の学習
- イーサリアムとスマートコントラクトの概念の学習
- イーサリアムノード(Geth)の学習
- スマートコントラクトを書く言語(Solidity)の学習
- スマートコントラクトへアクセスするためのクライアントツール(web3.js)の学習
- 開発フレームワーク(Truffle)の学習
- その他、Quorum, Corda, HyperledgerなどのEthereum以外のブロックチェーンの学習
以下、それぞれについて説明していきます。
1. ビットコイン(ブロックチェーン)の概念の学習
ブロックチェーンプログラミングの一番の基本はブロックチェーンの理解であり、それはすなわちビットコインの理解です。
いくらプログラムを書いてもこの理解が不十分ではスマートコントラクトを理解できないと言っても過言ではありません。それくらい重要なプロセスです。
学習方法としては、まず初めにオンライン学習サイトEnterChainをオススメします。
こちらのサイトではコードの詳細に入る前に平易にブロックチェーンの概念を説明しています。
「どうしてブロックチェーンは改ざんできないのか」といった疑問がこの学習で明らかになります。
その上でマスタリングビットコインコンサイス版を読むことをオススメします。こちらの書籍はもはやバイブルと言ってよく、「ブロックチェーンがどう動いているか」の全体を簡潔にかつ正確に把握する事ができます。
ここまで理解すれば、ブロックチェーンの基本は抑えたと考えて良いでしょう。
2. イーサリアムとスマートコントラクトの概念の学習
イーサリアムを動かすのはGethというツールであり、スマートコントラクトを書くのはSolidityという言語です。
しかし、この二つの大前提としてイーサリアムの仕組みを理解しましょう。
そのために必ず読むべきなのがイーサリアムのホワイトペーパーです。
こちらは難しい内容ですが、ビットコインを応用してどのようにしてスマートコントラクトができているかが分かります。
全体を一読すると、これ以降のツールの使い方、スマートコントラクトの記述方法を理解するための基礎が出来上がります。
3. イーサリアムノード(Geth)の学習
ここまで理解して、初めて各ツールの挙動の意味がわかってきます。Gethは”go ethereum”の略で、Go言語で実装されたイーサリアムです。
Gethを動かしているとイーサリアムの挙動がわかってきます。Gethを学習するのはEthereum入門のページが良いでしょう。
こちらのリンクは日本語のページでは最も分かりやすく整理されていると思います。
一日もあればできるので、「まずはEthereumに触れてみる」のページを一通り動かしてみると良いでしょう。
実際にイーサリアムの起動を確認することで概念的に理解していたものと実際に動いているものの対応がわかってきます。
もう少し詳しく理解したい方はGetting Started with Gethが参考になります。 こちらはGethの詳細なドキュメントになるので、開発時に参照してください。
4. スマートコントラクトを書く言語(Solidity)の学習
Gethまで理解して初めてスマートコントラクトプログラミングが始まります。 そして、Solidityはスマートコントラクトを書くためのプログラミング言語です。
Solidityの学習の導入にはクリプトゾンビが最適です。現状最も分かりやすいオンラインSolidity学習サイトでしょう。
一通りSolidityコースを学習してみると、早ければ1日で簡単なスマートコントラクトが書けるようになっています。
より実践的な内容はSolidity Docを参照してください。Versionの更新が早いため、最新のバージョンのページを確認して読みましょう。
*Solidityの他にもVyperというプログラミング言語があるのですが、気になる方はVyperとSolidityの違いと選び方の記事を参考にしてみてください
5. スマートコントラクトへアクセスするためのクライアントツール(web3.js)の学習
Web3はという言葉はちょっと前に流行った「お金2.0」のようなニュアンスで、「ウェブ3.0」からきています。
分散型ワールドワイドウェブの新しい世界を目指す標語がWeb3であり、web3.jsはブロックチェーンのためのウェブクライアント(ブラウザからブロックチェーンにリクエストを送るツール)です。
実態としてはweb3.jsはブラウザに埋め込むJavascriptです。
web3.jsの使い方はweb3.js docから。こちらもバージョンの更新が早いためバージョンを確認しましょう。
web3.jsを理解するのは少し癖があり難しいですが、順番に時間をかけて読んでいくと良いと思います。
6. 開発フレームワーク(Truffle)の学習
ここまで基礎を抑えると、開発フレームワークが理解できるようになります。
Webの世界で言うとExpress, Nest.jsなどのバックエンドフレームワークに類似するものです。
Truffleはスマートコントラクト開発のデファクトスタンダードなのですが、概要はTruffleとはの記事に書いています。ここまで理解していれば、Truffleを学習するのはそこまで難しくなくなっているでしょう。
7. その他、Quorum, Corda, HyperledgerなどのEthereum以外のブロックチェーンの学習
ここまで学習してきた方には何をかいわんやです。説明がなくとも学習できる状態になっているでしょう。
仮にEthereumには興味がなくQuorumなどを利用したいだけの方も、1~6までのステップの学習はおおいに理解に役に立ちます。
また、少なくとも1,2のビットコインとイーサリアムの概念までの理解はしておくべきでしょう。
一応公式ドキュメントへのリンクを紹介しておきます。
Quorumに関しては弊社記事で少し解説をしているので、こちらも参考にしてみてください。Quorumのネットワークをスクラッチから構築してみる
終わりに
ブロックチェーンプログラミングに興味を持ち読んでくださった方、ありがとうございます。
株式会社digglueではコンサルタント及びエンジニアを募集しています。
ブロックチェーンに関して、既によく理解している方だけでなく、これから学びたい方、仕事として実績を積みたい方、将来を考えてテクノロジーに触れておきたい方などでも大歓迎です。
ビジョン・ミッションなどに関しては、こちらのnote(digglueはどこへ向かうか) を参照ください。
ご質問・応募はコンタクトフォームかinfo@digglue.comまでご連絡ください。
雑記: 記事書くのは苦手で、書いた後は気分転換に辛いラーメンが食べたくなります。