2020年3月15日日曜日

Linux版Scratch 1.4で作ったプログラムがScratch 3.0でコードが見えない現象(謎の文字化けが起こる)を検証する

前回までに、常用しているLinux MintWine上で、Windows版Scratch 1.4を動かして、Scratch 3.0でスクリプト(コード) が見えなくなる原因を突き止めました。Linux版Scratch 1.4では直接日本語入力ができず、テキストエディタなどの別のところで日本語文字列を作り、それをコピペして日本語を入力するという手順を踏まなければなりません。この過程で変換不可能な文字列(これが何かはわかりませんでしたが)が紛れ込み、これをScratch 3.0で開くとコードが見えなくなることがわかりました。Scratch 2.0は、この不具合を解消する処理をしているらしく、Scratch 1.4で作ったものを2.0で読み込んで保存もしくはアップロードすると、3.0でも問題なくコードが見えるようになるのでした。

検証した環境と結果は以下のとおりです。(改行コードのせいもあると考えて、改行を含むものと含まないものとを並べてみました)(1)アルファベットのみ、(2)日本語(改行なし)、(3)日本語(改行あり)の順です。

今回は、Raspbianだけ不具合がありませんでした。MintとPuppyでは、改行ありだと明らかに見た目がおかしいので、気づくのではないかと思います。とは言え、改行なしでも文字化けが含まれてしまうのですが。

今後のScratch 1.4での開発は、Wine上のScratch 1.4か、RaspbianのScratch 1.4で行うようにするか、日本語を使わないようにするかという選択になりました。

Linux MintのWineでWindows版Scratch 1.4を動かす

Macの新しいOS(macOS Catalina 10.15.x)でScratch 1.4が動かないため、Linux MintPuppy Linuxなどの力を借りて、Scratch 1.4での開発をしている続きです。先日、Linux MintのScratch 1.4で作ったプログラムが、Scratch 3.0上で「コードが見えない」という不具合を発見しましたが、全てダメということではなく、どうやら日本語の扱いに問題があるということがわかってきました。

毎度のことながら、@abee2さんに助けていただき、Windows版のScratch 1.4で開いてみると「化けた文字」が含まれていると教えていただきました。自宅にあるパソコンは、デスクトップ・ラップトップ合わせて数十台にもなりますが、残念(意図的)ながら(我が子の学習用以外で)Windowsで動くものはありません。そこで、MintのWine上でWindows版Scratch 1.4を動かしてみてはと勧められたので、やってみることにしました。幸いなことに、別の需要があってWineはインストール済みでした。(「ソフトウエアの管理」からインストールしました)
#他にも、PlayOnLinuxもインストール済みですが、今回はあまり関係がありません。

Windows版Scratch 1.4のインストーラーをダウンロードして、Linux Mintでダブルクリックすると、難なくインストール作業が始まり、無事に完了しました。後は起動するだけ。ちょっとドキドキしましたが、無事にWindows版Scratch 1.4が起動しました。しかし、日本語が表示されず全て豆腐(□)になっています。これでは不具合を確認することすらできません。そこで、過去にWineの設定をしたときのことを思い出しました。Wine 4.0以降は、割と日本語表示が簡単になったという噂を目にしましたので、過去の経験を頼りにやってみましたが、うまくいきません。「Wine設定」自体がすべて日本語表示になっているし、デフォルトでインストールされている「メモ帳」もメニューの日本語表記や入力が日本語でできるというのに、Scratchだけは頑なに日本語を受け付けてくれないのです。

もう打つ手はないのかと絶望感に苛まれつつも、これはScratch 1.4自体のフォントの設定が問題なのではないかと考えました。過去の記憶を頼りに、フォントの設定を変えることができたような気がしてきたのです。localeの.poファイルにフォントの設定を書き込めることを教えていただき、過去にそんな設定をやったことを思い出しました。ja.poとja_HIRA.poの以下の部分を書き換えました。

  • 〈変更前〉
    # Font to use on a Windows system
    msgid "Win-Font"
    msgstr "Tahoma"
  • 〈変更後〉
    # Font to use on a Windows system
    msgid "Win-Font"
    msgstr "Takaoゴシック”

