🎃toricago🎃

🌈滝を登るように生きよ

Pythonで学ぶ『ブロックチェーンプログラミング入門』が良すぎた話

ブロックチェーンの社会実装の勢いが止まらない。テック市場に特化したイギリスの調査会社Juniper Researchが、今年の夏に発行した調査レポートの結果によると、

  • 大企業の65%がブロックチェーンの導入を検討しているか、導入している最中
  • 大企業の50%程度がイーサリアム上で分散型アプリケーションを立ち上げを予定
  • 大企業の25%程度はProof of Conceptを終え、商品化を終えたか、その段階に差し掛かっている

(大企業=1万人以上)
とのことだ。

え!導入比率、意外に高くない?国内でも例えば、つい昨日は日本経済新聞の朝刊LINEがトークンエコノミー構想の詳細を明らかにしたことが話題になったりして、たまに見かけるけど、まさかここまで来ていたとは驚きだ。ここまで来てしまうと、そろそろ私のような一介のサラリーマンであっても、ブロックチェーンを理解しておかないといけない雰囲気が漂ってきたと言わざるを得ない。

だが、それが結構難しい。一筋縄ではいかない。ブロックチェーンのビジネス書を何冊か読んでみても、わかったようなわからないような「とりあえずブロックチェーンに乗せればなんかスゴイ」というレベルから脱出できない。落ち込む。

そんなことを考えていたら、Codecademyという、オンラインでプログラミングを無料で勉強できるサイトから、メールが届いた。以前、ここのサイトで色々と勉強したことがあったので、メールアドレスがSubscribeされていたのだろう。メールを開いてみたら、『ブロックチェーンプログラミング入門』というコースがオープンしたというお知らせだった。

Want to be able to talk intelligently about Blockchain and apply the fundamentals to your work? After this course you’ll be able to do that and more, including build a blockchain library in Python and create your own blocks through interactive simulations.

ナイスタイミング!!早速だが試してみた。すると結構良かった。無料で、時間はそんなに取られないし、実装の雰囲気もわかるし、ブロックチェーンの理解も深まるし、Pythonでできるので新たな言語を覚えなくても良い!ということでブログでも紹介したいなぁと思った次第である。2018年9月から開始されたばかりの最新オンライン講座、皆さんもいかがでしょう?

どういう内容か?

前半、後半の2部構成となっている。前半はレクチャー形式でコーディングは一切出てこない。ブロックチェーンの仕組みの最低限を学ぶという形で、ビジュアルが充実していてわかりやすいし、20分ぐらいでサクッと終わる。

ただ、事前知識がなければ「わかったようなわからないような…」という状態に陥ってしまうのではなかろうか。実は数週間前に私はちょうど『徹底理解ブロックチェーン』を読み終わったところだったので、復習にもなってよかった。ちなみに、この本はすごいお勧めで、レビューはこちら:

とはいえ、このオンラインコースの前半はおまけのようなもので、むしろ価値があるのは後半だ。後半では、PythonでBlockchainを実装していくという内容で、以下のような流れ。

  • Representing Transactions
  • Creating Blocks
  • Hashing and SHA-256
  • Generating BLock Hashes
  • Creating the Blockchain Class
  • Adding Blocks to the Blockchain
  • Checking for a Broken Chain
  • Hacking the Chain
  • Nonce and Proof-of-Work
  • Implementing Proof-of-Work
  • Adding Blocks to the Chain Securely
  • Blockchain Summary

実際にやってみると、2時間〜3時間(要領の良い人なら2時間以内)で終わるボリューム感である。最低限のブロックチェーンを実装して、Proof-of-Workをしたり、新たなブロックを追加したり、そういうのを一通り体験できる流れになっていて素晴らしい。「こんなに簡単なんだ〜!」と思うところが多かった。例えば、ハッシュ関数を使うためには、この一行だけ。

from hashlib import sha256

それで、何らかのデータをハッシュ値に変換したければ、

text = 'このブロックチェーンコースは楽しいなぁ!'
hash_result = sha256(text.encode())

で終わり!こんな感じで話がポンポン進んでいくので楽しい。(もちろん本格的にやっていくならもっともっと大変なんだろうけど。)

これらをすべて、ウェブブラウザ上で行うことが出来るので、時間のかかるPython環境構築も必要ないし、なんならスマホタブレットでも学習を進められてしまう。使ったことないけど専用アプリもある。ブロックチェーンといえばGPUを思い浮かべる人もいるかもしれないが、最低限を実装するだけなので、そういう機材ももちろん必要ない。しかも数時間で終わるお気軽コース。ウェブに繋がれば誰でもできる。昼食の休み時間を何回か投入するだけで最後まで通せる。

あと、昔のCodecademyは答えを見るという機能がなかったので、わからないときは半日を潰してバグを見つけたりする必要があってストレスが溜まることがあった。でも今回のコースでは何回か誤ると、"See the solution"という項目が表示されるようになっていて、どうしてもわからない場合は答えを見れるという安心感が加わったのもなお良い。非エンジニアにも優しい。

必要なのは多少の英語力とPython力だけ

英語のサイトであるので、多少の英語力は求められる。と言っても、Python用語とBlockchain用語がわかっていれば、問題なく進められる程度だと思う。例えば、

Call the datetime module's .now() method to print out the current date and time.

と言った文章が読めて、やるべきことがわかればOKだ。Pythonのレベル感としては、「クラス」が読めるし自分でも書けるというレベル。入門書を1〜2冊読んだことのある人であれば問題ないはずだ。Pythonの勉強から始めたい人であれば、CodecademyのPythonコースもお勧めである。

(が、PythonならCodecademyじゃなくても、日本語でも良いオンラインコースが多いかもしれない。)

最後に、今回のブロックチェーンプログラミングのコースのリンクを載せて、今回の記事は締めくくるとしよう。気になる人はぜひ試してみては?

"The world is changing, boys. It's time we change too." Michael Keaton.