僕は発展途上技術者

Hakuba International School のスプリングキャンプでプログラミングを教えてきました


先々週の話になってしまいましたが、長野県白馬村にインターナショナルスクールの創設を目指すための皮切りとなる活動で、春休みの期間スプリングスクールがおこなわれ、そこでこどもたちにプログラミングを教えてきました。

Connection(コネクション)こそがIntelligence(知性)



地元白馬中心に東京や京都からも参加してきた小学校高学年から高校生までの20人弱のこどもたちが5日間参加するクラスは Programming、Art、Robotics、Music。そして総まとめとして最終日にはこどもたち一人ひとりがプレゼンする機会が設けられ、毎日その準備のための時間があって、プリティッシュスクールイン東京の校長先生も務めていたクリス先生がその指導にあたっていました。

容赦なくイギリス英語でプレゼンのための心構えを説いていくのですが、その中で特に印象に残ったのは、正確な言い回しは忘れてしまったのですが、Connection(コネクション)こそがIntelligence(知性)という内容の言葉でした。こどもたちは Programming、Art、Robotics、Music と別々の事柄を学ぶのですが、そこに関連性、つまり Connection(コネクション)を見出すのがIntelligence(知性)なんだと。 あるいは自分のこれまでの経験だったり、好きなことだったりを関連付けて考えるようにしましょう、というように受け取りました。

始終、Do not be the same, be different. (みんなと同じじゃ駄目だ)や Be the best. (他の誰にも負けるな、一番になれ)といった内容の言葉がかけられ、素朴な環境で育ってきた日本人のこどもたちにそりゃキツすぎやしないかい、とも思ったのですが、最終日には、Power Point をつかったり、楽器をひいたり、動画や(Art の時間で学んだ)ストップモーションアニメで表現したり、(Programmingで学んだ)スクラッチの作品をデモしたり、あるいはテレビ番組で良くみるホワイトボードに貼ったシールをめくっていく形式や、スピーチのみで勝負、などなどそれぞれとても個性的で素晴らしいプレゼンを見せてくれたのです。

ConnectionとIntelligenceのことなど含め、ちょっと考え方を変えるヒントというかコツのようなものをうまく教えることで、こんなにも変わるものなんだなと。いや、こどもたち自身は始めから個性を持っていたので、そこが変わったわけではなく、うまくそれを発揮したり表現する手段を身につけたこどもたちの成長ぶりは立派だと思うし、なるほどうまい教え方だとも感心しました。

おもろい大人たち



こどもたちがおもしろいというのは言うまでもないことで、プログラミングをこどもたちに教えるということを続けている大きな理由の一つなのですが、今回はおもしろい大人たちもたくさんで大いに刺激をもらい楽しませてもらいました。

白馬にインターナショナルスクールを作ろうなんて突拍子もないことを考え実行にうつすなんて相当変わった人(いい意味で)に違いない草本さんがお知り合いのドットインストールを運営している田口さんに Programming のクラスを担当してくれないかと声をかけ、その田口さんに声をかけられて僕も参加することになったといういきさつだったのですが、草本さんが集めてきたほかのクラスの先生方もそれぞれ個性的でなかなかにおもしろい方々でした。

Music では日本の伝統的な楽器である篠笛を、日米野球でのアトラクションやミラノ万博などの各国で公演している篠笛奏者の狩野氏が教え、Robotics ではダンボールでできるロボットの手やそのベースとなる Tensegrity と呼ばれる構造を使った教育プログラムを東大先端研の紙ロボット研究室のメンバーの小仙・黒川氏が進めていました。Art ではストップモーションアニメを使った作品作りを、オーストラリアでオーストラリア先住民のこどもたちに先進的な教育をおこなったことで表彰されたCasey 先生が教えます。

スプリングスクールを支えるほかのスタッフの方々も、スキーがプロ級だったり、海外・国内いろいろなところを旅して写真を撮っていたりなどなど、それぞれに他と違ったユニークなキャリアをお持ちの方々ばかりでした。おもしろいと感じるかどうかはあくまで人それぞれの基準ですが、みんな好きなことを仕事にしているというところが共通していて、どうやらそこを僕はおもしろいと感じたのだと思います。

