病みそで病まないSEのサラリーマン脱出奮闘記

毎日病みそうで会社勤めからなんとか脱出を図ろうとするSEのブログ

素人でもできるWindowsでのNemの開発!!エラーとかけっこうでたけど頑張った!その1

f:id:infoprocesmaster:20180114123350j:plain
NEM

こんにちは!病み病みサラリーマンです。

最近流行りの仮想通貨!!特に私はNEMネム)に興味があります。
NEMってのは仮想通貨XEM(ゼム)を発行しているプロジェクト名です。

ビットコインとかイーサリアムとか色々な仮想通貨がある中で、私がこのNEMに注目している理由の一つがアプリケーションを作成するのが簡単ということです。簡単??ってことは、俺にもできるか!!
と思い立ち、ちょっとやってみました。。。

けど、Node.jsとか使ったことないし、なんかサイトと同じようにやったけどエラーでるし、、そもそも、俺のパソコンWindowsだし。。。

と少しくじけそうになりましたが、なんとかサイト通りの出力がでるようになったので、そこまで躓いた軌跡をここに記します。
きっと、同じように躓いた人もいるはず!!

目標は下記のサイトに載っている通りに出力がだせること。ってこれだけでも素人、少なくとも私は躓きました。
これはNEMのテストネットワーク(XEMとかをやり取りする本当のネットワークではない!)で残高照会を表示するプログラムのようです。

【初心者向け】NEM LibraryとJavaScriptを使った開発にちょっとだけ入門してみる - Qiita

1.まずはNode.jsが動く環境を準備しよう!!!

NEMの開発って言ったのにいきなりNode.js??って感じなんですけど、NEMの開発を行う際には、このNode.jsってのを動かせる環境を作らなくちゃならいんです。色々なサイトには、そこの最初の部分が書かれてないから、どうやって動かすのか?って迷うと思うんですけど、まずはこの環境を用意する必要があります。

手順は2つです。

1.1Nodistのインストール

github.com

上記から下記の部分をクリック!!
f:id:infoprocesmaster:20180114130915p:plain

NodistってのはNode.jsを動かすプログラムのバージョン変更等を簡単に行えるようなWindows用のソフトです。

このNode.jsを動かすプログラムは頻繁にバージョン変更が行われ、Nemで対応しているバージョンを使うにはバージョンを古くする必要があったりするので
これを入れとくと便利です。

1.2windows-build-tools をインストール

次に、必要なツール類のインストールです。下記のようにPowerShell管理者権限で起動してください。
f:id:infoprocesmaster:20180114131210p:plain

そして、下記コマンドを実行するとインストール完了です。

npm install -g --production windows-build-tools

ここまでできたら、コマンドプロンプトを起動して、「node -v」と打ってみましょう。
v6.2.2とかバージョン情報が出力されたらインストールは成功してます。




2.Node.jsでHello Worldを出力だ!!!

次に、適当なところに適当なフォルダを作成します。
例えば下記のようにデスクトップの下に、nem-library-sampleファルダを作成します。

C:\Users\XXX\Desktop\nem-library-sample

このsampleファルダの下にhello.jsというファイル名でテキストファイルを作成し、そこに下記のプログラムを記載して保存します。

console.log("Hello world!");

下記の通り、Hell world!と出力されたら成功です。
f:id:infoprocesmaster:20180114132835p:plain

3.必要ツール(yarn、nemライブラリ、babel)のインストール

ここからが、やっとNEM開発の話になります。
下記で、NEM開発に必要なライブラリをインストールしてください。

適当なNEM開発用のフォルダを用意して、そこで下記コマンドを実行してインストールをしてください。
私は、下記フォルダの下で作業をしてます。

C:\Users\XXX\Desktop\nem-library-sample

■yarn…FacebookGoogle、Exponent、Tildeによって開発された新しいJavaScriptパッケージマネージャー(npmみたいなもん)
npm install -g yarnをコマンドプロンプトから実行してyarnのインストールを行います。
インストールが完了したら、「yarn -v」でバージョン情報が出力されるか確認してください。

nemライブラリ…NEMプログラムを動かすのに必要なプログラム群
yarn add nem-library

■bable…Node.jsでまだサポートされていないES6の書き方をNode.jsが理解できる形に変換(トランスパイル)してくれるツール
※URLのサイトでは、上のbabelのインストールコマンドが記載されてなかったので、最初コンパイルでエラーになりました。
babelのインストールなんて開発者の中では当たり前なのでしょうか??

npm install -g babel-cli
yarn add -D babel-cli babel-preset-env





4.javascriptプログラムをbabelで動かす準備

babelでコンパイルするためには下記の2つのファイルが必要です。
■.babelrc
「.babelrc」というファイル名でファイルを作成し、下記を記載します。

{
  "presets": ["env"]
}

Windowsの場合、「.」から始まるファイル名を作ろうとするとエラーとなりますので、適当なファイル名「PPP」等でファイルを
作成して、コマンドプロンプトから下記コマンドでファイル名を変更してください。
move PPP .babelrc

■package.json
「package.json」というファイル名でファイルを作成し、下記を記載します。

{
  "dependencies": {
    "nem-library": "^0.11.2"
  },
  "scripts": {
    "build": "babel src -d lib"
  },
  "devDependencies": {
    "@babel/cli": "^7.0.0-beta.32",
    "@babel/preset-env": "^7.0.0-beta.32",
    "babel-preset-env": "^1.6.1"
  },
  "license": "ISC"
}

上記はURLのサイトに一番下の "license": "ISC"を足しました。
これは、このあとbabelでコンパイルした際にlicenseがないっていうWARNINGがでたためです。

5.NEMのコード作成と実行

上記で作成したフォルダの下にsrcフォルダを作成して、そこに「index.js」というファイル名で下記のプログラムを記載します。

私の場合は下記となります。
C:\Users\XXX\Desktop\nem-library-sample\src

■index.js

import {AccountHttp, NEMLibrary, NetworkTypes, Address} from "nem-library";

// Initialize NEMLibrary for TEST_NET Network
NEMLibrary.bootstrap(NetworkTypes.TEST_NET);

const address = new Address("TALICEROONSJCPHC63F52V6FY3SDMSVAEUGHMB7C");

const accountHttp = new AccountHttp();
accountHttp.getFromAddress(address).subscribe(accountInfoWithMetaData => {
    console.log(accountInfoWithMetaData);
});

次に、下記コマンドでプログラムをコンパイルします。
yarn run build

コンパイルすると、下記のWARNINGがでました。
warning You are using Node "7.2.1" which is not supported and may encounter bugs or unexpected behavior. Yarn supports the following semver range: "^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0"

nodeのバージョンが適合していないというワーニングのようです。
なので、コマンドプロンプトから下記コマンドを実行して、nodeのバージョンを変更しました。

nodist + 6.2.2

もう一度、これでコンパイルコマンドをうつとWARNINGなく正常終了します。

コンパイルが成功すると、libフォルダは以下に下記ファイルができてます。
lib/index.js

これを下記コマンドで実行します。
node lib/index.js

すると、下記のような結果が返信されて見事成功となります。
f:id:infoprocesmaster:20180114141230p:plain




長かった、、、、けっこう、ところどころ苦戦しましたが、なんとかスタートラインに
立てた気がします。

次はもうちょいがんばります!!!!!!

NEMのアプリ作るぞ☆