Androidでtermuxを使ってnode.jｓ+WEBサーバー

前書き

* このスライドはニッチでマニアックです
* Android以外の利用方法はないです。
* node.jsは完全なド素人です。
* 多分、世間的にはゴミスライド 

---

## やりたかったこと１

* AndroidでHTTPサーバーを使いたい
* Androidでnode.jsを動かしたい
* Androidでnpmを使いたい

---

## やりたかったこと２

* BASIC!でHTTPサーバーと連携したい

> BASIC!にはHTTPサーバー機能が無い為

---

### ちなみにBASIC!はAndroidで動くBASICインタープリタ。
### 詳しくは以下をどうぞ。

* [AndroidでBASICを使う(Qiita)](http://qiita.com/basictomonokai/items/25bcb21ec69c00e9ad23)

---

## 無料の電子書籍もあります。

* [BASIC！の無料電子書籍(初心者向)](https://peraichi.com/landing_pages/view/basictomonokai)

![IMG_sss.jpg](https://qiita-image-store.s3.amazonaws.com/0/35574/2032b1e0-767c-0542-42e5-13d2b110ac1b.jpeg)

---

## 調べた事

* 非ROOT端末でnode.jsを動かす方法があるらしい
* 実際に動かしている動画があった
* node.jsのHTTPサーバの情報もあった
* 自信がないのでteratailに聞いてみた

---

## 非ROOT端末でnode.jsを動かす方法があるらしい（１）

* [Building a Node.js application on Android part1](https://medium.freecodecamp.com/building-a-node-js-application-on-android-part-1-termux-vim-and-node-js-dfa90c28958f#.6yxqbym9h)
* [Building a Node.js application on Android part2](https://medium.freecodecamp.com/building-a-node-js-application-on-android-part-2-express-and-nedb-ced04caea7bb#.cxurl1i3f)

![IMG_ttt.JPG](https://qiita-image-store.s3.amazonaws.com/0/35574/884b746a-bc3d-4099-397a-1760a086b6b1.jpeg)


---

## 非ROOT端末でnode.jsを動かす方法があるらしい（２）

* [プレイストア-termux](https://play.google.com/store/apps/details?id=com.termux&hl=ja)

→Android5.0以上で動きます。
![IMG_uuu.JPG](https://qiita-image-store.s3.amazonaws.com/0/35574/35d4e704-2b9d-4c25-38e3-98da6f653311.jpeg)

---

## 実際に動かしている動画があった

[Termux node js for Android](https://www.youtube.com/watch?v=lnlH_yvYwE0)
![youtube動画表示エリア](http://img.youtube.com/vi/lnlH_yvYwE0/0.jpg)

---

## node.jsのHTTPサーバの情報もあった

* [Web コンテンツを開発するための Node.js 簡易 Web サーバ](https://blogs.msdn.microsoft.com/osamum/2015/05/29/web-node-js-web/)
* [Node.jsのhttp-serverっていうコマンドラインのウェブサーバーが便利](https://firegoby.jp/archives/5706)

![IMG_vvv.JPG](https://qiita-image-store.s3.amazonaws.com/0/35574/93c694a7-fd46-384a-9614-10fdf7eb3ca1.jpeg)


---

## 自信がないのでteratailに聞いてみた

* [Androidにtermuxを利用してNode.jsを動かす方法をお教えください](https://teratail.com/questions/58888)

→手順を作って聞いてみたが回答なし　(T_T)
→もうやるしかない… 

![IMG_www.JPG](https://qiita-image-store.s3.amazonaws.com/0/35574/1431d9a7-5f3f-0ded-db80-2ccdbd490008.jpeg)

---

## 試した環境→たったこれだけ

* タブレット TAB i108-s960

> 低スペックの激安タブレット
> クワッドコア/RAM 1GB/ROM 16GB/Android 5.1

* USBキーボード　(CTRL+C等が使える）

![IMG_xxx.JPG](https://qiita-image-store.s3.amazonaws.com/0/35574/3f6dc649-6278-e31c-d7b1-8c2be61df8cb.jpeg)

---

## おおざっぱな手順

* termux入れる
* node.js入れる
* ディレクトリ作る
* server.js default.html作る
* nodemon http-server入れる
* 試す

---

##手順(1)

１. termux インストール
２. termux 起動
３. apt update
４. apt upgrade

---

##手順(2)

５. apt install coreutils
６. apt install nodejs

> （途中で…） Do you want continue? y

７. termux-setup-storage
８. cd /storage

---

##手順(3)

９. cd sdcard0

>  機種により異なる

１０. cd android/
１１. cd data/
１２. cd com.termux/

---

##手順(4)

１３. cd files/
１４. ls

> なにもないハズ

１５. mkdir nodejstuts
１６. ls

> nodejstutsが見えるハズ

---

##手順(5)

１７. cd nodejstuts
１８. ls
１９. server.jsをファイラーで作る

> nodejstutsに新規でserver.jsをつくる

２０．テスト用のserver.jsを編集

> 元ネタ [Web コンテンツを開発するための Node.js 簡易 Web サーバ](https://blogs.msdn.microsoft.com/osamum/2015/05/29/web-node-js-web/)

---

##手順(6)

２１. default.htmlをファイラーで作る

> nodejstutsに新規でdefault.htmlをつくる

２２. テスト用のdefault.htmlを編集

> テスト用なので適当

---

##手順(7)

２３. npm install -g nodemon

> WARNINGが出たがそのまま行けました。

２４. nodemon server.js

---

##手順(8)

２５. タブレットのchromeから http://127.0.0.1:8086

> default.htmlの表示を確認

２６. Ctrl+Cでserver.jsを停止
２７. npm install -g http-server
２８. http-server

---

##手順(9)

２９．タブレットのchromeから http://0.0.0.0:8080/default.html

> default.htmlの表示を確認

３０. Ctrl+Cでhttp-serverを停止
３１. exit

> termuxの終了

---

## テスト結果

* ちゃんとdefault.htmlが表示できました
* teratailの質問を自分で解決済みにしました

---

## 余計なテスト

[BASIC!との連携テスト動画](https://www.youtube.com/watch?v=eImapWLuZkA)
![youtube動画表示エリア](http://img.youtube.com/vi/eImapWLuZkA/0.jpg)

---

## まとめ

* Androidでもnode.jsは動く
* 低スペックタブレットでも動く
* BASIC!からも連携できる
* 私以外は誰も喜ばない(^_^;)

---

## おしまい　 [BASIC!友の会](http://basic.amsstudio.jp)