ブロックチェーンのすすめ ~初心者向け勉強方法~

#はじめに
　慶應義塾大学３年のOshikawaです。村井純研究室BCALI研究グループという場所でブロックチェーンの勉強をしながら、某ブロックチェーン開発企業で学生エンジニアをしています。
　今回はブロックチェーンに興味があるけどどう勉強したらいいのかわからないという人のために、まず最初に勉強すべきことを紹介します。
　あくまで初心者向けなのでホワイトペーパーなどは紹介しません。
　入門ということもあって、本以外は基本無料でできるものを紹介しています。


- STEP1:「ブロックチェーンとは何か」を理解する
- STEP2: ノードを建ててみる
- STEP3: dapps開発

また、
- 番外編:コンソーシアムブロックチェーン開発
- おまけ：Lightinig Netowork入門
も用意しました。

#STEP1:「ブロックチェーンとは何か」を理解する
まずは理解しないと始まらないので、最初は本を読むことをオススメします。しかし、大半の人はここで折れるか、興味を失って辞めてしまいます。難しいし、めんどくさいので仕方ないことだとは思いますが。

##おすすめの本
 まずは「ブロックチェーンって何？」という状態から脱することが目標です。
最初に読むべき本を紹介します。


###[マスタリングビットコイン](https://www.amazon.co.jp/ビットコインとブロックチェーン-暗号通貨を支える技術-アンドレアス・M・アントノプロス/dp/4757103670)
![511FlVr2TrL._SX382_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/f188249f-43d3-82df-69db-582395581c1c.jpeg)

