iPadでのScratchワークショップ計画中に発生した不思議な挙動に関して
2022年3月の年度末にiPadでScratchのワークショップを計画していました。扱うワークをどうするか検討中に不思議な事象が発生してしまったの、調査を解決策をメモっておきます。
iPadでScratchを動かす
Scratchはいわずと知れた無料の教育プログラミング言語及びその開発環境でですが、iPadに関していうとブラウザ経由でしようすることになるかと思います。オフラインのアプリがダウンロードできるといいのですが、ストアにはScratch.Jrあるのですが、iPad用にはみあたりません。
iPadでブラウザとなるとSafariを利用するか、別途ダウンロードしたGoogleChromeを使用するかどちらかになるのかなと思いましたが、何台もiPadを準備する必要があったので、Safariで行う方向で検討しました。
以下のようにブラウザでアクセスしても問題なくエディタを開くことはできます。
もちろんGoogleChromeでも同様にScratchを動作させることはできます。ただ、画面上部にアドレスバーなどがあるので、ちょっと画面が狭いですがPCのように最大化できないのでしょうか?もう少し調べたいですね。
不思議な現象が発生
そんな中、PCでワークショップ用の授業の内容を作っていて、iPadでも動作するかを確かめることになりましたが、現象はそこで発生しました。
想定の環境ではiPadに物理的にUSB経由でキーボードとマウスを接続してPCとほぼ同じ環境にしようとしていました。そのため、以下の変換コネクタを使用しています。これ2ポート接続できるので他のものより少し便利です。
行っていたのはキーボード入力を受け付けてキャットのスプライトを動かすというもので、少し簡素化すると以下のようになります。
このコードではキーボードの【スペースキー】と【右向き矢印】のどちらを動かしても10歩動かすようになっているのですが、動作させると【右向き矢印】では意図通り動作しますが、【スペースキー】では動作しません。
もしかしてSafari側特有の問題なのかなと思って、GoogleChromeでも試してみたのですが、やはりうまく動作しません。【矢印キー】が動作するので他のキー試してみたのですが、やはり【スペースキー】ではうまく動作してくれません。
いろいろと調査
ネットで同じような情報がないかと検索すると、うまくいかないこともあるという非常にあいまいな情報が多かったです。その時の打ち合わせでは時間がなかったこともあり、使用するキーを変更しましょうという話で決着がついたのですが、やはりもやもやしてしまいます。
iPadを家に持ち帰り、同様にやってみたのですが、うまく動作しました。あれ?
環境は変わっていません、接続するUSBキーボードが違うといったことはありますが、USBキーボードは特殊なデバイスでない一般的なものです。先ほどネット検索したときになんとなく引っかかった表現「うまくいかないこともある」というのはこういうところからきてるのかも?と思いました。
なにが違うのか考えてみたのですが、Scratch側のアプリには関係のない処理に原因があるのではないかと予想しました。そして、【スペースキー】のみ発生している事象なのでこのあたりに何があるのではと思って調べてみます。
原因は・・・?
いろいろと実験をすることで原因がわかりました。日本語キーボードを導入していて、操作時の入力モードが日本語入力になっているとスペースの動作が変換などに割当たるようです。つまり【スペースキー】を押しても、スペースが入力されない状態になっていました。
授業デモのときには、日本語変換のままでScratchを操作していて、調査時は英数入力でScratchを操作していたという違いになります。
ようやく原因がわかりました。が、これ現在の入力モードがどちらなのかは実はScratch上では簡単にはわからないようです。また、物理キーボードの変換ボタンを押しても入力モードは変化しません(ここも厄介)。
キーボードを強制的に表示するのもできないようで、数値入力可能なのブロックなどにしてもこの日本語入力モードなのかどうかはわかりません(数値しか入力できないので)、最終的に行き着いたのは見た目のグループにある【話すブロック】を1つ取り出して、そこで文字を入力することで日本語入力モードか否かを判定する方法を思いつきました。
変数やはなす言葉を日本語で入力することは多いので、変換の戻し忘れで容易にこのような動作になることは多いのかなと思いました。
この事象は日本でしか発生しない可能性があるので修正には結構時間がかかりそうですね。
蛇足
日本語変換に関する動作で変わった挙動を示すのはScratchだけには限りません、以前Makecodeでも変わった動作が発生しました。それは日本語入力モードで数値【0】を入力すると【0】が2つ入力されてしまうというものでした。
日本語入力モードの入力と入力ボックスでのキーイベントの文字入力の2つが動作しているのは?という予想です。このときは入力値がおかしいのがすぐにわかる状況なので問題はないのですが、今回の実行時に発生する事象に関しては原因の特定が難しいですね。とくに、ある時は正常に動き、とあるときには全く動作しないというのが厄介です。
おわりに
iPadでScratchを動作させたときの不思議な挙動とその対応策についてのメモでした。iPadなどのタブレットでは日本語入力モードで変わった挙動をすることもあるので、キーボード周りの動作がおかしい場合には一度疑ってみてもいいでしょう。
【結論】スペースキーが動作しない場合には日本語入力モードを疑え
この記事が気に入ったらサポートをしてみませんか?