僕は発展途上技術者

Circle CI で rspec を並列で動かす

Circle CI で rspec をたとえば2個とか3個のコンテナーで並列で動かす方法を調べた。

Circle CI の公式ドキュメントを始め、役立つ記事はいくつかあったのだが、それぞれ少しずつ情報が足りなかったりあるいは一部の手順はすでにわかっているものとして書かれていたりする。全部をひっくるめて総合しないとうまく動かすことができなかったので、自分用のメモのためにも完全な手順を書き残しておく。

タイミングデータを出力する

rspec を並列で動かすには、テスト対象の全ファイルをうまく分けて、2個あるいは3個のコンテナーそれぞれで実行する rspec に配分しなければならない。

この分け方には、単純にファイル名をアルファベット順に並べて均等に分けたり、ファイルサイズで分けるなどいくつかあるのだが、一番効率がいいのが、実行時間が均等になるように分ける --split-by=timings だ。

しかし、この方法を採用にするには、あらかじめ全テストの実行時間を記録したタイミングデータというものが必要で、いくつか設定を行わなければならない。

まず、Gemfile に

group :test do
  gem 'rspec_junit_formatter'
end

を追加し、bundle install する。

rspec を実行したときにタイミングデータを xml ファイルに出力するためには、この rspec_junit_formatter gem が必要だ。

.circle_ci/config.yml の設定

次に .circle_ci/config.yml の設定を以下のように変更する。 変更した部分だけを書き出している。

jobs:
  build:
    parallelism: 2

    steps:
      - run:
          name: Parallel RSpec
          command: |
            TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings --timings-type=filename)
            bundle exec rspec --format progress --format RspecJunitFormatter -o tmp/test-results/rspec.xml -- $TESTFILES

      - store_test_results:
          path: tmp/test-results

parallelism オプションでは、いくつのコンテナーで並列処理を行ないたいかを設定している。2 と指定すれば、2台のコンテナーで並列処理をおこなう。

Parallel RSpec と名付けたステップでは、タイミングデータを元にして全対象ファイルを実行時間がなるべく均等になるように分割している。次に bundle exec rspec で rspec を実行しているのだが、各オプションを指定することでテストデータを tmp/test-results/rspec.xml に出力している。

タイミングデータを出力するだけでは駄目で、次に rspec を実行するときにこのタイミングデータを利用できるように保存しておく必要がある。その保存先を指定しているのが、store_test_results オプションだ。

設定を変更した直後、1回目に rspec を実行するときは、過去のタイミングデータはまだ保存されていない状態なので、timing data が見つからない旨のメッセージがログ画面に流れる。タイミングデータを利用してファイルを分割できるようになるのは第2回目からである。

以上の設定で、CircleCI 上で rspec を並列に動かすことができる。

rubocop も並列で動かす

rspec の前に rubocop を実行している場合、各コンテナーで同様に全ファイルをチェックするのは無駄に思える。

そこで、以下の設定を .circle_ci/config.yml に追加し、rubocop の対象ファイル app と spec 以下の全 *.rb ファイルをファイルサイズを元に分割して、実行するようにした。

jobs:
  build:
    steps:
      - run:
          name: Parallel rubocop
          command: |
            PROJECTFILES=$(circleci tests glob "app/**/*.rb" "spec/**/*.rb" | circleci tests split --split-by=filesize)
            bundle exec rubocop -c .rubocop.yml -- ${PROJECTFILES}

参考にした記事

『子供の科学』4月号の特集で「Scratch で機械学習にチャレンジ」という記事を書きました

『子供の科学』4月号の特集で、Scratch でつくったゲームを「ML2Scratch」という独自拡張機能を使って、手のジェスチャーで操縦できるようにするという記事を書いた。『子供の科学』Webサイトの「ここだけの話」というコーナーでは、その「ML2Scratch」の裏話として、「Tsukuba Mini Maker Faire」で展示されていた「ワガラザウルス」という恐竜型ロボットの動きを制御するのにも使われているという話題が取り上げられています。

» 子供の科学 2020年4月号(「ここだけの話」はページ中段あたり)

