NFT(非代替性トークン)開発言語とフレームワークをわかりやすく解説

NFT(非代替性トークン)開発言語とフレームワークをわかりやすく解説 テクノロジー
この記事を伝えたい人
\ フォローする /

日本国内ではまだ浸透していない市場ですが、海外ではニュースや記事などでブロックチェーン関連のNFT(非代替性トークン)について多くとり上げられています。
NFTは代替え不可能な唯一無二の価値を担保するトークン、すなわちデジタルコンテンツに対して、替えのきかない価値を証明する存在としてNFTは世界の多くの投資家たちが売買をしています。2021年3月にNFTで発行されたあるデジタルアート作品が約79億円で落札されました。
現在は様々な有名アーティストもNFTアートを出品されていて、子供が夏休みの自由研究で書いたデジタルアートに数百万の値が付いたり、ゲーム内のキャラクターがNFTとして出品されています。
世界で一つの証明をどのようにNFTとしてデータとして価値を持たせるのか?
ブロックチェーンやスマートコントラクトについて学ぶ必要があります。ゲームなどのアプリとなると、専用のプロセスを経て開発する必要があります。前置きが長くなりましたがここから解説をさせて頂きます。

▼こちらの記事では下記がインプットできます。

  • NFT(非代替性トークン)の将来性
  • NFTを開発するための言語について
  • NFT開発に必要なフレームワークについて
  • フレームワークTruffle(タッフル)とは

NFT(非代替性トークン)開発言語とフレームワークについて解説していきます

NFT市場は日本国内ではまだまだこれから伸びてくる市場です。日本国内でのエンジニアの需要が高まっていてます。2020年の調査では、北ヨーロッパの地域別IT技術者の割合は人口に対して1.59%。アメリカのIT技術者の割合も、1.47%。日本のIT技術者の割合が1%を切っていることから、「IT技術者の割合を高められる余地はまだ大きい」と言えます。
引用元:ITエンジニアが「人手不足」な理由 – 日本のITエンジニア人口と今後の不足見通し
これからITエンジニアの中でもブロックチェーンエンジニアはさらに需要が高まってくると推測されています。
それでは前置きが長くなりすみません。ここからNFTの将来性から開発言語やフレームワークをご紹介させていただきますね。

NFT(非代替性トークン)の将来性

NFTは「Non-Fungible Token(ノンファンジブル・トークン)」の略で、「非代替性トークン」を意味します。ビットコインをはじめとする仮想通貨は、通常どのトークンどうしを取り替えても価値は変わりません。現金も同じであって、人のもつ100円と別の人の100円の価値は何ら変わりはありません。これらは、「代替可能=ファンジブル」です。
一方、NFTは、取り替えのきかない(ノンファンジブル)トークンで、彫刻作品や宝石のようにこの世に同じものが二つとない唯一無二の価値(存在)を、デジタルコンテンツにも付与して所有権を証明できるブロックチェーン上のデジタルデータ単位です。従来、デジタルコンテンツはネット上で無限に複製可能で、ある人のパソコン上にある画像と同じものが他の人のパソコン上にいくらでも保管保存が画像など右クリック等で簡単にダウンロードできてしまいますよね?
そのため、今まではそのどれか一点を本物と証明することは不可能でした。しかし、これをブロックチェーン技術で改ざんもねつ造もできないかたちで実現したのがNFTとなります。
NFTの出現は世界中の関係者に大きな衝撃を与えました。
よってNFTを使えば、絵画や掛け軸などのように、「画像や動画、音楽にもオリジナルの一点ものとしての価値を与えることができる」のです。しかもその対象は、RPGゲームやトレーディングカードゲームなどにも広がっています。

“My

その一例が日本で初めてリリースされたNFTゲーム「My Crypto Heroes」です。このゲームは、PCでもスマホでも遊べて、プレーヤーは、NFTで作った世界の英雄を集めながら同じくNFTである武器などのアイテムをゲットして世界制覇を目指すというもの。キャラクターやアイテムはNFTなので、専用のマーケットプレイスで売買することができます。
引用元:My Crypto Heros

ただし、NFT市場では、一般的なオンラインゲームやソーシャルゲームのキャラクターを売りたいと思っても出品できません。この後に解説するイーサリアムという暗号資産上でスマートコントラクトという特殊技術を使って作られたゲームでなければ、キャラクターなどにNFTとして価値を付与することも市場で売り買いすることもできないのです。また、スマートコントラクトを活用して、作品が二次、三次と異なる買い手のもとに渡っても、その度に原作者に報酬(手数料)が入る仕組みが構築できるのも、NFTならではの注目すべき特徴といえるでしょう。

