【Node-Red】をChromebookのDocker経由で使用してみる

Chromebookを使っているとネットワークがつながらないときにやることがなくなるという不安はわりとあります。(そういうことも少なくなりつつありますが) たとえばオンライン上にあるIBM Cloudに入れてあるNode-Redで作業できなくなるなんてことも!Windows PCであればローカルにインストールしておけば問題はないのですが…

f:id:ueponx:20200321163200p:plain

【参考:Windowsで実行】 nodered.jp nodered.jp

せっかく軽いChromebookを使用しているのに、Windows PCを持ち歩くのはなんか負けた気がします。ということで、ねっと環境のないChromebookからNode-REDを使えるようにしてみようと思います。といっても、そこまで難しいことはありません。Dockerを使用すれば、Linux(ベータ版)のコンソールから簡単に実行することができるようになります。

Dockerのインストール

以前のエントリーでもChromebook(ChromeOS)Dockerをインストールしていました。それを参考にDockerをインストールしていきます。

【Dockerインストール関連参考】

docs.docker.com

念のためアンインストール

以前にDockerをインストールしている場合は、念のためアンインストールします。比較的バージョンアップが頻繁なアプリケーションなので新しいものをインストールしたほうがいいかなとは思います。

$ sudo apt remove --purge docker docker-engine docker.io containerd runc

依存パッケージをインストール

Dockerが依存するパッケージ群を事前にインストールしていきます。

$ sudo apt update -y
$ sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common

Dockerをインストール

ようやくDockerのインストールになります。

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$ sudo apt update -y
$ sudo apt install -y docker-ce docker-ce-cli containerd.io

これでインストール完了です。

インストールできたことを確認

以下のように実行すると以下のように表示が行われれば成功しています。

$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

sudoなしでDockerを実行できるようにする

$ sudo usermod -aG docker `whoami`

実行後にOSを再起動するとsudoなしでも実行できるようになります。

Node-REDを実行する

Dockerがインストールできてしまうと、あとはDockerコマンドでイメージを取得して実行するだけで環境が出来上がります。

初回は以下のように実行します。

【初回起動】

$ docker run -it -p 1880:1880 -v /home/【ユーザー名】/data:/data --name mynodered nodered/node-red

オプションは以下のようになっています。

  • -it … コンテナにアタッチしてコンソールを開いた状態になります。
  • -p 1880:1880 … ローカル側のポートとDockerコンテナ側のポートを接続します。
  • -v /home/【ユーザー名】/data:/data … ChromebookLinuxホームディレクトリにあるdataディレクトリとコンテナの/dataを接続(マウント)する。
  • --name mynodered … コンテナに名前をつけます。
  • nodered/node-red … コンテナのベースイメージです(初回にはイメージのダウンロードが行われるので、回線の細いところでの実行はやめておいたほうがいいと思います)

実行するとNode-REDのログが流れます。ここで【Ctrl+C】などを押してしまうとコンテナが終了するので注意です。

2回目以降はコンテナ名がConflictするのでエラーになるので注意です。

【失敗したときのログ】

$ docker run -it -p 1880:1880 --name mynodered nodered/node-red
docker: Error response from daemon: Conflict. The container name "/mynodered" is already in use by container "6ba4d2adbb136aa120446782bc0a29bc13df4428d131ad8600c8360eddb77f4d". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

2回目以降の起動はすでに環境が整っているので、docker startコマンドで実行ができます。ただし、この方法で起動するとバックグラウンドでの実行になります。個人的にはこちらのほうがコンソールを使用できる状態に戻るので助かります。引数は先程つけた名前を指定します(今回の例ではmynoderedとしています)。

【2回目以降の起動】

$ docker start mynodered

起動後にWebブラウザからhttp://【ローカルのIPアドレス】:1880/にアクセスするとNode-REDを使用できるようになります。

f:id:ueponx:20200321151117p:plain

ちなみに終了させるには以下のコマンドで行います。

【停止】

$ docker stop mynodered

もし、起動したコンテナでbashのシェルを開く場合には以下のようにします。このシェルは終了してもバックエンドのコンテナが終了しません。

$ docker exec -it mynodered /bin/bash

Docker Composeもインストール

念のためDocker Composeもインストールしておきます。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version

おわりに

Chromebookでもローカル環境でNode-RED開発環境ができました。Docker環境なので、Chromebook側の環境に左右されない点では自由な環境ですね。壊れてしまっても復帰も簡単なのはいいですね。