「ワガラザウルス」の開発者の 網野 梓 (Azusa Amino) さんとは、昨年 ML2Scratch を展示するために参加した上海で開催された Shanghai Maker Carnival 2019 で出会ったのが縁で、そのとき ML2Scratch を見せたらとても面白がってくれた。帰国後、ML2Scratch で制御できるように改造された「ワガラザウルス」の動画を見ました。

» ML2Scratchでワガラサウルスを動かしてみました!

僕自身は ML2Scratch のような開発者が面白がって使ってくれるツールを作るのは得意なのかもしれないが、上海のこどもたちやその親御さんたちにも大人気だった「ワガラザウルス」みたいな作品を作る才能もアイデアも持ち合わせてはいない。ですが、上海では網野さん自身が操縦していた「ワガラザウルス」が ML2Scratch の画像認識により誰でも操作できるようになっていると聞いて、見る人を楽しませるのに少しでも貢献できているのかなと思うととても嬉しく思う。

ところで『子供の科学』は、先日吉川英治賞文化賞を受賞されました。子供たちに科学の楽しさを96年間伝え続けている、というのが受賞理由です。96年間も!!すごすぎる。その雑誌の数ページに、僕も書かせていただけるなんてとても光栄なことだと思っています。今回の記事を書くきっかけも作ってくださった 阿部 和広 (Kazuhiro Abe) 先生は、教育に取り組むには長い時間がかかることを覚悟する必要があるというようなことをおっしゃっていたと記憶するのだが、96年間は、まあまあ長いと言えるのではないだろうか。

僕自身は、本業の傍ら片手間に、もともとは自分のこどもたちにプログラミングの楽しさを伝えるのがきっかけで、プログラミング教育に興味を持ち始め関わっています。そろそろそれから10年が経とうとしていますが、まだまだこれと Scratch をつなげたら面白そうと思うアイデアは尽きてはいないので、色々と面白く楽しいものを作ったり発信していこうと思っている。

カリフォルニア5日目 振り返り

日本からの往路を羽田 -> サンフランシスコ、復路をシアトル -> 羽田にしてしまうと、航空券の費用が高くなってしまうので、往復とも羽田 <-> サンフランシスコにしました。このため、シアトルのコミュニティカレッジ巡りを終えてまたサンフランシスコに戻って来ました。最後は空港近くのホテルで一泊したあと明日、日本へ帰国します。

Keep

  • Expedia のポイントが使え、空港近くで安く予約できたので、最後は AirBnB でなくホテル泊にしました。綺麗なモーテルといった感じ。AirBnB はサンフランシスコもシアトルも当たりでとても良かったのですが、やはり少しは気を遣ったりもするので、準備を行い日程をちゃんとこなした息子に良いご褒美となったんじゃないかと思う。疲れて一瞬で寝てしまい、明日朝はすぐ空港に向かうので満喫はほとんどしていないのだけど。
  • このブログエントリーを読んでくださった方が、De Anza に通う日本人の学生を紹介してくださり、滞在中に急遽調整して、ハッカソンに参加中だというところを時間を少しとってもらって、サンフランシスコSOMAのカフェで会って来ました。日本人の学生から日本語でいろいろと情報を聞くことができて、大変ありがたかった。息子とは1歳違いなのに、留学生活で鍛えられているのもあるのだろう、だいぶしっかりされていて、息子もおそらく大きな刺激を受けたことだと思います。息子も彼のように成長してくれるといいなと思いました。
  • ハッカソンの場所も少し見させてもらって雰囲気を感じることができた。
  • ハッカソンに一緒に参加しているという彼の友人のロシア人(同じく De Anza に通っている)も紹介してれて、留学生活に関するアドバイスをもらった。コンピューターサイエンスを学ぶのなら、事前に C++ または Java あるいは Python をやっておいた方がいい、英語は映画やドラマなどを観てとにかくたくさん聞くこと、とにかく準備を怠ってはいけない、という貴重なアドバイスをもらう。あとで聞いたら、まだ長男と同じ年齢だとのことでびっくりした。
  • Uber を初めて使い、空港からホテルへ、そして帰りのサンフランシスコからホテルへ。ドライバーがフレンドリーに身の上話をしてくれてサービスの質が良い上に安い、アプリもとても便利、これを知ったらもうタクシーは乗らないだろうな。

