#toio に関するノウハウのメモと余談(2021/5/4開催のもくもく会でのメモ)【 #GWアドベントカレンダー 2021/5/5 】
この記事は、2021年の GWのアドベントカレンダー 5/5 の分の記事です。
はじめに
toio の非公式のユーザコミュニティで、2021年5月4日にもくもく会を開催しました。
そのイベント中に行われた質問・回答の内容や情報共有された内容について、一部ピックアップしてメモしたのが、今回の記事の内容です。
toio の簡易マットを平らにする
「toio コア キューブ」(単体)に付属している厚紙ではない簡易プレイマットなど、折りたたまれているものを拡げて使う形のプレイマットがあります。これを拡げて使う際、「拡げたマットの折り目に toio が引っかかるが何か対策がないか?」という質問が出ていました。
それについて、「透明で薄いプラスチック製などのカードケースで、サイズが A3 のもので挟み込んで使っている」という話が出て、具体的に商品のリンクが共有されていたので以下に記載します。この 2つがイベント内で共有されていました。
●Amazon | プラス SFカードケース A3 PC-003クリア 43-003 | 文房具・オフィス用品 | 文房具・オフィス用品
https://www.amazon.co.jp/dp/B003DXWD4C
●サンデーPET | アクリサンデー株式会社 https://www.acrysunday.co.jp/product/diy-pla/diy-pet/266/
その後、100円ショップで入手できて利用できたものがあった、という情報も出ていました。
ビジュアルプログラミングでのランプの制御関連
ランプをつけてから消すまでの時間を、ランプをつけた後に決める
これは、参加者の方から出た質問に関する内容です。
「toio のビジュアルプログラミングでは、ランプをつける処理は最初に秒数を指定する必要があるが、何か別の動作時間が不定の処理があって、その別の処理が始まってから終わるまでの間だけランプをつけるようなことができないか?」というものです。
つまり、「実行してみてから処理が3秒かかるかもしれないし、5秒かかるかもしれない処理(処理を実行した後に、結果的に時間が定まるもの)」があり、「ランプをつける時点では不定の時間の間だけ、ランプが点灯するようにする」ということになります。
これを解決するための 1つの方法が、「並列処理(メッセージを送る機能)とランプを消す処理の組み合わせ」になります。動きとしては「処理時間不定のとある処理が終わらないくらいの時間ランプをつける + 処理時間不定の処理が終わったらランプを消す処理を実行する」というもので、ブロックで組むと以下となります。
この例の「1秒待つ」の部分は、本来は「実行してみてから処理時間が定まる処理(そして、9秒以内には終わると見込まれるもの)」が入る想定の部分です。これにより、当初設定している 9秒より短い時間で、かつ、何らか別の処理の時間が終わったタイミングに合わせてランプが消灯される、という動きになります。
もし、この処理時間不定の処理がどれくらいで終わるか読めないという場合は、以下のようにすると良いかもしれません(どうやら、ランプをつける処理は、連続して実行すると処理と処理の間で消灯するような見え方にならないようです)。
それと、以下は自分が作ったものではない別のサンプルで、キーを押下したタイミングで既に実行中だった toio 関連の処理を止めるサンプルです。
ビジュアルプログラミングでのモーター制御・位置座標ベースの制御関連
短い時間間隔で動きを制御をする
質問した内容
toio DO の「つくる」のサンプルで「シンプルなコントローラーをつくる」というものがあります。
これは、アプリ上に表示された矢印アイコンを押すと toio を動かせて、アイコンを押している間だけ toio が動く仕組みで、アイコンが 1回押されるごとに 0.05秒(20ミリ秒)だけモーターを動かす処理が実装されています。
同じアイコンを押しっぱなしにすると 0.05秒分の処理が繰り返される形ですが、このとき toio の動きは小刻みな動きではなく、連続的な動きとなります。この「短い時間間隔で toio を動かす処理を連続的に実行するやり方」について「絶対位置座標指定を使う処理で似たようなことができないか?」という質問をしました。
具体的には以下のようなことを実現できるかどうか、という話になります。
- 短い時間間隔で目標地点(目標は現在位置からすごく近い地点を指定)をどんどん変更して、絶対位置座標指定で移動させ、全体の動きを滑らかなものにする
- 円や直線など特定の軌跡の上を正確にたどるような動きをさせる
上記 2つ目について少し補足すると、「直線上を移動させたいのなら、両方のモーターを同じスピードで動かすだけで良いのでは?」などという話に思えるかもしれませんが、実際にやってみると意図した角度とずれた方向に動いたりします。
質問への回答
自分で試しに「短い時間間隔で絶対位置座標指定を使った動作を繰り返すような処理」を作ってみると、toio の動きがガタガタしてしまっていました。そこで、そもそもそのようなことが実現できるかどうかを確認した形ですが、回答は「実現不可だが、意図した軌跡の上を動かすのは別のやり方がある」というものでした。
ちなみにこれができない理由は、「ビジュアルプログラミングの絶対位置座標指定での移動は、現在位置から目標地点までのモーター制御で加速と減速を行う仕様であるため」とのことでした。加減速が間に入りつつ動き続けるので、動きがガタガタしてしまうようです(なお、絶対位置座標指定で動く速さを遅くしてやれば、加減速が目立たず連続的に動くような感じに見える、とのこと)。
回答の続きですが、意図した軌跡の上を動かす方法の 1つは「つくる」のサンプルの STAGE 7 にある「PID制御で円運動」と似たようなことをやる、というものです。
少し補足すると、上で書いていた「直線上を動かしたいのに、意図した軌跡からズレて動く」という時に「常に toio の位置座標と意図した軌跡とのズレを比較しつつ、そのズレを補正するようにモーターの制御を動的に変える」という対応をします。
余談
今回のもくもく会で、 以下の 2つの話を見聞きしました。
・簡易マットの上に簡易カードを置いて、簡易カードに触れたら特定の地点にたどり着いたことを判定をする仕組み
・クリアケースで簡易マットを挟み込んで保護
そして、その後にふと思いついて、以下のゲームを作ってみました。
使ったブロックは 11個となっています。
仕組みの詳細については、以下の記事に書きました。
●#toio を捕まえるゲームを #toioDo で作ってみた【 #GWアドベントカレンダー 2021/5/5 】 - Qiita
https://qiita.com/youtoy/items/4d024906b3238d03881f
#toio の回転動作の ON/OFF をカメラで認識した手の動きで制御(軽いお試しの概要メモ)【 #GWアドベントカレンダー 2021/5/4 】
この記事は、2021年の GWのアドベントカレンダー 5/4 の分の記事です。
はじめに
自宅にある toio の台数が、購入したもの・コンテスト関連で入手したものと合わせて全部で 6台になりました。
それで、群制御的なことをやりたかったのですがスキル・知識が足りない状況だったので、まずはこんなこと(Web Bluetooth API を使った 6台同時接続と一斉動作)を試してみてました。
自宅にある #toio 6台の同時制御シリーズ、第2弾。
— you (@youtoy) 2021年4月25日
「6台同時接続&全てに同じモーター制御を適用」という実装を Web Bluetooth API を使って書きました(実行はブラウザ上)。
以前、何度も書いていたプログラムの実装を見直してたらできてしまった(今までの実装だと、同時に 3〜4台までだった)。 pic.twitter.com/NUFRVPEqhV
そして、この toio の動作を自分の手の動きで制御できたら良いな、と思いつつ、まずは過去の以下のプロトタイプを作る時に使った両手の認識(MediaPipe Hands の TensorFlow.js実装を利用したもの)と組み合わせられないかな、と思って試したのが今回の内容です。
Googleさんの MediaPipe Hands と p5.js の描画とを組み合わせた仕組みを試していた件の続き。
— you (@youtoy) 2021年2月17日
描画周りを p5.js にしたのを活かして、簡単なものですが立方体の描画・回転など、WebGL による 3D表現を試しに組み込んでみました。 pic.twitter.com/WQvvCCJLPa
ダイの大冒険に出てくる
— you (@youtoy) 2021年2月11日
「とっておきの手品 by フレイザード」っぽいことができるWebアプリができてしまった。 pic.twitter.com/PvxythOfbx
本当は、5/1(土)・2(日)にオンラインで開催された「子どもプログラミングパーク」というイベントで、自分が担当になっていた企画の「モノとつながる楽しいプログラミング(トーク&デモ)」という企画でデモができれば、と進めていたものでしたが、途中まで作って間に合わずという状況になったものでもあります。
なお、その企画中では Teachable Machine を使った音の機械学習と組み合わせて「回転・ぐるぐる・回れ」等と声を出すと、それに連動して 6台の toio が一斉に回転する、というデモを行っていました。
5/1・2 に行われた #子どもプログラミングパーク の中の企画「モノとつながる楽しいプログラミング(トーク&デモ)」でデモを行った仕組み。
— you (@youtoy) 2021年5月3日
声を合図に #toio 6台を一斉に動作させるものだったのですが、動画を公開してなかったのでツイート。
※ #TeachableMachine による音の機械学習を組み合わせ pic.twitter.com/KC0lCCZxwu
できあがったもの
ここで、今回作ったものの動画を掲載します。
カメラで認識された手の指先の距離(親指と人差し指の指先の距離)がある閾値以上になると toio 6台が一斉に回転し、その距離が閾値より小さくなると toio が動かなくなる、という内容です。
カメラで認識した指の動き(2本の指の距離の大きさ)を使って、 #toio 6台の回転動作の ON/OFF を制御する、ちょっとしたお試し!
— you (@youtoy) 2021年5月3日
技術的には、以前から個別で使っていた 2つ
「手の認識: #MediaPipe Hands の #TensorFlowJS 実装(ブラウザで動くもの)、toio の制御: Web Bluetooth API」です。 pic.twitter.com/gN4DoKKgDf
技術的な部分の軽い補足
この仕組みを実現するために使っている技術は以下の通りです。
手の認識: MediaPipe Hands の JavaScript(TensorFlow.js)実装
toio の制御: Web Bluetooth API
手の認識
MediaPipe Hands は、Google が提供している仕組みで、以下のページに概要が書いてあります。
●Hands - mediapipe
https://google.github.io/mediapipe/solutions/hands.html
自分が使ったのは、ブラウザ上で動く JavaScript実装のものでしたが、Python等の他の言語で利用できるバージョンもあります。
本来は両手を同時に認識したり、複数人の手(3つ以上の手)を同時に認識することもできる仕組みですが、今回は片手分の認識のみを利用しています。以下で補足している toio の動作の ON/OFF のトリガーに使っている情報は、認識した手の「親指と人差し指のそれぞれの指先の位置の距離の大きさ」で、その値が特定の閾値を超えているかどうかで toio 関連の処理の ON/OFF を切り替えています。
toio の制御
Web Bluetooth API を使った toio の制御についてですが、これは以下の toio の通信仕様にある内容を使い、仕様で規定されたバイナリデータを送る等のプログラムを JavaScript で実装しています。
●通信概要 · toio™コア キューブ 技術仕様
https://toio.github.io/toio-spec/docs/ble_communication_overview
●モーター · toio™コア キューブ 技術仕様
https://toio.github.io/toio-spec/docs/ble_motor
動きの制御は、上記のモーターの仕様に書かれた「時間指定付きモーター制御」で、500ミリ秒の間だけ左右のモーターがそれぞれ順回転・逆回転となるように動かす命令を実装しています。そのモーター制御の命令が、上記の手の認識の結果をトリガーとして ON となった時には連続してたくさん送られるので、500ミリより長い連続した回転動作が行われる形です。
それと、上で掲載した動画の撮影前の下準備として、toio 6台とのペアリングの処理を行っています。
これらの toio 6台とのペアリング・一斉動作の ON/OFF を行うためのプログラムについて等は、以下の記事に書いてあるので、よろしければご覧ください。
●Web Bluetooth API で toio を 6台同時に制御する - Qiita
https://qiita.com/youtoy/items/2fae3f4365788810215d
以上が今回の内容の、おおまかな情報です。
【Advent Calendar 2020 まとめ】2020年12月に書いたアドベントカレンダー用記事(全20記事)のまとめ【 #GWアドベントカレンダー 2021/5/1 】
この記事は、2021年の GWのアドベントカレンダー 5/1 の分の記事です。
はじめに
2019年のアドベントカレンダー用に記事を書いた後、以下のようなまとめ記事を書いていました。
●【Advent Calendar 2019】書いた全30記事(※ 後から5記事分を追加)のまとめ - 技術とエンタメと、その他・・・ https://yo-to.hatenablog.com/entry/20191225/1577243263
2020年もアドベントカレンダー用の記事を書いていたのですが、2019年のまとめと同様にどんなタイトルのものを書いたか、ざっと記載してみようと思います。
昨年、12/25 までに 25記事書いて、その後に年内に 5記事を追加しました。
2020年も同じように、12/25 までが 16記事で、その後に 4記事を追加となっています。
アドベントカレンダーの登録先と昨年との比較
登録先
自分が登録したアドベントカレンダーが作成されていた先は、以下の 2つ「Qiita と Adventar」でした(去年も同じでした)。
数としては、Adventar のカレンダーが 3つで、残りは Qiita のカレンダーでした。
昨年との比較
昨年と今年で記事を投稿したカレンダーのテーマと、投稿した記事の数は以下のとおりでした。
2019年のように毎日1記事のペースで書くのは厳しそうだったので、当初の予定では 10記事に満たない記事数になるはずでしたが、終わってみたら 20記事を書いた形になりました。
書いたネタというか、登録先のカレンダーのトピックは、2019年と同じものもあれば 2020年に新規に登録をしたトピックのものもありました。
12/25 までにアドベントカレンダー用に書いた記事の一覧
12/1 ベストバイガジェット
●【ベストバイガジェット2020】自宅の無線LAN環境をパワーアップ!: TP-Link Deco X20(2-pack) Wi-Fiルーター(2020/12/1) - 技術とエンタメと、その他・・・ https://yo-to.hatenablog.com/entry/20201201/1606748700
12/3 micro:bit 2020
●【micro:bit 2020】 新バージョンの micro:bit(v2)で micro:Maqueen、micro:bit用GROVEシールド v2.0、Scratch連系を試す! - Qiita https://qiita.com/youtoy/items/11a49f22e9fa7bb1ffeb
12/5【1つ目】 NoCode
●【NoCode 2020】 IFTTT Pro の新機能 3つ(クエリー・フィルター・複数のアクションの実行)の内容をチェックしてみる! - Qiita https://qiita.com/youtoy/items/a5e70c1dbf1c78eb94fa#%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%BC
12/5【2つ目】 スマートスピーカー
●【スマートスピーカー 2020】 IFTTT で Alexa・Google Assistant を利用して IFTTT Pro の新機能(クエリー・フィルター)との組み合わせも試す - Qiita https://qiita.com/youtoy/items/ab6747622d137fcadead
12/6 obniz
●【obniz 2020】テキストプログラミングを自分で書かず Node-RED と #obniz を組み合わせて使おうとしてみる(obnizOSも利用) - Qiita https://qiita.com/youtoy/items/9d00ab9e87720e7f6a2f
12/10 toio
●【toio 2020】 #toio のシェイク検出の情報を Web Bluetooth API で受け取り Smoothie Charts(smoothie.js)でリアルタイムにグラフ化 - Qiita https://qiita.com/youtoy/items/82cf0e90e11bf68c0507
12/13【1つ目】 toio
●【toio 2020】 #toio 2台をコントローラー的に使うために姿勢検出の情報を Web Bluetooth API で受け取ってみる - Qiita https://qiita.com/youtoy/items/12360dc5d2236f803fbe
12/13【2つ目】 IoTLT
●【IoTLT 2020】 micro:bit を使った IoT(Grove - UART Wifi V2 との組み合わせ、IFTTT利用) - Qiita https://qiita.com/youtoy/items/459289951134544e73eb
12/14 Node-RED
●【Node-RED 2020】ダッシュボードで LED表示と表組みでの情報提示(天気情報の表示も) - Qiita https://qiita.com/youtoy/items/0f04ff829fb21e79892d
12/17【1つ目】 ライブ配信
●【ライブ配信 2020】今年のコミュニティでのイベント事情とオンラインイベント・配信の話のあれこれ(便利そうな仕組みの試作なども)|豊田 陽介|note https://note.com/youtoy/n/n438f4921f1de
12/17【2つ目】 NoCode 2020
●【NoCode 2020】IFTTT Pro の新機能活用を模索: Googleカレンダー連携をクエリーで使う方向性(まだ模索中) - Qiita https://qiita.com/youtoy/items/8439d987ec07aadf1329
12/19 JavaScript
●【JavaScript 2020】PubNub を使ったリアルタイム通信を試してみる(JavaScript を利用) - Qiita https://qiita.com/youtoy/items/f3ada57fccbf57cfff60
12/20 enebular
●【enebular 2020】 #enebular の InfoMotion によるグラフ表示を試してみた!(PubNub との組み合わせ) - Qiita https://qiita.com/youtoy/items/b6ffb2b48858a09955ca
12/21【1つ目】 CoderDojo
●【CoderDojo 2020】 DojoCon Japan 2020 のセッション登壇とワークショップの準備の話 - 技術とエンタメと、その他・・・ https://yo-to.hatenablog.com/entry/20201221/1608479618
12/21【2つ目】 JavaScript
●【JavaScript 2020】 #UIFlow の BLE UART を使ったブラウザから #M5Stack_Core2 ( #M5Stack )への文字の送信 - Qiita https://qiita.com/youtoy/items/3da58570972803134f6c
12/23 Seeed UG
●【Seeed UG 2020】 Wio Terminal のバッテリーベースの情報を見たり Web Bluetooth API と連携させるための準備をしたり - Qiita https://qiita.com/youtoy/items/715eb8acebbc0b44a3a5
※追加: 【17記事目】JavaScript
●【JavaScript 2020】 CodeceptJS でファイルのダウンロード - Qiita https://qiita.com/youtoy/items/7e1c398c29e07f8bd79b
※追加: 【18記事目】JavaScript
●【JavaScript 2020】音声ファイルの可視化をブラウザ上で簡単に試す(Web Audio API) - Qiita https://qiita.com/youtoy/items/b69597499268a4a438e8
※追加: 【19記事目】NoCode
●【NoCode 2020】 MQTTブローカーの shiftr.io と IFTTT の Webhook をつなぐ(shiftr.io の HTTP Interface) - Qiita https://qiita.com/youtoy/items/c690e2f1aa064e6dd289
※追加: 【20記事目】JavaScript
●【JavaScript 2020】 MQTT で受信したデータを Smoothie Charts(smoothie.js)以外でリアルタイムにグラフ化: Chart.js とプラグインを利用 - Qiita https://qiita.com/youtoy/items/252f255c9d794bf3d964
【CoderDojo 2020】 DojoCon Japan 2020 のセッション登壇とワークショップの準備の話
この記事は CoderDojo Advent Calendar 2020 の 21日目の記事です。
はじめに
DojoCon Japan への参加について
昨年のアドベントカレンダーに登録した記事で書いた「#DojoConJapan」。自分にとって、その時が初参加でした。
●【CoderDojo 2019】#DojoConJapan に初めて参加して(2019/12/23) - 技術とエンタメと、その他・・・ https://yo-to.hatenablog.com/entry/20191223/1577112775
2020/12/27(日)にオンラインで開催される「DojoCon Japan 2020」は、以下のセッション登壇(以下の画像の向かって左)とワークショップ(以下の画像の向かって右)の担当の 2つの内容で参加することになったので、それに関する話を書こうと思います。
【余談】 2018年のアドベントカレンダーで書いた記事
余談ですが、アドベントカレンダーという話題に関し、2018年のカレンダーにも記事を登録していました。その時は以下のようなタイトルの内容を書いていました。
●#CoderDojo に関わりはじめて【CoderDojo Advent Calendar 2018】 - 技術とエンタメと、その他・・・ https://yo-to.hatenablog.com/entry/20181105/1541422829
セッション登壇の話
今回「各地で活動して得られた経験、デモや紹介をしたあれこれ」というタイトルで、12/27(日)の 14:00-14:20 でセッション登壇をさせていただくこととなりました。
登壇の話をもらった流れ
この話は、10月の初めの週末に東京ビッグサイトで開催されていたイベント「Maker Faire Tokyo 2020 | Make: Japan」に、自分も共同主催者の 1人となっている toio のユーザコミュニティで出展していた中、会場内で「依頼をするかもしれない」という頭出しをもらいました。
ちなみに、展示では「toio + ビジュアルプログラミング」・「toio + Teachable Machine を使った音の機械学習(制御は Web Bluetooth API を利用)」を使った作品を展示していました。
会場内で、まずは作品を一つ動作させてる。#MFTokyo2020#toio #toiotomo pic.twitter.com/Vwr77Jp9CW
— you (@youtoy) 2020年10月3日
会場内で、二つ目の作品をも動作させてる。大丈夫そう!#MFTokyo2020#toio #toiotomo pic.twitter.com/dvQnTGJ0b0
— you (@youtoy) 2020年10月3日
(余談が多くてすみません・・・)
その後、この記事の後半で記載しているワークショップの担当の話をいただいた際に、頭出しされた話がどうなったか確認したところ、正式に実施となった話を聞けました。
その際、セッションの企画をされていたチームからは「講演内容案: 複数 Dojo の参加して得られた知見・違い、心がけていることなどについて」という提案をいただいていました。
プロフィールや概要を作る段階で見返したこと
今回のセッション紹介のページで、自分の関係する部分には以下の内容が書かれています。
- 年40回以上のペースでメンター参加し
- 20以上の Dojo に参加
参加した Dojo の話
今回の依頼をいただいた際に、「複数 Dojo の参加して」という部分がセッション企画のチームからの提案内容のポイントになっていたようでした それを具体化しておこうと思い、普段参加するイベントに関してメモをしているもの(CoderDojo に限らず、主に技術系のイベントにたくさん参加しているため、メモしてまとめておかないと情報を覚えきれないという背景により作っているもの)を見返して、このあたりの数字が出てきました。
その細かい部分を登壇に何らか含めるかは、時間や全体構成を見つつ考え中ですが、ここでは記載してみようと思います。
コロナ禍の前後のどちらかで初来訪した各Dojo や、複数合同で開催されていたイベント、それと Dojo 主体のイベントではないものも含めた各地の Dojo との出会いについて書いてみようと思います(順不同)。
こうして書きだしてみると、いろいろな思い出などもよみがえってきました。
参加ペースの話
年間での参加のペースについて、4半期ごとの回数を2019年1月からの期間で書きだしてみました。
- 2019年:
- 1〜3月 12回
- 4〜6月 10回
- 7〜9月 10回
- 10〜12月 9回
- 2020年:
- 1〜3月 6回
- 4〜6月 19回
- 7〜9月 9回
- 10〜12月 10回
ここで、2020年1月〜3月の回数が少ないですが、これは新型コロナウィルスの影響が出ている部分です。 そして、2020年4月〜6月の回数が突出して多いのは、オンライン開催の試行錯誤がこの時期に多く行われていた影響と思われます。各月での参加数は、以下となっていました。
- 2020年 4〜6月
- 4月 5回
- 5月 7回
- 6月 7回
そして、コロナ禍の前も後も、週末に複数の Dojo に参加するようなことをよくやっているのですが、記録を見ていた時に週末に4つの Dojo のイベントに参加したという記録がこの期間にありました。
- 4/11 午前 瀬戸
- 4/11 午後 オンラインCoderDojo
- 4/12 午前 瑞穂
- 4/12 午後 伊勢
全てが関東以外の Dojo への参加となっていて、オンライン開催があってこその状況でした。
ちなみに、コロナ禍前の記録では週末 3つが参加数の最大で、以下など複数回ありました。
例えばこのような感じだったり、
- 3/30 午前 御茶ノ水
- 3/30 午後 さいたま
- 3/31 でかドージョー in 横浜 vol.2
他に以下のような感じです。
- 9/14 午前 小机
- 9/14 午後 西新宿
- 9/15 午後 池袋
東京・埼玉・神奈川をまたいで、物理的な移動をしつつの参加を伴って、という感じでした。
このように様々な Dojo に参加させていただいた際の話を、思い出しながらお話しできればと思います。
担当するワークショップの話
この記事の前半で書いたセッション登壇とは別に 12/27(日)の 15:10 - 16:10 の時間でワークショップを 1つ担当する予定です。
ワークショップに関する話をもらった流れ
上記のセッション登壇の可能性について頭出しをいただいた話とは別に、ある日「DojoCon でオンラインのワークショップのファシリテーションを」という連絡をいただきました。こちらは、何のワークショップとなるイメージであるかは大まかに「体や道具を使った体験 アンプラグド、Scratchのモーションセンサーなどの担当」という案をいただいていました。
そして、過去に自分がやってきた内容を頭に思い浮かべつつ、オンラインの実施でイメージがぼんやりと浮かんだ「Scratchのビデオモーションセンサー」で進める予定で回答をしました。
過去にビデオモーションでやったこと
今回の自分が担当のワークショップで扱うビデオモーションセンサーについて、今まで CoderDojo でメンターをやってきた中で、作品をいくつか作ってデモをしたり Dojo に参加しているニンジャの子達に作品を体験してもらったりしてきました。
それら全てを公開できてはいなかったりするのですが、いくつか公開しているものをここに掲載してみます(埋め込みコードだとカメラがうまく動かなそうだったので、リンクやリンク+アニメーションGIF を掲載して、体験する場合は Scratch のページを見ていただく形にしています)。
作品1: ボールを跳ね返す
以下の作品は、自分の地元である愛媛県の Dojo である CoderDojo伊予 に参加した際に作ってみたものです。 内容は、複数のボールのスプライトが画面の一方から他方へ動いており、それに触れた場合に効果音が鳴ってボールが動いていた方向と反対の方向へ跳ね返るというものです。 https://scratch.mit.edu/projects/400449080
作品2: たくさんのスプライトの色を変化させる
以下の作品は、クローンをしたたくさんのスプライトにビデオモーションセンサーに関する処理をつけて、動きのある部分を可視化してみようとしたものです。ビデオモーションセンサーで単純な動きを検知するだけでなく、もう少し複雑な動きの検出ができそうかを試そうと思って作ったものです。 https://scratch.mit.edu/projects/408170139
作品3: ボールを消す
そして以下の作品は、画面に下へ落ちるボールがたくさん出てきて、それに触るとボールが効果音とともに消えるというものです。上で掲載していた作品を作る前に、見た目と音の両方でフィードバックをする仕組みを試そうとして作ったものです。 https://scratch.mit.edu/projects/305196069/
他に試作した作品や全体の話
この他にビデオモーションセンサーを Dojo のニンジャの子達(参加者の子達)に体験してもらうため、画面に動物や楽器のスプライトを配置して、それに触ると鳴き声したり楽器の音が鳴ったり、というものを作ったりしました。
ここまで紹介したどの作品も、基本的には、ビデオモーションセンサーで動きを検出し、その動きに対するフィードバックを音や見た目にわかりやすい変化で示す、という構成にしていました。 このフィードバックのやり方を色々変えることで、楽しそうな何かができないかと、試行錯誤した感じでした。
ワークショップの方向性
自分が担当する Scratch のビデオモーションセンサーを使ったワークショップの申し込みページは以下になります。
●[ワークショップ] Scratch ビデオモーションセンサー - DojoCon Japan | Doorkeeper https://dojocon-japan.doorkeeper.jp/events/114692
今回、セッション登壇もあったため、大規模にする方向は準備に確保できそうな時間などを考えると難しそうだったため(複数の方にサポートいただいて、参加人数を多くするという方向にすると、事前にサポートいただくメンバーとの情報共有や調整が各種発生して、その時間が十分にとれるか怪しかったため)、基本的に自分 1名で対応可能な内容・規模で進めることにしました。
また、今回のワークショップは初心者向けで組み立てていますが、時間は60分の長さとなるよう調整させてもらいました。 これは、Scratch 自体も初めてという子が多い場合は、Scratch の使い方自体のフォローから始めて、ビデオモーションセンサーの部分を複雑すぎない内容でポイントになる部分を体験できるようにしたり、というやり方もできるように想定してのことです(30分枠だと、Scratch 自体も初めての子が多い場合に状況によって時間が不足して、破綻しそうな予感があったため)。 時間に関わる部分の話では、参加する子達の中に Zoom の操作にそこまで慣れてない子がいた場合に、最初にアイスブレイクも兼ねて Zoom の操作(ワークショップで使いそうなミュートや画面共有)をしつつコミュニケーションをする、ということも想定していて、これをやる場合にも時間があると良さそうというのがありました。
まとめ
昨年、初めて参加した DojoCon Japan。 今年はオンライン開催になり、またセッションとワークショップを担当させていただくこととなって、昨年とは関わり方・参加の仕方が大きく変わることになりました。
そのような変化がありながら、本番に向けた準備が両方とも残っている状態ですが、締切のぎりぎりまで試行錯誤をしてみようと思っています。
登壇準備をするために CoderDojo の活動を振り返って出てきた話
今回、セッション登壇で紹介すると書いた内容の中に「各地のDojoで紹介してきた、様々なプログラム・ガジェットを使った作品」というものがあります。 この候補をあげていくなかで出てきた作品を、ここでいくつか掲載してみようと思います。 (ちなみに、この記事の最初のほうで掲載した toio を使った展示作品も、紹介するかもしれない候補ではあったりします)
ビデオと機械学習を使ったものの試作
以上の話は公式の Scratch を使った話でしたが、それ以外に @jishiha さんが公開されている機械学習などの独自機能が追加された Scratch である「 stretch3.github.io 」でも、カメラを使ったものを試作したりしています。
ビデオモーションセンサーでは実現できない、「手や顔の位置・細かな動きに連動するような仕組み」を作ったりすることができます。
手の検出: handpose2scratch
@jishiha さんの Stretch3 の拡張機能、Handpose2Scratch を使って、画面内のネコを指でつまんで動かせるようにしてみるテスト。 pic.twitter.com/7dueUADGDF
— you (@youtoy) 2020年10月5日
@jishiha さんの Handpose2Scratch を使った、指でつまんで Scratch内のネコを動かした動画の件、
— you (@youtoy) 2020年10月6日
当初は手でつかむ動作でやろうとしていたため、手を開く/握るの判定や、それと合わせて指の本数を認識する処理を作ってました。
その動画です(動画後半は、handposeの認識結果が重畳されたもの)。 pic.twitter.com/edG0GPo8uF
顔の検出: facemesh2scratch
午前の CoderDojo赤羽オンラインの参加時に、@jishiha さんが作られた facemesh2scratch で作品を作ってみて、デモもしてみました。
— you (@youtoy) 2020年4月5日
動画の内容は「口の開閉を検知し、口が開いたときに口元の位置から星が飛び出てくる」というもの。#CoderDojo の開催時間中に作ったものに、少し手を加えて動画に。 pic.twitter.com/WegirBCPLd
画像の機械学習: ml2scratch
Scratch でジャンケン画像を機械学習させて識別するのを試した時の動画。
— you (@youtoy) 2020年1月13日
今日の CoderDojoまちだ で、@jishiha さんの作られた独自環境の Scratch を使ったデモ(声でロボットカーを操作するもの)をやったら、
その独自拡張機能に興味をもった子が出て、それで一緒に試した時のもの。#CoderDojo pic.twitter.com/TSLNCvb7WL
「何かの作品を作っている」というよりは、「何か作品を作るための前準備として、どんな機能が作れそうか試す」という感じのことをあれこれやっています。
個人的には、カメラを利用するものではない「 stretch3.github.io 」の独自拡張機能もこれまで色々試していて、Scratch の上で楽しいことができそうな方向の話は今後も追いかけていきたい部分です。
Scratch に IoT の仕組みを組み込んでみた話
上記の @jishiha さんが作られていたような、Scratch に独自の機能を組み込む話は、自分も少しやってみました。
IoT の話で良く登場する通信のやり方で「MQTT」というものがあるのですが、それを Scratch に組み込んでみて、スマートフォンや小型のデバイス上で行った操作を Scratch に反映させる、ということをやってみました。
こちらの動画は、
— you (@youtoy) 2020年8月12日
スマホ上のWebサイト上のボタン操作でScratchキャットを動かす、というもの(先ほどと同じく、MQTTでやりとり)。
先ほどのものも含め、インターネット上のMQTTブローカーを経由している割には、そんなに大きな遅延はない感じでした。 https://t.co/lbWFgqArbH pic.twitter.com/1FjtvDmIqo
この事例だと、micro:bit 連携やクラウド変数で似たようなことができそうな例になってしまっているのですが、それらの機能ではできないことも実現できるはずなので、何か面白い作品を考えられればと思っているところです。
HackforPlay でやってみたこと
普段の CoderDojo の活動では、Scratch や micro:bit 関連のサポートをしていることが多いのですが、それ以外に HackforPlay(ハックフォープレイ)関連も対応することが増えました。
その中で、いくつか作ってみたものがあるのですが、その 1つを紹介してみます。こちらは、標準機能ではないものを JavaScript のプログラムで書いてみたもので、ニコニコ動画風にコメントを表示させる、というものです。
今日のCoderDojo小机にて、#HackforPlay の中で JavaScript の処理で専用の関数などではないものも動く、という事例を見たので、
— you (@youtoy) 2020年8月30日
昨日、軽く試作を始めたニコニコ動画風のコメントを表示する機能を実装してみた! pic.twitter.com/53LGrJuhzZ
これは、元々はオンラインのイベントが増える中、そこで使えそうな仕組みを自作してみようとしたものがあり、それを HackforPlay にも組み込めるか試してみた流れでした。
昨日の #コミュニティ放送部 のイベントで、ライブデモをやったニコニコ動画風のコメント表示機能( HTML+JavaScript で実装し、OBS でカメラ映像と合成 )、YouTube Live のアーカイブで見え方を確認してみた。
— you (@youtoy) 2020年9月27日
きちんと伝わっていそうで、良かった!https://t.co/7i3fXRWLlE pic.twitter.com/toZYaVWcGU
アドベントカレンダー用記事の引用で使うリツイート。 https://t.co/YylsHngrl7
— you (@youtoy) 2020年12月20日
そして、せっかく自作したので、他に既に出ていた同じ機能を持つアプリにない機能を足してみたりしていて、例えば LINE アプリで入れたコメントが画面にながれる機能を足してみたりしました。
前に作ったニコニコ動画風コメント表示、追加機能で LINE Bot からテキストを送れるようにしてみた!
— you (@youtoy) 2020年10月21日
LINEアプリで入力したテキストが、カメラ映像の上を流れていきます。
LINE Bot や、そこで入力されたテキストを MQTT で送信する処理などは #enebular 上の Node-RED を使いました。#noderedjp pic.twitter.com/mvjI9rIgS6
【ベストバイガジェット2020】自宅の無線LAN環境をパワーアップ!: TP-Link Deco X20(2-pack) Wi-Fiルーター(2020/12/1)
この記事は 今年のベストバイガジェット Advent Calendar 2020 の 1日目 の記事です。
はじめに
ガジェット好きとしてはカレンダーのテーマを見たら登録せずにはいられず、一昨年・昨年も以下の記事を書きました you(@youtoy)です。
今年のカレンダーの 1日目を担当させていただきます。
一昨年・昨年に引き続き今年も様々なガジェットを買いあさり(笑)、昨年に続いて今年も「話題になっているガジェットはほぼ全て家にありそう」と、多数の方に言われています。これについては、頻繁に購入したガジェットを Facebook・Twitterにしょっちゅう写真付きで投稿・ツイートしたりしているのも、大きく影響していそうなのですが。
さてメインの話に戻り、今年もいろいろと購入したガジェットの中でのベストバイガジェット2020について。
選んだものは
「TP-Link Deco X20(2-pack) Wi-Fiルーター」
です。
選んだ理由とその背景
選定理由
こちらの「Deco X20(2-pack) Wi-Fiルーター」を選んだ理由は、2020年6月時点で「メッシュWi-Fi」や「Wi-Fi 6」に対応していながら、1個あたりが1万円強の価格であることでした。
残念ながら「Wi-Fi 6 対応」という部分については、ルーターにつなげるデバイス側が未対応なので、現時点では活用できていません。 しかし、自分がこの製品で一番魅力を感じた部分が「メッシュWi-Fi」で、こちらは自宅内の無線LAN環境の向上に大きく貢献してくれたと思っています。
「メッシュWi-Fi」の話について背景を少し補足すると、自宅のインターネット回線の終端装置がある部屋と自分の生活のメインになっている部屋が分かれており、終端装置につないだ Wi-Fiルーターと PC・スマホとの間の電波状態が「大きな問題は起こらないものの良好な状態でもない」という感じがありました(Wi-Fiルーターをしばらく買い換えてなかったため、その性能に依存する部分もあるのですが)。 さらに今年の4月ごろからは、ほぼ100%テレワーク・外出自粛の状態が長く続き、プライベートでのコミュニティ活動で外出ばかりしていた生活も大きく変わって、自宅で PC・スマホを利用する状態が大幅に増えたことも、この製品による自宅の無線LAN環境改善の恩恵を大きく感じることになった要因です。
なお、今後は「メッシュWi-Fi」や「Wi-Fi 6」に対応した安価な製品が出てくるかもしれないので、自分の購入タイミングという要素が合わさった状態でのベストバイであることにご注意ください。
購入にいたった経緯
たしか、購入のきかっけになったのは以下の @ma2shita さんの Facebook投稿(※ 以下は、それと同じ内容のツイート)だったと思います。
Decoちゃん、新しいX20が出るのか!6/25に出荷開始なのかー。しかも "Decoシリーズはすべて共用可能" との事なので、買い増すことにした。 https://t.co/kOeTV9GQgj
— 松下享平 《IoTの事例や技術を紹介》(Max@ソラコム) (@ma2shita) 2020年5月15日
投稿で引用されていたのが以下の記事で、「Wi-Fi 6とデュアルバンドに対応するメッシュWi-Fiシステム、最大150台の機器を接続できる」といったあたりの説明と価格を見て購入を決めました。
●TP-Link、Wi-Fi 6対応のメッシュWi-Fiルーター「Deco X20」を6月25日発売 - ケータイ Watch https://k-tai.watch.impress.co.jp/docs/news/1252443.html
そして、オンライン予約をしていたものが取り消されてしまったり、という経緯もあったりしつつ、購入先変更で対応して無事に購入できました。
前にFacebookのタイムラインで見かけた(@ma2shita さんが投稿されてた)、こちらが到着!
— you (@youtoy) 2020年6月25日
メッシュWi-Fi + Wi-Fi 6 で、接続可能な端末数も多い! pic.twitter.com/EohwChKs5W
公式ページを引用しての補足
製品の公式ページは以下となります。
●Deco X20(2-pack) | AX1800 メッシュWi-Fiシステム | TP-Link 日本 https://www.tp-link.com/jp/home-networking/deco/deco-x20(2-pack)/
製品の特長に関する部分
公式ページには以下のような記載があります。
既に上で書いた「メッシュWi-Fi」や「Wi-Fi 6」の話以外で、個人的に良いと思った点や試してみて良かった点は以下がありました。
そして、以下は試す機会が今のところ得られてないですが、便利そうだと思うところです。
まとめ
TP-Link Deco X20(2-pack) Wi-Fiルーター、まだ活用しきれていない機能もありますが、現時点でも購入して良かったと思う製品でした。
今後も様々なガジェットを入手して、面白そうなものを見つけていければと思います!
余談: 今年購入した大量のガジェットのうちの一部
今回のベストバイガジェットを決めるにあたり、今年購入したガジェットを見返したのですが、その中のいくつかを適当にピックアップしてみました。
期待通りのヨドバシさんからの荷物。#OculusQuest2 ! pic.twitter.com/Yt7FBlWGIU
— you (@youtoy) 2020年10月13日
追加のアイテムをゲット! https://t.co/pqRYOKB3lo pic.twitter.com/4gMdMKyRtT
— you (@youtoy) 2020年10月18日
テレワーク中の自宅に、荷物のお届けが。
— you (@youtoy) 2020年5月29日
ついに、ATEM Mini Pro をゲットしました! pic.twitter.com/AinAUsIGkk
今日、コンビニで増えた荷物は、なかなかの大物
— you (@youtoy) 2020年1月23日
(※ 注:ノートPCではありません)。 pic.twitter.com/jVUSzrTKuH
コンビニで、特定の世代の心をガッチリ掴みそうな、
— you (@youtoy) 2020年3月4日
USB接続と無線接続のコントローラーをゲットした。 pic.twitter.com/9iZ8TPNbqA
近所のコンビニで、#M5Stack Core2 をゲット! pic.twitter.com/HMH5d7Cb9b
— you (@youtoy) 2020年9月3日
コンビニではゲットできなそうな、大物を手に入れたw pic.twitter.com/LQxyxCCP61
— you (@youtoy) 2020年3月16日
先月 IKEAと #Sonos のコラボ製品「SYMFONISK」を買って、自宅の滞在時間が長くなった今、大活躍中なのですが、@wyamazak さんが当初オススメしてくれていた、AIアシスタント搭載モデルのこちらも、最近ポチって本日受領しました。#sonosjp pic.twitter.com/6SJoBrzEZ8
— you (@youtoy) 2020年4月25日
会社帰りに近所のコンビニで pic.twitter.com/5tUzfjVErh
— you (@youtoy) 2020年10月12日
@1ft_seabass さんのリツイートを見てポチった、小型のHDMIモニタが届いた! pic.twitter.com/EyXPR5B2Tt
— you (@youtoy) 2020年10月7日
Nintendo Labo は Toy-Con 01 と 02 を持ってなかったのですが、
— you (@youtoy) 2020年2月14日
Twitter情報で Amazon で安く買えるというのを見かけてポチり、04 までをコンプリートしてしまったw pic.twitter.com/URoaqZMcFc
早速、マイクが届いたぞ! https://t.co/ihLZzuAbah pic.twitter.com/voldk7BkSy
— you (@youtoy) 2020年9月10日
一時期、品薄だったやつ。
— you (@youtoy) 2020年8月15日
入手! pic.twitter.com/pbgPd4iqj3
昼の買い出しに行った帰り道、
— you (@youtoy) 2020年5月17日
立ち寄ったコンビニで。 pic.twitter.com/cwDVdSHGMW
自宅でのテレワーク中、@ssci さんで注文していたやつ、#toio コア キューブ 2つと、充電台をゲット!
— you (@youtoy) 2020年4月24日
(あと、右上に toio関連じゃないやつも混じってるけど)
これで、自宅のコア キューブが合計で 4つになったので、群制御が試せる!#toiotomo pic.twitter.com/5US74Wyk8r
スイッチサイエンス さんで注文していた、
— you (@youtoy) 2020年4月14日
ATOM Matrix(2個)と ATOM Lite(1個)
をゲット!!
サイズ比較用に、500円玉を一緒に置いて写真を撮ってみました。 pic.twitter.com/tfoUhrVZAs
@SAMonodera さんに教えていただいた、小型モバイルバッテリーをゲット。
— you (@youtoy) 2020年5月21日
さすがに ATOM Matrix より小さい、とはならないですが、
取り付けてみるとバッテリーも相当に小さいのが分かります! pic.twitter.com/KxFh5WTxkE
@ssci さんからのお届けもの、#M5Stack_CoreInk !
— you (@youtoy) 2020年11月14日
#M5Stack #CoreInk pic.twitter.com/9IzJkRS7oa
会社帰りに近所のコンビニへ。
— you (@youtoy) 2020年11月26日
そして、新バージョンのmicro:bitをゲット! pic.twitter.com/iUAziB12OH
@ssci さん、本当に連日ありがとうございます。#M5Paper をゲット!#M5Stack pic.twitter.com/0cNus56qNh
— you (@youtoy) 2020年11月28日
一部を見ていくだけでも、いろいろ買ってたなというのを実感してしまうところ。