2019年5月11日土曜日

MIT App Inventorの新しいイベント処理ブロック

 MIT App Inventorでは、現在進行中のiOS対応の他にも、継続的なバージョンアップが行われています。今回、待望の汎用イベント処理(リスナー)ブロックが発表されるという予告があったので、待っていました。ボストン時間の2019-5-10(金)に実施されるとのことで当日何度かアクセスしてみましたが、結局、現地時間で金曜日の23:00ころに実施されました。

 MIT App Inventorは、世界195ヶ国から登録ユーザ数=820万人、月間Active Users=101万人ほどに浸透しているシステムなので、バージョンアップリスクを勘案して、週末の深夜となった模様です。いくつかの新規項目があるのですが、ここでは、イベントリスナー関係に絞ります。

ボタンを押した場合のイベントリスナーの汎用化
 図1を使って説明します。9個のボタンがあります。そのうち、背景色が黄色のボタンを押した時だけ、そのボタンの表面に"O"を表示する、という簡単な問題です。背景色は、ボタン毎に固定ではなく、時間変化するものとしています。結論から言いますと、今回の新規ブロックを使うと、そのプログラムは、図1のようになります。これがプログラムの全てですので、その簡潔さに嬉しくなります!


 一方、従来のブロックを使った場合は、以下の図2のように書くしかないでしょう。すなわち、9個のボタンそれぞれに、ボタンが押された場合のリスナーの処理(背景色の検査とその結果に基づく"O"の表示)を書くことになります。


 Javaなどの汎用言語とちがって、MIT App Inventorでは、例えば、ボタンを押した場合のイベントのリスナーには自分自身(ボタン)しかなれませんでした。他のオブジェクトは、ボタンのリスナーにはなれませんでした。そのため、図2のようなことになってしまいます。

 今回の改訂では、例えばボタンに関していえば、どのボタンを押した場合でも、新設ブロック(any Button.click)が、そのイベントを受け付けるようになりました。もちろん、その際、イベントの発生源となるボタンを特定できますので、図1のように纏めて書けるわけです。

 このような新規ブロックは、ボタンに限らず、Action イベントやState Changedイベントを発生するオブジェクトの種類毎に用意されていますので、複雑なプログラムでのイベントの扱いが簡潔になり、開発の効率化を一層促進させると思います。

従来のイベントリスナーの自動汎用化
 今回のバージョンアップでは、従来のプログラムでの個別のイベントリスナーを、自動的に汎用化する機能までついています!すなわち、上記の例で言えば、ボタンB1に対する固有のイベントリスナーを、クリック一つで、自動的に汎用化できます。実際、図3のようにしてできた汎用リスナーが、図1のブロックとして示したものなのです。


0 件のコメント:

コメントを投稿