Problem

  • 機内の映画で目についた「トロン」を見始めたのですが、英語のみ字幕なしは流石に厳しく始まってすぐに寝落ちした。で、起きたらトラブルか何かでまだ機は離陸しておらず、次に目についた Google のインターンシップに営業マンのおっさん2人が挑戦するという「インターンシップ」を見始めたら、見知った景色がよく出てくるし、とても面白かったのに、トラブルの遅延を挽回したのか、あっという間にサンフランシスコ に着いてしまって、半分をちょっと過ぎたところで終了してしまった。続きが気になる。
  • ホテルからサンフランシスコ へは、一度は経験しておいた方が良いと思い BART を使って移動。しかし、少し薄汚い雰囲気にセンシティブな長男は気疲れしてしまったよう。また時間がかかり約束の時間にかなり遅れてしまって申し訳ないという思いもあったのだろう。なぜか Uber が高いという間違ったイメージを事前に持っていて、近くのBARTの駅までしか乗せてもらわなかったのだけれど、こんなに時間がかかるなら、ホテルからサンフランシスコへ直接 Uber で移動すべきだった。
  • 最初に渡されたホテルのキーがちゃんと動かず、フロントに戻って取り替えてもらったのだが、車移動前提のモーテルだもんだから、行って戻ってくるのも一苦労。時間をロスしてしまった。まあアメリカあるあるだ。

シアトル2日目 振り返り

シアトルのコミュニティカレッジ訪問2日目の振り返りです。

Problem(悪かったこと)

  • 午後に Edmonds Community College のキャンパスツアーを息子が予約していたのだが、前日にキャンセルのメールが来ていたのに気づかず、キャンパスに到着して初めて気づくことになってしまった。
  • ワシントン大学近くのカフェに行くときに停めた駐車場が若干汚くやばい感じだったのだが、昼間ならば良かろうと思い駐車したが、少し離れたところで怒声をあげているホームレスの人がいたために、長男を怖がらせてしまった。しかしまあ、アメリカで生活しているとどうしてもこういう状況に出会ってしまうことはあるので、良い経験にはなったのではないかと思う。

Keep(良かったこと)

  • 午前中は、シアトルのコミュニティカレッジからの転入先(Transer という)として人気のあるワシントン大学を見てきました。どこか中世のお城のような荘厳な建物が多く、難関ではあるけれど、もしかしてここで学ぶことになるのかもと思い描くことができれば勉学に励む良いモチベーションになるのではないかと思う。カリフォルニアでの人気の Transfer 先である UC バークレーも見ることができたし、コミニュティカレッジがゴールではない息子にとって、その先の進路を何となく思い描けるようになったらいいなと思う。

  • ドタキャンとなってしまった Edmonds Community College、近くのスタッフらしき人を捕まえて事情を説明すると、日本人のスタッフがいらっしゃる International Students Service に連絡してくれ、その場所まで親切に連れてってくださった。残念ながら日本人の方は不在で、それならばこの人に相談すれば良いよと ESL(English Second Learning) の担当の方を紹介してくれた。
  • ESL(English Second Learning) の担当の方はものすごくゆっくり、長男がわかるように話してくれ、長男や僕からの質問に懇切丁寧に答えてくれる。全般的に Community Colleges の関係者は、アメリカではなかなか見られないくらいに親切丁寧で、長男が一人でもやっていけそうかどうか始めは心配であったが、諦めることなく、スクールカウンセラーへの相談や、チューターに教えを請うシステムを遠慮なく利用すれば、問題を一緒に解決してくれそうだという安心感を得ることができた。
  • Google Maps に出て来るレビューを見て、昼は学生が集まるワッフルが美味しいカフェを、夜は良さそうなイタリアンレストランを選んで行ったのだが、両方とも当たり、たいへんおいしく非常に良かった。約20年前カリフォルニアに住んでいた時は、アメリカで美味しい場所を探すのは難しかったのだが、Google がその状況を変えてくれた。

シアトル1日目 振り返り

今日より場所をカリフォルニアからシアトルに移し、シアトルの Community College 下見の振り返りを行う。

