2019年2月11日月曜日

Raspberry Pi 3B+でScratch Jrを動かす

2020年から小学校でプログラミング教育を行うということで教育関係ではそれなりに混乱されているようです。そんな中でバズワードとしてScratchが浮上し、Scratchの入門編としてScratch Jrもあちこちで聞くようになってきました。
ScratchについてはRaspberry Piで動くことは実証済みですが、Scratch Jrは動作環境がiOSまたはAndroidということでRaspberry Piでは動かすことはできません。

とは言えRaspberry PiでAndroid OSを動かしてみた方もたくさんいますし、ビジネスとして展開している会社もあるようです。そこで、我が家のRaspberry Pi 3B+にAndroidを導入してその上でScratch Jrを動かしてみたいと思います。

ステップ1:Raspberry Pi で動くAndroid


まずはRaspberry PiでAndroid OSを動かしている例を検索してみると。
といったところが出てきます。

結論から言うと、現在は一番上のページを参考にしてRaspberry Pi 3B+にAndroid7.1.1を導入してScratch Jrを動かしています。

☆ emteria.OS
企業がビジネスとして公開しているので無償版といえ安定して動いてくれました。ただ、マーケットアプリがF-DroidということでScratch Jrは登録されていませんでした。また、個人使用なら無償ですが、ビジネスで使用するとなるとライセンスが必要なのも注意点でしょうか。Play Storeのインストールは試してみませんでしたが、sshサーバが無償版では使えなかったりと自由にカスタマイズするのは難しそうです。

☆LineageOS 14.1
WikipediaによるとCyanogen Inc.が開発していたCyanogenModというAndroidをカスタマイズしたOSが元になっているそうです。
OSをインストールした状態ではPlay Storeはインストールされいませんが、こちらの方法でインストールは可能なのでScratch Jrのインストールも問題なくできました。
ただ、残念なのはScratch Jrを起動したところ初回の利用場所設定画面でマウスクリックができずに先に進めず、Scratch Jr利用することはできませんでした。

☆Android 7.0 Nougat on Raspberry Pi 3
インストールは問題ありませんでしたが、起動後に設定画面を開こうとしたところ設定が終了してしました。

ステップ2:Raspberry Pi3にScratch Jrをインストール


先ほどの参考ページにもありますが、元ページはこちらになります。ほぼ元ページの作業手順で問題なくPlay Storeのインストールまで出来ました。

参考ページでは有線接続の時のIPアドレスの確認方法がわからないとありますが、Android起動後、設定>端末情報>端末の状態で確認できますし、あらかじめRaspberry Pi 3をrasbianで立ち上げてIPアドレスを確認しておいても良いと思います。

今回、時間がかかったのが画面表示のところでした。今回は古いSharp LL-173Cというディスプレイを使っていましたが初めは真っ黒で何も表示してくれませんでした。
この場合、AndroidをインストールしたSDカード内の/boot/config.txtを編集するのですが、Androidを起動した状態では編集できない(そもそも画面が真っ黒です!)ので、Windows等で編集する必要があります。

Sharp LL-173C、DELL E2014H、Panasonic TH-32LX70(液晶テレビ)で画面表示できるようにしましたが、その時の設定を以下に示しておきますので、画面が真っ黒になった時には参考にしてください。直感的には最近のモニタであればデフォルト設定で問題なく表示されるのではないかと思います。
# DELL E2014H
#hdmi_group=2
#hdmi_mode=87
#hdmi_cvt=1600 900 60 6 0 0 0
#disable_overscan=1

# Panasonic TH-32LX70 4(720p),16(1080p)
#hdmi_group=1
#hdmi_mode=16
#disable_overscan=1

# Sharp LL-173C(OK=36,17,8)
hdmi_group=2
hdmi_mode=8
disable_overscan=1

Androidが起動直後は、言語設定が英語になっているので、設定>言語と入力>言語>言語の追加で日本語を追加して、日本語をドラッグして一番上に持って行きます。これで設定の表示なども日本語に切り替わります。また、設定>日付と時刻>タムゾーンで「日本標準時」を選択して日本時間にしておきます。

