どれ使う?プログラミング教育ツール

AIによる年齢判定結果を学習用ロボット“Codey Rocky”に表示してみよう!

 2020年度からついに小学校でプログラミング教育が実施されます。これに伴い家庭でも手軽にプログラミングを学習できるツールが多数登場していますが、どんなツールを使えばいいのか迷ってしまう方も多いのではないでしょうか? そこで本連載では家庭でのプログラミング教育にピッタリなお勧めツールを紹介していきたいと思います。

 子ども向けプログラミングツールにはAI技術を手軽に利用できるものがあります。前回の記事では、Makeblock社の「mBlock」というアプリで、顔を撮影して年齢認識をするプログラムを動かしてみました。今回は、この判定結果を、同社のプログラミング学習用ロボット“Codey Rocky”に表示してみましょう。

結果を“Codey”で表示してみよう~[スプライト]側プログラムをアレンジ

 前回、サンプルファイルを「mBlock」で実行すると、年齢認識が始まり判定結果がタコのスプライト(アプリ内作品のキャラクター)のセリフとして表示されることを確認しました。今回は、アプリ内で動いて完結していたプログラムをアレンジして、“Codey Rocky”に値を表示させます。今回は頭の部分“Codey”だけを使用します。

前回動かした年齢認識のプログラム
プログラミング学習用ロボットの“Codey Rocky”。頭の部分“Codey”だけボディから外して使える

 まず、現在のプログラムをアレンジします。作成中のプログラミング画面から、下の図を参考に拡張機能[ブロードキャスト]を追加します。[ブロードキャスト]は、タコの[スプライト]側から、外部デバイスである“Codey”にデータを渡すために使います。

プログラムブロックの下部にある[拡張]ボタンをクリックし、拡張センターから[ブロードキャスト]を[+追加]する

 下の図の(1)の通り[ブロードキャスト]ブロックが追加されました。次に、(2)の手順を参考に、変数を作ります。ここでは変数名を“age”としますが、好きな文字列で構いません。

(1)[ブロードキャスト]ブロックが追加された。(2)変数を作成すると作成した変数を使うためのブロックが生成される

 以上で、“age”という変数と、[ブロードキャスト]ブロックを使えるようになりました。これらを使って、年齢認識の判定結果を送信するプログラムを追加します。下の図を参考にプログラムを改編してください。

(1)タコがクリックされたら(2)変数“age”にいったん“0”を入れ(3)AIブロックで年齢認識を行う(4)変数“age”に判定結果の数字を入れ(5)タコのポーズをランダムに表示し(6)変数“age”(=判定結果)をタコのセリフにする(7)“hello”というアップロードメッセージを作りその値を変数“age”にして送る

 これで、タコが登場する[スプライト]側のプログラムが完成しました。

結果を“Codey”で表示してみよう~[デバイス]側プログムを作成

 次は、画面左側のタブで[デバイス]を選択し、“Codey Rocky”側のプログラムを作成します。まず[拡張]ボタンで[ブロードキャスト]を追加します。

[デバイス]側で拡張機能[ブロードキャスト]を追加する

 追加された[ブロードキャスト]ブロックを利用して、[スプライト]側が送信したデータを受け取って“Codey”で表示するプログラムを作ります。下の図を参考にしてください。

プログラムの内容は以下の通り。(1)[スプライト]側が発したアップロードメッセージ“hello”を受け取ったら(2)確認のためLEDを水色に点灯し(3)アップロードメッセージ“hello”の値(=変数“age”)を“Codey”で表示する

 プログラムを作成したら早速テストしましょう。“Codey”とパソコンをUSBケーブルでつないだら、プログラム画面左下の[接続]ボタンで接続します。接続すると[アップロード]ボタンが表示されるので、作成したプログラムを“Codey”に[アップロード]します。

 アップロードできたら、“Codey”をケーブルでつないだまま、プログラム画面内のタコをクリックします。さきほどと同様に年齢判定が実行されます。判定結果がタコの吹き出しとして表示されるのと同時に、“Codey”にも表示されました。

 別の機器に、ただ同じ数字が表示されるだけなのですが、パソコンのスクリーン内でタコのセリフとして小さく表示されるよりも、はるかに本格的な感じがします。こういう演出というのは意外と重要です。大勢で集まったときにゲーム感覚でやっても面白いかもしれませんね。

子供の年齢認識をして“Codey”に結果が表示されたところ。家族で順にやってみると面白い

 なお、外部デバイスである“Codey”に[スプライト]側からデータを渡したい場合は、ケーブルを接続したままにしておく必要があります。なお、同社から出ている“HaloCode”というシンブルボードコンピューターは、スプライト-デバイス間をワイヤレスで通信できるということなので、興味のある方は挑戦してみてください。

 このように、AIの機能を手軽に自作プログラムに組み込んでみると、どんなシーンでAIを使ったら面白いかな?というイメージを膨らませやすくなります。作り手の視点でAI技術を扱う良い体験になるのではないでしょうか。