支援が必要な子へのプログラミング教育を考えよう。

CANVAS主催のProgramming for ALLラウンドテーブル「支援が必要な子へのプログラミング教育」に参加してきた。やや畑違いではあるけれど、どの演題も興味深いものばかりで、聞きながら何度もうなずいてしまった。

どこまで公表していいかわからないのだけど、気になったものを並べてみたい。

ある支援学校で、障害物を検知して自動停止する自動車模型を作った生徒さんは、制作後に「人に気持ちよく使ってもらうためへの工夫に着目できるようになった」と、ものの見方に変化が出て来たとのこと。別の方から、U22に出場している中学生だったかな、その子も自分のソフトを友達に使ってもらい、そのフィードバックから人が使いやすいUIを考えるようになり、それが大きなアプリ開発につながったとの話があった。二人ともプログラム制作の、素早く頻繁なフィードバックから多角的な視点を持てるようになった例だ。これはプログラミングの特徴であり*1、プログラミング教育の大切な目的の1つになっていく感じがした。

もう1つ、キネクトを使って身体を動かすことで自己表現を促す事例が紹介されていた。特に障害のあるお子さんは、自己表現の方法に制限があるケースが多いと聞く。身体の動かせる量は人によって差はあるけれど、表現手段が増えていることは確実なようだ。タブレットや電子黒板のツールを授業に導入している例はかなり増えて来ているが、そのツールならではの特徴を出し切れている例は少ないのかな、と思う。キネクトの応用はそのユニークさから、支援学校や支援学級に限らず定着していくツールになる可能性を感じた。

これらのツールは「Scratchで…」、「Viscuitで…」、「マイクラで…」とは少し違う印象があって、いわゆるアンプラグドな部分が含まれている。

1つ言えるのは、アンプラグドはとにかく楽しい!!

そこがこれからのICT教育の重要なポイントになってくるんじゃないかと考えているのだけど、どうなんだろう。

 

*1:プロの現場では多くの場合、それを無駄にしてしまってるが、、、

ScratchDay in Nasu 2017

だいぶ時間が経ってしまったけど、5月13日に開かれたScratchDay in Nasu(那須)に参加した時のことを書いておこうと思う。