日本語フォントに何を使っているかによって設定が変わると思いますが、私の環境(Linux Mint)では「Takaoゴシック」が入っているためこのようにしました。これで、問題のあった.sbファイルを開くと、日本語文字列の後に豆腐(□)が見えるようになりました。デフォルトで日本語表記になっているもの(スプライトの名前など)には、特に問題がないため、Linux版Scratch 1.4で日本語入力ができないことと関係がありそうだと当たりをつけました。次は、なぜこのようなものが混じってしまうのか検証して行きたいと思います。

【追記】Windows版Scratch 1.4で日本語に豆腐(□)が交じる現象が起きる環境を特定しました。(2020.3.15)

2020年2月23日日曜日

Scratch 1.4で作ったプログラムをScratch 3.0で読み込んだときの不具合を回避する

Macの新しいOS(macOS Catalina 10.15.x)でScratch 1.4が動かないため、Linux MintPuppy Linuxの力を借りて、Scratch 1.4での開発を続けているところです。先日、Linux Mintで作ったプログラムをScratch 1.4の機能を使って共有(アップロード)したところ、Scratch 3.0上で「コードが見えない」という不具合に遭遇しました。そこで、どんなときに不具合が発生するのかを検証し、解決を試みることにしました。

まず、この不具合が発見されたプログラムについて、LinuxのScratch 1.4からアップロードしてLinuxのFirefoxとMacのFirefox、WindowsのEdgeでScratch 3.0(オンライン)を開いてプログラムを見た場合も、同じく3つの環境でScratch 3.0(オンライン)を開いてプログラムのファイルを直接読み込んだ場合も、いずれもコードが表示されませんでした。Scratch 3.0(オフライン)についても、Linux Mint、Mac、Windowsで試してみましたが、やはり状況は変わりませんでした。

そこで、Scratch 1.4とScratch 3.0(オフライン)で、スクリプトやコードの違いを検証することにしました。問題のないものと問題が起きているものを見比べてみましたが、細かな点で差はあるものの、コードが見えない不具合を抱えているプログラムと問題がないプログラムとの大きな差を感じませんでした。

いろいろ考えながら検証しているうちに、Linux Mintからプログラムをアップロードしようとすると、Scratch 1.4が落ちるという現象が起きるようになりました。さらに困ったことになりました。仕方がないので、同じプログラムをRaspberry PiRaspbian)からアップロードを試みましたが、Scratch 1.4は落ちないものの、エラーを吐いてアップロードが途中で止まってしまいました。Puppy Linux改でもやってみましたが、結果は同じでした。エラーメッセージは、Raspbianで「Failed: INVALID_REQUEST…」、Puppy Linux改で「Failed: address not found」となっているので、どうやらこの作業の間に、Scratch 1.4からアップロードする先が何らかの理由で閉鎖された(一時的なものかもしれません)のではないかと推察しました。

これ以上、問題を検証することが難しくなりました。

仕方がないので、MacのScratch 2.0(オフライン)で開くとどうなるか試してみました。すると、不具合のあったプログラムのスクリプト(コード)が問題なく表示されました。さらに、このScratch 2.0(オフライン)からアップロードすると、Scratch 3.0(オンライン)でもコードが見えるようになりました。同じくScratch 2.0(オフライン)でプログラムを保存すれば、Scratch 3.0(オフライン)で開いてもコードが見えます。とてもややこしい状態ではありますが、Scratch 1.4で作ったプログラムで不具合があっても、2.0で読み込んでアップロードすれば、3.0でもコードが表示されることがわかりました。

こうなると、今後、Scratch 1.4を使い続けることが困難になってきていることが実感できました。とは言え、3.0への完全移行が得策と言えるかどうか、頭を悩ませています。

【追記】Scratch 2.0(オンライン)の頃に1.4からアップロードしていたものは、現在の3.0(オンライン)でもコードが見えるけれど、現在のScratch 3.0で直接1.4の.sbファイルを開いてもコードが見えなくなるものがある、ということがわかってきました。1.4から2.0になる過程で、コードの仕様に関する何らかの変更があり、2.0は、その変換を行っているものと推察しました。また、3.0も公開から今日に至るまで、仕様変更されている可能性があるのかなとも思いました。(2020.3.8)

【追記】この現象は、Linux版Scratch 1.4での日本語の扱いの問題であることがわかりました。Linux MintでWineを動かして確認しました。(2020.3.15)

【追記】Windows版Scratch 1.4で日本語に豆腐(□)が交じる現象が起きる環境を特定しました。(2020.3.15)

2020年2月2日日曜日

今更だけどLinux系OSでScratch 1.4の音(mp3)を再生する機能を検証する

