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