余談ですが、Chromebookのストレージサイズは比較的小さいのでコンテナのイメージのサイズも気になりますが、サイズは448MB…もう少し小さいと助かりますかねえ…

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nodered/node-red    latest              37f21089d3eb        2 weeks ago         448MB

【RaspberryPi】Minecraft Pi Editionのコントローラーとしてmicro:bitを使えないか考えてみる【中編:PyAutoGUI】

前回の続きのエントリーとなります。今回はコントローラーの部分を作っていこうと思います。 ゲームのアプリケーションとの連携になるので、キーボードやコントローラーなどの操作をpythonから操作するものを 調べて使ってみようと思います。

【参考】

uepon.hatenadiary.com

micro:bitからの操作をBluetoothで受信して、そのデータに従って操作制御を行うという形になります。

Minecraft Pi Editionの操作は、キーボードとマウスの組み合わせのみになるので、これらをpython上から制御できるライブラリが必要になります。

いろいろ探してみると、キーボードとマウスの両方が制御できるメジャーなパッケージであるPyAutoGUIがヒットします。 機能的にRPAに便利そうな制御を使用できることから、書籍などでも紹介されるメジャーなライブラリです。その他の内容も含めて以下の書籍は超おすすめです。

デジタル書籍は以下から

www.oreilly.co.jp

こちらのPyAutoGUIを中心に動作テストをしてみたいと思います。

続きを読む

【RaspberryPi】Minecraft Pi Editionのコントローラーとしてmicro:bitを使えないか考えてみる【前編】

先日、Minecraft Java版Minecraft 統合版(Windows10)を購入したのですが、サバイバルモードではゾンビたちにズタボロにされて1日の命もなかった自分ですが、ようやくポイントがわかってきたので、数日過ごせる(というかほぼ死ななくなった)状況になりました。ただ、クリア(?)まではあまりにも長い道のりになってきたので、そろそろ目線を変えたいなあ(オープンワールド系はあんまり集中力が続かない…)と思い始めました。

uepon.hatenadiary.com

ってことで、折角だしプログラミングできないかなと思うようになりました。できればブロック言語ではなく、テキストベースでできると嬉しい感じです。電子工作的な要素もあるとさらにうれしい。

ネットで検索すると、RaspberryPi版Minecraftmcpi(pythonライブラリ)を使うとプログラミングができるということだったので、それを更に拡張して物理的な動きをMinecraftに持ってこれないかなと思いました。コントローラーに関してはいろいろありますが、子どもたちに自慢したいのでmicro:bitを使うことにします。

個人的には下にあるGameControllerizerの方が楽しいのではないかと思いますがチャレンジの意味を込めて、まずはmicro:bitで試してみようと思います(チャレンジは成功するとはいっていない)。

www.switch-science.com

図にするとこんな感じになるかなと思います。

f:id:ueponx:20200310131222p:plain

このなかで今回行うのは以下の部分になります。

  • micro:bitBluetoothシリアル通信処理作成
  • Minecraft Pi Editionのインストール
  • RaspberryPiBluetoothシリアル通信処理作成(ライブラリインストール含む)
  • micro:bitRaspberryPiBluetoothシリアル通信テスト

ではやってみます!

今回のエントリーは以下を参考にしています。

qiita.com

qiita.com

続きを読む

Minecraftを購入してみた(2020年2月27日現在の話)

最近、地元のCoderDojoにメンターで行くことが多いのですが、そこで終わったあとにMinecraftの発表時間もあって割と面白そうだなと思って見ていたのですが、 わりと面白い機構を作っている子もいれば、建物を作っている子もいてレゴよりも空間的な認識をしていかないと作れないのかもなあ…という認識になりました。 個人的な興味としてはプログラミングからも触ることができる(操作できる)という意味でも触れておいたほうがいいかなという気持ちになりました。

聞くところによるとMinecraftは2つの種類、Java版(PC・MAC版ともいうのですが以降はJava版とします)と統合版(Switch、PS4などもありますが以降は統合版とします)があるそうで、かつ機能的にも少し違いもあるということでどちらを買ったらいいかという相談がCoderDojoでもありました。自分も知らなかったのですが、統合版にはWindows10版というのもあるそうなので、PC版と何が違うのよっていうのが正直なところです。あと、少し前にあったキャンペーンでJava版を購入すると、統合版(?)がもらえる?とかいう噂もききました。

そこで、そろそろ自分もMinecraftを購入して遊んでみようかなと。子どもたちに負けたくないしね(←こっちが本音w)

