カテゴリー
【簡単nodejsアプリ開発】NexeでCLI版スネークゲームを作ってみる・前編
※ 当ページには【広告/PR】を含む場合があります。
2021/12/01

当初Bash版のシェル芸スネークゲームを作成して、一人悦に浸り遊んでみようと思っていましたが、殊の外面倒になってきた折、nodejsアプリケーションをCLIツールとしてパッケージングしてくれるユーティリティ・
最近はGoogle検索で「スネークゲーム」と検索するとGoogle検索ゲームでそのまま遊べるようになっているので、わざわざCLIでスネークゲームを一から作る必要は無いかも知れません。
個人的な目論見として、今後Tensorflowとの併用などで機械学習の勉強にも使えるように拡張目的で作ってみます。
nexeプロジェクトの作成
とりあえずいつものインストール中のnodejsの環境です。
$ node --version
v14.18.0
$ npm --version
7.24.1
$ yarn --version
1.22.13
そこから
snake_nexe
$ mkdir snake_nexe
$ cd snake_nexe/
$ yarn init
yarn init v1.22.13
#...中略
question private:
success Saved package.json
プロジェクトが出来たら、nexeをインストールしましょう。
$ yarn add nexe -D
yarn add v1.22.13
info No lockfile found.
[1/4] Resolving packages...
#...省略
└─ yauzl@2.10.0
Done in 7.14s.
これでnexeアプリのビルド環境が整いました。
出来立てほやほやのpackage.jsonは以下の内容になっています。
{
"name": "snake_nexe",
"version": "0.0.1",
"description": "To execise nexe with Snake Game.",
"main": "index.js",
"author": "taconocat",
"license": "MIT",
"devDependencies": {
"nexe": "^4.0.0-beta.19"
}
}
2021年12月現在で、nexeをパッケージインストールするとベータのv4が入るようになっています。
安定版はまだv3ですので、そちらを使いたい場合には
"nexe": "^3.0.0"
ちなみにビルド後のnexeアプリの名前はデフォルトでpackage.jsonのnameフィールドから拾われて
snake_nexe
またmainフィールドのjsソースコードがエンドポイントファイルになります。
ここでは
index.js
$ touch index.js
まずはnexeでビルド出来るか確かめてみましょう。
index.jsに以下の内容で編集します。
console.log('Hello, my first Nexe app!');
それではビルドしてみます。
$ npx nexe index.js
ℹ nexe 4.0.0-beta.19
✔ Downloading pre-built Node.js
✔ Finished in 0.431s
Error: https://github.com/nexe/nexe/releases/download/v3.3.3/linux-x64-14.18.0 is not available, create it using the --build flag
See nexe -h for usage..
...なんだかエラーが出ました。
ビルドターゲットを省略すると現在のシステム環境から読み取ってきてくれる仕組みのようですが、
例えば、64bitのDebianOSで、node v14相当のアプリを動かしたい場合には、以下のように
--target
$ npx nexe index.js --target=linux-x64-14.15.3
ℹ nexe 4.0.0-beta.19
✔ Downloading...100%
✔ Compiling result
✔ Entry: 'index.js' written to: snake_nexe
✔ Finished in 90.545s
今度はビルドが成功したようです。
実行ファイルが出来たら、ターゲットにしたOS環境にこのバイナリを持ち込んで、
$./snake_nexe
Hello, my first Nexe app!
とやると簡単にクロスプラットホーム対応のCLIアプリが作れます。
ということで、nexeを使ってみた所管ではCLIアプリ専用の
スタンドアロンなnodejsアプリケーションとして使えるという意味では重宝できそうですが、結果はnodejsのランタイムやライブラリ等を詰め合わせているだけなので、ビルド後の実行ファイルはかなりデカイです。
$ du -h snake_nexe
70.7M snake_nexe
特にnode v14やv15では総容量70MBを超えてきます。
nexeの特性上容量のデカさは仕方ないと割り切って、配布する時にファイル圧縮するなどで工夫してみてください。
またお目当てのビルドターゲットが無かった場合には、
$ npx nexe index.js --build
ソースからビルドすると環境によってはビルドまでの時間がかかります。
本番アプリ以外で毎回ソースコードビルドするのは現実的ではないので、プレビルドされているターゲットを指定して使ったほうが良いでしょう。
まとめ
今回は
とても簡単にクロスビルドに対応したCLI専用のnodejsアプリや自作シェルコマンドが作れるので、個人的にはスネークゲーム以外にも今後色々と楽しく使える気がします。
ということで、
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー