<イベントのお知らせ>アソビワークショップ特別編

イベント概要

工作✖️プログラミングで「バルーンスパイダー」の創作体験

開催日時

2020/08/23(日) 10:00 – 15:00

開催場所

宇都宮市まちづくりセンターまちぴあ
〒321-0954 栃木県宇都宮市元今泉5丁目9-7

対象者

小学生

参加費

無料

持ち物

PC(あれば)

注意事項

  • 会場は食事禁止のため、昼食はお昼休憩の間に各自施設外で済ませて下さい
  • 当日は参加前に体温測定を実施し、健康状態の確認をお願いします
  • イベント中はマスクの着用をお願いします

Arduino micro pro を使って自作キーボードを作った話

作ろうと思った背景

子供の教材開発の一環で,microbit の次のステップとして Arduino を想定していて,
その使い方を学んでいるときに,HID機能というものを知りました.

これは何かというと,ヒューマン・インターフェース・デバイスの略称で,
USB接続であたかもキーボード,マウスのように振舞う(なりすます)ことが
できる機能のことです.

このいわゆる「なりすまし」が使えると,
「ある1つのボタンを押したら,xxxというキー入力をする」とかが
出来るようになります.

本当にそんなことが出来るのだろうか,難しくないのだろうか,と思ったので,
試してみた結果が本記事の内容です.

準備するもの

  • Arduino micro pro ※今回は,Amazon で3個で1980円の互換品を使用
  • microUSBケーブル
  • ブレッドボード
  • タクトスイッチ
  • ジャンパワイヤー

配線

Amazon で購入した Arduino micro pro 互換品は,ピンヘッダが半田付けされていないので,
最初にそれをはんだ付けする必要があります.
はんだ付けするにあたっては,ブレッドボードにピンヘッダを差し込み,
その上に,Arduino micro pro を乗せて,はんだ付けすると足が斜めにならずに済みます.

fig1. Arduino のはんだ付け準備 その1
fig2. Arduino のはんだ付け準備 その2 – ピンヘッダをブレッドボードに差します
fig3. Arduino のはんだ付け準備 その3- ピンヘッダに Arduino を置き,はんだ付け

次にブレッドボードに,Arduino, タクトスイッチを配置して,
ジャンパワイヤーで繋げていきます.

  • Arduino GND → スイッチ赤 → スイッチ青
  • Arduino 5番 → スイッチ青
  • Arduino 6番 → スイッチ赤
fig4.タクトスイッチは,赤丸で囲んだ隣同士の足がスイッチを押したときに繋がります
fig5. 配線図

プログラミング

  • Arduino へプログラムを書き込むための IDE をここからインストールします.
  • Arduino を起動し,Tools → Board: “Arduino Uno” → “Arduino Leonardo” を選択します.
fig6. 書き込むボードの対象を Arduino Leonardo にする
  • 補足すると,Uno は先述のHID(なりすまし)機能を持っておらず,
    ゆえにそのライブラリもありません.
  • Leonardo は HID機能を持ち,そのライブラリを持っています.
  • 今回はそのライブラリのうち,Keyboard.h というものを使っていきます.
  • なので,Board として Leonardo を選択する必要があります.
  • 次に,Arduino を microUSBコードで繋げて,PCに繋ぎます.
  • 書き込み先(ポート)の指定をしてあげます.
  • Tools → Port → COM3(Arduino Leonardo).
  • もしかしたら,PCによってはCOM3 と認識されないかもしれないです.
  • それっぽいもの(笑) を選びましょう.
fig7. 書き込み先 Port の指定
  • 下記コードを貼り付け,適宜好みに合うように編集します.
#include <Keyboard.h> // キーボードライブラリの読み込み

#define Button5 5 // 5番ピンを Button5 と呼ぶことにするよ
#define Button6 6

void setup() {
  Keyboard.begin(); // キーボード機能を使うおまじない
  pinMode(Button5, INPUT_PULLUP); // Button5 をプルアップしておく.スイッチ青を押すとGND に繋がる
  pinMode(Button6, INPUT_PULLUP);
}

void loop() {
  // Button5 が押された時の動作設定
  if(digitalRead(Button5) == LOW){ // Button5 がGND になったら,つまり,スイッチ青が押されたら
    Keyboard.print("hogehoge"); // hogehoge と入力される.
    Keyboard.write(9); // TABが入力される.参考先:http://www.asciitable.com/
    Keyboard.print("fugafuga");
    Keyboard.press(KEY_RETURN);
    delay(100); //wait PC busy // PC側が入力を受け付けるまで100ms待つ
    Keyboard.releaseAll(); // キーを離す

    while(digitalRead(Button5) == LOW); // Button5 が連続で入力されてるとき,無視する
  }
  // Button6 が押された時の動作設定
  if(digitalRead(Button6) == LOW){
    Keyboard.print("fugafuga");
    Keyboard.press(KEY_RETURN);
    delay(100); //wait PC busy
    Keyboard.releaseAll();

    while(digitalRead(Button6) == LOW);
  }
  delay(100);
}
  • File → Save as … より,ファイルを保存します.
