ラベル Scratch Jr の投稿を表示しています。 すべての投稿を表示
ラベル Scratch Jr の投稿を表示しています。 すべての投稿を表示

2020年7月8日水曜日

LineageOS 16.0 (Android 9) for Raspberry Pi 4をインストールしてみた

前回Raspberry PiにLineageOSをインストールしてから1年以上が経過してRaspberry Piも4に進化しましたが、LineageOSも今年の2月にはRaspberry Pi 4用のLineageOS 16.0(Android 9)がリリースされていました。

前回はScratch JrをRaspberry Piで動かすことが目的でしたが、残念ながらScratch Jrについてはマウスで操作ができなかったので断念した経緯があります。新しいバージョンではどうかも含めて再度トライすることにしました。

Google appsのインストールも前回同様用意されていました。多少スクリプト名が変更になっていたり、TWRPの画面がちょっと変わったりしてしていましたが、作業は前回と全く同じでした。
注意点としてはGoogle appsのインストール後、起動設定変更作業前にパーティションのマウントを行いますが、この時に「boot」にもチェックを入れないとエラーが発生します。/bootに書き込みに行っているのが原因だと思います。


今回改善されていた点

  • インストール時に言語選択で日本語が選択できるようになっていました。頑張って下の方までスクロールして下さい。インストール後すぐに日本語環境になっています。
  • Raspberry Pi 4の威力でしょうか、前回と違って設定などですぐに落ちることはなくなりました。そこそこのレスポンスで作業ができるようになっていました。

やっぱり問題が

  • Scratch Jrはやはり使えません。画面は表示されますが、マウスで操作ができませんでした。
  • Play Storeでのインストールは保留中となって先に進みませんが、そのまま再起動するとインストールされるようです。
  • インストールもそうですが、ネットワーク周りでおかしな動作が見受けられます。

前回同様にadbでもテストしてみましたが、adbでマウスイベントを発生させると動作するのですが、実際のマウスでは動作しないという現象が発生します。adbの場合は直接イベントを発生させているので、実際のマウスの場合はOS側の動作が違うのでしょうか?

Scratch JrはAndroidとiOSで動作するように、基本部分はJavaScriptで作成されていてOSに関わる部分だけをそれぞれのネイティブな言語で作成してあります。
Androidの場合はWebViewでJavaScriptを有効にして、handleTouchStartとhandleTouchEndで処理しているようです。

私が公開しているアプリは問題なくインストールできて動作も確認できました。ただこのアプリはAndroidネイティブなのでWebViewを使ったアプリではありません。
時間があれば簡単なアプリでテストをしたいと思いますが、今回はここまでとしたいと思います。

2019年2月25日月曜日

Raspberry Pi 3b+でLineageOS 15.1を動かす

前回、Raspberry Pi 3b+でLineageOS 14.1 (Android 7.1.2)をインストールしてみましたが、Scratch Jrのマウスクリックができずに挫折してしまいました。今回、LineageOS 15.1(Android 8.1.0)を見つけたので、再度チャレンジしてみました。

ステップ1:LineageOS 15.1インストール


インストールそのものは簡単です。システムイメージをダウンロードして、マイクロSDカードに書き込んで、Raspberry Piで起動するだけです。

LineageOSの嬉しいところは、F5の長押しで、電源OFFかリブートのメニューが出て安全に電源を切ることが出来ることです。
スマフォでしたら電源ボタン長押しで電源を切ることができますが、Raspberry Piには電源ボタンがないので、電源そのものをOFFにするしかないことです。この場合、SDカードへの書き込み中だとシステムが壊れる可能性もあるので、安全を考えるならshutdownをしてから電源を切りたい所です。
rootが取れれば電源OFF用アプリをインストールできますが、現在Raspberry Piで動いているAndroid 7.1.1ではrootを取るのことは出来ませんが、adb shellがroot権限で動くようなので、別端末から「adb shell setprop sys.powerctl shutdown」で電源を切るようにしています。

ステップ2:Google Play Storeのインストール


こちらもホームページに導入手順が書いてありますので、そのまま実行すればGoogle Play Storeが使えるようになります。
事前準備としては
  • Settings -> Developer options -> Root accessでadbとappにRoot権限を与える
  • Settings -> Developer options -> Local terminalでターミナルを使えるようにする
  • ブラウザを立ち上げて必要なファイルをRaspberry Piにダウンロード
ここで、ともかくやたらと設定が落ちます。この時点で、使い物にならないと諦めてしまいそうになります。コツとしてはスクロールはマウスで行わずに、上下矢印(↑↓)を使って、ゆっくりと行うことがポイントです。どうやらListViewで画面スクロールをする時に処理が追いつかずに落ちている感じです。↓しては待って、また↓して待ってと、ひたすら我慢で使いこなしてください。

準備ができたらTWRPへブートし直します。これもFAQに方法が書かれていますが、ターミナを立ち上げて
su
rpi3-recovery.sh
を叩いて、再起動します。




TWRPのメニュー画面です。
まずは、ダウンロードしておいたGappsをインストールします。
「Install」ボタンを押して






Downloadをクリックすると









ファイルがあるのを確認してクリック後「Install Image」ボタンを押します。









「Swipe to confirm Flash」を右にスワイプしてインストール開始です。









インストールが終わったら、
「Wipe cache/dalvik」を押すと










右にスワイプしてキャッシュのクリアを行います。









キャッシュのクリアが終わったら、続けてFactory resetを行うので「Back」でTOPメニューに戻ります。







TOPメニューで「Wipe」ボタンをクリックすると、この画面が表示されるのでスワイプしてFactory resetを行います。







Factory resetが完了したら、Androidが起動するように起動時設定を変更するために「Back」ボタンでTOPメニューへ戻ります。






TOPメニューで「Mount」ボタンを押して、Systemのマウントを行います。








OKでマウントします。










TOPメニューから「Advanced」を選択して、「Terminal」を開きます。









「rpi3-recovery.sh boot」で起動設定を変更して、TOPメニューへ戻ります。








最後にTOPメニューから「Reboot」を選択して、「System」を再起動します。










ステップ3:Scratch Jrのインストール


再起動後は、Play Storeがインストールされているので、ログインすることでScratch Jrのインストールが可能です。

ただ起動してみると、やはりマウスクリックが効きません。Android 7.1.1では問題なく動いているのでアプリ側の問題ではなさそうです。

そこで
add connect [Raspberry PiのIPアドレス] ・・・adbで接続
adb shell wm size                    ・・・画面サイズの表示
adb shell input mouse tap [x] [y]    ・・・マウスクリックのシミュレーション
で、概ねの座標からボタンをクリックさせると、問題なく動きました。でも、物理的なマウスでクリックしても動かないんですね。

ということで、システム全体の動作ももっさりしていますし、マウスクリック問題があるので、やはり使い物にはなりませんでした。Raspberry Pi 4が出て、処理能力がさらにアップすれば使えるようになるかな?







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は特に問題なく動いているのはすごいなという感想でした。

EXCELの表をKaTeX形式に変換するマクロ

生成AI時代にプログラミング言語を学習する必要はあるのか? 最近では生成AIがプログラムを作成する時代になってきましたが、そんな時代にプログラミング言語を学習する必要はあるのでしょうか? ということで早速 Google さんに聞いてみました。 生成AI時代にプログラミング言語を学...