NFTが稼働するのはイーサリアム上

NFTの取引や開発はイーサリアムを抜きにしては語れません。言い方を変えれば、他の仮想通貨とは異なる「プラットフォーム型」ブロックチェーンと呼ばれるイーサリアムだからこそ、NFTのシステムが機能します。ここからはイーサリアムとNFT開発に欠かせないERC標準について解説しましょう。 まずは簡単にイーサリアムの説明からさせていただきます。

イーサリアムとは

イーサリアム

イーサリアムは数あるブロックチェーンのなかでもビットコインに次ぐ人気を博しています。公開されたのは2014年1月。基軸通貨は、Ether(ETH=イーサ)で、イーサリアムはわずか約15秒ごとにブロックを生成するため、約10分かかるビットコインなどに比べると格段にスピーディーなうえ、大量に取引できる点も特長です。
イーサリアムは分散型アプリケーションプラットフォームといわれ、後述するスマートコントラクトという仕組みを使うことで、ブロックチェーン上で独自トークンやアプリを作成して動かすことが可能です。この点が他の暗号資産とは一線を画する大きな違いで、NFTの稼働を可能にする技術となります。
プラットフォーム型であるイーサリアムは、自由度が高く、さまざまなソフトが作れるとあって、開発者にとっては非常に魅力的なブロックチェーンです。よって、誕生以来これを活用して独自トークンの作成に乗りだす人が数多く出現しました。ところが、ブロックチェーンでトークンを作るとそれに合わせた個別のウォレット(仮想通貨をあつかう際に必ず必要なオンライン上の財布)が必要で、トークンの規格が違うと互換性もありません。よって、各開発者が自由気ままに自分たちのやり方でトークンを作成すると、例えば、そのつど異なるウォレットを設けるといった面倒な作業が必要で実用性に欠けます。そこで、この規格を統一すればウォレットも一元管理でき、互換性も生まれるので、使い勝手の良さからイーサリアム市場の発展につながるとの考えが生まれます。

ERC標準とは

上記のような経緯で、開発者コミュニティ全体で利便性向上を目指して設けられたのが、「ERC」というスマートコントラクト(後述)の共通規格です。

Github(ギットハブ)公式サイト

これはGitHub(ギットハブ)で提案されて開発者コミュニティで承認を受けると正式な規格となります。(GitHubとは、マイクロソフト傘下の米国のGitHub社が提供する、複数のソフト開発者がソースコードを管理・共有できるサービスのこと)
引用元:GitHub(ギットハブ)公式サイト
開発するのであればアカウント持っておいた方が良いと思います。
2015年11月、最初に誕生したのがERC20で、公開されるとこれを活用して数多くの独自トークンが作成されました。そして、その改良版として2017年3月にERC223が誕生。さらに、この共通規格という考えをまったく別の方面に発展させる目的で提案されて同年9月に誕生したのが「ERC721」になります。
ERC721は、それまでのECRと異なり、NFTという代替不可能なニュータイプのトークンの作成を可能になり、あらゆるNFTは、このERC721のルールに準拠して作成されますし、逆にこの規格に沿わなければイーサリアム上でアプリを起動することはできません。先ほどご紹介させていただいた日本初のNFTゲーム「My Crypto Heroes」もERC721の規格に沿って開発されました。
ちなみに、このERC721を提案して、承認後わずか2ヶ月(2017年11月)で世界初のNFTゲーム『CryptoKitties(クリプトキティーズ)』をローンチしたのが、カナダのDapper Labs社です。この『CryptoKitties』がNFTゲームの火付け役となると同時にNFTの認知度を世界的にグンと引き上げました。

イーサリアムとスマートコントラクト

イーサリアムとスマートコントラクト

