ブロックチェーンアプリケーション開発入門イベント開催いたしました!
こんにちは。DMM inside編集部の@ayumu_aoです。
『ブロックチェーンアプリケーション開発の教科書』(マイナビ出版)の出版を記念し、先月『1時間で分かる、はじめてのブロックチェーンアプリケーション開発入門』と題したイベントをDMM六本木本社で開催しました。
イベントでは『ブロックチェーンアプリケーション開発の教科書』を執筆した
- 加嵜 長門(DMM スマートコントラクト事業部 Evangelist)
- 篠原 航 (DMM スマートコントラクト事業部 Tech Lead)
の二人が登壇しました。
そこで今回は、イベント当日の様子と登壇内容の概略をこちらでも皆さんにお伝えします!
https://dmmcj.connpass.com/event/79052/dmmcj.connpass.com
発表1 ブロックチェーンの基礎知識(加嵜)
- ブロックチェーンの登場と歴史
- 暗号通貨の価値の根拠
- ブロックチェーン技術の新規性
発表2 ブロックチェーンアプリケーション開発入門(篠原)
- スマートコントラクトの概念
- 活用事例紹介
- 開発言語やフレームワーク紹介
- 独自トークンの実装・デプロイ
懇親会
イベントにご参加いただいた方々に話を聞くと「ブロックチェーンには興味があり、勉強会イベントはこれまであまりなかったので参加してみた」という声が多い印象でした。
イベント内容の概略
登壇の冒頭ではまず、ブロックチェーンについての基本的な説明がありました。 その内容を以下にをまとめてみます。
ブロックチェーンの可能性
仮想通貨『ビットコイン』を支える技術として登場したブロックチェーンは「インターネット以来の発明」とも呼ばれています。それはなぜなのでしょうか?
そもそも、インターネットはなぜこれだけ世界を変えられたのか?
インターネットは大衆に受け入れられました。その最大の要因としては、高額の投資をせずとも、多くの人が利用できたことです。
例えば、遠くの人に何かを売りたい時にTVで通販番組を始めるのとECサイトを作るのとでは、初期費用に大きな差があることが容易に想像できます。インターネットを介したサービスの立ち上げは他の手段よりも障壁が低いのです。
多くのアイディアからプロダクトが生まれ、良いものは残り、悪いものは淘汰されてインターネットはものすごいスピードで洗練されていきました。 こうしてインターネットは第三の産業革命と呼ばれるまでの変革を世界にもたらしたのです。
ブロックチェーンはインターネットほどの変革をもたらすのか?
2009年に『ビットコイン』が登場して9年ほどが経ち、現在までに1500種類を超える仮想通貨が登場しました。一方で、今日使われている法定通貨は200種類程度しかありません。それを遥かに上回る数の仮想通貨がここ10年ほどで登場したことになります。インターネットと同じように、仮想通貨も悪いものは淘汰され、より優れたものが残って洗練されていくと予想されます。そして、そうした状況にあって仮想通貨を支えるブロックチェーンも、その技術自体が大きな変革をもたらす存在として捉えられています。
さらに言えば、仮想通貨を支えるブロックチェーン技術は、仮想通貨以外にも応用することができます。ブロックチェーン技術の最大の特徴は、データの改ざんをすることがほぼ不可能な強固なセキュリティにあります。一般的なサービスにはじまり、金や株券など様々な取引履歴、行政文書、医療用カルテなど、様々な場面でブロックチェーンの導入が検討され、実施されてきています。
ブロックチェーンにはインターネットに並ぶ変革を起こすポテンシャルがあるのです。
ブロックチェーンについていろいろ
イベントでは他にもブロックチェーンについていろいろな話がありました。
- Peer-to-Peer(P2P)方式による送金システム
- 分散タイムスタンプサーバの応用
- 世界全体で、同じ「状態」を扱えるようにする
- ブロックチェーンに限らない、分散台帳技術
などなどですが、こちらは本記事では長くなってしまうので割愛いたします。
ブロックチェーンアプリケーション開発入門
ここまででなんとなくブロックチェーンについて興味が出てきましたか? では、ブロックチェーンアプリケーションはどうやって作ればよいのでしょうか。 今回のイベントではスマートコントラクトを中心に解説がありました。
広義のスマートコントラクト
そもそもスマートコントラクトとは、広義では契約の自動執行を指す概念です。ブロックチェーンと一体化したものではありません。
契約を自動執行するといってもピンとこないかもしれません。 しかし、実は身近にある飲み物の自動販売機でも、契約の自動執行が行われています。 自動販売機で商品を買うときは、お金を入れると選んだ商品が手に入るので売買契約が自動で成立しているといえます。 同様に、ICカードのオートチャージも、あらかじめ決められた条件で契約が自動で行われていると言えます。
このように、あらゆる契約(コントラクト)を自動で(スマートに)行うことをスマートコントラクトと呼んでいます。 整理すると、広義のスマートコントラクトでは以下のようなものを含みます。
- 支払いの自動化
- 契約完了時点で自動引落
- 契約の自動執行
- カーシェアリングなど
- 所有権の証明・移転
- 不動産取引や中古車販売など
- 婚姻時に離婚条件を決めておく
- 財産の自動分与
狭義のスマートコントラクト
さて、ブロックチェーンアプリケーション開発でのスマートコントラクトは、狭義の意味で使われます。その場合には、特に「イーサリアムなどのブロックチェーンプラットフォームで使われるプログラム」のことを指します。正確に言えば、「デジタルに表現された資産をあらかじめ決められた条件で移転させる」プログラムのことです。
では、どのようにしてそのような仕組みを作り上げればよいでしょうか。イーサリアムに使われるスマートコントラクトに焦点を当てて、開発に必要なものが紹介されました。
ブロックチェーンアプリケーション開発に必要なもの
開発に必要なものを見ていきましょう。
- プログラミング言語
- solidity
- 特徴)
- JavaScript風
- 静的型付けのデファクト言語
- 自由度が高い
- 反面、意図しない挙動を生みやすい
- vyper
- 特徴)
- Python風
- 安全性に主軸を置くため、機能が制限されている
- 登場したばかり(研究段階 2018/02時点)
- 機能を制限されたおかげで盗難やバグのリスクが軽減された
- solidity
- プログラムを書くためのツール
- Remix
- 特徴)
- ブラウザベースのIDE
- ダウンロードして使うこともできる
- 簡易ブロックチェーン内臓
- テストは書けない
- Truffle
- 特徴)
- nodejs製のフレームワーク
- コンパイル、テスト(solidity or JavaScript)、デプロイの機能
- 簡易ブロックチェーン内臓 ・その他エディタのプラグイン
- Remix
実際にブロックチェーンを動かすには
ブロックチェーンを動作させるネットワークの種類としては
- メインネット
- 世界にただ一つの本番環境
- テストネット
- テスト環境
- ropsten, kovan, rinkeby
- プライベートネット
- 開発、社内検証など
があります。
イーサリアムクライアントとしてメジャーなのが
- geth
- go言語製の汎用的なイーサリアムクライアント
- CLI
ですが、gethを使うとシンクするのに時間がかかってしまうため、プライベート開発では
- ganache
- 開発用に使うプライベートネットのツール
- GUIもある
を使うのが便利です。
またイーサリアムブロックチェーンを使うためにコマンドラインなどを使うのは不便なので、フロントエンドを作るためのJavaScriptライブラリがあります。
- web3.js
- JavaScriptからスマートコントラクトと会話するためのライブラリ
ほかにも最近発表された
- drizzle
- フロントエンド開発用のライブラリ
- Reduxを使用
があります。
スマートコントラクトを使うためにはトランザクションの発行が必要です。注意点として、トランザクションを発行するためには自分のwalletにイーサリアムを持っている必要があります。
ブラウザのプラグインのwalletを使うこともあります。
- MetaMask
- GoogleChromeとOperaで利用可能
ほかにも
- デプロイ方法
- 独自トークンの実装例
- アプリケーション例
- 気をつけること
などの紹介がありました。こちらも本記事では割愛しますが、DMMのスマートコントラクト事業に興味のある方は、こちらもご覧ください!
話を聞いていてると、今回出版された本を見ながらなら私でも開発できそうだなと感じました(笑)。 ちょっと頑張ってみようと思います!
最後に
インタビューやイベント中に加嵜が話した言葉の中で「社会を変えるのは技術ではなく人」というフレーズが印象に残りました。
「インターネットやブロックチェーンという技術が社会を変えたのではなく、社会を変えたいという人を後押ししたのがインターネットやブロックチェーンである」。 なるほどなーと感じますね。 インターネットやブロックチェーンはあくまで基盤であり、それを使って何をするのかを考えた人によって社会は変わり、今後もそういう人が社会を変えるのだと思います。
今回イベントにご参加いただいた方々がブロックチェーンを使った新しいビジネスやシステムをつくり、盛り上げていく人材になることを期待しています!