Keep

  • 早朝発のサンフランシスコ -> シアトル便に乗るということで綿密に計画を立て、ぴったり計画通りに空港に到着し、Webチェックインで事前にチェックインも済ませていたのでスムーズに移動することができた。ガソリンをあらかじめ買取り、スタンドで給油しなくても良いプランにしていたのも、時間をロスすることなく、大きかった。
  • 移動には Delta を使ったのだが、機内では Facebook メッセンジャーなどのテキストメッセージのみは許される WiFi が使えたり、ボーディング中は、アプリ上で今どのクラスの人が呼ばれているのかがわかるなど、ユーザビリティがめちゃめちゃ良かった。
  • シアトルでは、Shoreline Community College を見学した。我々が日本人であるということで、キャンパスツアーの案内役の学生さんには日本人の方がアサインされていて、日本語で懇切丁寧に案内していただいた。今までの Community College のキャンパスツアーでは、ネイティブの学生が、容赦ない早口の英語で(アメリカには早口でハキハキ喋ることが賢さを示すという僕が思うに誤った考えがあるようだ)説明していたので、それらに比べて段違いのきめ細やかさを感じた。聞くと、入学希望者が中国人であれば中国人の学生が、香港の人であれば香港の学生がそれぞれ案内役にアサインされるとのことだった。
  • シアトルでも滞在先を Airbnb をしたのだが、オーナーの娘さんは日本で働いているという中国人の方で、さらに様々な Community College で中国語を教えていたということで、息子のことを全面的に応援してくれて、ここもここも訪れた方が良いと訪問の計画を一緒に考えてくれたり、行ってはいけない治安の悪い場所なども教えてくれて、とても助かった。Airbnb はカリフォルニアもシアトルも大当たりだ。

Problem

  • 今思い出しても腹が立つのだが、シアトルでもカリフォルニアの時同様、Hertz のレンタカーを借りたのだが、入る保険のことでトラブった。あらかじめアメリカでレンタカーを借りるときに入る保険メモなどの記事を読んでいて、強制保険以外のオブションとしては(LDW はすでに Included になっている)LIS(追加自動車損害賠償保険)だけで十分と思ってそれだけを選んでいたはずなのに、外れの窓口を引いてしまって、PAIやロードアシスタントサービスなども付けてくる上に、いやこれらは選んだ覚えがないので外してくれと主張したら、州のLAWで決められているので外せないなどと言ってきた。僕もそこまで自信がなかったので一旦は認めてしまったことにも腹が立つのだが、一旦は引き下がったあと、ググったりして、やはりこれらはオプションであることを確認してもう一度窓口に並んだ。これらはLAWで決められているはずはない、特にロードアシスタントサービスに至っては、JAFでAAAのサービスが受けられるのを知っていると言っている間も、「No(JAFでAAAのサービスを受けられない)」などと言い続けていたが、しぶしぶ外させることに成功した。やり取りを録音でもしておけばもっと良かったのだが、絶対クレームのフォームで報告する。まあ、典型的なアメリカあるあるではある。

カリフォルニア3日目 振り返り

カリフォルニア滞在3日目の振り返り。今日はシリコンバレー近くの Foothill College、De Anza College を見学したあと、Apple の円盤型新社屋を見て、Intel Museum 訪問。

Keep(良かったこと)

  • いつもサンフランシスコに来たときに会っている元同僚のロシア人と晩飯を食べに行く。まだまだ英語が拙い長男に一生懸命に話しかけてくれ、ここでは誰も間違いなんか気にしないからどんどん話したほうがいいなどのアドバイスで勇気づけてくれる。一緒に働いていたときに、Open Source の素晴らしさ、面白さを僕に教えてくれて人生を変えてくれた恩人の彼に、またまた借りができた。

  • Apple 新社屋はまさに円盤だった。AR の展示が秀逸。

  • 各 College でのガイドがとても親切。そして De Anza ではスクールカウンセラーの方につないでくれて、入学の手続きを丁寧に教えてくれる。わからないことがあればいつでもメールしてくれていいよと言ってくれて、当たり前だが、やはりオンラインでやり取りするよりも直接出向いて会ったほうが話が早い。

Problem(反省点)

  • 謙遜はこちらでは自信のなさと見られるという指摘を子にしたのだけれど、子は親の鏡と言う通り、これは僕の言動が大きな影響を与えているのだろうなと思いハッとする。礼儀としての謙遜は良いが、知らず知らずのうちに保険をかけるための逃げの謙遜が多くなっているんではと思い反省する。