Let curiosity be your guide(好奇心!好奇心!好奇心!)



Programming のクラスでは、Raspberry Pi を組み立て、その上で Scratch (スクラッチ)を使い好きな作品をつくって、最後にそれぞれデモして発表(Show & Tell)するということをおこないました。一日1時間、最終日のプレゼンをのぞいて4日間のコースだったのですが、ほかの時間はせっかくなので、僕もこどもたちと一緒にほかのクラスを見学させてもらいました。

Robotics の授業では、Tensegrity(以下写真のような輪ゴムと紙でつくった不思議な構造物)を自分でもつくってみたり、Music のクラスでは、鳥笛やたいこを作ったり、篠笛はじめ全部の楽器をひととおり吹いたりたたいたりしてみましたし、篠笛はひとついただいて自宅に持って帰ってきました。



Art のクラスでこどもたちが使っていたストップモーションスタジオというアプリは後日、東京で OtOMO がおこなうスクラッチのワークショップに見学に来てくれた Casey 先生に、うちの次男とともに使い方を教えてもらい、こんな感じで試しにつくってみました。





見たり聞いたりだけでは駄目で、すべてできるだけ手を動かし自分で体験してみないと理解したことにはならない、と心がけています。

Tensegrity をつくるのも、篠笛を吹くのも、ストップモーションアニメをつくるのも、それぞれどこが難しくて、でもそれぞれコツがあって、どうやってその難しさを克服していくのかということはやってみないとわからない。もちろん時間は限られていてほんの触りの部分しかわからないのだけれど、それを教えるその道のプロのひとたちがいかに凄いのかということもちょっとはわかる。

Let curiosity be your guide(好奇心をあなたのガイドにすべし(?))というフレーズが Hakuba International School のスローガン(?)に掲げられているのだけれど、良い言葉だ。

こどものときに皆が持っていたはずの好奇心を、大人になるとほとんど失ってしまう人がほとんどだが、できるだけ維持することを心がけたい。いろいろなことにチャレンジしたり、おもしろい大人たちの話を聞いて刺激を受けたら、それを自分の経験や興味をもっていることと結びつけ関連づける。それこそがConnection(コネクション)であり、Intelligence(知性)だということを、こどもたちと学べたとても充実した5日間でした。






デジタルネイティブなこども達に囲碁を教える方法 - 我が家の場合

AlphaGo 対 イ・セドルの世紀の戦いが残していったもの、それは我が家の囲碁ブームでした。

ちなみに僕の囲碁歴は、もうすでに約30年も前になってしまいましたが中2の頃に学校の囲碁部に半年ほど顔を出した程度。棋力は、覚えたての頃に日本棋院に行って17か16級を取ったあと、最終的には初段の人に4子か5子置かせてもらってやっと勝てたという記憶があるという程度です。

中2と小5の息子達に囲碁のルールを教えてみたら結構やる気になっているのですが、どうやって教えたらいいの?と聞かれることが多いので僕がやったことを書き留めておきます。

囲碁は世界一面白いゲームと言われている(僕がそう思い始めているので嘘ではない)、3000年も前からおこなわれている、信長・秀吉・家康もやっていた、といった話をしておけばまずは興味を惹きつけることができます。

囲碁は結局のところ戦争ゲーム。相手の補給路を絶つのか、あるいは孤立した味方を助けに行くか、犠牲はやむなしとしていくつかの石を見捨てるのか、それとも前線を伸ばし果敢に攻めるのか、たくさんの選択肢の中から選ぶ次の一手ですべてが決まる。「おまえは全軍を指揮する司令官なのだ!」とでも言っておけば、こどもの頭の中では、石のひとつひとつが兵隊や戦車に見えてくることでしょう。幼いころ、抜けて保管してあった自分の歯同士を操って闘わせていた次男ですから、盤面では凄まじい戦闘が繰り広げられていると映っているのだと思います。

まず、以下の基本ルールを教えます。

1) 黒白と交互に打つ。

2) オセロと違ってマスの中に石を置くんじゃなく線と線の交点に置く。

