ラズパイZeroWでなでしこ３を動かしたい！　あるいは、armv6lのラズパイに最新(v12以上)のnode.jsを入れたい！

 ※ラズパイZeroWでなでしこ３を使う最新（2023/2/9現在）の記事を公開したので、そちらもご覧ください。

https://qiita.com/snowdrops89/items/498f7917b9d86eecd71b

# やったこと
1. [今さらながら、ラズパイをSSH接続とVNC接続でノートパソコンから操作出来るようにする。](https://qiita.com/snowdrops89/items/2378046916f0cfb9fbd1#%E3%81%AA%E3%81%A7%E3%81%97%E3%81%93%E4%BB%A5%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99)
1. [ラズパイZeroWになでしこ３をインストールして、Hello Worldする。](https://qiita.com/snowdrops89/items/2378046916f0cfb9fbd1#%E3%82%84%E3%81%A3%E3%81%A8%E3%81%AA%E3%81%A7%E3%81%97%E3%81%93)
1. [RaspberryPi Zero W (armv6l)に、最新(v12以上)のnode.jsをインストールする。](https://qiita.com/snowdrops89/items/2378046916f0cfb9fbd1#%E6%96%B0%E3%81%97%E3%81%84nodejs%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9F%E3%81%84)

# 発端
　YouTubeの[なでしこ公式チャンネル](https://www.youtube.com/channel/UCF78j9YzEunzh9ZLmaGC0mA)で、『なでしこ3でラズパイを動かしてみよう！』とゆうことだったので、ノリで買ったはいいけど、Raspbianを入れただけでもう三年がとこ放置している Raspberry Pi Zero WH を引っ張り出す。
![RaspberryPi ZeroWH.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561177/2b7b4533-72bf-267f-607b-4ae686f120d5.jpeg)
　ちっちゃ！

# なでしこ以前の準備
　今回やった私の覚え書きです。ムダに長いですスミマセン。読み飛ばして下さい。
　SSH接続とVNC接続で、ノートパソコンから操作出来るようにしました。

## OS
　Raspbianだけは既に入れてある。
　どうやらRaspbianからRaspberry Pi OSに名称かわったっぽいけれど。

> https://www.raspberrypi.org/software/

　とりまアップデート。

```
sudo apt-get update       # パッケージリストの更新
sudo apt-get upgrade      # パッケージのアップグレード
sudo apt-get dist-upgrade # ディストリビューションの更新
```

　でぃすとりびゅーしょん？　とは何ぞ？？（ほったらかしすぎたせいで、なかなかな時間が掛かるので、お勉強している）

> https://wa3.i-3-i.info/word12473.html

　Linuxのカーネルとかソフトウェアとか必要なものをひとまとめにしたものってことラシイ。それをOSって言うんじゃないのか。りなっくすさんは難しい；
　
　途中、y/nの入力を求められる場面もあるので、完全放置じゃいけません。
　読めもしないけど、すべてyで進めて行きます。

## SSH
　ケースとminiHDMI変換のついたやつを買っていたからTVに映せるんですけれどね。
　前のOSアップグレードも直でマウス差して、Bluetoothのキーボードつないでやったしねｗ
　やっぱり、いちいちNintendo SwitchからHDMIケーブルを引っこ抜かなきゃならないの面倒だから、ノートパソコンでできるようにしたい。
　と言ってもTVに映してGUIが使えるから設定変更はカンタンで、[左上のアプリケーションメニュー]→[設定]→[Raspberry Piの設定]→[インターフェイス]でSSHを有効にチェックするだけ！
　[TeraTerm](https://forest.watch.impress.co.jp/library/software/utf8teraterm/)をだうんろーどしてくる。

　ホストは、`raspberrypi.local`
　または、ターミナルで

```
ifconfig
```

　`wlan0:`の`inet`の価がIPアドレス。
　
　`SSH`にチェック。SSH versionは`SSH2`。
　次の画面で、

> ユーザー名：`pi`
> パスワード：`raspberry`
>　（実際は、[Raspberry Piの設定]→[システム]でパスワードは変更しておく）

　緑と青でラズパイのコマンドプロンプトが表示されたら成功☆

```
pi@raspberrypi:~ $
```

　できました！
　コレで、ノートパソコンからラズパイが操作出来るようになりました。やったね！

### めも

```
sudo poweroff  # 終了
sudo reboot    # 再起動
```

## VNC
　でも、ワタクシやっぱりGUIがないとダメな人だから。
　TVに映ってるとおりを、ノートパソコンに映したい！
　RealVNCってものを使えば、出来るそうですよ☆
　とゆうわけで、[Raspberry Piの設定]→[インターフェイス]でVNCを有効にチェック。
　ラズパイ側のVNCサーバーが起動して、右上に、VNCのアイコンが発生。
　ここでパスワードを設定。
　おっと、これで`ifconfig`とかしなくても、IPアドレス見れるじゃん。
　[VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/windows/)をだうんろーどしてくる。
　上のバーに、ホスト名`raspberrypi.local`、またはIPアドレス。
　次の画面でパスワード。
　映りました！　やったね！！

　ちなみに、VNCのアプリを入れれば、スマホにも映すことが出来るんですが、スマホの場合はVNC Viewerよりも[bVNC Free](https://applion.jp/android/app/com.iiordanov.freebVNC/)のほうがイイ感じでした。
　VNC Viewerでは、マウスカーソルを指でずるずる目的の場所まで引っ張っていってからタッチしなければならないとゆう、壊滅的な操作性なんですが、bVNC Freeは、タッチしたとこにマウスカーソルが飛んできてくれるんです☆

# やっとなでしこ
## なでしこ３とは
　日本語でプログラム出来るプログラミング言語です。
　v1はWindowsだけですが、v3はWebブラウザで動くのでいろんな端末で動きます☆

https://nadesi.com/doc3/index.php?FrontPage

　なでしこ３はブラウザで動きますからね、ラズパイZeroWはWi-Fiが付いてますからね、Chromiumさんで[簡易エディタ](https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF)を開けばすぐ出来ますけど、もちろんそうゆうこっちゃ無い。
　node.jsが動く端末にはインストールして使うこともできるんですね。web版とは違うnode版の命令が使えたりします。

## 動画
　とりあえず、動画見ましょう。
　[YouTubeなでしこチャンネル 29回目『なでしこ3でラズパイを動かしてみよう！』](https://www.youtube.com/watch?v=2axfdUJqT7A)

## なでしこ３のインストール
　動画を見て驚いたのは、えっ、なでしこ３のインストール、超簡単になってないですか？！？！
　
　実は買った当時も１度、なでしこ３を入れてみたことはみたんです。
　「なでしこ3を動かすにはNode.jsが必要」とゆうわけで、まずはNode.jsをインストールする必要があって、さらにNode.jsを最新版にアップデートと、慣れてる人にはどってこと無いのでしょうが、コマンド多くてなかなかめんどーでした。
　しかも、アップデート中に謎のWARNが出まくり、結構な時間を掛けてようやく終わっても、やっぱりうまく行ってなくてなでしこ３が入れられなかったりと、単に私が慣れてなくて無能だったせいだと思いますが、とにかく相当な艱難辛苦だった記憶があります。（TVに映して違うキーボードだったから、若干操作も不自由でしたね。SSH接続大事！ｗｗｗ）
　ともかく結局ナニが悪くて躓いたのかも、最終的にどうやって出来たのかも分からず・・・でしたorz
　
　・・・が！　なんと！！

>　[Raspberry Piでなでしこ3を動かそう](https://nadesi.com/doc3/index.php?ラズパイで動かそう)

　簡単インストールコマンド、たったの一行！！！
　必要のコマンドが全部順番に実行されるようになっているんですね。
　とゆうわけで、もちろんアップデートも出来るだろうけど、一回Node.jsもなでしこ３もアンインストールして、何事も無かったかのように１からやってみます。

```
curl https://raw.githubusercontent.com/kujirahand/nadesiko3/master/installer/chromeos.sh | /bin/bash
```

　こんだけ！　`コピーする`ボタンもあるとゆう親切設計☆
　なかなかな時間がかかるので、なんかしながら地道に待ちます。

```
npm WARN notsup Unsupported engine for fs-extra@10.0.0: wanted: {"node":">=12"} (current: {"node":"10.24.1","npm":"6.14.12"})
npm WARN notsup Not compatible with your version of node/npm: fs-extra@10.0.0

+ nadesiko3@3.2.24
added 109 packages from 67 contributors in 122.013s
```
　入りました！
　バージョンは3.2.24。（2021/7/27現在）
　・・・が、またまた今回もエラーが出ていますよヽ（；´Д｀）ノ
　前回の、びっちりWARNだらけになった時とは違うけど、どうもさくっと終わらないにゃぁ(´Д⊂ヽ
　どうやら、nodeのバージョンがサポート外だと、12以上入れろと言ってるラシイ・・・
　でも、とりあえず、なでしこさんは一応動きました☆

```
cnako3 -e 「こんにちは世界」と表示。
→こんにちは世界
cnako3 -e ナデシコバージョンを表示。
→3.2.24
```

　できた！

# 新しいnode.jsを入れたい
## node.jsのバージョン・・・
　わりと最近、なでしこ３のnode.jsの対応バージョンがv12以上に変更されたっぽいのですよね。

> https://github.com/kujirahand/nadesiko3/issues/1039

　ところが！

```
n lsr
```

　をしてみると・・・

```
11.15.0
11.14.0

（中略）

11.1.0
11.0.0
10.24.1
10.24.0
10.23.3
```

　一番新しいのは`11.15.0`だって！
　（インストールされたのは偶数番の最新`10.24.1`）
　いろいろケンサクすると、ラズパイZeroWはarmv6lで、armv6lはnode.js v12から、サポート外となってしまったらしい。ひ、ひどい(´Д⊂ヽ

> https://scrapbox.io/yuta0801/Node.js_v12%E3%81%8B%E3%82%89armv6l%E3%81%AE%E5%85%AC%E5%BC%8F%E3%83%93%E3%83%AB%E3%83%89%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84

　でも、非公式ビルドがあるとゆうことが分かりました。

> https://unofficial-builds.nodejs.org/download/release/

　最新は、v16.5.0（2021/7/27現在）みたい。

## インストールする

　なでしこ３、動くっちゃあ動くから、いいっちゃあいいんだけど、なんか悔しいし折角だから入れてみたい！
　入れ方はここに書いてある。

> https://github.com/nodejs/help/wiki/Installation

　英語だけど負けません！　ぐーぐる翻訳さん助けて（＞＿＜）／
　・・・こんな感じ？

```
#環境変数
VERSION=v16.5.0
DISTRO=linux-armv6l
#だうんろーど
sudo wget https://unofficial-builds.nodejs.org/download/release/$VERSION/node-$VERSION-$DISTRO.tar.xz
#いんすとーる先
sudo mkdir -p /usr/local/lib/nodejs
#いんすとーる
sudo tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs
```

　そして、さらに、`.profile`ファイルを編集しなきゃならないラシイ。
　えっ、`vi`なんてしりませんよ。ファイルマネージャーから`/home/pi/.profile`を探してテキストエディタで開いたよｗ　VNCがだいかつやくだね！ｗｗｗ
　最後にコレを追加。

```
#node.js
VERSION=v16.5.0
DISTRO=linux-armv6l
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH
```

　編集して保存したら、profileを更新。。

```
. ~/.profile
```

　テスト。

```
node -v
→16.5.0
npm version
→{
  npm: '7.19.1',
  node: '16.5.0',
  v8: '9.1.269.38-node.20',
  uv: '1.41.0',
  zlib: '1.2.11',
  brotli: '1.0.9',
  ares: '1.17.1',
  modules: '93',
  nghttp2: '1.42.0',
  napi: '8',
  llhttp: '6.0.2',
  openssl: '1.1.1k+quic',
  cldr: '39.0',
  icu: '69.1',
  tz: '2021a',
  unicode: '13.0',
  ngtcp2: '0.1.0-DEV',
  nghttp3: '0.1.0-DEV'
}
npx -v
→7.19.1
```

　できました！　やったね☆
　なでしこさんも、無事動きました。よきーよきー♪

# おわります
　結局今回も、node.jsに振り回され、簡単にはいきませんでした。
　node.jsツラい(´Д⊂ヽ

　でも、おそらく新しいラズパイではこんなことも無く、一行でカンタンにインストールが完了するハズ！

　折角頑張ったから、もう少し何か遊んでみたい。