【後編】「1時間で分かる、はじめてのブロックチェーンアプリケーション開発入門」出版記念イベント

はじめに

こんにちは!スマートコントラクト開発部メディア担当のてらしいです。
1時間で分かる、はじめてのブロックチェーンアプリケーション開発入門」の出版記念イベントのレポート前編に続き、後編の模様もお届けします!
前編ではエヴァンジェリスト加嵜氏による、ブロックチェーンの基礎知識について講義がありました。
後編ではテックリード篠原氏よる、スマートコントラクトの概念や実践概論をお届けします。

登壇者プロフィール

篠原航しのはらわたる

スマートコントラクト事業部 テックリード

顔写真:篠原航
サイバーエージェント、NHN PlayArt株式会社のサーバサイドエンジニアを経て2015年入社。加嵜とともにレコメンドエンジンの開発に携わる。主にdevOpsやインフラ、API設計を担当。
ビッグデータ部リードエンジニアの後、現職。同部エバンジェリストの加嵜長門との共著『ブロックチェーンアプリケーション開発の教科書』(マイナビ出版)。

レポートを読む前におさえておきたい用語

ブロックチェーン
分散型台帳技術とも呼ばれ、ビットコインなどの仮想通貨の中枢となる技術。取引履歴をブロックと呼ばれる単位にまとめ、管理者不在でも改ざんが困難で自律的に動作する特徴がある。
スマートコントラクト
条件に合った出来事が発生すると契約が自動的に執行するようプログラム化された仕組み。商品購入をはじめ、さまざまな契約や取引に応用できる。
メインネット
本番環境のネットワークで、全世界に公開されたただ一つのパブリックな環境。
テストネット
メインネット前に利用する、ステージング環境。RopstenやKovan、Rinkebyと呼ばれるネットワークがある。
プライベートネット
アプリケーションの開発時に利用するネットワーク。必要に応じて開発者がネットワークを構築して、開発に利用することも可能。

【第二部】ブロックチェーンアプリケーション開発入門について

第ニ部では、テックリードの篠原氏が登壇。
スマートコントラクトの概念や活用事例、開発に必要な手順、方法に関する講演でした。

スマートコントラクトの概念について

スマートコントラクトの概念
  • 契約の自動執行
  • 自動販売機みたいなもの
  • Suicaのオートチャージ

篠原「まずはイーサリアム上で、ブロックチェーンアプリケーションをどのように開発できるかを説明します。
そもそもスマートコントラクトについてですが、Nick Szab(暗号学者)によって開発された『契約の自動執行』という概念が基になっています。
スマートコントラクトは自動販売機のようなものだと例えられることが多いです。
『①お金を入れる+②ボタンを押す→③自動的に商品が出てくる』といった自動販売機でモノを購入する時のような『特定の条件が揃うと、自動執行される』仕組みのことを言います」

篠原「それ以外に身近なものとして『SUICAのオートチャージ機能』もスマートコントラクトの一種として挙げられます。
『①SUICAの残高が5,000円未満になる→②SUICAに5,000円分が自動的にチャージされる』という流れがスマートコントラクトの仕組みに基づいています」

篠原「これらはスマートコントラクトの概念的な事例ですが、狭義でのスマートコントラクトについて説明します。
代表的なイーサリアムについては、ブロッチェーン技術を用いるアプリケーションのプラットフォームで、このイーサリアムを実装・運用して開発されたプログラムを、スマートコントラクトと呼んでいます。
このスマートコントラクトがあることによって、電子化された様々なデジタル資産の管理や移動を、自動的に行うためのオープンな基盤を実現できます」

まとめ

  • スマートコントラクトとは、契約の自動執行とも呼ばれ、自動販売機やオートチャージに例えられることが多い
  • 狭義のスマートコントラクトは、イーサリアムなどのブロックチェーンプラットフォーム上のプログラムを指すことがある

スマートコントラクトの活用事例について知る

活用事例
  • 支払いの自動化
    • 契約完了時点で自動引き落とし
  • 契約の自動執行
    • カーシェアリング
  • 所有証明、移転
    • 不動産取引
    • 中古車販売
  • 婚姻時に離婚時の条件を決めておく
    • 離婚したタイミングで自動財産付与
  • スマートコントラクト自体はブロックチェーンを使わなくてもできる概念

篠原「スマートコントラクトはあらかじめ決めた条件をブロックチェーン上にプログラムすることで、デジタル化された価値の移転を可能にします。活用方法として、『ビットコインの支払い』が挙げられます」