カリフォルニア4日目 振り返り

カリフォルニアのCommunity College巡り、最終日である4日目の振り返りです。

Keep

  • Webなどでインプットしていた事前の情報と、実際に現地の Community College を訪れて得た印象にはかなり違いがあることを実感した。実際に現地を見ることがいかに大事かを痛感。
  • 夜には、サンフランシスコで働く、僕が社会人になって最初に入った会社の同期を訪ねる。彼はWeWorkで働いていて、WeWork内を案内してくれて、長男にはシリコンバレースタートアップの雰囲気が伝わったように思う。
  • WeWorkのあと、「インポッシブルバーガー食べに行こう!」という流れになりご馳走になった。味はまあ微妙に違うのだが、肉とほぼ変わらない食感に親子でびっくりした。
  • 同期の友人は、ベンチャーキャピタルの世界を、懇切丁寧にすごい熱量とともに長男に説明してくれて、シリコンバレーの風を届けてくれた。長男も僕も「やるぞ!」という気になる。
  • 午前は特に予定が入っていなかったので、長男が生まれ僕らが2000 - 2004年の間住んでいた近辺の Walnut Creek ダウンタウンを訪れた。ここには今や Apple Store や Amazon Books、おしゃれなお店が並んでいて、古き良きアメリカの田舎町から、近未来のピカピカな田舎町に豹変していた。

Problem

  • WeWork で待ち合わせということで、Embarcadero Center の駐車場に車を停めて Google Maps が指し示す WeWork があるらしきビルを訪れたところセキュリティに止められる。WeWork にいるはずの友人の許可がないと入ることが許されないということで、電話して取り次いでもらったのだが、なんとビル違いであることがわかる。調べてみたら WeWork ってサンフランシスコ 市内に10ヶ所近く、Embarcadero Center の周りだけでも2ヶ所もあって、違う方の WeWork を訪れていた。完全に Google Maps に頼らずちゃんと住所まで確認しないとダメだ。
  • airbnb のステイ先に帰ってきたら、パスポートなど大事なものを入れていたリュックが手元にないことに気づき、今回の滞在中一番に焦る。翌日早朝にはシアトルに移動する必要があって、ちょうど落合陽一のブログ、「サンフランシスコでUberの中に携帯忘れて,ただっぴろい公園の真ん中で一人きり,携帯もクレカもホテルの鍵もない.さぁどうする. / #日々短文雑記」を読んだばかりで同じようなことが自分に起こったらどうしようなんて思っていたものだから、変な汗が出た。結局オチとしては、駐車した車に単に置き忘れただけだったのだが、昔の同期と異国の地で会い、楽しくて浮かれてリュックを持って帰って来たはっきりとした記憶があいまいだったから、インポッシブルバーガーのお店に置き忘れたのではないかと思ってしまっていたのだった。

カリフォルニア2日目 振り返り

昨日の続き。長男がアメリカ留学を考えているということで下見に来ている。2年制のコミュニティカレッジから4年制の大学へのTransferを考えている。

今日は、午前Berkley City Collegeを学生さんがガイドしてくれたあと、午後はアメリカで働いていたときの韓国人の元同僚の娘さん(UC Berkeley で Computer Science を専攻している才女)にキャンパスを案内してもらった。

