オルタナティブ・ブログ > まあまあ元気になる話 >

IT業界での少し気分がアップする出来事、心持ち役立つこと、ややイイ話

ScratchとApp Inventor

»

VaLEd.press(バレッドプレス)」という新メディアで、Scratchプログラミングの連載記事を書くことになりました。VaLEd.png

2020年から小学校でプログラミング教育が始まることもあり、最近、いわゆる「STEAM教育(STEM教育)」が注目を集めていますが、「バレッドプレス」は、そうした話題を中心とした「親と子の好奇心」を応援するポータルメディアです。

プレスリリースはこちらです。
プログラミング・STEM教育情報を発信するメディア 「VaLEd.press(バレッドプレス)」本日オープン

わたしの記事は、「親子で楽しもう!Scratchプログラミング」というタイトルです。(探してください)

Scratchは、とっても敷居が低いので、小学生でもできるのですが、子供向けと侮ることなかれ、結構、面白い本格的なゲームも作れます。タイトルの通り、親子で一緒にプログラミングを楽しんでもらいたい、と思ってます。

一方、人気の面で、Scratchにやや差を付けられた感のあるApp Inventorですが、先日、スマホ向けのプログラミング講座を検討されているパソコンスクールより、依頼があり、インストラクターの方々に向けた研修を実施しました。

IMG_0953.jpgIMG_0950.jpg

App Inventorを用いた「Androidアプリ開発講座」を行うのは、ずいぶん久しぶり(2年ぶりくらい?)です。
小学生や中学生と違って、さすがに飽きることなく、皆さん、最後まで集中して、用意した課題をすべて完成させていました。
早く終わった方々は、画像を変えたり、背景色をつけたりと、自主的にいろいろと試されていて、「インストラクターという職業柄、やはり知的好奇心が旺盛なのだな」と感じました。
私も、感心してばかりではなく、
「ここの数字を変えると、(アニメーションの)スピードが増して、子どもたちが大ウケするところです」
などと、アドバイス(?)、研修後は、「とても勉強になった」、「楽しかった」という感想をたくさん頂きました。
プログラミング講座開設に向けての一歩になればと思います。

ScratchとApp Inventorは、どちらも、部品(ブロック)をドラッグ&ドロップしながらプログラミングを行うビジュアルブロックプログラミング言語で、マサチューセッツ工科大学(MIT)が提供している、と共通点が多く、良く似ているのですが、実際にやってみると、かなり違いを感じます。

Scratch - Imagine, Program, Share

Scratch.png

MIT App Inventor | Explore MIT App Inventor

AppInventor.png

とっつきやすいのは、Scratchで、まず、ブロック自体も分かりやすい日本語で書かれていますし、キャラクターの画像や背景画像などの素材も予めたくさん用意されていて、すぐに作り始められます。ブロックも同様で、「もし端についたら、跳ね返る」なんて、便利なブロックも用意されています。

●Scratchでアニメーションをやるために組んだブロックScratchBlocks.png

●同じことをApp Inventorでやると...AppInventorBlocks.png

もっと、特徴的なのが、まずスプライトがあって、スクリプト(プログラム)はそのスプライト毎に書く、という言語仕様。
モノを「動かす」、「見せる」というのに特化した考え方から、このようになったのかも知れませんが、複数のモノが連動する(制御する)ものを作ろうとすると、、これが逆に、もの凄い足かせになります。
同じブロック構成をスプライト毎に記述する必要が出てきたりします。
「クローン」という機能を使うと、その手間はなくなり、クローン(子)は、親スプライトと同じ制御が可能になりますが、今度は、どのクローンを、と指定することが出来なくなります。
あるクローンに対して、何かやりたい、と思っても、指定する方法がGUIで選択する意外に無いんですね。「さっき選択されたクローン」とか覚えておくことも出来ません。(取得ができない)
なので、「クローンされたとき」に、予めいろいろと仕込んでおいたりすることになります。
例えば、シューティングゲームの敵キャラをクローンでたくさん用意するときに、予め、「もし『ミサイルに触れたら』なら」、「このクローンを削除する」、なんてスクリプトを仕込んでおく、といった感じです。
また、頭を悩ませるのがスレッドの同期です。1つ1つのブロックが順番に実行される訳ではなく、複数のオブジェクトに対して記述されたイベントハンドラが並行して実行されるので、スレッドを意識しながら、ときには、(以前、書いた記事にあるように)「1秒待つ」なんてブロックを使いながら、そのタイミングを合わせないと、思ったような動きにならないことが多々起きます。
一方、App Inventorは、割とオーソドックスで、プログラミング経験者なら、特に、戸惑うことは無いと思います。
ブロックが日本語化されていない、確認用のAndroid端末エミュレータがイマイチ不安定など、とっつきにくい点が多いのですが、慣れてしまえば、簡単な英単語なので覚えられる(子どもは、形と色で見分ける)でしょうし、エミュレータがなくても、同じネットワーク内なら、Androidのスマホで確認することが可能です。

どちらも、一長一短がありますが、当面は、App Inventorのブロックの日本語化とiPhoneアプリの対応が進むのを祈りつつ、Scratchの効率的なプログラミング方法を確立していきたい、と考えています。

Comment(0)