篠原「ビットコインの支払いは、仲介者がいなくても、ウォレットがあれば個人間で送金や受け取りが可能です。
ブロックチェーン上に書き込むことで価値の移転ができるため、送る側と受け取る側の契約が完了した時点で、自動的に残高が移転し、記録されます」

篠原「他にはカーシェアリングの分野にも応用ができます。車を貸す人(オーナー)と、車を借りたい人(利用者)がいたとします。
あらかじめプログラム上で『いくらで何時間、車を貸すか』という条件を決め、二人が合意したタイミングで車の利用権利が移転し、契約が完了。利用者は車を使用できます」

篠原「海外で散見されるケースですが、婚姻時に離婚時の条件を決めることもあります。離婚時の財産分与などで、さまざざまな問題が起こっています。
あらかじめプログラム上で『私たちは結婚します。ただし離婚する際、こういう条件の場合は妻が60%、夫が40%の財産分与がされます。』と決めておけば、離婚時のトラブルは回避できるかもしれません。
離婚が成立すると自動的に財産分与がなされるので、民事裁判も少なくなると考えています」

まとめ

  • ビットコインの支払いも、ウォレットがあれば個人間で送金や受け取りができる
  • カーシェアリングや離婚時の条件などにもスマートコントラクトの仕組みを応用できる

開発言語やフレームワークの紹介

プログラミング言語
  • Solidity
    • JavaScript風
    • 静的型付け
    • 現在のデファクト言語
    • 自由度が高い
    • 反面、意図しない挙動を産みやすい
      • バグや盗難、攻撃など
  • vyper
    • Python風
    • 安全性に主軸を置くため、機能が制限されている
    • 登場したばかり(研究段階)

篠原「スマートコントラクト開発では、『Solidity』と呼ばれる独自のプログラム言語を使っています。JavaScriptに似た言語で、自由度が高く、プログラム初級者にとっても馴染みやすい言語だと思います」

篠原「また、研究段階ではありますが、『vyper』と呼ばれるプログラミング言語も注目されています。『Python』に近い言語で、安全性に主軸を置いています。但し、その安全性の高さゆえ、使える機能は制限されています。『Solidity』では簡単に書けるコードも、『vyper』では地道にコードを書くことが求めらます。
逆に、機能を制限したことでバグや盗難、攻撃のリスクを下げるメリットもあります。まだまだ改善の余地がある言語ですが、今後さらに改良されて、使いやすい言語になると考えています」

プログラミングを書くためのツール
  • Remix
    • ブラウザベースのIDE
    • 簡易ブロックチェーン内蔵
  • Truffle
    • nodejs製のフレームワーク
    • コンパイル、テスト、デプロイの機能
    • 簡易ブロックチェーン内蔵
  • その他のエディタプラグイン
    • Emacs,Vim,vscode,IntelliJ,etc.

まとめ

  • スマートコントラクト開発には『Solidity』と呼ばれるプログラミング言語が必要
  • ブラウザで『Solidity』を実行できる環境として『Remix』がある

実際にブロックチェーンアプリケーションを動かすには?

ブロックチェーンを動かすには
  • Geth
    • Go言語製の汎用的なイーサリアムクライアント
    • CLI
  • ganache
    • 開発用に使うプライベートネットのツール
    • GUIもある

篠原「実際に開発をするときは、イーサリアムのクライアントを動かす必要があります。もっともメジャーなのは、『Geth(Go Ethereum)』と呼ばれるGo言語で実装されたイーサリアムノードを実行するためのCLIクライアントを使うことです。
ただし、テスト環境で開発するには『Geth』は時間がかかり不向きなので、開発用には『ganache』と呼ばれる、プライベートネットツールを推奨しています。
テストやコマンドの実行、状態の検査に使用できる個人用のイーサリアムブロックチェーンを素早く起動できます」

篠原「続いてフロントエンドを開発する方法についてです。『web3.js』と呼ばれるローカルやリモートのイーサリアムノードとやり取りが出来るJavaScriptライブラリをインストールする必要があります。この『web3.js』を使うことで、『Geth』を操作(起動、実行など)できます。
開発用のライブラリには『drizzle』、イーサリアムウォレットには『MetaMask』をおすすめします」

フロントエンドを開発する方法
  • web3.js
    • JavaScriptからスマートコントラクトと会話するためのライブラリ
  • drizzle
    • フロントエンド開発用のライブラリ
    • Reduxを使用
  • MetaMask
    • web3.jsと会話するためのブラウザプラグインwallet
    • Chrome,FireFox,Operaで利用可能