fig8. File → Save as… より,プログラムファイルを保存する
  • プログラムを Arduino に書き込みます.
fig9. プログラムを Arduino に書き込む.赤丸のところの矢印を押すだけ.押すと黄色くなります.
fig10. 書き込み終わると,黄色くなってたボタンが元の色に戻り, Done uploading と出ます.
  • あとはメモ帳を開いて,タクトスイッチを押してみましょう.
fig11. メモ帳を開いて,タクトスイッチ青を押した図

むすび

やってみて,一番初めに思ったのは,「超簡単にできる!」です.

キーボード自作というと,正直ベーシック的な処理をいっぱい書かなきゃいけないのかな,と
勝手にイメージしていたのですが,今回書いたのは全部で35行程度でした.

で,これを作ってから,自作キーボードのその道には,もっと簡単に自作キーボードを作ることができる,QMKというファームウェアが存在することを知った(知ってしまった)ので,次はQMKについても記事を書こうかな,と思ってます.

ご参考:fabcross さんでも特集していたようです.
https://fabcross.jp/category/make/20200427_Zoom.html

COVID-19(新型コロナウィルス)への対応方針を公表します

ルークスは世界的に感染が拡大しているCOVID-19(Corona Virus Disease、日本では「新型コロナウィルス」と呼ばれています)の感染予防策を十分に講じることを条件に3月中に予定していたイベントを開催します。

開催を判断した理由は大きく以下の2つです。

  1. 参加児童の感染と重症化の可能性が統計的に見て非常に少ない
  2. 推奨されている感染予防対策はルークスだけでも十分に講じることができる

それでは上記の詳細についてそれぞれ論拠となるソースをもとに簡単にご説明します。

児童の感染と重症化のリスクについて

※本項に記載するグラフは中国CDC(疾病予防管理センター)が2020年2月11日の時点で診断されたすべての症例をまとめたレポートをもとにしています。

以下の図をご覧ください。左から順に武漢市、湖北省、中国全体における年齢別の感染者数のグラフになります。縦軸が年齢層、横軸が感染者数の割合を示しておりひと目見て若年層における感染者の数が非常に小さいことがわかります。

例えば0-10歳は中国全体の感染者の0.9%となっています。これを日本に置き換えると、日本での感染者数はWHOのデータによると239人ですのでざっと2.1人が感染している可能性があるといえます。

さらに日本全体で0-9歳の子供はおよそ1000万人程度いると言われています。1000万人のうちの2.1人という割合が意味するところは「子供達が感染するリスクは非常に少ない」ということでしょう。

次に重症化のリスクについても簡単に触れておきます。以下は上記と同様のレポートに記載されているデータの抜粋になります。先述した感染リスクを考慮するとこちらもほとんど無視できるリスクと考えられます。

上記の感染リスクについては今後の世界的な情勢によって左右されるため決して確実なものではありませんが、現時点の公表されているデータから得られる考察としては妥当なものと考えています。

実施予定の感染予防対策について

