ネム(NEM)のアプリケーション開発の始め方

どうも、絶賛ささみばっかり食べるダイエット中のYuki Hiraiです。

今日は

ネム(NEM)のアプリケーション開発の始め方

について書いていきます

ちなみに先日、ネム(NEM)の勉強会に参加してきました。

そのときの資料が参考になります。

参考 ブロックチェーン:NEMを学ぼう

そもそもネム(NEM)とは?ネム(NEM)ってなに?

ネム(NEM)は

New Economic Movement

を由来としていて、

新しい経済活動の構築

を目的とする暗号通貨です

もともとは、ビットコイン2.0のひとつであるNxtの改良プロジェクトとして位置付けられて2014年から始まりました。

ビットコインはもともとP2Pでの決済を目的として作られたデジタル通貨なんですが

ここで使われてる技術がブロックチェーン技術と呼ばれ

このビットコインのブロックチェーンを通貨以外に活用するような技術のこと「ビットコイン2.0」って呼びます。

ブロックチェーンの技術をうまく応用して、
独自通貨の発行であったりメッセージの送信投票なんかの機能を提供するプラットフォームとしてできたのがNxtです。

このNxtProof of Stake(PoS)っていうアルゴリズムを採用してて
ネム(NEM)ではProof of Stake(PoS)を改良した

Proof of Importance(PoI)

っていうアルゴリズムを実現することを目指してます

簡単にProof of Importance(PoI)について説明しておくと

長期間保持するほど重要度が下がり

コインを多く利用するほど重要度があがる仕組み

みたいなロジックです

コインの流動性を高めて富の偏りを防ぐ

といったことを実現したいなどの独自のアイデアがあります

貧富の格差が広がることを防ごうとしている

暗号通貨です

ネム(NEM)のソースコードの一部はすでに公開されていて
ゆくゆくはOSSとして全部公開していくようにするとのことです

NEMのソースコードも一部はnem.coreとして公開されており

▶︎ NemProject/nem.core

英語ですが動画での紹介もあります

通貨名はXEM(ゼム)で国内の取引所だとZaif(ザイフ)Coincheck(コインチェック)で購入することができます

ネム(NEM)で出来ること

まずネム(NEM)で出来ることをざっくりこの3つとりあげて説明します

NEMの特徴
  1. モザイクと呼ばれる独自通貨の発行
  2. マルチシグ
  3. NEM Apostille Serviceと呼ばれる公証機能

ネム(NEM)でアプリケーションを作成したい場合は、
上記についてざっくり知っておくとアプリケーション開発に役立ちます。

簡単にそれぞれ説明していきます

モザイクと呼ばれる独自通貨の発行

ネム(NEM)ではNano Wallet(ナノウォレット)を使用することで
プログラミングの知識なしに独自通貨を発行することができます

モザイクの発行者は

モザイクについて
  1. モザイクの送金に手数料を設定して徴収
  2. モザイクを第三者間で取引することを制限する

などの設定もできます。

これをプログラミングなしでぽちぽち設定して作れちゃうのは
かなり魅力的ですね。

マルチシグ

マルチシグっていうのはめちゃ簡単に言えば

送金するのに複数の秘密鍵が必要になる

っていう仕組みです

NEM(ネム)ではこのマルチシグっていう機能を取り入れてます

詳しくは以下の記事が参考になります

▶︎ NEM(ネム)マルチシグ設定方法と落とし穴|xemを安全に保管する

NEM Apostille Service(ネムアポスティーユサービス)と呼ばれる公証機能

このNEM Apostille Service(ネムアポスティーユサービス)っていうのは

任意のデジタルデータの存在証明や正当性の保証をブロックチェーンにより実現

する仕組みです

要するにデジタルなデータ(ファイルや画像など)がちゃんと不正な改ざんを受けないように
存在しているかどうかをチェックする仕組みがあります

これがうまく応用できれば
国や特定の期間に依存することなく非中央集権的に不動産登記や戸籍登録なんかを証明することができます

ネム(NEM)についてもっと知りたい!
っていう人は下の記事で詳しく紹介さてます

▶︎ NEM (暗号通貨)

ネム(NEM)でWEBアプリケーションを開発!参考になるドキュメントも紹介!

ネム(NEM)はプロトコルベースでアプリケーション開発を行うことができます

ネムはアプリケーション開発のために

独自のAPI

を提供してくれてて

開発者は目的に応じて

APIのエンドポイントを叩くだけ

でアプリが作れてしまいます

特定のプログラミング言語に依存しなくても開発できちゃう

っていうのはかなりハードルが低いですね

イーサリアム(Ethereum)も同じようにブロックチェーン技術を使用した
プログラムを実装することができますが

イーサリアム(Ethereum)の場合は

Solidity

っていう独自のプログラミング言語

を使用して開発します

イーサリアム(Ethereum)の場合、
自分で実装したプログラムをイーサリアム(Ethereum)のプロックチェーンに取り込んでもらって
ようやく実行可能になりますが

ネム(NEM)の場合は

アプリケーションサーバー

は自分で用意する必要があります

ネム(NEM)のアプリケーション開発で参考になるドキュメント・ツール

まず、開発する際は一通り以下のドキュメントに目を通すとよいです。

実際の開発にはNode.jsのSDKが用意されていて
これを使えばスムーズに開発できます

SDK: QuantumMechanics/NEM-sdk

また、Nano Wallet(ナノウォレット)を使用して
テストネットでの動作確認テストなんかもできるので
ダウンロードしておくようにすると開発がスムーズです

詳しいやり方なんかは以下の記事が参考になります

▶︎ NEMのテストネットワークで独自通貨を試す

ネム(NEM)のグローバルハッカソン!ネムアプリを作るときに参考になるソースコード

ちなみに、ネム(NEM)は

NEM Global Hackathon(ネムグローバルハッカソン)

を開催していて

そこにいろんなサービスの応募がありました

応募サービスは以下のURLからみることができます

▶︎ Qualifiers Archive – NEM Global Hackathon

例えばSOCIALCAKE

アーティスト、ミュージシャン、作家、そしてあらゆる種類のコンテンツ制作者が、
いつも共有していたどこにいても、ファンに直接コンテンツを簡単に販売できるようにする。

といった内容です。

で、なんとこれらの応募作品はオープンソースで開発されてるから
そのコードをアプリケーション開発するときに参考にすることができます

例えばSOCIALCAKEの場合だとソースコードは以下のリンクに公開されてます

▶︎ SocialCake/SocialCake

ネム(NEM)のアプリケーション開発の始め方

以上、ざっくりですが
ネム(NEM)のアプリケーション開発の始め方についてまとめると

まとめ
  1. APIの仕様書を読む
  2. 実際にNANOWalletを触ってテストネットで動かしてみる
  3. グローバルハッカソンの応募サービスのソースコードを読んで参考にしてみる

っていう流れが個人的にはいいんじゃないかなぁ!って思ってます