ブロックチェーンを教える立場をさせてもらい始めて約1年が経って思うこと〜技術のエモさや学び方etc〜

私、株式会社FLOCというブロックチェーンに特化したスクールでカリキュラムを作ったり、講師をしたりしているエンジニアです。宣伝になるので、この辺で自己紹介はやめますが、約一年このような仕事をしていく中で、思うことがいろいろあったので徒然なるままにここに記していきます。

2019年の年の瀬に、感じることをここに残して、それが誰かのためになれば幸いです。

# ブロックチェーンとかいう謎の技術

ブロックチェーンは言わずもがな、ビットコインの誕生と共に生まれ、1月4日にはジェネシスブロック（始まりのブロック）が生成されてから、丸11年となります。誕生からというもの、EthereumやHyperledger Fabricなどバリエーションが増え続け、企業での採用実績も大きく増加してきました。

しかし、人工知能やIoTなどの技術と比べると、まだまだ謎の技術という感が否めません。かくいう私も初めはそうでした。。笑

ただそれゆえに、知れば知るほど深く広いブロックチェーンの世界観にはまっていきました。多分、これは私だけではないと思います。。

# 最強の学習法は、技術を感じること

ブロックチェーンに初めて触れる人たちが口を揃えて言うのが「わかったような、わからないような。。。」というモヤモヤとした感想です。それもそのはずで、ブロックチェーンの、特にプロトコルレイヤーの部分は目で見えにくいため、なかなかピンと来にくいものだと思っています。なまじ概念を入れるが故に、逆に混乱してしまうという現象はこれまで何度もみてきました。

そんな時の解決方法はいくつかあると思っていますが、その本質は「技術を感じること」です。以下簡単によくオススメしている学習法を紹介します。

## 学習法１）コンピューターサイエンスの基礎を疎かにしない

コンピューターサイエンスというと仰々しいですが、例えば基本情報技術者試験のレベルの話です。ブロックチェーン技術は、P2P技術、暗号技術、コンセンサスアルゴリズムなどを駆使して、データ構造や生成にユニークな工夫をしています。広範な技術を有機的に連携させて、全体としてブロックチェーン技術としてまとめあげている点が、この技術のエレガントなところだと思います。逆にいえば、一つ一つの技術の最低限の理解がないと、瞬く間に意味がわからなくなります。そのため、最低限の理解がなければ、体系的な理解は困難でしょう。

加えて、インターネットの誕生からWorld Wide Webの普及、P2Pアプリケーションの紆余曲折など、これらを知っておくと、ブロックチェーンという技術の大局的な位置づけがはっきりするので、理解も捗ります。ブロックチェーンは突然天から降ってきた技術でなく、先人たちの蓄積の果てに誕生した技術なので、その蓄積を理解する姿勢は当然必要です。

## 学習法２）フルノードを立ててみる

シンプルに本物に触れるということです。

特に、ビットコインのフルノードは立てるのがそれほど難しくないので、挑戦しやすいと思います。フルノードを立てる方法は巷に結構あるので、それを参考にしてみるといいでしょう。メジャーなフルノードのクライアントとしてBitcoin Coreなどがあります。ただし現在、ビットコインのフルノードを立てるのに、余裕をみて200〜300GBのストレージが必要だったりするので、自前のPCで難しければAWSを使ってみるのも手だと思います。