COVID-19の感染様式は飛沫感染と接触感染の2つです。(問4 新型コロナウイルス感染症にはどのように感染しますか?

これらの感染予防にはWHOから発信されているように一般的な手洗い等の衛生予防策が十分に効果的であるとされています。

よってルークスではそれぞれの様式に合わせて以下の対策を講じます。

飛沫感染:前提として発熱の症状もしくは咳の症状がある方の参加はできません。くしゃみの症状がある方は花粉症対策のケースを考慮してマスクの着用を義務付けます。

接触感染:イベント開始前、イベント中、そして終了直後に手洗い+アルコール除菌を実施します。加えて使用機材等のアルコール除菌もイベント開始前に実施します。

以上、ルークスのCOVID-19への対応方針についてでした。

pxt-maqueenを日本語対応させるまで

Maqueenとは

Maqueen(マックイーン)はマイクロビットを使って制御できる教育向けのデバイスです。プログラムを作る際にはマイクロビットの開発環境であるMakeCodeエディターに拡張機能を追加する必要があります。

困った問題点

マックイーンは多機能で使いやすく遊びがいのあるとても良いデバイスなのでルークスのワークショップ アイテムとして使いたかったのですが、ブロックが日本語対応してないという問題があり導入に踏み切れていませんでした。

日本語対応してない状態

実際にワークショップにきた子に触らせてみたこともあるのですが、英語表記は扱いづらそうにしていたのでこの拡張機能を日本語化する方法について探る必要がありました。

原因は何なのか?

MakeCodeの拡張機能追加方法について調べてみた

まず初めに、MakeCodeエディターのドキュメントから拡張機能のローカライズに関する情報を見つけることができました。新規の拡張機能を作る場合にはNodeJSや別のコマンドラインツールのインストールが必要らしいのですが、既存の拡張機能についてはリポジトリをフォークして幾つかのソースに変更・追記するだけで良さそうなことがわかりました。

Maqueenのソースコード(Githubリポジトリ)を調べてみた

しかし、ドキュメントの内容に沿ってソースを改変したつもりが一向に翻訳が反映されませんでした。悩みながら解決策のヒントを探しにリポジトリの中を漁っているとこんなプルリクがありました。

見つけたプルリク

どうやらlocaleの表記をjpではなくjaにすべきだったようです。公式のドキュメントにはISOコードであることの旨が記載されていたのでjpで問題ないと思い込んでいたのが原因だったようです。実際に公式のドキュメントにもjpではなくjaと記載されてたことに後々気付きました。その他にも修正が必要だった点がありましたので、それらは以降で述べさせてもらいます。

対応方法のまとめ

結論だけ知りたい方はソースコードをご覧ください。

localeの表記

先ほども書いていたようにlocaleはjpではなくjaと記載しなければ翻訳が働かないようです。ISOコードとの整合は取れてないように思いますが、結果良ければ全てよしとしておきます。

辞書の追加

続いて、ソースコードの英語を日本語に翻訳するためのデータを各localeのディレクトリにjson形式で保存しておきます。こちらは公式ドキュメントと同様の方法で編集すれば問題ありませんでした。ひらがな表記もできることが確認できています。

ソースコードとpxt.jsonのバージョンを同期

ここも中々気付けなかったところで、どうやらソースのバージョンとpxt.jsonのバージョンは同期していないといけないようでした。例えばgitでタグをv0.1としていたならpxt.json内のversionもv0.1という具合にしないといけなかったようです。

変更内容をMasterブランチにマージ

最後は変更内容をマスターブランチにマージします。これは正しく検証ができてないのでマスターでなくてもデフォルトのブランチに変更内容が反映されていれば問題ないのかもしれません。

実際のプログラムがこちら

最後に

ルークス初の技術ブログ(?)はいかがだったでしょうか?普段プログラミングに触れてない人にとっては取っ付きにくい内容だったかもしれません。(編集者の文才がアレというのは棚に上げさせてもらいます)

ルークスでは今後も不定期でこのような技術ネタをブログにアップしていく予定です。皆さまの問題解決の一助になれれば幸いです。最後までお読みいただきありがとうございました!

第3回アソビIoTワークショップを開催しました

どんなことをやったか

今回のワークショップのテーマは「リミックス」でした。

スクラッチのガイドラインによれば

リミックスとは、ある作品を元に、新たな作品を作ることで、盗作とは異なる。

とあります。つまりアイディアのスタート地点を他の友だちの作品に移すことでより創発的な活動を促すことを狙いとしました。

このワークショップ には5名の子どもたちが参加してくれました。スクラッチのコミュニティではこの「リミックス」が持つネガティヴな側面についても議論がされており(先述のリンク参照)今回のワークショップを始めるにあたって少し不安もありましたが、それは杞憂に終わりました。彼らのアイディアは友だちの作品によってより刺激され、我々大人たちには想像もつかない世界を作り上げていました。以下のリンクから子供たちの作品を見て頂けると幸いです。

子どもたちの作品リンク

学び・発見

今回は運営側の機材トラブルが生じたため、イベントの進行に若干の遅れが発生したことをこの場を借りて深くお詫びいたします。問題原因の特定は既に完了しており次回のワークショップ は万全の態勢で開催することを約束します。

今回は前回に引き続き各作品の作者である子供たちが自ら作品の内容を説明する時間を設けました。意外だったのが、前回に比べて子供たちの発表に対する恐怖心が減っていたことでした。それが顕著に現れていたのが発表の順番選びです。 受動的に順番が決められるのを待たずに各々がやりたい順番を率先して選んでいたのです。そして作品の説明も前回よりも大きな声を出せており彼らの成長には驚かされるばかりでした。

今後の予定

2019年度(2020年3月末)までは月1回、2020年度からは月2回ワークショップを開催していきます。具体的な日時についてはイベントをご覧ください。これからも一般社団法人ルークスの活動にご理解とご協力を頂けますと幸いです。

当日のPRスライド

第2回アソビIoTワークショップを開催しました

どんなことをやったか

今回のワークショップの内容は以下の3つでした。

  • スクラッチでオリジナルの世界を作る
    • スクラッチの基本的な使い方を知る
    • アイディアを考えて作品を作る
    • 自分の作品をみんなにシェアする

このワークショップ には4名の子どもたちが参加してくれました。子どもたちの個性やそれぞれの作品に現れていて「キャラクターのお話」「様々な動きを取り入れたアニメーション」「ヘアメイク」「オリジナルのゲーム」とそれぞれの想像力をふんだんに働かせた楽しいワークショップになったのではないでしょうか。

子どもたちの作品リンク

学び・発見

今回は初めての試みとして「作品のシェア」というアクティビティを追加しました。突然の人前での発表にみんな緊張した面持ちでしたがみんなの作品の素晴らしいところは我々や保護者の方にもしっかりと伝わりました。自分の考えや意見、そして作品を世の中に発信していく行為はいつの時代も非常に重要ですが、多くの子どもたちが苦手意識を持っているところでもあるかと思います。そんなこともルークスでは遊びながら子供たちが力を付けていけるようにスタッフ一同頑張り続けます。

今後の予定

2019年度(2020年3月末)までは月1回、2020年度からは月2回ワークショップを開催していきます。具体的な日時についてはイベントをご覧ください。これからも一般社団法人ルークスの活動にご理解とご協力を頂けますと幸いです。

当日のPRスライド

第2回アソビIoTワークショップを開催します

スクラッチマイクロビットの使い方を勉強しながらオリジナルの遊びを楽しく考えるワークショップを開催します。

スクラッチはアメリカのMITメディアラボが開発したプログラミング学習環境で世界中の人々に使われています。

マイクロビットは片手サイズの小さなコンピューターで、自分でプログラムを書いて音を出したり光らせたりすることができます。

開催日時

2020年1月19日 午前10:00 – 12:00

開催場所

宇都宮市まちづくりセンター

主催

一般社団法人ルークス

参加資格

小学生以上かつルークス事務局から事前に参加承諾の連絡を受けている方

注意事項

会場内の飲食は原則禁止(水分補給はOK)

その他

会場には小さなキッズスペースを用意します

当日参加される方の持ち物は不要です

不明な点があればルークス事務局までご連絡ください。

最後に

参加者の皆さんを心よりお待ちしております。今年もどうぞよろしくお願いいたします。

第1回アソビIoTワークショップを開催しました

どんなことをやったか

今回のワークショップの内容は以下の3つでした。

  • マイクロビットの基本的な使い方を知る
  • スクラッチでオリジナルの物語を作る
  • ルークスの事業内容紹介とQ&A(保護者の方向け)

このワークショップ には2家族・合計7名の方々に参加していただきました。当初の予定では主にマイクロビットを使っていく予定でしたが子供たちがスクラッチに熱中したため会場内のみんなでオリジナルのアニメーション作りに取り組むという流れになりました。これは運営としては非常に喜ばしいことで、このように子供たちが自発的にやりたいことを探求していける場づくりを今後も心がけていきたいと思っています。

学び・発見

今回参加してくれた子供たちから強く感じたのは大人にはない「創発性」でした。例えば今回のスクラッチを使ったオリジナルのアニメ作りでは誰一人として同じ世界観を持った子はいませんでした。それゆえに、子供たち同士が互いの作品に刺激し合い「あの子がこうやるなら、私もこうやってみよう」と臆することなくアイディアを取り入れそれぞれの作品を作り上げていく光景に感動を覚えました。やはり大人は子供たちに「教える」のではなく彼らが前に進みやすいように「サポートするだけ」で良いのだと改めて認識することができました。今回運営として得られた課題・改善点はより良い子供たちの「遊びと学び」の場作りに活かしていきたいと考えています。

今後の予定

今後の予定ですが、ひとまずこのワークショップを最低でも月1回開催の継続的なイベントとして続けていこうと思います。具体的な日時についてはイベントをご覧ください。ただこのワークショップだけでは今までの学校教育の延長線上でしかないと思っています。ルークスの名に相応しい活動ができるよう理事やこの活動を支援していただく保護者の皆さまとともに今後も楽しい活動を企画中です。これからも一般社団法人ルークスの活動にご理解とご協力を頂けますと幸いです。

当日のPRスライド

第1回アソビIoTワークショップを開催します

マイクロビットの使い方を勉強しながらオリジナルの遊びを楽しく考えるワークショップを開催します。

マイクロビットは片手サイズの小さなコンピューターで、自分でプログラムを書いて音を出したり光らせたりすることができます。

開催日時

2019年12月15日 午前10:00 – 11:30

開催場所

宇都宮市東生涯学習センター 第一会議室

主催

一般社団法人ルークス

参加資格

小学生以上かつルークス事務局から事前に参加登録の連絡を受けている方

注意事項

会場内の飲食は原則禁止(水分補給はOK)

その他

会場には小さなキッズスペースを用意します

当日参加される方の持ち物は不要です

不明な点があればルークス事務局までご連絡ください。

※本投稿はイベント開催を通知するものであり不特定多数に向けた参加募集を募るものではありません