- NEMアプリケーションの開発
- NEM JAPANとCOINAGE主催の「現役エンジニアが教える 0からNEMアプリケーションを開発する方法」と題したセミナーに参加。その一部内容をお届けします。ネムアプリ開発に興味のある方必見です。
修正とお詫び
本記事内において、内容の修正依頼を受け、ご指摘箇所の修正を行いました。
不確かな箇所を掲載、配信してしまい、大変申し訳ございませんでした。
NEMアプリケーションの開発方法
そもそも、NEM(ネム)とは何かご存知だろうか。
NEMは「新しい経済圏の創出」を目標に作られたプロジェクトであり、ブロックチェーン・プラットフォームだ。
NEMを利用することにより、ブロックチェーンを利用したアプリケーションを製作することが可能となる。ちなみに、NEMのプラットフォーム内などで利用される通貨はXEM(ゼム)と呼ばれる。
今回参加したセミナーでは、そのNEMアプリケーションの開発方法を、現役のNEMアプリケーション・ウェブアプリケーション開発者の岡田氏と中川氏が、わかりやすく解説している。
今回の記事では、お二方の登壇内容の一部をお届けする。
ネムとイーサリアムの違いとは
現在、ブロックチェーン・プラットフォームは数多く存在するが、その中で最も有名なのはイーサリアムだろう。
しかしイーサリアムではなく、ネムを使うメリットにはどういうものがあるだろうか。
このことを理解する為には、まずイーサリアムのコントラクト開発、分散型アプリケーションの特徴について知る必要がある。
分散型アプリケーション
イーサリアムのプラットフォームを使うことにより、分散型アプリケーション(dApps)を開発することができる。
この分散型アプリケーションのデータは、P2P方式で保存される。このP2P方式は、ネットワークに参加するノード全員が、あるデータを管理し、ソースやサービスを提供しあう方式のことを指す。
つまり、何か分散型アプリケーションをリリースした際、全てのノードが、そのソースコードなどを共有することになる。
この共有により、仮に脆弱性や改善点などが発見されたとしても、全てのデータはあらゆるノードに分散化されて一括で管理されていないため、アップデートや修正を加えることは極めて難しい。
このように、リリース後の修正が厳しいためイーサリアムのプラットフォームで分散型アプリケーションをリリースする場合、脆弱性やバグがない完璧な状態でアプリケーションを立ち上げなければならない。
中川氏は、この様なイーサリアムを基としたアプリケーションの弱点をロケットの打ち上げに例えて説明した。
この点が、イーサリアムのコントラクト開発の一番の欠点となり、岡田氏は実際にイーサリアムに触れた際の感想を以下のように述べた。
特定の条件を揃えた時に、仮想通貨を自動で動かせるのは凄いなと感じました。
すごく未来を感じるなと思ったんですけれども、一方で、一度チェーン上にリリースしたソースを簡単に直せないというのは、結構しんどいなと思いました。
NEMの特徴
その一方、ネムの特徴では、以下のようなものが挙げられる。
・イーサリアムのようにコントラクトを書けないといった特徴。その分、堅牢性が優れている。
・ブロックチェーンの中に便利な機能がプロトコルレベルで備わっていること。
・備わっている便利な機能を、WebAPIを通して利用できること。
上述した便利な機能にどのような種類には以下のような種類がある。
1.ネームスペース(ドメイン機能)
2.モザイク(トークン)発行・送信機能
3.マルチシグアカウント
4.メッセージング(平文・暗号文)
1.ネームスペース
NEMのアドレスは、下の例のように複雑で覚えづらい。
例) NC5TU51AWL3DGPA7NXI4MHFOENW
そこで、この機能を使うことにより、仮想通貨アドレスを覚えやすいように、オリジナルの「ネームスペース」とよばれる独自ドメインのようなものに紐づけることができる。
そうすることで、シンプルで覚えやすいものになる。
例) opening-line
2.モザイク発行・送信機能
これは、独自のトークン・アセットを発行できる機能となる。
APIのパラメータを設定することで様々な性質のトークンを発行することが可能となっており、以下の項目などが設定可能となっている。
例) トークンの名称設定、
トークンの供給量の調整、
トークン供給量を途中で変更許可するか否か、など
3.マルチシグアカウント
あらかじめ署名者を設定し、例えば、3人中2人の承認を得れば転送される、トークン転送に関する設定をできる機能を「マルチシグアカウント」は備えており、これにより、アカウントのセキュリティが高まる。
4.メッセージング
トークンを転送する時に、メッセージを添付することが可能になる機能。
このメッセージは、パブリックチェーンであれば、誰でも閲覧できることから、個人情報を載せないなどの注意が必要となる。
以上4つの機能を組み合わせ、NEMアプリケーション開発を行う。
NEMはコントラクトを書けないが、プロトコルレベルで備わった機能を使うことで、比較的容易で安全にブロックチェーンを利用したアプリを開発することができる。
主流のウェブ・アプリ開発手法
現在主流となっているウェブアプリケーションの開発方法は、アジャイル方式となっている。
アジャイル開発について、独立情報機構は以下のように説明している。
アジャイル開発では、ソフトウェアを提供するため、タイムボックスを使用した反復型のアプローチをとります。顧客が評価できるソフトウェアを提示し、顧客からのフィードバックを短いサイクルで得ながら、提供したものに価値があるかどうかを確認します。
つまり、まずソフトウェアを作り、すぐにリリースをする。その後、顧客などのフィードバックを元に改善し、リリースした後に再度顧客の評価を確認。
フィードバックがあれば改善する、といったようなサイクルを繰り返す手法のことをいう。
流行の移り変わりが早い現在、この手法がビジネス価値を最大化させるための手段として有効なのだそうだ。
このことを頭に入れた上で、もう一度ウェブアプリケーション開発とコントラクト開発の違いを比較してみよう。
Web開発
・開発、動作検証を終えリリース
・リリース後に、機能追加/修正を随時行う
コントラクト開発
・リリース前にコードの公開、監査、修正をしっかり行う
・最初から完璧なプロダクトをリリース
その次に、ネムとイーサリアムのプラットフォームを比較。
ネム
・プラットフォームは非中央集権。スマートコントラクトはないためコントラクトを実装する場合は別途中央集権サーバーが必要。
・リリース後の修正が可能
イーサリアム
・非中央集権
・リリース後の修正は困難
こういった観点から、ブロックチェーンを利用し、ウェブアプリを開発する際は、現状イーサリアムより修正が容易であると中川氏は述べた。
また、ネムでの開発に関して、プロトコルレイヤーで機能が提供されているため安心して利用できるというメリットも同氏は挙げている。
入門|NEMアプリケーション開発
最後に中川氏は、NEMアプリケーション開発を始めようとする初心者の方に、まずはNEMのウォレットアプリを作ることを勧めている。
その理由は、ネムの基本的な機能に触れることができるからだそうだ。
作り方に関しては、同氏がキータ(Qiita)にまとめている。
もしブロックチェーン・アプリケーション、またはネム・アプリケーションに興味のある方は、これを参考に一歩踏み出してみてはいかがだろうか。
スマートフォンへの「プッシュ通知」で、相場に影響を及ぼす重要ニュースをいち早く知らせてくれる「LINE@」の登録はこちら。大好評につき、登録者7,000名突破。
CoinPostのLINE@、おかげさまで順調に登録者増加中!
— CoinPost -仮想通貨情報サイト- (@coin_post) 2018年10月12日
・各国の規制ニュースや取引所関連速報
・BTCやアルトコインの高騰・暴落情報
・相場に影響し得る注目カンファレンス
など、国内外の「重要ファンダ」をいち早く入手したい方は是非ご活用ください。QRコードでも登録可。https://t.co/4rkZi4LwVx pic.twitter.com/7IUwECtvC0