[＞＞＞Bitcoin Core公式サイト](https://bitcoin.org/en/full-node)

実際にフルノードを立てて、他のピアと接続して、ブロックチェーンのデータを同期し、トランザクションのデータが常にやりとりされているのをみると、ブロックチェーン技術のダイナミクスを目で見て体感することができます。初めてやった時は感動したことを覚えています。

## 学習法３）実際に作ってみる

これもシンプルですね、作る！！
私は、これをしてとても理解が捗りました。

P2Pの部分が難しければ、マイニングの部分だけでもいいかも知れませんし、サーバーを立てて擬似的にP2Pのようなシステムにしてみるのもいいかも知れません。

大事なのは、学んだ知識や自分の目で見たものをアウトプットとして、脳みそにしみこませることです。そうすることで、ブロックチェーンの凄さと限界を肌で理解することができます。

# 別にブロックチェーンでなくてもいい。

これは、特にブロックチェーンについて少し詳しくなった人にたまに見られますが、**ブロックチェーン最強信者**となってしまう人がいます。確かにブロックチェーンは使い方によっては、極めてラディカルに世の中を変えてしまう技術だと思います。ただし、それは「使い方によっては」です。

例えば、サーバーやデータベースの部分をEthereumに置換えようとする人がいます。もちろんその文脈によるのですが、この記事を読む賢明な読者の方ならお分かりの通り、あまりイケてません。今のサーバーやデータベースが実現していることを犠牲にして、それを超える何かをブロックチェーンで実現できるのかシビアに考えなくてはいけません。

セキュリティの強さをブロックチェーンに求めるとしても、サーバーのセキュリティを強化するだけで事足りるのではないだろうか？　処理速度は大丈夫でしょうか？　トランザクションの数が増えてもスケールできますか？

このようなことを常に検討しなければ、ブロックチェーンが真価を発揮することはできません。当然、試してみて分かることもたくさんあるため、やるなということではありません。その設計が本当にユーザーにとって幸せなことなのかを考えた上での判断であるかどうかという話です。とはいえ、これは個人的な考えなのですが、「このケースなら、ブロックチェーンを使わない！」と言えるエンジニアが優秀なビジネスパーソンでありエンジニアであると思っています。

# 最後は、人でしかない

ブロックチェーンの社会実装にはまだ数年かかると言われています。ですが、技術的な進展は凄まじいものがあり、GitHubのコミュニティでも積極的な議論や開発が行われています。少なくとも1年もあれば、かなりの進展を見せるほどの進歩っぷりです。

ただし、社会へ浸透させるためには、技術の進展だけでは全然たりません。技術と社会とをすり合わせながら、具体的なシステムとして実装していく、ラストワンマイルを担う人材が必要です。

特に、ブロックチェーンは資産を扱う技術のため、我々が銀行をある程度信頼しているのと同じように、ブロックチェーンという技術自体を信頼してもらわなければ、使ってもらうことは難しいでしょう。

「すり合わせ」や「信頼」、この極めて人間臭い部分をこの先どれだけ泥臭くやっていけるかに、ブロックチェーンの未来がかかっていると思います。個人的にも、来年以降のフォーカスはこの部分に当ててやっていきたいと思っています。

その意味では、エンジニアではないものの、ビジネスの企画を行ったり、経営を行ったりする人たちが鍵を握っているような気もしていますし、そういった方々から積極的な意見を伺う度に勇気づけられています。

どんな技術でもそうですが、技術は使ってもらって初めて技術としてそこに存在できます。つまり、使ってもらわなければ、全くもって意味を持たないのです。そのためには、エンジニアもビジネスパーソンも関係なく、両者が同じようにそれぞれ役割を担っています。

# 「知識」から「経験」へ

ここまで、本当に徒然なるままに綴ってきましたが、伝えたいことはシンプルで、「抽象的な知識から具体的な経験にしていくこと」が、ブロックチェーン技術を知る上で重要だということです。それによって、本当の意味で、ブロックチェーンの可能性と限界を肌で体感することができます。

可能性を感じたからこそ、ステークホルダーを説得する際に、言葉や立ち振る舞いに血が通います。

限界を感じたからこそ、どこで技術を使うべきなのかしっかり見極めることができるようになります。

私やあなたが住むこの社会とブロックチェーン技術との付き合いが今後どうなっていくのか、一つの物語を読み進めるように楽しみつつやっていければいいなぁと思います。

（どうせ物語なら、登場人物になりたいですね、え、僕だけ？笑）

今回は私の考えをつらつらと書きましたが、もしあれば読んでいただいたみなさんの考えもコメント欄などでいろいろと教えていただけると嬉しいです！！