次にユーザ登録をしてからPlay Storeのインストールをしましょう。

ユーザ登録は設定>アカウント>アカウントを追加>Googleで、ユーザの追加をします。
私はAndroidが起動後すぐにPlay Storeのインストールをしたので、Play Storeインストールでユーザ登録が要求されましたが、うまく既存ユーザでの登録ができませんでした。

あとはScratch JrをPlay StoreからインストールすればRaspberry Pi 3でScratch Jrが利用できるようになります。

ステップ3:マウスポインターの解消


Raspberry PiにAndroidを導入したサイトをみてもマウスポインターが化けているとの報告(導入動画でもマウスがモヤモヤしています)がされています。Androidでは標準でマウスカーソルの表示(そもそもマウス全般)に対応して無いのが原因かと思いますが、以下の方法で解消できましたので、モヤモヤカーソルを解消した方は設定して見て下さい。
  • 設定>ユーザ補助>大きなマウスポインタをONに設定
ちょっと大袈裟なくらい大きくなってしまいますが、画面サイズからすればまあ許容範囲かなということで(笑)

ステップ4:Scratch Jrでの日本語入力


Scratch Jrは問題なく利用できたのですが、日本語の入力でちょっと問題がありました。

標準のJapanese IMEでは日本語キーボードのレイアウトがサポートされてませんし、入力ができたり、できなかったり、長い文章を入力するとおかしくなったりと不安定でした。そこで日本語入力をGoogle日本語入力に変更して、設定を一部見直したところ安定したようです。
  • Play Storeで「Google日本語入力」を検索して、インストールします。
  • 設定>言語と入力>仮想キーボード>キーボードを管理で、Google日本語入力をON、Japanese IMEをOFFに設定
  • 設定>言語と入力>仮想キーボード>Google日本語入力>入力>ハードウエアキーボードのキーマッピングで「日本語109A」を選択
  • 設定>言語と入力>仮想キーボード>Google日本語入力>入力で変換オプションを全てOFFに設定(CPU負荷を軽減するためです)
  • 設定>言語と入力>物理キーボードで「仮想キーボードの表示」をOFFに設定

最後に:使い物になるか?


今のところScratch Jrの操作感として、速度的には我慢どころかなという印象です。日本語入力も余り早いキータッチには追随できませんが、CPUの能力を考えれば致し方ないかなと思います。

音の出力は外部スピーカーを付けるか、テレビをモニタ代わりにすれば問題はありませんが、その場合はconfig.txtの設定が必要になるかもしれません。カメラとマイクの利用もUSB接続という方法もありますが、プログラムの勉強用なら特に無くても問題はないかと考えています。

今回はScratch Jrを動かすことが目的でしたが、他の学習用アプリもいくつかインストールして使ってみました。結果は、全てのアプリが使い物になりませんでした。起動しないアプリ、起動してもマウスクリックを受け付けなくて(全く受け付けない、画面の一部で受け付けないの2パターンがありました)操作ができないものなど、普通に使う範囲で問題が発生しました。

ちなみに、私が公開しているアプリもインストールしてみましたが、アプリそのものは動いているようですが、画面が真っ黒になりやはり使えませんでした。動作はしているようなのでテーマ絡みで画面が真っ黒になっているのではないかと想像しています。現在、Android 8.0対応を進めているので、落ち着いたら調べてみたいと思います。

そういった意味でScratch Jrは特に問題なく動いているのはすごいなという感想でした。

0 件のコメント:

コメントを投稿

Raspberry Pi ZeroでHeadphonesが無くなった

最近こんなの Adeept Robotic Arm Kit for Arduino や こんなの 「Petoi Bittle」(ペトイ・ビトル) を購入して遊んでいました。 両方共にArduino互換ボードでサーボモーターを駆動する物ですが基本的なプログラムは提供されるのでとりあ...