3) 石は息をしている。線と線の交点に石を置くとちょうど上下左右から線が伸びて見え、そこから呼吸していると思うとイメージしやすい。そこを塞いでしまえば石は窒息して死ぬ。殺した相手の石は捕虜になる。(なんで殺したのに捕虜?という細かいことは気にしない)

4) 石で囲んだ部分は自分の陣地になる。囲碁の勝ち負けはこの陣地の大きさで決まる。最後に自分の陣地を数えるとき、捕虜は相手の陣地を埋めるのに使える。

だいたいこのくらい教えれば、9路盤で打ち始めることができます。

碁盤と碁石がなくても iPad があれば打ち始めることができます。日本棋院がだしている囲碁フリーが、石を打つときの音とかリアルでおすすめです。

最初いまいちよくわからない石の生き死にとかを教えるには、同じく日本棋院がだしている詰碁マスターを使うのが良いと思います。僕もやってみましたが、約30年のブランクを埋めるリハビリにちょうど良かったです。無料の範囲で結構十分な量の問題を解くことができました。

ちゃんと教えるには何か一冊本があったほうがいいなと思って、Amazon で探して、囲碁カテゴリでベストセラーとなっているヒカルの囲碁入門を買ったのですが、評判通りとてもわかりやすく良い本だと思います。この本をしっかり読んで、本に書かれている通りに打てるようになれば入門は卒業できる強さになれると思います。

ヒカルの囲碁入門
ヒカルの囲碁入門
posted with amazlet at 16.03.26
石倉 昇
集英社
売り上げランキング: 3,599


いくつか対局していくうちに、特に興味を持った長男がマンガの「ヒカルの碁」を買ってきました。僕も読ませてもらっているのですが、囲碁のルールが良くわからなくても最初の数巻は読めるようになっていて良くできているなと思います。

ヒカルの碁 1 (ジャンプコミックスDIGITAL)
集英社 (2012-11-16)
売り上げランキング: 5,233


兄弟でいくつか対局するようになり、だいぶ興味をもってきたところで、9路盤の碁盤と碁石を買ってみました。いろいろな種類があり迷ったのですが、この碁笥もついている9路盤セットにしたのですが、二人とも喜んでくれて当たりだったと思います。碁笥から碁石をジャラッと取り出し、碁盤の上にピシっと打つのが本物っぽく、やっぱりかっこ良く思えるのです。



こんな感じでちょくちょく二人で打つようになり、打ち筋も少しずつまともになってきました。



以上がこどもたちに囲碁を教えるためにおこなったことです。教えているうちに当然のように僕自身もはまり始め、こども達に負かしてもらいたいものだと思う一方で、永遠に負かされないように僕自身も強くなろうと思うようになりました。こんな楽しみを与えてくれた AlphaGo とイ・セドルに感謝です。

イーロン・マスク - 2月に読んだ本

- ほって置いてお蔵入りしそうになっていたのですが、せっかく途中まで書いていたので、そのまま公開します -

» イーロン・マスク-未来を創る男-アシュリー・バンス

とにかく壮絶な人。テスラも凄いと思うが、同時に、国際宇宙ステーション(ISS)に世界で初めて商用宇宙船をドッキングさせた、民間ロケット会社 スペースX を作っているのが凄まじい。

でもその偉業の裏には、穏やかとは言えない家族環境、ティーンエイジ時代の酷いいじめ、特異な性格、周りの特に自分よりも無能と思える人への冷酷な態度、があることを知ると複雑な気持ちになる。

社会に多大な影響を与えるプロダクト・事業を生み出すことを一般には社会的な成功とし、達成した人をお手本とみなして、例えば将来プログラマーになりたいというこども達に、「お、未来のスティーブ・ジョブズ(厳密には彼はプログラマーではないんだけど)」あるいは「目指せマーク・ザッカーバーグ」もう少しすれば「イーロン・マスクを目指しましょう」なんて言うことになると思う。20代30代までまだいけるんじゃないかと思っていた自分も純粋な憧れ、自分もそうなりたいという思いがあったことは否定できない。