あくまでも私見を入れた感じで書いていくので、内容が間違っていてもゴメンって感じです。

各バージョンの違い?

簡単にいうとこんな感じらしいです。

単純に遊ぶなら、統合版のほうがいいのかな?

プログラミングを行う方法は…

  • MakeCode for Minecraft
  • Minecraft Hour of Code
  • Scratch(Code Connection、Modなどで連携)
  • python(Raspberry Jam Modの使用)
  • Ruby(Raspberry Jam Modの使用)

などがあるようです。 それぞれ使用できるプラットフォームは、どちらからしか使用できない(Java版統合版それぞれの乗り入れ、プログラミングで使えるもの)などのには制限はあるようです。 普通に素人はこれを聞いた感じでは、どっちを買えばいいかわからない感じ。

f:id:ueponx:20200228182437p:plain

自分が感じた範囲では、PCのない環境だったり、ゲームも楽しみたいというのであれば、統合版がコスト安めで良さそうな感じですが(マルチプレイのサーバー接続料金はあるみたい)、 Modを楽しみたいとか、大規模な作品をつかうのであればJava版がいいのかな?ちなみにJava版はPCスペックを求められるそうです。

キャンペーンってどうなった?

以前はJava版を購入すると、Windows10版がもらえるキャンペーンがあったのですが、それも2018年10月に終了。1年以上経ってますね。 噂ではAmazonダウンロードコード記載のカードを購入すれば、2020/1/20の段階でもWindows10版がもらえるようです。 AmazonのページのQ&Aに書いてありました。

f:id:ueponx:20200227224705p:plain

できれば、両方もっているのが、やることの幅が広がるのでいいのかなと思い、この噂に乗って購入することにしました。 キャンペーンも終わっているので購入時点で必ずしももらえると保証はできません、購入の際は自己責任でお願いします。

購入へ

実際に購入したのは以下になります。

2、3日後ぐらいで手元に来ると思います。内容物としてはコードが書かれた1枚のカードが送られてきます。

f:id:ueponx:20200227225622j:plain

アプリの入手の話

先程のところで購入の話は終わりですが、念の為入手作業も書いていきます。

カードが届いたら、裏面の銀色の部分をコインなどで削りコードがみえるようにします。 そのあと、開発元のMOJANG公式サイトにアクセスし、ユーザーアカウントを作成します。

ページ内の【Register an Account】ボタンをクリックします。

f:id:ueponx:20200229102332p:plain

するとMOJANGアカウント作成の画面になります。入力ボックスに電子メールアドレス、電子メールアドレス再入力、パスワード、生年月日を入力し、【アカウントを作成】ボタンをクリックします。

f:id:ueponx:20200229102504p:plain

あと少しですの画面になります。この時点で先程入力したメールアドレスに認証コードが送られているので、それを確認して【検証コード】の入力ボックスに入力して【認証】ボタンをクリックします。これでユーザーアカウントは登録できました。

f:id:ueponx:20200229102536p:plain

続いて、購入する時間の画面に移ります。プレイヤー名を【名前】の入力ボックスにいれ、支払い方法の下にある【コードを使う】をクリックします。プレイヤー名はマルチプレイ時に他のユーザーからみられるものになります。すると画面上の【コードを使う】が緑色のボタンに変わり、【コード】の入力ボックスが表示されます。

f:id:ueponx:20200229102612p:plain

【コード】の入力ボックスに、購入したカードの裏面にあるコードを入力し【交換する】ボタンをクリックします。

f:id:ueponx:20200229102659p:plain

おめでとうございます!MINECRAFTはあなたのものです。の画面が表示されたら購入が完了しています。あとはダウンロードの作業を行えばJava版が手に入ります。【WINDOWSを獲得するためダウンロードする】ボタンをクリックします。

f:id:ueponx:20200229102750p:plain

完了するとMaincraftのインストーラーがダウンロードされます。

f:id:ueponx:20200227205529p:plain

これをインストールすれば、Java版Maincraftがプレイできるようになります。 今回は、まずWindows10版を入手できるか確かめたいのでこれ以降の作業に関しては別の機会にしたいと思います。

f:id:ueponx:20200229102838p:plain


統合版(Windows10版)を入手する

つづいて、統合版(Windows10版)の入手をします。うまくいくか…?再度、開発元のMOJANG公式サイトにアクセスし、【Log in】ボタンをクリックします。

f:id:ueponx:20200229102938p:plain

Log in to your Mojang Accountの画面でユーザーアカウントで登録した、E-mailとPasswordをそれぞれの入力ボックスにいれて【Log in】ボタンをクリックします。