ERCは、イーサリアムに欠かせない技術である「スマートコントラクト」の共通規格になります。スマートコントラクトとは、特定のプログラム言語でコーディングされたルールに従って、ブロックチェーン上のトランザクション(取引)が自動的に実行されるプログラムです。ここでコーディングされたプログラムはブロックチェーン上で処理可能なかたちに変換のうえ、デプロイされます。一旦ブロックチェーン上に展開されたソフトやアプリケーションは書き替えも改ざんもほぼ不可能です。しかもスピード向上とコスト削減というメリットもあります。
ERCは任意の開発者によってGitHubで提案され、コミュニティ内で承認されれば正式なスマートコントラクトの規格となりますが、ERCの後に続く数字は、提案された順番を表しています。つまり、最初に誕生したERC20 は20番目に提案されたことを意味します。そして721番目に提案されて承認されたのが、ERC721という規格名になったようです。
ERC721の規格を使えば、NFTを開発可能で、デジタルコンテンツの所有権証明とすべての取引履歴の記録がイーサリアムブロックチェーン上で可能となります。よって、すべての取引は追跡可能なため、何度売り買いが繰り返されてもコンテンツが誰のものはわからなくなるということはありません。しかも、スマートコントラクトにロイヤリティ条項を埋め込むと売買が成立するたびに原作者に一定の割合で報酬が支払われるようになるので、著作権もしっかりと保障されます。

スマートコントラクトを作成するための言語『Solidity』 

スマートコントラクトを作成するための言語『Solidity』 

ERC721の規格にしたがってNFTを開発するには、『Solidity(ソリディティ)』というプログラム開発言語を使います。Solidityは、オブジェクト指向の高級プログラム言語で、イーサリアム上のスマートコントラクトを開発するためだけに作成されました。高級言語のためC言語やJavaのようにコンパイルが必要になります。C++をベースとし、PythonやJavaScriptを参考にして作られており、とくにJavaScriptに似た文法のため、JavaScriptでの開発経験がある場合は、非常に使いやすいです。しかもアップデート継続中のため、時間が経つにつれて精度も上がっています。
『Solidity』は高級プログラム言語なので、人が理解しやすい反面コンピューターにとっては理解できない難しさがあります。よって、低級なバイトコードへとEVM(イーサリアム仮想マシン)を使って翻訳して実行されるというプロセスを踏みます。
ちなみに『Vyper(バイパー)』というPythonに似た言語でもスマートコントラクトを作成できますが、まだ実績が浅く、実用性では『Solidity』の比ではありません。よって、NFT開発には、今のところほぼ『Solidity』を使うと考えて間違いないでしょう。

SolidityのTruffleフレームワーク

Solidityには、ディファクトスタンダードのフレームワークとして『Truffle』があり、すでに多くの開発場面で多用されています。Truffleは、スマートコントラクトのコンパイル・テスト・デプロイを自動化する機能を持ちます。

Truffleとは?

TruffleとはEthereumアプリケーション開発におけるデファクトスタンダードのフレームワークで、フレームワーク選びではTruffleを選んでおけばまず間違いないと言えます。

Truffleフレームワークで開発

TruffleはWeb開発のフレームワークに例えるとバックエンドの開発フレームワークのようなもので、スマートコントラクトのコンパイル・テスト・マイグレーション機能を備えています。
Truffleと一緒に用いられるツールとして、ローカル開発用のノードを構築できるGanasche, スマートコントラクトにアクセスするフロントエンドを簡単に構築するためのdrizzleがあります。これらのツールをまとめてTruffle Suitと呼びます。
また、TruffleはEthereumの開発に使える他に、エンタープライズEthereumの仕様に乗っ取りEVM上で動くQuorumの開発にも対応しています。
Truffleを利用する流れ

  • 1.アプリケーションのテンプレートを作り
  • 2.スマートコントラクトをコンパイル
  • 3.ローカル開発用ノードを立あげる
  • 4.スマートコントラクトをノードへデプロイ
  • 5.テストを実装

上記のようなフローでTruffleをうまく活用すれば、Solidityを使ったスマートコントラクトの作成がスピーディーで容易にできるのでとてもおすすめです。
▼公式サイトでも使い方やプログラミングについて詳細をチェックしてみてください。
引用元:Truffle公式サイト

まとめ

NFT(非代替性トークン)の開発言語とフレームワークについて解説させていただきました。NFTを開発・実装しようと思えば、イーサリアムの存在が不可欠です。
そこで手数料があまりかからない新たなサービスをブロックチェーンで開発される企業も存在しますし、日本国内はこれからブロックチェーンを使ったサービスがどんどんローンチされていくと思います。
より多くのゲームプレーや投資家たちがNFT市場に参加できれば、今後の市場規模はますます拡大していくと予想されます。その意味では、今がNFT開発の需要も高まりエンジニアの方にも絶好のチャンスと言えると思います!
ぜひNFT開発を初めてみたいというエンジニアの方へ参考になればともいます。