こにゃには。
今回は、ブログタイトルの通りRaspberry Pi Zero WとElectronでBLEを使ったGUIアプリを作ってみようと思います。(成功するかはわかりませんが。。。)
なぜ、この組み合わせにしたかと言うと、Raspberry Piだと本体サイズがちょっと大きいですし、より小さいデバイスでGUIアプリを作りたかったからです。
ただ、Linux上でGUIアプリを作るとなると、色々とめんどくさそうですし、自分の知っている言語orプラットフォームで簡単に作りたいと思っています。(新しく覚えるのがメンドクサイ☆彡)
そこで、多少は知っているWeb系のJavaScriptとCSSで開発ができるマルチプラットフォーム対応のElectronにしたわけです。
本当は、Windows IoT Coreが一番楽なのですが、残念ながらRaspberry Pi Zeroに対応していません。
Windows IoT Coreは、CPUがARMv7以降対応で、Raspberry Pi Zeroは、CPUがARMv6なので。
あと、このCPUの違いが色々と影響するらしく、Raspberry Piの手順で動いても、Raspberry Pi Zeroでは動かない要因になるみたいです。結果失敗する可能性大です。
とりあえず、世界のすごい人たちの知恵をパクリ借りつつ実現したいと思います。
まずは、Electronの簡単なサンプルアプリが動くまでの環境を構築しようと思います。
Raspberry Pi Zero Wと公式の「2018-10-09-raspbian-stretch」をSDカードに書き込み起動します。
次にnode.jsのインストールになりますが、通常の手順ではインストールできないらしい(試してないけど☆彡)ので、以下のサイトでRaspberry Pi Zero用のnode.jsインストールスクリプトが公開されています。(素敵!)
上記のサイトから、インストールバージョンのスクリプトをダウンロードして実行するだけです。(私は、lts(Long-term supportバージョン)にしました。)
$ sudo su # wget -O – https://raw.githubusercontent.com/sdesalas/node-pi-zero/master/install-node-v.lts.sh | bash |
一度、ルートになってシェルスクリプトを実行します。シェルの実行が完了すると、node.jsのインストールが完了しています。
$ node -v v8.12.0 |
上記のコマンドで正しくnode.jsのバージョンが表示されれば、インストール成功です。
次に、Electronをインストールします。
$ sudo npm install electron -g |
$ sudo npm install electron -g /opt/nodejs/bin/electron -> /opt/nodejs/lib/node_modules/electron/cli.js> electron@3.0.6 postinstall /opt/nodejs/lib/node_modules/electron > node install.js/opt/nodejs/lib/node_modules/electron/install.js:49 throw err ^Error: EACCES: permission denied, mkdir ‘/opt/nodejs/lib/node_modules/electron/.electron’ npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! electron@3.0.6 postinstall: `node install.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the electron@3.0.6 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2018-10-29T08_13_33_125Z-debug.log |
案の定失敗しました。困りました。。。正攻法だとインストールできなさそうです。
うーん。仕方がないので、出力されたエラーメッセージでググると同じエラーで質問している人がいました。
https://github.com/npm/npm/issues/17268
英語はよくわからんですが、スレッドの下の方で「このやり方で私は治ったよ」的な発言があったので、そのコマンドを使ってみます。
sudo npm install -g electron –unsafe-perm=true –allow-root |
結果は異なりましたが、やっぱり駄目です。
Downloading tmp-2717-0-electron-v3.0.6-linux-armv6l.zip Error: GET https://github.com/electron/electron/releases/download/v3.0.6/electron-v3.0.6-linux-armv6l.zip returned 404 |
ただ、出力されたエラーメッセージを見ると、armv6用のelectronをダウンロードしようとして、404になっているっぽいです。これは困った。
https://github.com/electron/electron/issues/8765
ここで同じようにARMv6でElectronを動かそうとしていますが、なんだか色々とあり、ARMv6で動かすのは現実的じゃなさそうです。そもそもElectronですでにARMv6はサポートされていないっぽいです。※以前はされていたみたいですが。。
古いバージョンのElectronを持ってくればいけるかもしれませんが、あんまり現実的じゃなさそうです。
そもそもRaspberry Pi ZeroでElectronを動かす必要性がないような。。。特段Electronで作らずともただのWebアプリを作ってブラウザで動かせば十分な気がしてきました。Chrome(であれば、Web Bluetooth APIがサポートされていますし。Raspberry Pi Zeroで動くは、不明ですが)
次回は、Raspberry Pi ZeroでWeb Bluetooth APIに挑戦してみようと思います。