Macの新しいOS(macOS Catalina 10.15.x)で32bitソフトであるScratch 1.4が動かなくなり、Scratchでの教材開発を1.4で続けていくためにはLinuxに頼らざるを得ない状況になっています。(自宅でWindowsは使いません)1.4を使い続けているのは、学校の特殊な事情により、1.4の出番がまだまだあるからです。そんな折、Scratch 1.4で音を再生しようと考えて、ネットにあったフリーの音源(mp3)を読み込ませようと思ったところ、「Unrecognized audio file format」というエラーが出て読み込むことができませんでした。どういうことかわからなかったのでネットで訪ねたところ、いつもお世話になっている@abee2さんより、いくつかヒントをいただきました。mp3のサンプリングbitの問題がありそうだというところに絞って検証をはじめました。

まずは、Scratch 1.4に入っている音で検証してみようと考え、いくつかのファイルを読み込んでみましたが、読み込めないものがあることが判明。これは詳しい検証が必要だと考えて、自宅にあるLinux系OSで動いているいくつかのマシーンで検証することにしました。

  1. Linux Mint 19.3 Tricia(MATE 64bit)
    • フリーのmp3ファイル … ×
    • ScratchのAnimalフォルダ内の「Cat」「Sealion」 … ×
    • その他のAnimalフォルダ内のファイル … ○
    ※/usr/share/scratch/Media/Animal/を見ると、「Cat」と「Sealion」だけmp3ファイルになっていて、残りはwavファイルになっている。ファイルを直接開くと、Linux上で再生される。
  2. Linux Mint 19.3 Tricia(Xfce 32bit)
    • フリーのmp3ファイル … ×
    • ScratchのAnimalフォルダ内の「Cat」「Sealion」 … ×
    • その他のAnimalフォルダ内のファイル … ○
    ※MATE 64bitと全く同じ状況。
  3. Raspbian 9.8(「$ cat /etc/debian_version」にて確認)
    • フリーのmp3ファイル … ×
    • ScratchのAnimalフォルダ内のすべてのファイル … ○
    ※/usr/share/scratch/Media/Animal/の音声ファイルは前2つと同様だが、mp3でもwavでも関係なく読み込むことができた。
  4. Puppy Linux 5.1.1 Wary日本語版にScratchなどを入れたものを使用)
    • フリーのmp3ファイル … ○
    • ScratchのAnimalフォルダ内のすべてのファイル … ○
    ※ダメ元でやってみたのにできてしまって自分がびっくり

フリーのmp3ファイルは、サンプリングbitが32bitらしいことがわかりました。だからLinux MintでもRaspbianでも使えないのは納得できたのですが、なぜPuppy Linuxで使えてしまったのかは謎です。Puppy Linuxでフリーのmp3ファイルを読み込んでプログラムを完成させて、そのプログラムをLinux Mintに持ち込んでも問題なく音が出るようになりました。こんな奇跡的なことがあって良いのだろうか。1つ問題が解決したので良いのですが、普段使いのLinux Mintで使えないのは困るので、Audacityを使うことにしました。(サンプリングbitを変更するため)否、先述のPuppy Linuxは、私がいろいろいじってCD-Rに焼いたものがあるので、CDブートで使うという手もあります。…う~む、悩ましい。

3年生でのプログラミングの授業~Hour of Code™を利用して

事情により、3年生を相手にコンピュータを使った授業をしてほしいと頼まれたので、調べ学習か何かなのかと思ったのですが、最近プログラミングに挑戦しているからその続きをやってほしいとのこと。そう言えば、Scratchで授業やるのはかなりハードルが高いようで、「他に良い方法はないか。」と相談されていたのでした。その際、ブロックプログラミングに慣れる意味でHour of Code™をすすめたところ、PC支援員さんの支援のもと1時間だけやったようでした。

聞けば、統制型の授業(みんなで同じものに同時に取り組む)だったとか。それなりに楽しかったようだけれども、子供たちはなかなか思い通りに先に進まなかったと聞きました。ならばということで、Hour of Code™のアクティビティの画面を見せて反応を見ることにしました。「覚えてる」「やってみたい」と声が上がったので、学習活動の手順を以下のように示しました。

  1. やりたいものを1つ選ぶ
  2. 同じものを選んだ3人以上でグループを作る
    ※協力してやるから、話し合いながらできる人数を考える
  3. 作業をすることを考えて、PCや場所を選ぶ
    ※グループで使えるパソコンはMAXで人数分
  4. ここまで決まったらやってみよう

