2018.07.20
まずはここから!ブロックチェーンエンジニアを目指すために必要なこと

まずはここから!ブロックチェーンエンジニアを目指すために必要なこと

『ブロックチェーンエンジニア』になるために何から始めればよいか。ブロックチェーン領域に特化したコワーキングスペース「Neutrino」に入居し、ブロックチェーン×データ解析を得意とするエンジニア、花村直親さんに解説いただいた。

0 0 30 18

[著者プロフィール] 花村直親|フリーランスエンジニア
ブロックチェーンデータの分析基盤構築、ブロックチェーンを用いた実証実験、暗号通貨監査の技術アドバイザリーなどに従事。分析基盤構築の中で10種以上のブロックチェーンに触れる。その他、フリーランスとして複数のブロックチェーンプロジェクトに関与やWhitePaperの翻訳活動などを行う。ブロックチェーン領域に特化したコワーキングスペース「Neutrino」に入居中。2018年8月より株式会社catabiraにてCBO(Chief Blockchain Officer)就任予定。丸の内で働くブロックチェーンエンジニアのブログを運営。今は主に渋谷で働いている。


[目次]
・ブロックチェーンエンジニアとは
・ブロックチェーン初学者に訪れるハードル
・ブロックチェーンエンジニアを目指す4つのSTEP
  1, 基礎知識と共通言語を会得する
  2, ブロックチェーンのノード構築は手触り感を得られる基本アクション
  3, スマートコントラクトの手触り感を得る
  4, 公式リソースからの継続学習

ブロックチェーンエンジニアとは

まず「ブロックチェーンエンジニア」とは何か?ここは正直、まだ明確ではないように思います。

一般的にはブロックチェーン領域で活動しているエンジニアという意味合いで使われており、大きくは以下の2種類に分けられると思います。


・ブロックチェーン自体を実装するエンジニア
・ブロックチェーンを使いこなして開発をするエンジニア


数としては圧倒的に後者の方が多く存在しています。ブロックチェーンを用いるアプリケーションを開発する場合、現在はEthereumのような大きなプラットフォームもあります。

チェーンを独自実装するよりもハッシュパワーが大きい既存のブロックチェーンを用いる。そのほうがより効率的なパターンが多いからでしょう。

そのため、企業が提示している求人の募集要項などを見ると「ブロックチェーンを使いこなせる」ことが求められています。それができるエンジニアがブロックチェーンエンジニアと呼ばれているという肌感です。

「ブロックチェーンエンジニアとして仕事をする場合、最低限どれくらいの技術レベルや知識が望ましいか」という質問をいただくことがあります。これについては、領域によって身につける技術の特性などは異なり、一般化は難しいと感じています。

そこで、本記事ではどのような環境で仕事をする場合でも、一般的に必要とされること。また、それをどのように習得するか、について触れていきます。

ブロックチェーン初学者に訪れるハードル

ブロックチェーンの経験がない方をチームに迎え入れてまずハードルになるのは、「ブロックチェーンの共通言語で話す」ところだと思います。

公開鍵暗号方式に始まり、ブロック高、ハッシュ値、マイニング、トランザクション、トランザクション手数料、UTXOモデル、アカウントモデル、スマートコントラクト、コントラクトアドレス、イベントログ…

一つ一つ紐解いていくと難しくはないのですが、ブロックチェーン特有の用語は非常に多くあります。チームで資料を作ってノウハウ化していても、ブロックチェーン未経験者の方が用語を覚えて手触り感を得るまで、だいたい2~3ヶ月はかかってしまう印象です。

ブロックチェーン毎にそれぞれ独自の仕様はありますが、基本となる知識に加えて下記3つの知識があれば今のところ幅広いブロックチェーンに対応できるはずです。


・UTXOモデルのトランザクション知識
・アカウントモデルのトランザクション知識
・スマートコントラクト知識


上記3つを抑えるために、基本はBitcoinとEthereumの2つから学習し始めるのがお勧めの方法です。


[リンク]
Bitcoin公式サイト(日本語)
Bitcoinのソースコード(GitHub)
Ethereum公式サイト
Ethereumのソースコード(GitHub)

ブロックチェーンエンジニアを目指す、4つのSTEP

では、どのように学習するのがよいのか。

一次情報である公式のソースコード、ドキュメントから学習するのが王道です。しかし、公式のリソースはすべて英語で書かれています。さらに、世界中の猛者たちが技術用語を駆使して日夜議論して情報が更新されており、どこから始めてよいかわからないという方もいらっしゃるでしょう。

そんな方に向けて、私がお勧めする学習ステップを解説します。



1, 基礎知識と共通言語を会得する


「Mastering Bitcoin」(ビットコインとブロックチェーン)

現時点で最も基礎を身につけられる技術書は、A・アントノプロス氏が著された原題「Mastering Bitcoin」(邦題:ビットコインとブロックチェーン)だと考えています。

Bitcoinと実装されているブロックチェーンの仕組みについて、トランザクション構造、公開鍵暗号方式、ウォレット方式などがコード付きで丁寧に解説されている良書です。