まとめ

  • ブロックチェーンを動かすには『Geth』『ganache』が一般的
  • フロントエンドを開発するには、『web3.js』『drizzle』『MetaMask』が一般的

実装・デプロイの方法について

デプロイ方法
  • Geth(+ remix or truffle)
  • INFURA
    • イーサリアムノードをホスティングしてくれるサービス

篠原「デプロイ方法になりますが、先ほど申し上げたイーサリアムノードが必要になります。『Geth』とお好きなエディタを使えばデプロイはできますが、イーサリアムノードをホスティングしてくれる『INFURA』というサービスをプラスアルファで使うことをおすすめします」

篠原「仮想通貨以外のブロックチェーンアプリケーションの特徴についても説明します。
まだまだ初期段階のものが多いですが、ユニークなアプリケーションが多数存在します。
『DappReader』や『State of Dapps』で具体的なアプリケーションを一覧で確認できます。その中でも特に印象的なアプリケーションをまとめました」

具体的なアプリケーション例

まとめ

  • デプロイ方法はGeth(+ remix or truffle)、INFURAを利用する
  • ゲームやストレージ容量の共有、分散型仮想通貨取引所、電子コンテンツなど、仮想通貨以外のブロックチェーンアプリケーションは多く存在する

懇親会はブロックチェーン界隈のビジネスパーソンの交流の場に

講演終了後、DMM社員、参加者の皆さんと交流会を開催。
ブロックチェーン、スマートコントラクト、仮想通貨に興味があるビジネスパソーンを中心に、100名ほどの参加者が集まりました。
会場にはオシャレな軽食やデザートが並び、大盛況!

また、参加者の皆さんにアンケートも実施。

  • ブロックチェーンで使われる言語やツールについて知ることができ、勉強になった。
  • ブロックチェーン技術の、医療や金融の分野への応用に興味を持った。
  • 既存とは異なる開発環境のため、まだまだ学習コストは高くつく印象を受けた。
  • ブロックチェーンについて体系的に学ぶことができた。
  • 用語解説や歴史など、技術以外についても学べて、面白かった。

皆さんの感想やご指摘を参考に、次回のイベント運営に役立てていきたいと考えています。

登壇者からのコメント

イベント登壇者である加嵜氏、篠原氏のコメント。

出版記念イベント「1時間で分かる、はじめてのブロックチェーンアプリケーション開発入門」を終えて感想は?

加嵜 「ブロックチェーン技術の魅力を多くの人に知ってもらいたい、という思いで出版した書籍のイベントでしたので、300人を越えるほどの応募をいただき、大きな反響を得られたのはとても嬉しいです」

篠原 「イベントページを公開後、応募枠が即座に埋まってしまい、何度か増枠をしました。世間的な注目度の高い技術であることを再確認しました」

ブロックチェーン業界の発展に必要な要素、現状の課題は?

加嵜 「ブロックチェーンは革新的な技術だと思いますが、どんな技術も使い方次第で益にも害にもなり得るので、冷静に技術を見つめて適切に活用していく姿勢が重要だと思います」

篠原 「危険な投資スキームなどが原因で、法規制が厳しくなっていってることを残念に思います。今後はより安全に、誰もが利益を得られる仕組みづくりを推進していきたいです」

ブロックチェーン界隈で活躍を目指すエンジニアの皆さんに一言。

加嵜 「日本のブロックチェーンエンジニアのコミュニティはまだまだ発展段階ですが、DMMでもコミュニティをどんどん盛り上げていきますので、今後もぜひ色々な活動に参加してください」

篠原 「知りたいと思ったものはネットで調べることが可能ですし、わからない人をサポートするコミュニティもあります。案ずるより産むが易し。恐れず前に進みましょう」


まとめ

前編、後編と分けてお届けした出版記念イベントレポート。
いかがでしたでしょうか?
ブロックチェーンの知識がなくても一から理解を深めることができる学びの多い講義となったことはもちろん、ブロックチェーン界隈のビジネスマン同士が交流を深められたことで、新しい出会いの場を創出できたと感じています。

DMMスマートコントラクト事業部、開発部では、引き続き、社会に価値のある情報発信や交流の場を設けていきます!

書籍については全国書店またはAmazonにて絶賛発売中です!

今回のイベントの発端となる『1時間で分かる、はじめてのブロックチェーンアプリケーション開発入門』は、全国書店またはAmazonにて絶賛発売中です。