「7兆円市場の可能性」ブロックチェーンアプリ開発を始める意義

「イーサリアムプラットフォームは、次のアップル[the next Apple]程の影響力を持ちうるだろう」
ウィーンで開催されたWeAreDevelopersカンファレンスにて、アップルの共同設立者のSteve Wozniakはイーサリアムに関し、このような強気な発言を行いました。

    

    参照:https://www.ccn.com/ethereum-could-be-the-next-apple-steve-wozniak/

近ごろ日本でも仮想通貨投資、ブロックチェーンやイーサリアムいった単語を聞かない日はありません。
その中で本記事は、仮想通貨投資の事象を論じることを目的にするのではなく、ブロックチェーン上での開発に焦点を当てていきます。
ブロックチェーンアプリでメジャーなイーサリアムについて、何から学び始めればよいのか、実際にどのようなアプリが開発されているかを、一緒に見ていきましょう。

1. ブロックチェーンアプリ開発に必要な言語「Solidity(ソリディティ)」

BTCに次ぐ時価総額約5兆円(6/12時点で)、世の中の多くのブロックチェーンアプリは、イーサリアムのプラットフォーム上で開発されています。ではイーサリアム上で開発をする、とはどういうことなのか。

それは

イーサリアム上で動くプログラム=「スマートコントラクト」を実装することです。

スマートコントラクトとは
  • スマートコントラクトとは、イーサリアム上に記録された、ネットワークの参加者全員が参照(検証)、もしくは実行できるコントラクト=プログラムのことである。

                       

イーサリアムの持つ、分散アプリケーションやスマートコントラクトの仕組みは、ブロックチェーン上に記録される、コントラクトコードが実行されることによって動作します。ここでは詳細な説明は割愛しますが、スマートコントラクトでは、Solidityというイーサリアム独自のプログラミング言語を理解することが不可欠です。

スマートコントラクトの実装(Solidityの書き方)を学ぶには主に4つの方法があります。