ブロックチェーンの始まりはBitcoinで、LitecoinもDashもビットコインのソースコードを基に作られています。「Mastering Bitcoin」で基礎となる技術要素を身につける事がまず第一歩だと考えています。


imageビットコインとブロックチェーン:暗号通貨を支える技術
作者: アンドレアス・M・アントノプロス,今井崇也,鳩貝淳一郎

また、有志による日本語訳も無料PDFで公開されています。


「ブロックチェーンアプリケーション開発の教科書」

2018年2月に発売されたこの本は、Bitcoinに限らず、Ethereum、日本語情報では詳しく書かれています。 Ethereumのアプリケーションを開発するためのTruffleフレームワークについても書かれているのは、日本語の書籍でこれがはじめてかと思います。


imageブロックチェーンアプリケーション開発の教科書
作者: 加嵜長門,篠原航,丸山弘詩


ブロックチェーンがどのように動いているのかを把握し、基礎となる用語がわかったら第一関門突破です。



2, ブロックチェーンのノード構築は手触り感を得られる基本アクション


書籍の読書と並行して、すでに稼働しているブロックチェーンのノードを構築。RPCを叩くなどをすると手触り感を得られると思います。 また、実際に手を動かしていると、ブロックチェーンのチームに入るときもスムーズかと思います。


[リンク]
Bitcoinノード構築
bitcoindをdockerで環境構築する
Ethereumノード構築
Ethereumの環境構築をDockerで行う(geth,parity)



3, スマートコントラクトの手触り感を得る


ブロックチェーン上で動くコードである、スマートコントラクト。その手触りを得る方法をお伝えします。プラットフォーム系のチェーンは複数ありますが、歴史が長く普及が進んでいるEthereumから始めるのが王道かと思います。

公式チュートリアルに則っていけば最低限の暗号通貨発行コントラクト、クラウドセール、投票機構などの実装が可能です。


[リンク]
Ethereum公式チュートリアル


日本語の副読本が欲しい方向けとしては、「はじめてのブロックチェーン・アプリケーション」があります。Ethereum公式チュートリアルに書かれている内容とかなり近いのですが、 gethの環境構築、暗号通貨発行コントラクト、ICOのコントラクトについて書かれています。

なお、掲載コードは最低限のチュートリアルコントラクトであり、実際にICOなどを行うには改善が必要ですのでご注意ください。

初版の発売時期は2017年8月ということからか、OpenZepplinなどコントラクトを実装する際に利用されるフレームワークの話は書かれていません。また、最新バージョンのノードのクライアントだと書籍掲載のままでは動かないコードもありますが、そこは試行錯誤して動かす必要があります。


imageはじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門 (DEV Engineer's Books)
作者: 渡辺篤,松本雄太,西村祥一,清水俊也


また、Ethereum特有の話になりますが、独自言語であるSolidityの文法を、ゲームを作りながら学べる「Cryptozombies」という無料サービスがあります。

こちらではSolidityのやや癖がある文法を遊びながら学べます。途中のレッスンまで日本語モードがあり学びやすく、Solidity学習には大変お勧めです。


image



4, 公式リソースからの継続学習


概ね基本がわかってきたら、公式リソースから学習しましょう。

はじめに書いたように公式情報のWhitepaper、Wiki、GitHub上で行われる改善提案やリサーチのディスカッションを追ったり、参加するのが良いと思います。

毎日新しい仕様が追加される世界なので、こちらで載せた情報もすぐに古くなる(あるいはもう古くなっている)可能性が十分にあります。時間軸的にドキュメントもきちんと整備されてストックされていかない世界です。新しく出てくるフロー型の情報を追っていくことがブロックチェーン領域で活動する心構えだと感じています。


[リンク]
BitcoinのWhitepaper
EthereumのWhitepaper(日本語版)


また、継続学習時に意識したいことは、身に付けたいブロックチェーンの特性にあわせて学習の方向性を定めることです。


・DashやZcashといったBitcoinを基にしている純粋通貨型でも独自の実装があるブロックチェーン
・NEMやLISKといった独自プラットフォーム系ブロックチェーン
・Hyperledgerなどのプライベート系を構築できるブロックチェーン


などそれぞれ独自仕様が存在します。それらもドキュメントの参照と手を動かしつつ両輪で学んで専門知識を身に付けていくのが良いかと思います。

今回は「事始め」の部分についてご紹介させていただきました。

私のブログでも、技術情報を随時発信していますので、ご参考になれば幸いです。


※本記事は、複数のブロックチェーンプロジェクトやWhitePaperの翻訳活動などを行なう花村直親さんよりご寄稿いただきました。「ブロックチェーンエンジニアを目指す方へお勧めの技術書・サイト」をもとに、改めて寄稿用に構成・執筆いただいた内容となります。


文 = 寄稿


関連記事

特集記事

お問い合わせ
取材のご依頼やサイトに関する
お問い合わせはこちらから