Keep

  • 昨年夏から、Reading、Writing 主体の日本型英語教育からTOEFL準備のためにDMM英会話などでSpeaking、Listeningを少しずつ強化している最中の息子に、容赦のないネイティブEnglishのシャワー。たぶん相当応えたんじゃなかろうか。一発目ではほとんど聞き取れないので何度も聞き直し、言いたいことを半分も伝えられなくて、自分が幼稚園児になってしまったような辛い感覚良くわかるぞ!でも大丈夫、おまえの父は大学四年でカナダに卒業旅行に行ったときにろくにステーキさえちゃんと頼めなかったくらいだったから、それよりだいぶましだ。それでも今はそこそこ聞き取れ話せるようになったのだから、これからたくさん恥をかいて俺の英語の間違いを指摘するくらいになってくれという気持ちになった。
  • アメリカで働いていたときに使っていた銀行のオンラインバンキングのアカウントが日本にいた時に久々アクセスしたらサスペンドされていたので、こちらの支店でアカウントマネージャーに何とかしてって頼んだら凄いスムーズに復活してくれた。これ、電話ごしにやるとだいたいたらい回しの連続に合って凄いストレス溜まるやつだったので、めちゃめちゃホッとした。銀行口座の問題は支店に直接出向いて解決するに限る。幌馬車がロゴの歴史ある銀行で、西部劇に出てくるような趣きある建物で、アカウントマネージャーと対面、「Sir」とか呼ばれちゃうから気分も良いしね。
  • レンタカーのスピーカーにBluetooth接続でスマホを接続できることを発見。ハイウェイ飛ばしながら(といってもだいたいいつも5車線くらいある中で一番右をキープの安全運転)、長男が好きな King Gnu の最新アルバムをストリーミングでかけちゃって、いやあ便利な時代になったもんだ。20年前君がこの地で産まれた頃にはNapsterってのがあってだなあ、日本で流行っている楽曲のmp3ファイルを長いことかけてダウンロードしてきてせっせとDVDに焼いていたんだよ、と昔話を聞かせてあげた。

Problem

  • 運転のカンも戻ってきたよ。でもたまにウィンカーの代わりにワイパー動いちゃったり、駐車場のチケットを取るときに誰も座っていない後部座席の窓が開いちゃったりする。あと、しばらく無灯火て走っていて、横断歩道渡っている歩行者に指摘されたのはナイショだ。
  • 銀行の建物が荘厳で、かっこいいなと思って支店内でスマホで写真をパシャリと撮ったら、ガードマンが駆け寄ってきて「何やってんだ!すぐ消せ!Sir!」と怒られてしまった。

カリフォルニア1日目 振り返り

実は長男がアメリカの大学で学びたいと言うので、その下見の付き添いで昨日からカリフォルニアに来ています。第1日目の振り返り。

Problem

  • PC を忘れてしまった。直前まで充電していてかばんに入れ忘れたの致命的。
  • 久々左ハンドルの車の運転で余裕がなく最初苛ついてしまった。

Keep

  • PCを忘れたにも関わらず、全ての情報がクラウドにあるためスマホだけで何とかなる。また長男が持ってきたお下がりのPCでPRのマージまでできたので、ちょっとした仕事も何とかなる。
  • ランチのメキシカンも晩ごはんのフォーも選択が良くまあまあのおいしさ。
  • airbnb で借りた宿が完全に自宅の一室という感じでまるでホームステイ。長男がもしホームステイとなるときの良い予行演習となりそう。飼い犬に不審者ではないよと教えるために匂いを覚えてもらう儀式がいるのだけど、その後は僕らにはフレンドリーになるのが賢い。
  • レンタカーを事前にウェブで予約していたら、手続きがスムーズだった。
  • サンフランシスコ市内散策で、だいぶ疲れたけど、歩きまくったので時差ボケ防止になった。

ロボ・キャンプ 2019:「機械学習×ScratchでAI(人工知能)アプリケーションを作ってみよう!」振り返り

福井工業大学で開催されましたロボ・キャンプ 2019でML2ScratchとEV3を使った

» 機械学習×ScratchでAI(人工知能)アプリケーションを作ってみよう!

というワークショップを開催してきたので振り返ってみます。