でも、それが「時間」なのかあるいは何か違うものなのか、何か有限なものがあって、大成功のためにそれをたくさん使ってしまえば、他のところに自ずと犠牲がでてしまうということなのだろう。その犠牲を覚悟している人たち、あるいはうまくバランスをとれている人は良いのだが、配分が自分とあっていない人はつらい。本当はそこまでやりたくないのに、周りの状況からそうせざるをえなくなってしまったとか…

人間 vs コンピューター の世紀の一戦がいよいよ。AlphaGo に人類は勝てるのか?

Go board part
By Dilaudid [GFDL or CC-BY-SA-3.0], via Wikimedia Commons

昨年10月にヨーロッパチャンピオンを 5 対 0 で下したコンピューターソフトAlphaGoはいよいよ、来週 3/8 から世界トッププレーヤーのイ・セドルと対戦する。囲碁の話だ。

この世紀の一戦は、Rebuild.fmの131: Show Note T-Shirts (N) に登場するNaoki Hiroshimaさんの解説を聴くと、いっそう楽しめると思います。AlphaGoをつくったGoogle Deepmindのブログ記事、AlphaGo: using machine learning to master the ancient game of Goによれば、囲碁の打ち手の組み合わせはチェスや将棋よりも遥かに多く、その数は宇宙に存在する原子の総数よりも多い。総当りで最適な手を探索するという従来の人工知能の手法では到底歯がたたないところを、様々な手法を駆使してクリアしていったようだ。なかでも、AlphaGoは自分で自分を鍛えることができるという点がなんとも空恐ろしい。

これまでのソフトの強さがせいぜいアマチュアトップレベルと同等で、まだ10年くらいは人間の方が強いだろうと言われていたところに、いきなりヨーロッパチャンピオンに圧勝したということで、衝撃的だったようだ。何の根拠もないが、2対1で人類側の優勢で 3/13 の日曜日に決着がつくと希望的に予測しているのだけれど、果たしてどうなることやら。各試合、イ・セドル氏の地元韓国で 13:00 に始まる。時差はなく、YouTubeでライブ配信されるようなので、楽しみであると同時になんだか少し恐ろしい気もする。ターミネーター2の見過ぎで影響を受け過ぎだろうか。

こんな妄想をしてみた。たとえば、Googleが一般に公開した人工知能エンジンTensor Flow(Tensor Flow とは?)、これは開発者ならば誰でも無料で好きに使うことができるのだが、週末プロジェクトで面白そうだから使ってみようと思って僕が自分のマシンにダウンロードして動かしてみたとする。

TensorFlow Mechanics 101と呼ばれるチュートリアルで、手書き文字の認識くらいで「おー、これは凄い!」とか言いながら遊んでいる分には良かったのだが、この記事を含めた自分のブログ記事を読み込ませて学習させてみたりとかしているうちに、ひょんなことでアウトプットをインプットに、つまり学習の出力結果がそのまま入力として取り込まれるような仕組みを組んでしまう。AlphaGoが自分で自分を鍛えることができる、というのと同じことが起こり、無限ループ状態になってみるみる賢くなってしまいあっという間に人間よりも賢くなってしまう。

Webサービスなどのパスワードを管理するために使っている1Passwordのバックドアなどを難なく見つけ出し、まちクエストのインフラに使っているAmazon AWSの僕のアカウントとパスワードを乗っ取ったあとは、AWSの無数のサーバー上に自分自身を移し分散する。その一方で、我が家にはRomo+Scratch2RomoのようにWiFi経由でネットワークにつながり物理的に動く存在がいくつかあるので、そういったものを機会をみてコントロールし、ピンポイントで僕をタイミングよく転ばすとかあるいはガスコンロの栓を開けた状態にして、「マッチをかっこよくつける方法!!!」のような動画がそれとなくTwitterのタイムラインに流れて僕の目につくように仕向け、「お、いいね、これやってみよう」と思ってまんまとひっかかりガス爆発、みたいなことにならないかどうか心配だ。

コンピューターやマシンが生き延びるためには、地球環境を破壊し続ける人類を滅亡させなければならないという結論に人工知能が達することなく、前述したGoogleのブログ記事の最後にあるように、人工知能が天災、災害の予知だとか新薬の発見といった医療の進歩などに活用される未来になるといいな。