何となく選び終えた子たちが声を掛け合うかなと思ったのだけれど、「グループを作る」ということがわからない様子だったので一度中断。狭いスペースに全員集めて、グループ作りについてレクチャーをしました。同じものをやりたいと思っている子が誰なのか、声を掛け合いながら探してグループを作っていく。単純なことなのだけれども、パソコン室ではやったことがないので、慣れていないからできないんですね。グループにしたのは、相談し合いながら自然な学び合いを誘発したかったから。やりたいものが絞り込めていない子たちも、グループになりながら決めることができます。

やり方がわかったら、お互いに声を掛け合ってだいたい3~5人のグループになりました。それでも、同じ課題の子たちが3人以上にならないグループが現れました。よく聞くと、他のどのグループとも違うものを選んでいます。はじめからやりたいものが決まっていて、ずっと声を上げていた子たちでした。ならば、私やPC支援員さんがフォローするから2人でも良いことにしました。

ここまで、プログラミングのレクチャーは全くなし。前時の統制型の授業で「丁寧に指導」されているだろうから、むしろやりたい気持ちが高まっているはず。案の定、はじめのうちこそ操作のことで質問があったものの、「日本語表示にするには」と「ダウンロードはできない」という2つのこと以外は、ほとんど何も教えないですすめることができました。

教室からパソコン室へ移動してからはじめたため、作業時間は正味35分くらいでした。最後まで終わって、修了証のようなものが表示された子が数人あらわれたところで、ほぼ時間通り。はじめから、「残念なことに時間が決まっているから」と話していたので大きな混乱はなかったものの、やはり「もっとやりたい」との声が上がりました。振り返りも、はじめに提示した4項目の中で、どのあたりに問題があったか考えさせるだけ。こちらの狙いは、ブロックプログラミングのやり方や考え方に慣れさせることであって、覚え込ませることではありません。

ここまでできたら、Scratchにもつなぐことができます。「えんぴつに三角形を描かせる」でも「好きな図形を描かせる」でも良い。最低限の用意は必要だけれども、ちょっと難しい課題を乗り越えるための下準備は、これで十分。もしかすると、「遊んでいるようにしか見えない」と思われるかもしれませんが、私には、彼らが脳みそに汗をかきながら、たくさん考えて、学んで、表現したことがよくわかりました。図形を描く課題を選んだ子が、空中に線を描いていたので、「そろそろ紙と鉛筆が欲しくなってる?」と聞いたら、すごい笑顔でうなずいていました。
#もちろん、紙と鉛筆をわたしましたよ。

2020年1月12日日曜日

Linux Mint 19.3でファイルサーバを構築する

ファイルサーバとしてしか使わなくなっていた古いPC(以前は、自作Webサイトの動作テストや様々なLinux系OSの動作確認環境として使っていた)を処分して、以前に紹介したHTPC(Celeron J1800)でLinux Mint 19.3を動かして、ファイルサーバにしてしまうことを計画しました。

このHTPCには、CFカードをSATA接続のSSDとして使うための変換ボードを載せています。今回は、こちら側にOSを入れて、前回までに使っていた120GBよりも大きな480GBのSSD(Kingmax KM480GSMV32)を入れて、ファイルサーバにすることにしました。しかし、16GBのCFカードでは容量が小さすぎるし、割高なCFカードを買うのはちょっともったいない。そこで、安価なSDカードをCFカードTYPE Ⅰに変換するアダプタ(FUJITEKのSDXC-CF1/T5というものらしいが既に生産中止か?)を使ってSDカードをCFカードに仕立てて、Linux Mint 19.3 64bit Xfceをインストールすることにしました。

このSDカードをSATA接続SSDに変換するボードとファイル保存用のSSDをHTPCに組み込んでハードウエアは完成。使用したSDカードは、32GBのものにしました。16GBでもLinux Mintのインストールは可能でしたが、アップデート作業中に容量が足りなくなるという問題に遭遇しました。Linux Mint 19.3のインストールとアップデートをしてから、必要なソフトウエアのインストール作業を行いました。
#SD-CFカードへのLinux Mint 19.3のインストールは、ちょっとコツが必要みたいで、予めSDカードをFATでフォーマットしておくとスムーズにインストール作業ができました。(本来なら、余計なソフトを削除する作業をするべきなのかもしれませんが、変に削除して不具合が発生しても面倒なので、デフォルトでインストールされるものはそのままにしてあります)

