LoginSignup
11
10

More than 5 years have passed since last update.

NEMAPIの使い方(初心者向け)

Last updated at Posted at 2018-01-13

NEMAPI使い方.png

概要

NEM APIを使って、
なんか開発してみたいけど、
何から始めれば良いか分からない
という方向けに、
NEM APIの使い方を書いてみます。

追記)NEMAPIを提供するのはスーパーノードだと書きましたが、スーパーノードでないノードもapi提供してるかもしれないです。すみません確認します。

参考

こちらの記事を参考にしました。

APIとは

APIは提供されているサービスの機能を
インターネットを通じて、
皆と共有(シェア)する時に用いられます。

NEMのAPI

NEMのAPIでは、
NEMブロックチェーンでできる多くの機能を
誰でも利用することができます。

とりあえず使ってみる

NEM APIについて、
手っ取り早く理解するには、
実際に使ってみるのが一番早いです。

リクエスト

ブラウザで以下のURLをリクエストしてみると、
http://alice2.nem.ninja:7890/account/get?address=NDBWWVBH4AK76CYZ6MICVOGVXOGNVIH2KINSVLFU

レスポンス

謎の文字列が返ってきます。

{"meta":{"cosignatories":[],"cosignatoryOf":[],"status":"LOCKED","remoteStatus":"INACTIVE"},"account":{"address":"NDBWWVBH4AK76CYZ6MICVOGVXOGNVIH2KINSVLFU","harvestedBlocks":0,"balance":39000000,"importance":0.0,"vestedBalance":36958947,"publicKey":null,"label":null,"multisigInfo":{}}}

これがNEM APIです。

~~ 完 ~~

レスポンスの詳細

もう少し詳しく説明します。
返ってきた謎の文字列をじっくりみてみます。

JSON形式

謎の文字列は、JSONという形式で書かれてます。
JSONはデータを表現するための記法の一つです。

NEM用語

このJSONデータをよくみると、
NEMの用語がいくつかあることが分かります。
address、harvestedBlocks、balance、importance...
NEM用語についてはこちらのサイトが良くまとまっています。

NEMアカウントの情報

これはNEMのアカウント(アドレス)が所有する情報です。
以下の情報が読み取れます。(他にも要素はありますが省略します。)

要素
address NDBWWVBH4AK76CYZ6MICVOGVXOGNVIH2KINSVLFU
harvestedBlocks 0
balance 39000000
importance 0.0

address

NEMのアドレスです。
このアドレスはNDBWWVBH4AK76CYZ6MICVOGVXOGNVIH2KINSVLFUです。
銀行の口座番号のようなものです。

mainnetとtestnetとmijin

ちなみに、
NEMに関するアドレスには、
mainnet、testnet、mijinがあります。
mainnetは頭文字がNから始まり、testnetはTから、mijinはMから始まります。

HarvestedBlocks(ハーベスト回数)

これまでのハーベスト回数です。
0回であることが分かります。

balance(残高)

balanceはXEMの残高を表します。
このアドレス(NDBWWVBH4AK76CYZ6MICVOGVXOGNVIH2KINSVLFU)は、
39XEM保持していることが分かります。(1000000分の1します)

Importance(重要度)

PoIの重要度です。
0.0であることが分かります。

リクエストの詳細

始めにリクエストしたURLを
意味ごとに分割してみると、
以下のようになります。

通信方式 ホスト名(ノード) ポート番号 APIパス アカウント(アドレス)
http:// alice2.nem.ninja :7890 /account/get ?address=【任意のアドレス】

通信方式

データを送受信するための方式です。
httpはwebページ等のデータを送受信する時に使われるプロトコルです。
よりセキュアにwebデータを送るためのプロトコルにhttpsもあります。

ホスト名(ノード)

NEM APIのリクエストにはノード(NIS)が対応します。
ここで、どのノードにリクエストを送るか指定します。
このサイトからスーパーノード一覧を見ることができます。

mainnetとtestnet

NEMブロックチェーンのネットワークには
mainnet(実際に利用されるネットワーク)と
testnet(実験や開発環境として利用されるネットワーク)があります。
mainnetかtestnetでapiが利用できるスーパーノードも異なるので注意です。

接続するノードの分散

毎回同じノードにリクエストを送り続けるのは良くないです。
NEMのサービスを開発する時は、
接続するノードを分散させる工夫が必要です。
また、ファイアウォールの設定でアクセスできないノードもあるので注意です。

ポート番号

データ通信の種類を識別するために用いられる番号です。
NEMapiのデータはポート番号7890が用いられるのが一般的です。

APIパス

ここでNEMに関する、どんな情報を取得したいか送りたいかを指定します。
以下によく使いそうな例をリストにします。
より詳しく知りたい方はこちら

APIパス 概要
/heartbeat NIS(SN)が稼動しているかどうかを判断します。
/account/get アカウントのデータ(AccountMetaDataPair)を取得します。
/account/harvests アカウントの収穫情報オブジェクトの配列を取得します。
/account/mosaic/owned アカウントが所有するモザイク情報を取得します。
/account/transfers/incoming アカウントが受信したトランザクションデータを最新のものから25個取得します。(?)
/account/transfers/outgoing アカウントが送信したトランザクションデータを最新のものから25個取得します。(?)
/account/transfers/all アカウントが送受信したトランザクションデータを最新のものから25個取得します。(?)
/account/unconfirmedTransactions アカウントが送信者または受信者であり、まだブロックに含まれていないトランザクションの配列を取得します。
/chain/height ブロックチェーンの現在の高さを取得します。

アカウント(アドレス)

アドレスの指定をします。
?address=
の後にアドレスを指定します。
ハイフンを除いた状態で指定することに注意してください。

任意のアドレス情報を取得する

【任意のアドレス】に利用したいアドレスを入力すれば、
そのアドレスに関する情報を閲覧できます。
http://alice2.nem.ninja/account/get?address=【任意のアドレス】

まとめ

プログラミング経験もそこまでない方(僕のような)だと、
NEM APIを使ってみたいがどうすれば良いのか
さっぱりわからないと思います。
しかし、実はNEM APIを使うことそれ自体は
とても簡単で、
決められたURLを送るだけです。

問題は、
このAPIを使ってどうサービスを設計するか、
プログラミングしていくか、
というところが一番大変です。

今後

NEM APIについて理解できた後は、
さっそく簡単なものから、
作ってみるのが良いです。

例えば、Faucetや掲示板です。
この二つは今までに多くの方が作ってみている印象があります。
そのぶん、ネット上に情報が多く存在しているので、作りやすいと思います。

開発で役立つNEMの技術系資料

僕が、NEM APIを使って開発する時に利用した資料を紹介します。

@nem_takanobuさんの記事
主に、javascriptでのNEM APIを使う方法が書かれています。@nem_takanobuさんの記事は一通り目を通すことをおすすめします。

nem advent calender 2017
NEMのアドベントカレンダーです。こちらもたくさんの方がNEMに関する記事を書いてくださっています。

技術・開発資料
NEMの技術系資料はこのサイトにほとんどまとまっています。

NEMの基本的知識

NEMに関する非技術的な知識を身に着けたい人向けにおすすめのNEM記事を
こちらにまとめてみました。(僕のサイトです...)

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10