【Scratch 2019】 機械学習・音声認識・デバイス連携の独自拡張(2019/12/6)
スクリーンショット_2019_12_05_5_24

【Scratch 2019】 機械学習・音声認識・デバイス連携の独自拡張(2019/12/6)

豊田 陽介

この記事は 「Scratch Advent Calendar 2019 - Qiita」の 6日目 の記事です。 
機械学習・音声認識などの Scratch用の独自拡張(※自分が作ったものではない)について書いていきます。

はじめに

Scratch のアドベントカレンダーは、以前から最終日の25日には登録をしていたのですが、急遽 6日目にも登録してみました。
そして、ネタをいろいろ考えてみた時、気にしていたけど手をつけてなかったものに関して、これをきっかけにいろいろ着手したりできればと思いました。

そこで、今回は Junya Ishihara(@jishiha)さん が公開されている、Scratch 3.0 の独自拡張に関する記事を書いてみようと思います。
(1つ制作者が Ishihara さんでないものが含まれます)

Scratch の独自拡張について 

Scratch は公式でも、例えば micro:bit や LEGO BOOST 等のデバイス連携や、音声合成等の機能を使うための拡張機能が使えるようになっています。

スクリーンショット_2019_12_05_5_52

スクリーンショット_2019_12_05_5_542

このような仕組みは、上記で名前が出てきた micro:bit の開発環境である、Microsoft MakeCode for micro:bit のビジュアルプログラミング環境でも提供されています。

スクリーンショット_2019_12_05_5_47

スクリーンショット_2019_12_05_5_48

一方、それらの違いとして 1つ、公式の Scratch の開発環境では、拡張機能で自由にサードパーティーの拡張機能を使えないという差があります。

しかし、Scratch 自体がオープンソースとして公開されているものであるため、それを活用して Scratch の開発環境を独自に作り、その上で独自の拡張機能を自由に追加するということは可能です。

今回の記事では、冒頭にも書いた  Junya Ishihara(@jishiha)さん が提供されている環境と、その中で利用可能な独自機能(一部、他の方が作られたものとのコラボあり)を見ていこうと思います。

アクセス先について

まず、プログラミングをする際にアクセスする先は、以下のURLのページになります。
 https://champierre.github.io/scratch3/

アクセスすると、最初の画面は公式のものと同じです(※ 以下は 2019/12/5 にアクセスした際のトップページ)。URLを見ると公式の「https://scratch.mit.edu/」ではないことが分かります。

スクリーンショット_2019_12_05_5_59

そして、拡張機能のメニューを開くと、公式にはない拡張機能が混在しています。

スクリーンショット_2019_12_05_5_24

この部分について、今回は 3つほどを見ていこうと思います。

1) ML2Scratch 【機械学習】

自分が最初に Junya Ishihara さんが作られた独自拡張や、それを使った作品を見たのが以下の「ML2Scratch」でした。

 ●champierre/ml2scratch: 機械学習 x スクラッチ(Connect Machine Learning with Scratch)
  https://github.com/champierre/ml2scratch

上記にあるとおり「ML(Machine Learning)=機械学習」を Scratch で利用できるようにしたものです。
GitHubのページの記載を見ると、TensorFlow.js を使った仕組みのようです。

ML2Scratchは機械学習(TensorFlow.js)をScratchとをつなげます。

GitHubのページには、どのようなことができるか分かる、YouTubeの動画も掲載されています。2019/12/5 時点では「Webカメラでグー、チョキ、パーを判定」「ジェスチャーで倒立2輪ロボットMiPを動かす」という2つが掲載されていました。

2) Speech2Scratch 【音声認識】

次に見てみるのは、今一番気になっている「Speech2Scratch」です。

スクリーンショット_2019_12_05_6_28

説明が ScratchX を利用する手順になっていますが、仕組みとしては下記を使えるようにしたものでしょうか(未確認)
 ●champierre/speech2scratch
  https://github.com/champierre/speech2scratch

公開後に早速試された方がいらっしゃったようです。

この記事を書いたのをきっかけに、自分も試してみました。

思っていた以上にレスポンスも早く、これは楽しい使い道がありそうです!

3) Microbit More【多機能な micro:bit 拡張】(※ 制作者は @yokobond さん )

次は、Microbit More という micro:bit連携の拡張機能です。

もしかしたら、「micro:bit は既に公式で、Scratch Link を使った方法で利用できますよね」と思われた方がいらっしゃるかもしれないですが、公式よりも多機能なのが特長です。
拡張機能一覧では、以下い出てきているものになります。

スクリーンショット_2019_12_05_7_22

この機能ですが、制作者は Ishihara さんではなく、 @yokobond さん 。
以下の投稿に書かれているあるように、Ishihara さんが提供されている環境でも利用できるようにされたものになります( この機能の詳細については https://lab.yengawa.com/project/scratch-microbit-more/ をご覧ください )。

拡張機能の画面を見てみると、公式ではできなかったセンサーやピンから得られる値の利用や、サーボモーター制御なども入ってます。

スクリーンショット_2019_12_05_7_24

パート2へ?

記事を書いていくうちに内容が長くなってきたので、ひとまずここまででまとめに入れればと思います。
まだ触れることができてない独自拡張については、以下が残りました。

Scratch2Maqueen(  https://github.com/champierre/scratch2maqueen
・PoseNet2Scratch( https://github.com/champierre/posenet2scratch )
・ImageClassifier2Scratch

おわりに

あらためて見てみると、取り上げきれていない内容も含め、楽しそうなものがたくさんでした。

できれば続きの記事も書いて、可能ならアドベントカレンダーへ登録できたらと思います。

⇒ 【追記】 続きの記事について

この後、以下の続編を書きました。



この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
豊田 陽介
個人の活動で、ビジュアルプログラミング・IoT・ロボットトイの技術コミュニティを単独・共同で主催したりしています。技術要素の強い内容はQiita( https://qiita.com/youtoy )で書いてます。また、普段は通信会社の研究所で働いていて、ガジェットが大好きです。