続いて、ファイルサーバシステムとしてsambaをインストールします。
LinuxMint 19 [Japanese]というWebサイト下の「LinuxMint 19: SMBサーバのsambaをインストールする」を参考にしました。

$ sudo apt install -y samba

これは、結構簡単できました。次に、pdbeditでユーザーの設定をします。

$ sudo pdbedit -a <ユーザーネーム>

このとき、パスワードを2回訊かれるので、2回とも同じパスワードを入力します。ユーザーネームに使えるのは、そのLinux Mintに登録されているユーザーでなければならないので、もし登録されていないユーザーにファイルサーバ(samba)を使わせたい場合は、次のコマンドでユーザーを追加しておく必要があります。

$ sudo useradd -m <登録したいユーザーネーム>

次に、共有ディレクトリーの設定をします。今回は、先程のサイトを参考にしながら、ユーザーのホームディレクトリと内臓SSDを共有することにしました。(「/etc/samba/smb.conf」に必要な設定を書き込む。)主に内臓SSDを共有フォルダとして使用し、各パソコンからアクセスしてファイルを保存することにします。

さて、これで無事に自宅LAN内のMac & Linuxのファイル共有環境が整いました。別のLinuxマシーンからもアクセスすることができることも確認できましたし、ついでに、無線LANで接続されているプリンター(CANON TS6130を使用中)も使えることがわかりました。快適な環境ができて大満足です。

【追記】32GBのSDカードでは、少々手狭であることがわかってきたので、128GBのSDカードに変更しました。なかなかうまく行かなかったのですが、GA-J1800-D2Hマニュアルを見て、CMOSクリアをしてみたら起動USBメモリから無事に起動してくれて、exFATでフォーマットしたSDカード(CFカードに偽装してさらにSSDに偽装している)にインストールすることができました。(2020.2.23)

2019年11月17日日曜日

カブトムシの世話(2019秋)〜冬眠前にマットの状態を調べる

夏の暑さのピークを越えた頃、カブトムシコンテナの中は、生きている成虫がいなくなり、静かになっていました。前回の世話からだいぶ経ちましたが、いろいろとタイミングを逸してなかなか時間が取れずにおりました。そろそろ秋も深まってきて、これ以上時間を置いてしまうと冬眠の時期になってしまうと思い、慌てて世話をすることにしました。

実は、成虫がいなくなったあと、成虫が生活する場として開けておいた空間にクヌギのマットと腐葉土を足して、その場しのぎの世話をしていました。これが、結構減るのが早く、2度目、3度目と注ぎ足していたのでした。そして本格的な世話をすることにして、ほぼ土と化した腐葉土をひっくり返してみました。

表面近くの腐葉土を取り除くと、いつものようにフンの層が現れました。これを職場に持ち込んで花の肥料として使うため、腐葉土の空袋に入れていきます。(60Lくらいかな) どんどんカブトムシの幼虫たちが現れ、別の容器に移動しておきます。更に掘り進むと土質が変わって、ほぼ黒土の塊のようなところにたどり着きました。これ以上は持ち運ぶのも大変なので、自宅の庭の草木の根元に撒いてみました。固まっている土の中には、幼虫がほとんどおらず、食料にはなっていないことが予想できました。

出てきたカブトムシの幼虫(3齢虫)は、72〜3頭(世話をしながら数えていたので、最後が曖昧)で、昨年よりも増えていました。実は、コンテナと腐葉土での飼育は、どのくらいが限界なのかを確かめる意味もあって、あえて世話をせずに放置してみていました。結果的には、昨年よりも個体数は増えていましたが、全体的に小さいものが多くなっているのかもしれないので、今後の飼育の仕方を見直す必要はあるかもしれません。

さて、ほぼ空にしたコンテナに、カブトムシの幼虫たちを戻します。黒土を2cm程度残して、その上に腐葉土45Lを入れて水分を加え、よく混ぜました。そして、さきほど別の容器に入れておいたカブトムシの幼虫たちを入れて、クヌギのマット10Lと腐葉土20Lを入れました。これでコンテナはパンパンです。

ここまでやっておけば、あとは春を待つだけです。来年も元気なカブトムシたちに出会えることを楽しみに待ちたいと思います。