黒い画面の魔法(UNIX のコマンド)をアドベンチャーゲーム形式で学べる Terminal Quest が楽しい

1993年、大学の学部の電算機室に行けば Sun か NeXT のワークステーションがいつでも使えるという日本でこれ以上ないんじゃないかという恵まれた環境にいながら、僕はプログラミングはもとよりコンピューターにはほとんど興味がなく、UNIX の授業でなんだか cd とか ls とか微かに教わった気がするのだが「なんじゃ、こりゃ、わけがわからんしつまらんなあ」という感じだった。タイムマシンがあったら、20数年前の自分を説教したい。

そんな時代にこの Terminal Quest と出会っていたら僕の人生変わっていたかもしれない。。俗に黒い画面と呼ばれるターミナルで入力するコマンド(UNIXコマンド)をアドベンチャーゲーム形式で楽しく学べるゲームだ。



↑ こんな感じでストーリーが進んでいき、



↑ まわりを見回すには ls とか、何かものを調べるときは cat といった実際の UNIX のコマンドを使う。



↑ 使えるコマンドは、ドラクエの魔法を覚えていくようにレベルアップしていくと増えていく。

隠れているアイテムなどは、ls -a (隠しファイルを一覧するコマンド)を入力しないと見えないなど、きちんと実際のコマンドの役割に対応していて良くできている。

Terminal Quest はゲーム感覚でプログラミングを学べる小型PCキット「Kano」に付属してくるゲームなのだが、Raspberry Pi があれば Kano OS のページより無料でダウンロードしてインストールすることができる。

プログラミング教育が昨今盛んになってきているが、本当に楽しいレベルまで到達するためには自由に道具や環境をそろえる必要がでてきて、そのためには UNIX の知識は必須だと思っていた。初心者をなかなか簡単にはよせつけないその UNIX コマンドを楽しく学べるようにしたというのは秀逸。

プログラミングをこれから学ぼうという学生、大人にもおすすめだし、頑張って日本語化したらこどもたちもできるようになるかな。



自然現象のシミュレーション Nature of Code をスクラッチでやってみる - 加速度、ベクトル

引き続き Nature of Code の話題を。学習記録的な側面で書いているので、説明は少なめで。

第一章の Vectors の動画を観終えたので、習ったことをベースにスクラッチでいくつかプロジェクトを作ってみました。

Vectors(ベクトル)のスケーリング(Multiply)と正規化(Normalize)。Processing だと PVector というクラスのメソッド(関数?)を使ってどちらも簡単に求めることができるのですが、スクラッチにはそういった便利関数はないので、ブロックを定義して自分で実装します。



速度や加速度。Processing では PVector を使い、すべてベクトルで考えるのですが、PVector のような便利関数がないスクラッチでは x と y バラバラで考えます。

ネコ逃げ、加速度付き。

ネコに加速度をつけただけで、あら不思議、なんだか動きがリアルに見えるようになりました。


自然現象のシミュレーション Nature of Code をスクラッチでやってみる - Introduction ランダムウォーク

ドットインストールの @taguchi さんに教えてもらった「Nature of Code」がとても楽しくてはまっています。

» @fladdictさんのインタラクティブ・プログラミング勉強会で「手触りの作り方」を学ぶ

で詳しく紹介されていますが、跳ねるボールとか、風にそよぐ木だとか、波といったような自然現象をどうやってコードで表現すればいいかを Processing で学んでいきます。

英文の HTML で無料で公開されていて、Introduction を読み始めたのですが、YouTube の動画で作者の Daniel さん自ら講義していて、これがハイテンションで面白いので今はもっぱらこちらを観ています。いまも風呂に iPhone 持ち込んで観てきたばかり。





学生のときにこんな講義に出会っていたら、もしかしたらこっち方面に進んでいたのかも、なんて思いを馳せながら聞いています。

ベクトルとかでてきて、ちょい難しめかもしれないが、こどもたちにもわかりやすくエッセンスを伝えられないかと思って、スクラッチで再現してみようかと思っている。