1.書籍
2.ゲーム
3.学校に通う(ブロックチェーン大学校など)
4.Webサイト(ベストプラクティス「Ethereum Smart Contract Security Best Practices」
https://consensys.github.io/smart-contract-best-practices/で学ぶ:やや上級者向けです)

書籍は非常に優れたものも多いのですが、技術的な側面に重点を置いているものが多く、進めていく「楽しさ」がやや犠牲にされている感じがします。
そのため、初学者にとってハードルが低い「ゲームで学ぶ」やり方を取り上げたいと思います。

では早速はじめていきましょう。

2. ゲームで「Solidity(ソリディティ)」を学ぶ

Solidityを学ぶベストなゲームは何か、と聞かれたら迷わずこの「クリプトゾンビ」をお勧めします。

2-1. ゲームで学ぶなら「クリプトゾンビ」がおススメ

クリプトゾンビを薦める理由は多々ありますが、大きなものとしてはやはり日本語対応している点が挙げられます。なぜなら、ブロックチェーンの技術に関する最新のナレッジで、日本語に訳されているものがそもそも少ない。
その上このようにゲーム感覚で楽しめるものとなると、更に貴重なのです。
そしてその他にも

A.段階的に文法をマスターしステップアップできる

B.ある程度プログラミングの素養がある方ならゲーム感覚で楽しく取り組める

点が挙げられます。
Solidityの文法をマスターできる点について、クリプトゾンビのレッスン1を取り上げながら、もう少し詳しく説明していきますね。

 

2-2. クリプトゾンビをマスターすると、コントラクトが書けるようになる!

クリプトゾンビのレッスン1をマスターすると、何ができるようになるのか。
それは、簡単なコントラクトを自分で作れるようになることです。

下図を見てください。これがレッスン1の最終章のチャプター14の画面です。

ネタバレにならない範囲で解説すると、チャプター14では既に任意の文字を入れると、ゾンビの目、肌など外見が変化するコントラクトが完成されています。
それ以前のチャプターの113でこのコントラクトを支える構成を作ります。

つまりチャプター14のゴールが簡単な一文を書くことだとすると、チャプターの113までには文法と必要最低限の単語を学ぶことになります。
そして文法のみならず、自分の書いた一文が他人に勝手に編集・改ざんされないようにする仕組みも学びます。

 

クリプトゾンビにユニークな点があるとすると、それはこのような

「プレイヤーにゴールをイメージさせ、それに向けて段階的に重要事項をマスターさせていく」ボトムアップ的なやり方でしょう。

 

2-3. レッスン1で学ぶ基礎文法の紹介

レッスン1での、Solidityの基礎知識として不可欠な項目の中から、下記3項目を取り上げたいと思います。

  • 構造体
  • 配列
  • public/private関数

 

まずはチャプター14を参考にしながら、①構造体について見てみましょう。
第一に、我々はこのゲームでオリジナルのゾンビをつくることが目標です。そのためにはゾンビの名前(文字列)DNA(整数)などのプロパティに対応した、複数のデータ型が必要です。
それぞれのデータ型をまとめて管理し、ブロックチェーン上に格納するために、「構造体」を用意します。
イメージとしては、いわば下図のような氏名,年齢,性別などのデータを一人分だけまとめたものと捉えてもよいでしょう。

しかし、一体のみではなく複数のゾンビを作りたい場合、それに応じて構造体も増え、プログラムが似たような文の羅列になってしまいます。
例えば名前とDNAの属性を持たせたゾンビを、数十体も作るとなると、同数の構造体を用意しなくてはいけないかもしれません。
これでは冗長で、読みづらいプログラムになってしまいます。

そこで②配列が必要になるのです。イメージでいうとJavaArrayListですね。

実際に①、②を総合して、自分独自のゾンビ軍隊を格納できるような配列をつくるコントラクトは

下記のようなコードになります。

————————————————————————————–

contract ZombieFactory {  //イーサリアムアプリケーションの基本ブロックです。このcontractがイーサリアムブロックチェーン上に半永久的に保管され続けます。

struct Zombie {
        string name; //ゾンビの名前
        uint dna; //ゾンビのDNA
  }

Zombie[] public zombies; //Zombie構造体をzombie配列に格納している

function _createZombie(string _name, uint _dna) private { //ゾンビを「生成する」関数です
        zombies.push(Zombie(_name, _dna));       }
}
————————————————————————————–

①から②にかけてのコードは何をするためのものなのか、何となくイメージ出来たでしょうか。     

以上、Solidityの基礎文法をいくつかご紹介しましたが、いかがでしたでしょうか。
まだいまいち感触がつかめていない方も、全く問題ありません。実際に手を動かしながら、順次ステップアップできるように、クリプトゾンビが親切に教えてくれます。
難しく考えずに、どんどんゲーム感覚で楽しんでいきましょう!

 

2-4. クリプトゾンビ画面での実演

それでは実際の画面を見ながら、クリプトゾンビの解説を進めていきましょう。  ゲーム自体は以下のような画面で進めていくことになります。

左上のチャプターの部分では文法の説明がされています。この文法の解説を読んだ後、テストに取り組みます。
実際に各章では前章までの理解が求めれれており、途中で詰まったりする度に、前に立ち返ることができるのです。

ただ唯一気をつけるべき点としては、各章ごとに設問があるため、
あまり全体の流れを意識せずに目先の問題だけ解き進めてしまいがちです。急に「あれ、今何をやっているんだっけ?」とならないように、必ず各チャプターの目的をはっきりさせた上でゲームを進めていきましょう。
例えば、この13チャプター全体の目的が、「入力された任意の名前をもとにゾンビのDNAが作られ、それによってゾンビの外見が決定される」コントラクトを作ることであるとします。
このコントラクトを実装するために、各チャプターでは、とのようなプログラムを積み上げていくべきなのか。一つ一つ考えながら進めていくと、手戻りの発生を防ぐことが出来ます。

 

第1章の最後では、このように名前を入力することで、可愛い!?オリジナルゾンビを一から作るゾンビ生成システム=コントラクトができます。
このコントラクトの作り方を理解することによって、Solidityに不可欠な文法の組み立て方を身に着け、アプリ開発への一歩を踏み出せるのです。
https://cryptozombies.io/jp

全て修了したら、ぜひ自分でイーサリアムネットワーク上でゲームを作ってみてください。スロットゲームのような単純なものでも構いません。より詳しく知りたい方は、こちらのベストプラクティス(開発技法)を参考にすることをお勧めします。下記サイトでは、シンプルなコントラクトの書き方が、よい例文と悪い例文の比較をもとに丁寧に解説されており、初学者でも取り組みやすいものとなっています。「Ethereum Smart Contract Security Best Practices」

3.ブロックチェーンアプリ(Dapps)の未来

本章では現在のDappsの市場規模を取り上げながら、数々のユニークなアプリを紹介していきます。

3-1. ゲームアプリの仕組み

前章でゲームを通して、イーサリアム上で動くコントラクト(プログラム)を学んだら、次は実際のイーサリアムのゲームアプリを見てみましょう。本項では有名なものを二つ紹介します。

【クリプトキティーズ(Cryptokitties)】

イーサゲームで有名なものとして、まず挙げられるのがこれ!
ETHで仔猫を買って、育てて、売買する。ただそれだけのゲームです。しかし侮ることなかれ。なんと253ETH=約1300万円以上で落札された仔猫もあるらしいのです。

猫を購入し実際にゲームを始めるには、イーサリアムを購入することが不可欠です。そのためにまずは仮想通貨ウォレット「MetaMask」をインストールしましょう。下記リンクからインストールが可能です。

それでは、クリプトキティーズの仕組みを紹介します。

まずはじめに、そもそも仔猫の正体はなにか?イメージとして、公式サイトに記載されている紹介文を引用します。

CryptoKitties is a game centered around breedable, collectible, and oh-so-adorable creatures we call CryptoKitties! Each cat is one-of-a-kind and 100% owned by you; it cannot be replicated, taken away, or destroyed.
https://www.cryptokitties.co/

翻訳すると、

クリプトキティーズは、繁殖できて収集もできる、魅力的な生き物、クリプトキティー を中心としたゲームです!クリプトキティー の所有権は 100 % あなたのものです。複製されることも、奪取されることも、破壊されることもありません。

以下ではもう一歩踏み込んで、クリプトキティーズのソースコードを少しだけ見てみましょう。仔猫の正体がより明らかになりそうです。

クリプトゾンビで学習した方ならお馴染みのuintで構成される、下記のような構造体で、仔猫たちの正体が表現されています。

————————————————————————————–

 struct Kitty {     uint256 genes; // 仔猫の遺伝子です。256bitの整数で構成されています。
    uint64 birthTime;  //仔猫の誕生日です。イーサのブロック上のタイムスタンプに基づいています。
    uint64 cooldownEndBlock;
    uint32 matronId;
    uint32 sireId;
    uint32 siringWithId;
    uint16 cooldownIndex;
    uint16 generation;
}  

————————————————————————————–

 

これが仔猫の核となる部分です。非常に単純なつくりで、驚いた方も多いかもしれません。
実際には仔猫たちが繁殖していくたびに、親のIDが子に受け継がれていきます。(上記コードのmatronId,sireIdの部分です)
ちなみに、仔猫の外見はgenesの整数部で決定されます。これはクリプトゾンビの造りと同じですね!
(全ソースコードが公開されているので、気になる方はこちらを覗いてみてください。↓
https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code)

他に、イーサ上で動くゲームといえば、他にもこのようなものがあります。

【くりぷ豚】

ゲームの造りとしては日本版クリプトキティーズといってもいいでしょう。他のDappsのゲームと同じように、アプリデータを自分の資産として所有することが可能です。データ自体は誰でも閲覧可能ですが、所有したデータを扱えるのは所有者のみです。

実際のゲーム上では、自分のくりぷ豚を育成・売買します。育成の一環として、「トン活」というユニークなくりぷ豚同士のお見合い機能もあります。こうして自分が育てた子豚のレア度が高まり、高値で取引される可能性もあります。
Solidityを学んだ読者の皆さんなら、「使う側」の視点だけでなく、「創る側」の視座を持つことも可能なはず!どのようなコントラクトを書けば面白いゲームアプリが作れるのか、自分で考えてみることも学びを確認する上では有意義でしょう。
「くりぷ豚公式HPhttps://www.crypt-oink.io/#home

 
いつか自分でもこのようなゲームを作れるようになりたいですね!!

 

3-2. Dapps市場の未来

【図表1

 

これは現在のイーサリアムアドレスの増加率をチャートにしたものです。現在(2018年6月時点で)約3600万アドレスあり、現在も日に約7万アドレスの勢いで増加しています。

イーサアドレスとは、イーサリアム上の口座番号のことで、人々はトークンを手に入れ取引なり投資なりに利用するためにアドレスを開設します。こうしたアドレス増は今後のトークン利用の活発化をも同時に意味しているのです。これは投機目的のみならず、トークンを使ったサービスの利用者が増えているということも言えます。もちろん、このサービスにはDappsゲームも含まれていると考えてよいでしょう。

さらに参考として下記【図表2】を見てください。これはゲーム、モバイル市場の調査を専門としたグローバルカンパニーnewzo社の発表した資料です。直接Dappsゲームを指したものではないですが、近年のゲーム市場全体の空前の盛り上がりを表しています。

【図表2

上図の赤丸の中を見てください。スマートフォンのゲーム市場に関しては、2020年までには7兆円規模になると予測されています。

今後、開発者としてイーサリアム×ゲームの市場に切り込む野心を滾らせる方々にとっては、絶好の機会かもしれません。

次章からはゲーム以外の領域のDappsの紹介をします。

 

3-3. ゲーム以外のDappsの応用事例

『CryptoMasterpiece』

クリプトゾンビ、クリプトキティーズと同様、ERC/21トークンを用いたユニークなDappsが公開されました。
これはイーサリアムプラットフォーム上で展開される絵画のオークションサイトです。

CryptoMasterpieceのホワイトペーパーによると、彼らは自分たちのサービスを用いて、以下三つの社会課題を解決しようとしています。

  1. 購入した絵画の唯一無二の所有権の確保
  2. フェアで効率的なオークションメカニズムの実現
  3. 絵画の価値が正しく評価され、アーティストとバイヤーの双方が受益する仕組みの確立

サービスの特徴としては、『ujo music』の絵画版のような印象を受けますね。実際にモナリザの絵などは現在約7ETHで取引されているようです(20186月現在の価格で日本円に換算すると、7ETHは約35万円です)

【OpenSea】

こちらはクリプトキティーズの仔猫たちでおなじみのブロックチェーン資産(アイテム)を、売買できる取引所「OpenSea」です。使い方はとても簡単で、売りたいアイテムのゲームで利用しているMetaMaskの準備ができていれば、すぐに利用可能です。アイテムの売買の他にも、アイテムを送る、ゲームを調べるなどの機能が利用可能です。

上記に挙げたCryptoMasterpieceで購入したモナリザと、くりぷ豚が交換できるようになる日も、そう遠くないかもしれないですね。実際にイーサゲームの領域でアイテムの売価に関しては先行者有利の傾向があるので、リリースされて間もないくりぷ豚を育てることは、投資の観点からみても、面白いかもしれません。

 

4. 最後に

ブロックチェーンのアプリ開発自体はまだまだ未知の可能性が多い分野です。

いままで世の中で当たり前だと思われていたようなサービスを、いとも簡単に代替し、よりよい形で再現する。このような、可能性に溢れている領域であるとたくさんの方は感じていることでしょう。故にいちユーザーでは満足できない、どうしても創る側に立ってみたいという思いを抱いている。そして創るというプロセスに身を投じるには、当たり前の話ではありますが、学びが必要です。トークンへの投資と異なり、いちユーザーとして楽しく学ぶ、この一見遠回りにみえる自己投資のやり方こそが、この先行者有利な領域で力を発揮すると筆者は信じています。

本記事が、皆さんがこの「自己投資」を始める一つのきっかけになれたら幸いです。