f:id:ueponx:20200229103009p:plain

ログインされるとMy Gamesの画面が表示されます。ここではこれまでに購入したゲームが一覧として表示されます。先程購入処理を行ったJava版Maincraftが表示されています。 その下にMinecraft for Windows10と項目が表示されています。こちらが出ていたらWindows10版のフリーダウンロードキャンペーンが有効だとわかります。 下にでている【Claim your free copy】をクリックします。

f:id:ueponx:20200229103027p:plain

注意点になりますが、ここまでの作業はゲーム発売元のMojangアカウントでしたが、この作業以降はMicrosoftアカウントでの操作となります。そのため、もう一度サインインが必要になります。異なるメールアドレス、パスワードを使用している場合にはご注意ください。

先程のボタンをクリックするとMicrosoftアカウントサインイン画面が表示されますので、アカウントのメールアドレスを入力して、【次へ】ボタンをクリックし、

f:id:ueponx:20200229103339p:plain

続いてパスワードを入力し、【サインイン】ボタンをクリックします。

f:id:ueponx:20200229103410p:plain

すると、ギフトコードが発行されます。ここでメモして置いたほうがよいですが、後ほどギフトコードはMicrosoftアカウントのメールアドレスに送信されていると思いますので、メモし忘れていても大丈夫です。そのままインストールするのであれば、このギフトコードの入力はしなくて良いようです。では、【Next】ボタンをクリックします。

f:id:ueponx:20200229103508p:plain

Here is what you getの画面で入手が出るようになります。【Contirm(確認)】ボタンをクリックすることで入手の確認を行います。表示言語が英語だったので表示が違う方もいるかと思います。

f:id:ueponx:20200229103530p:plain

You’re good to goの画面で入手の準備が整います。下の方にもMinecraft for Windows10 is ready for youと書かれているので準備ができたことがわかります。 あとはダウンロードサイトにいくことになり、一番下にある【Go to Minecraft for Windows 10】のリンクをクリックします。

f:id:ueponx:20200229103548p:plain

マイクロソフトのストアページにあるMincraft for Windows 10のウインドウが表示されます。ただ、このページには既に入手済になっているプログラムをインストールするような表示がされないこともあるようです(自分はその表示になっていました)。インストールボタンを有効にするために一度【F5キー】を押して画面の再描画を行いましょう。すると…

f:id:ueponx:20200229103718p:plain

先ほどまで【無料試用版】となっていたボタンが、【インストール/プレイ】のボタンに変わります。ここでは【インストール/プレイ】をクリックします。

f:id:ueponx:20200229103840p:plain

更に【インストール】に表示が変更するので、このボタンをクリックします。(ボタンをクリックするとインストールされるので注意してください)

f:id:ueponx:20200229103949p:plain

そのままインストール処理が進みます。

f:id:ueponx:20200227205737p:plain

インストールが完了するとボタンが【プレイ】に変わります。これでインストールは完了しました。

f:id:ueponx:20200227205829p:plain

あとは【プレイ】ボタンをクリックしてMinecraftを起動します。 スプラッシュスクリーンが表示されて

f:id:ueponx:20200229104028p:plain

無事にMinecraftが起動しました。下の画面がWindows10版になります。

f:id:ueponx:20200227205834p:plain

Microsoftアカウントでサインインをしていないと以下のような表示になりますが、

f:id:ueponx:20200227205840p:plain

サインインすれば、以下のような画面になります。表示されている名前はXBoxのユーザーネームになってしまうようです。

f:id:ueponx:20200227205845p:plain

おわりに

結論となりますが、2020年2月27日の段階では統合版(Windows10版)は無事に入手できました!ラッキー!

とはいえこのキャンペーンも終わってかなり経つので、いつ終わってもおかしくはないと思います。まだ、Java版のインストールはできていないので、別途インストールのエントリを書こうかな。

【RaspberryPi】Arduino IDEをインストールする

本当はこれをやりたかったわけではないのだ!

f:id:ueponx:20200227174321p:plain

でもうまく行かなかった…ARMプロセッサーの処理系が近くにこれしかなかったのでこの作業をやってみてまとめました。 本当にやりたかったのはChromebookであるASUS Chromebook Flip C101PAにArduinoIDEをインストールすることでした。 そちらはまた、失敗談としてエントリーを書く予定ではあります。

とりあえずは目的と似たAMR処理系&LinuxであるRaspberryPiへArduino IDEをインストールしてみたいと思います。

続きを読む