栃木県では初の開催のScratchDay、主催の那須塩原クリエィティブラボ(那須ラボ)の星野さんから声をかけていただき、とちぎRuby(toruby)の宇都宮Rail勉強会ととちぎラズパイ同好会(#torpc)として参加させてもらった。

当日はあいにくの雨にもかかわらず、多くの子ども達と親御さんで賑わい、大成功といってもいいくらいの良い会になった。東京なんかに比べれば規模は小さかったかもしれないけど、だからこそみんなが一つになれたのだと感じた。スタッフも、このようなイベントに参加するのも初めてといった方も少なくなかったのに、全員しっかりと自分の役割をこなしていた。また那須ラボからも小中高生が展示に発表、設営スタッフにまでも参加し、その発表なんかでの実力の高さにとちぎRubyの大人達の度肝を抜いていたのが印象的だった。

なんだかみんな、とてもかっこよかった。

 

全てではないけど、当日のプログラムや展示内容。

ビスケットランドにみんなが自分の作品をアップロード。鹿沼市のPCスクールエムネット(http://www.mnetpcs.com/)代表の橋田さんがViscuitのファシリテーションを担当。

  • Scratchワークショップ

星野さんが講師をつとめたワークショップ。

 

  • Show&Tell (一部タイトルに誤りがあります)
氏名・ハンドルネーム 発表・作品タイトル 概要(簡単で結構です)
DKさん escape from fear Scratch作品発表
MGさん (仮)自動シャッフルマシン イデアを発表します。
KIさん My Robot's Blue Print ラズベリーパイコンテストに受賞したロボットのパーツの説明や、アニメーションを使って、英語で発表します。
SYさん、RYさん 自宅PC部の活動報告 今までやってきたことをダイジェスト版で日本語で発表します。
YKさん  Why, Scratch Day in Nasu  
米澤慎 torpcの紹介 とちぎラズパイ同好会の紹介と、勉強会について話します。
菅沼一夫 物作りを楽しむ とちぎラズパイ同好会に出会う経緯を話ながら、コミュニティ・勉強会に参加することで感じたことを話します。
中内章一 「1秒って長さって、どれくらい?」 コンピューターの世界での1秒の長さを実感したことから、コンピューターシステムの理解が深まった経験談です。
  • Touch&Try
展示「Scratchゲーム「キネオ」」 ファミコンソフト「キネコ」をScratchで作成してみました。
展示「ミルククラウン Arduinoを使ったミルククラウン自動撮影装置の実演です。
展示「うー(適当)」 適当に操作しながら、画面の動きを楽しんでください。
展示「QWERTY-練習2」 キーボード入力の練習。
ブラインドタッチを習得するために作成しました。
展示「Scratch & Kinect体験」 ScratchとKinectセンサーの動作デモ展示のみ
展示「chibi:bit」 イギリス教育用マイコンボード互換chibi:bit動作デモ展示
展示「smalruby」 scratch風のRubyでできた子供向けプログラミング言語
展示「ロボットプログラミング」 SpheroなどのロボットプログラミングTouch&Try
展示「Unityによるユニティちゃんの3D迷路」  
体験「みんなでつくろうStrawbees」  ストローで色々な構造が作れれるアレです(無人だとだれもやらないカモ?)
体験「OsmoCodingでプログラミング」 Osmoの体験です(2セットあります)
展示「液晶モニター付きラズパイケース」 古い本の展示や半田ごて体験もできます。

飛行機トラブルでホテルに缶詰

このところ、国内外の出張が増えていて、今月も10日ほど、クリーブランドアムステルダムマドリードと世界一周の出張に出かけていた。

私は海外出張のトラブルというものがこれまでほとんどなかったのだけど、今回はクリーブランドからアムステルダムに向かう飛行機が飛ばないというトラブルに見舞われてしまった。クリーブランドからアムステルダムJAL系では直行便がないらしく、フィアデルフィア経由で行くことになったが、その便がエンジントラブルで定時に離陸できず、予定より5時間遅れての出発となった。乗客のほとんどは別便か、夜も遅かったのでクリーブランドに泊まるかしたが、私のようにトランジットな人4人は仕方なく待ってフィアデルフィアまで向かった。もともと50人乗りくらいのコミュータだったが、それでも4人というのはなんとも言えない親近感あるフライトだった。CAも、規則で安全に関するアナウンスをしてはいたが、フィアデルフィアの夜景が見え始めると、着陸5分前にもかかわらず客席から携帯で夜景を撮っていた。

深夜遅くに到着し、アメリカンエアが用意してくれたHoliday INNに移動、翌日の夕方6時までホテルに滞在した。このHoliday INN、どうみてもホテルのなかまで治安に不安を覚えるホテルだった。よく知る、サンフランシスコとはまるで違っていた。ロビーには泥酔した客が大きな声で話をしていて、その横を季節柄サンタコスの女性がいたが、超ミニスカートのどう見てあれなサンタさんだったし、翌日、朝食を取りに(食事代はアメリカンエア持ち)ホテル内のレストランに行ったが、ネイティブでも聞き取れないんじゃないかくらいの言葉でまくしたてられた。とても翌日、市内観光をする気にはなれなかった。ひたすら部屋に閉じこもり、昼食はレストランのテイクアウト、仕事をしつつ時が過ぎるのと待っていた。

今考えると、まあまあの経験値増にはなったかもしれないし、久しぶりのアメリカに嬉しくもあったのだけど、順調にフライトしてくれるに越したことはなかった間、と改めて思った。

 

YAUC 2016 Summerに参加

宇都宮toRubyの id:akimacho が中心に宇都宮大学で、子供+大人向けのハンズオンセミナーを開催するというのをご本人に聞き、なぜかわが社は出勤日な9月22日に行ってきた。
内容は以下に詳しいので多くは書かないけど、Arduino+FaBoとUnityチュートリアルの2本立てで、結構盛り沢山な内容だった。

akimacho.hatenablog.com

17時までの予定が19時までやっていたとのことだったが、私が都合で退席した15時の時点での進み具合からはそんなもんだろうなぁ、と納得。

自分は、参加した皆さんがどんな感じで進めていくかが気になったので、自分で楽しみながらも階段教室をうろうろ上ったり下りたりしていた。最初は親御さんもお子さんもいっしょにモニターを覗き込んでいたのに、途中でお母さん一人が頑張ることになっちゃったり、高校生ががんばっていたけど途中で興味半減になっちゃったり、ゆっくりながらも確実にパスしていっている年配の方がいたりと、初めてのパターンは少なかったけれど、色々なパターンが集まっていた。
それとなんといってもスタッフが手厚かった。学生さんと聞いたけど、ちょっとでもつまずいていそうな人に声をかけてサポートしていたので、置いてきぼりな人はほとんどいなかったんじゃないかな。素晴らしい!! Helpが表示されているスマホ片手に説明している姿を見ると、頑張りに頭が下がる思いだった。

自分はUnityはほぼ初めてだったので勉強になった。その時の教材は自宅でなんとか終わりまで作れたと思う。(最終形がどこかにあるのかな?)
FaBoはLチカくらいのことをやるのにはとっても便利。LEDのピン配置やLEDを点灯させるための抵抗はある意味Duckなので、それを排したのは今風なのかもしれない。

id:akimacho は次は何をやるのかな? とっても楽しみです!!

那須九尾まつりでの那須ラボ

黒田原で開催された那須九尾祭りの塩原町教育委員会ブースで、那須ラボがViscuitを子供たちに紹介すると聞き、お手伝いしながら参加させてもらった。

https://www.facebook.com/dreamypocket/

最近1ヶ月くらい雨と台風が続いていたけど、この日はまるで夏が戻ってきたかのような暑さになった。そんな中Canvasからも3名の応援が来て、PC6台で来場者にViscuitを触ってもらうことができた。

一時は待つ人も出るくらい盛況で、みなさんの関心の高さを感じられた。

Viscuitで書いたキャラクターをViscuitランドにアップロードできるようにセッティングされていたので、みんなそれぞれのキャラクターを描いてはアップロードをしていた。祭りが終わるころにはラッシュアワーどころの騒ぎじゃないくらい、ランドがキャラクターで埋め尽くされてしまった。後半になるにしたがって、徐々にキャラクター自体が派手になり、特異な動きと複製したキャラクターの数で目立つようになってきた。でもその時の工夫に思わずうなずいたり、あっと思わせるものがあったりと、見ていて本当に飽きることが無かった。

スタッフの一人がScratchでゲームを作ってきていた。なかなか面白いゲームだったから、今後はプログラミングに慣れた子供とソースコードを見ながらわいわいやれたらさらに楽しいだろうなと思った。

次回、というか10月30日に田代友愛小学校でのイベントがあるので参加したい。
詳しくはこちら。
http://canvas.ws/project/nasumachi_programming

最近の那須ラボでの様子

そういえば那須ラボと言っているけど、実は正式名称を知らなかったりする。ブログには「なすラボ」とある。これは那須塩原(なすしおばら)クリエイティブ・ラボのこと。でも実はドリーミーポケットが本当の名前かな。今度聞いてみよう。


ところで、那須ラボに通い始めてもう1年なんですね。早い!!
最近は本人もいろいろと知識をつけてきたし先生との関係も理解できて来たので、なるべく口出ししないように本人のやりたいことをやってもらっている。
前回は久しぶりにOsmo Codingをやった。一度の実行で使うブロック数も自然と増えたし、思ったように動かせられることも増えたが、反面Osmo Codiingでやれることに少々つまらなさを感じてきたようでもあった。
それで後半は少し前から希望していたMinecraftのGalacticraftを先生にセットアップしてもらい試すことになった。
先生の予想にやや反して、Modを動かすまではそれほど大変じゃなかったようだけど、このMod自体、まともにやるとロケット発射まですら大変な時間と労力が必要なことが分かった。ということでCreativeモードで大幅に端折り、先生と子供は無事、月面で対面することができた。
でも地球に帰還するのも大変みたい。。。。。

ProjectEuler Problem62で==メソッドを調べてみた

Problem 62 「立方数置換」

立方数 41063625 (3453) は, 桁の順番を入れ替えると2つの立方数になる: 56623104 (3843) と 66430125 (4053) である. 41063625は, 立方数になるような桁の置換をちょうど3つもつ最小の立方数である.
立方数になるような桁の置換をちょうど5つもつ最小の立方数を求めよ.

class P62
  def initialize
    @keta_values = keta_values
  end

  def  keta_values
    # ある桁数の最初の立法数を求める。ex. 3桁なら5(=125)、4桁なら10(=1000)、
    (0..20).map do |keta|
      ((10**(keta-1))**(1/3.0)).to_i + 1
    end
  end

  def main
    keta = 5 #5ケタ以上を探す
    loop do
      cubics = cubics( keta )
      cubics.each_with_index do |cubic, idx|
        return cubic[0] if permutations( idx, cubics ).size == 5
      end
      keta += 1
    end
    "Not find"
  end

  def cubics( digit )
    # ex. for return value. 36 ** 3 -> [46656, "45666"]  これは [立法数、立法数の各値をソートして文字列にした]

    (@keta_values[digit]..10000000).inject([]) do |cubics, n| # 10000000 ** 3  is 22digits
      cubic = n * n * n

      if cubic.to_s.size > digit
        return cubics
      elsif cubic.to_s.size == digit
        cubics << [cubic, cubic.to_s.enum_for( :each_char ).sort.inject{|conb,s| conb+s}]
      end

      cubics
    end
  end

  def permutations( idx, cubics )
    drop_cubics = cubics.drop( idx )
    base = drop_cubics[0]
    drop_cubics.select { |cubic| base[1] == cubic[1] }
  end
end

puts P62.new.main

cubics()で立法数を求め、その各桁を文字列変換しソートしたものを配列にし
て返す。permutationsでは、cubics()の結果を他の立法
数と比べ、同じものを配列に入れて返す。mainでは、同じものが5つあれば、
立法数を返す。

cubics()の
cubics << [cubic, cubic.to_s.enum_for( :each_char ).sort.inject{|conb,s| conb+s}]

は当初以下のようなコードだった。これだと答がでるまでに15秒以上かかっていた。

cubics << [cubic, cubic.to_s.enum_for( :each_char ).sort]

同様のことをC++で書くと100msecかからないので、Rubyといえども遅すぎる。
調べてみると処理速度改善に一番効きそうなのはpermutations()の以下のコードだ。

base[1] == cubic[1]

これの左辺値は当初 ["4","5","6","6","6"] のようなArrayだったので、"45666"のようなStringに変えたらどうかと試してみた。すると15秒だったのが4秒に短縮できた。やったー。どうもArray.==は再帰的にエレメントを比較しているのに対し(Array.cを最後まで読み切れてないけど,,,) SrtingだとCのmemcmp()に行きつく。たぶんこれが原因だろう。
これでもまだ遅いのだけど、==が左辺値のメソッドだと知っていることで、簡単に改善すべき箇所に気づける良い例だと思った。