Keep (今後も続けていきたいこと)

  • ワークショップ後の振り返りというのを初めてやってみたのですが、 言葉わからない外国人とも気持ちで通じるけど、ロボットにはナカナカ伝わらなくて難しかった など、ユニークな意見が多く、とても良かった。これは次回からも続けていこうと思う。

  • 参加者が保護者の方含め40人規模になると聞いて、最初は1人で行こうとしていたのを、CoderDojo調布のEV3エキスパート北原さんにお願いして一緒に企画、運営することにしました。東京にいる間に事前に打ち合わせを行い計画を練ることができましたし(1人ならやらない)、ワークショップ自体かなりスムーズに進めることができたのは、本当に北原さんのおかげでした。トラブル対処のときも心強かったですし、最初1人で行こうとしていたのは無謀でした。次回こういう企画のときは、2人以上体制にする。

  • PCの問題や、ML2Scratch自体の問題でトラブルことがほぼなかった。用意していただいたPCの性能が良かったのと、いろんな場面でML2Scratchを使ってきた上での今までの改善のたまもの。

  • 保護者の方々と一緒になって楽しそうに作品創りに取り組んでいたのが印象的でした。干渉し過ぎないようにということで、こどもと保護者をあえて離すという場合もあるのですが、保護者と一緒に参加という今回のケースも、これはこれでありだなと感じました。

  • 組み立て済みのEV3を使うため、作品の幅がせまくなってしまうかなあ、と心配していたのだが、杞憂でした。距離センサーを使わず、機械学習で障害物を認識して止まるロボットカーや、ジャスチャーと物体認識を組み合わせてコントロールする例など、作品の幅は広かった。

  • スペースが十分に広いというのと、明かりが一定で白基調の部屋というのもあったと思うのですが、カメラを上向きにして天井が背景になるようにするなどの工夫もそれぞれおこなっていて、認識の精度がこれまでよりも高いなと感じました。6つ7つのラベルの判別もうまく動いているケースもあって驚きました。

Problem(反省点)

  • 会場の無線LANが帯域的に十分でなく、ScratchもML2Scratchを利用できるようにした改造版Scratchもロードするのに時間がかかっていました。ワークショップ中には、これが問題になることはなかったのですが、バックアップとして、自前のWiFiルーターを持ち込んでおけば良かった。

  • ワークショップ前に準備しておくこととして、EV3を指定の形に組んでおくこと、Scratch Link をインストールしておくことなどをお願いしていたのですが、Chromeをインストールしておくことなどの僕が見逃していたところがいくつかあり、ワークショップ直前に慌ただしく準備することになってしまった。ML2Scratch + EV3 は初めての挑戦だったため、事前準備でやっておくこともなかなか定まらず、1回のお願いで済まず、追加のお願いのやり取りが発生してしまったのもまずかった。次にEV3を使ったワークショップをおこなうときには同じ失敗をしないように修正版の事前準備リストを残しておきます。

- Chrome をインストールしておき、デフォルトのブラウザとして設定しておく。
- Scratch Link をインストールしておく。
- EV3組み立てマニュアルの40まで組み立てておく。
- EV3 のファームウェアを V1.10Eにあげる(Scratch EV3エクステンションがV1.10E以上しかサポートしていないため)
- 各EV3の区別がつくようにBRICK NAMEを変更しておく。(ファームウェアをアップデートするとBRICK NAMEが元に戻ってしまうので、順番が前後しないようにする)
- BRICK NAMEをテプラで貼っておく。
- [ML2Scratchを利用できるScratch](https://champierre.github.io/scratch3/)を開き、ショートカットをデスクトップに作成しておく。
  • PCを操作しながらマイクでしゃべるのが大変。Afrel のスタッフの方が気をきかせてくれてマイクを持ってくれましたが、これって皆さんはどうやって対処しているのだろう?ワイヤレスマイクといった機器で解決しているのだろうか?

Try (今後ためしてみたいこと)

  • そういえば、参加者の振り返りはおこないましたが、運営側の振り返りはおこないませんでした。ワークショップ中「『学習データをリセットする』ブロックを誤って『ずっと』ブロックの中に入れて実行してしまったら、ブラウザがスタックしてしまった」というフィードバックをいただいて、さっそく修正したのだけれど、他のフィードバックもAfrelのスタッフ、福井工業大学の学生の皆さんからも拾うべきでした。次回からは運営側の振り返りを行いたい。

主催のAfrelのスタッフの皆様にはとても良くしていただきましたし、会場の準備、PCのセットアップ、EV3の事前の組み立てなど環境作りが完璧で、おかげさまでワークショップが滞りなく行えたと思います。福井工業大学の学生の皆さんにも、困っている参加者がいたら積極的に助けてくださり、とても助かりました。ありがとうございました。

前日の懇親会での越前蟹おいしかった〜↓

今回、名古屋で開催された DojoCon と日にちがバッティングしてしまって、弾丸出張となってしまい、福井の観光地など満喫できず心残りでしたが、また次の機会の楽しみに残しておくこととします。

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