聖書です。とにかくこれを読まないと始まりません。
またこれのEthereum版である「[マスタリングイーサリアム](https://www.amazon.co.jp/マスタリング・イーサリアム-―スマートコントラクトとDAppの構築-Andreas-M-Antonopoulos/dp/4873118964)」もありますが、ブロックチェーンの仕組みに関する説明は少ないので、これは初心者が読むにはあまり適していないと思います。Dapps開発上級者になるためのものだと思っています。


###[ブロックチェーン・プログラミング 仮想通貨入門](https://www.amazon.co.jp/ブロックチェーン・プログラミング-仮想通貨入門-KS情報科学専門書-山崎-重一郎/dp/4061538314)

![51pxWyCqaxL._SX397_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/6d4512b7-c2f8-ff5b-afdb-b2c204672d2d.jpeg)

非常に簡単な説明でありながら、詳細な部分まで理解できてしまう良書です。
マスタリングビットコインを読んだだけだと何と無くイメージできそうでできないモヤモヤ感が残ってしまいます。この本はわかりやすい図を使った解説がしてあるのでイメージがしやすいです。また、人にブロックチェーンを説明する時どういう図を描けば伝わりやすいかの参考にすることもできます。
個人的に1番最初に読む本としてはこれを推してます。



###[詳解ビットコイン](https://www.amazon.co.jp/詳解-ビットコイン-―ゼロから設計する過程で学ぶデジタル通貨システム-Kalle-Rosenbaum/dp/4873119081)
![51hMgFL-ygL._SX389_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/7e061c8d-f01c-6d65-84e6-c4586e085da1.jpeg)
自分は今まさに購入して届くのを待っているので読んでいないのですが、マスタリングビットコインに書かれてないようなロジックに部分も深く解説されているかなり良書らしいです。

##動画
慶應義塾大学湘南藤沢キャンパス（SFC）にに有名なブロックチェーンの授業があり、SFCは[SFC Global Campus](http://gc.sfc.keio.ac.jp)というサイトで公開されています。
ブロックチェーンの基本を解説する「ブロックチェーン」とブロックチェーンの応用方法について考える「ビヨンドブロックチェーン」という授業があり、どちらもブロックチェーン初心者向けの授業なのでピッタリだと思います。

[Link:ブロックチェーン](http://gc.sfc.keio.ac.jp/cgi/class/class_top.cgi?2017_42469)
[Link:ビヨンドブロックチェーン基礎](http://gc.sfc.keio.ac.jp/cgi/class/class_top.cgi?2018_43965)


#STEP2: ノードを建ててみる

マスタイングビットコインなどでもノードの動かし方が書いてあるのでそれを参考にするだけでも十分。ローカルのテストネット->テストネットという順で遊んでみるのがおすすめ。初心者の勉強でメインネットを使う必要はない。

###bitcoind
とりあえず一番最初に動かすのはbitcoindがおすすめ。しかし最近ビルドするのが更に難しくなったとも聞くので、根気強く色んな記事を調べながらトライアンドエラーを繰り返して勉強しましょう。

[bitcoin-cliを使ったBitcoinAPI入門](https://qiita.com/osada/items/39c63a146c203f4dc751)
[bitcoindのregtestで送金を行うチュートリアル](https://qiita.com/ito_wokashi/items/c64862b7107036f7f390)

###geth
[Ethereum入門](https://book.ethereum-jp.net/first_use/installing_geth)
gethについての基本的なことだけでなくdapps開発についても解説してあるなかなかクオリティの高い入門ドキュメント。ノードをを動かすに当たっては十分な内容が解説してある。

#STEP3: Dapps開発
個人的にDappsを作ることにあまり興味はないのだけれど、まだまだ狭いブロックチェーン界隈でエンジニアとしてやって行きたいのなら、Solidityを覚えておいて損はないと思う。

### [CryptoZombies](https://cryptozombies.io/jp/)
ゲームを作りながらSolidityを学ぶ学習ツール。基本構文などを手を動かしながらポップに学べる。無料でできるのでやっておいて損はないですが、これだけやってもあまり応用はできないかなと思ったりもします。


###[ブロックチェーンアプリケーション開発の教科書](https://www.amazon.co.jp/ブロックチェーンアプリケーション開発の教科書-加嵜-長門/dp/4839965137)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/464c6da8-957f-31f2-6895-6fa84962da23.png)




 solidityを書いたり、dappsを作る上で勉強として最初に作るべきものが全て解説されている。とりあえず一通りやっておけば十分な基本の力はつく。


###[試して学ぶ-スマートコントラクト開発-加嵜-長門](https://www.amazon.co.jp/試して学ぶ-スマートコントラクト開発-加嵜-長門/dp/4839966885)
![51vFBeJOIXL._SX387_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481488/30b49446-04aa-a7ce-3cad-a17e8835fe1c.jpeg)

 solidityの基本から、dapps開発の工程まで、現場の流れで解説しています。
ブロックチェーンエンジニアとして活躍されている方たちが開発現場の話までしてくれているので、自分も今の会社で働かせていただく前の準備として非常に参考になりました。



# 番外編:コンソーシアムブロックチェーン開発
コンソーシアム系はまだまだ歴史が浅いため、本があまりありません。勉強するとなると「そもそもCordaって何？」、「Hyperledgerってどんな構成？」という部分をググることから始めると思います。しかし記事が分散し、古い情報や間違ったことを書いた記事も溢れているのでなかなか難しいです。
そこでで一番参考になると思うのがLayerXさんのScrapboxです。コンソーシアムのことについて迷ったらだいたいLayerXさんが解決してくれます。さすがです。


##Corda
### [Corda LayerX Research](https://scrapbox.io/layerx/Corda)
 LayerXさんのcorda関連Scrapboxです。めちゃめちゃ記事が豊富です。

###[Corda Tutorial](https://docs.corda.net/docs/corda-os/4.4/tutorials-index.html)
Cordaが公開しているチュートリアルです。

###[(Udemyコース) Introduction to Corda Development](https://www.udemy.com/course/corda-development/)
 Udemyに無料のCorda講座があります。簡単なコーディングを学べます。

##Hyperledger Fabric

### [Hyperledger Fabric LayerX research](https://scrapbox.io/layerx/Hyperledger_Fabric)
LayerXさんのHLF関連Scrapboxです。

###[Hyperledger Fabric Samples](https://github.com/hyperledger/fabric-samples)
HLFのサンプル集です。解説に従って手を動かしながら学びます。中でもFabcarが有名です。

###[Course Catalog - Linux Foundation - Training](https://training.linuxfoundation.org/training/course-catalog/)
Linux Foundationのオンラインコースです。無料のものもあります。

##勉強会
### Blockchain GIG
　月に１回、オラクルの方達がゲストを招いてエンタープライスブロックチェーンについて解説をするイベントです。
 
以上がコンソーシアムの勉強法紹介でした。


#おまけ：Lightinig Netowork入門
個人的にLightninig Networkを推しているのでLNの勉強方法もおまけで。

###[LND Developer Site](https://dev.lightning.community)
「Lightning Networkとは」の解説、LNノードの動かし方、LNアプリケーションの作り方も詳しく書いてあるのでLNの勉強には十分です。

#おわりに
最後に自分が一番オススメしたい勉強方法を紹介します。


#ゼミに入ってみる
###[Keio University Jun Murai Lab. Bcali Group](https://bcali.org)
はい。宣伝です。