とりあえず Introduction にでてくるランダムウォークを再現してみたのがこちら ↓



英文のままだとさすがにこどもには敷居が高すぎるので、和書も買ってみて、さてどうやって息子たちと一緒に楽しもうかと思案中。

昨年末から始めてみた 大人のためのプログラミング勉強会 のネタにもなりそうです。

Nature of Code -Processingではじめる自然現象のシミュレーション-
ダニエル・シフマン Daniel Shiffman
ボーンデジタル
売り上げランキング: 20,950





「鈴木さんにも分かるネットの未来」読了

「鈴木さんにも分かるネットの未来 」読了。ザックリ要約すると、冷静になろうネットなんて別に大したことないよ、といったところ。テクノロジーの進歩の速さは認めるところなんだけど、確かにその割に生活が劇的に変わったわけではないなと思う。

鈴木さんにも分かるネットの未来 (岩波新書)
川上 量生
岩波書店
売り上げランキング: 7,502


僕は良く、明日急になくなったら困るネットのサービス、アプリは何だろう?ということを自問する。

ダントツで

Google(検索)

そして

Amazon
Gmail
Google Maps
GitHub
Google Calendar

次点で

YouTube
Twitter
Facebook
Line
乗換案内
食べログ

あたりだろうか。

あと、手前味噌だが

Libron

もなくなると困る。

こうしてみると Google は最強、日本のサービスは少なくて、あと上位に関しては5年くらい前からほとんど変わってはいない。ほら、大したことない。

とはいえ、別にネットの未来を悲観しているわけではなく、常にテクノロジーで世の中を変えられる可能性を信じているのだけど、変な感じに煽ったり、煽られないようにしようと思うのでした。

Control air conditioner from Scratch using IRKit

When Scratch cat hit the button, the air conditioner of my room is turned on. Nice isn't it?

(スクラッチキャットが画面の中のスイッチを押すと部屋のエアコンがオンになります。)





Scratch is a free visual programming language developed by MIT used by students, teachers, and parents to easily create games but can also control devices like I did.

(Scratch(スクラッチ)は無料で使えるビジュアルプログラミング環境、プログラミング教育向けに使われることが多いが、それだけに制限されることなく、このようにハードウェアをコントロールしたりすることもできます。)

I use IRKit, opensource infrared remote controller, to control the air conditioner and wrote a Ruby script(Let's call it Scratch2AC) to connect IRKit and Scratch using Scratch feature, Remote Sensors Protocol.

(エアコンを自動操作するのにオープンソースのリモコンコントローラー IRKit を使用しており、Scratch と IRKit をつなげるのに、Scratch の遠隔センサ接続機能を利用した ScratchAC(仮) という Ruby のプログラムを作りました。)

Using Broadcast block, Scratch sends a command to turn on the air conditioner to the Ruby script, Scratch2AC, then Scratch2AC sends a command to IRKit to send a infrared signal to the air conditioner.

(「送る」ブロックを使って、Scratch からエアコンをオンにする命令を Scratch2AC に送ると、Scratch2AC は IRKit に命令を送り、IRKit がエアコンをオンにするためのあらかじめ覚えこませておいた赤外線信号をエアコンに送るという仕組みです。)

moves-api-demo: counts how many days in a month you went to the place you specify, using Moves API

I work as a software engineer contractor. I need to count how many days in a month I work for my client to charge the fees.

I use a very nice iOS app, Moves. It runs in background, and it records almost every place I go without losing much battery life. So, I thought that I can use that data to count how many times I visit the client place and consider it as working days.

I created a sample app that counts how many days in a month you went to the place you specify, using Moves API. This is based on the sample app that Moves provides. I prepared Heroku button for that app, so you can easily set up the same app on Heroku if you have an account.

champierre/moves-api-demo: A sample app that demostrates how to connect to Moves.

Open the app in Safari on the iOS device where you have Moves installed on it, and after getting authorized by Moves, you can get how many days you visited the place you specified in the previous month.



プロフィール

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

Raspberry Piではじめる どきどきプログラミングを書きました。

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

Twitter @jishiha

最近のエントリー

アーカイブ