2015年を振り返る&退職のご報告

2015年を振り返るエントリです。毎年棚卸ししつつ書くことで、自分が何をやったかを思い出すものになっています。

対外的な活動

今年は大きく3つありました。

  1. 単著の出版
  2. YAPC::Asia Tokyo 2015でのトーク
  3. 都立産業技術高専での非常勤講師

1は、初の単著を出版する運びとなりました。「「ITインフラ監視実践入門」という本を書きました!」というエントリで詳細を書きました。こうして出せることでなんとかほっとしています。

2は、2年連続でYAPCでトークをすることができました。今年は倍率が高くてできるか心配だったのですが、ご縁があり採択していただくことができました。詳細は「YAPC::Asia Tokyo 2015で開発・運用業務改革に関する発表をしてきました&感想 #yapcasia #yapcasiaE」に書きました。

3は、2015年の後期から都立産業技術高等専門学校(高専)でプログラミングの科目を担当する非常勤講師をしています。これは情報教育関係でご縁があり、仕事を紹介してもらった次第です。ソフトウェア開発をするのではなく指導するという毛色の違った仕事ですが、明日の仲間を増やすきっかけになればと思いながら取り組んでいる次第です。

個人ブログ

はてなブックマーク数の表示が2つあるものがありますが、これは2015年10月からこのブログをHTTP/2に対応した際に発生したURIスキームの変更によるものです。前者がhttp、後者がhttpsでアクセスした時のブックマーク数となります。1つしかないものは、パッと見で分かりにくくてすいません、9月まではhttp、10月以降はhttpsと思っていただければ幸いです。

子供が生まれまして、昨年に比べて勉強会へ行けるタイミングがぐっと減ったため技術エントリも減っております。これは、状況が変わって力をを注ぐところを変えているんだな、と思っていただけたら嬉しいです。

状況が変わったことに関連して、「エンジニアとしての落としどころを作る」というエントリを書いたのですが、これが370ブックマークを超えていて、結構伸びたなという感想を持っています。生き方に悩んでいる方が一定数いるのでしょうね。私もその一人です。

会社のブログ

勤務先でもブログ「インフラエンジニアway – Powered by HEARTBEATS」を共同執筆者の一人として書いていました。以下は私が担当したものです。

今年は1月に書いたRundeckのエントリがよく読まれていたようです。ジョブスケジューラの選定は運用時の頭を悩ませる問題の一つであり、かつベストプラクティスがなかなか見つからないところにフィットしたのではと分析しています。

また、運用とは関係ありませんが、Golangに関する記事も読まれているようでして、Golang熱が高まっているのかなと感じる結果となりました。

退職のご報告

先のブログでもおなじみでした、本務として勤務していた株式会社ハートビーツを今年いっぱいで退職することとなりました。謹んで報告いたします。

これからはITインフラが盛り上がるぜ!と思って入社したものの、はじめの頃は肝心のITインフラの運用で大きくつまづいてしまい、多くの人に大変な迷惑をかけてしまいました。そんな中、残されたソフトウェア開発の力を使って、ITインフラを直接扱うエンジニアの仲間の土台を支えるソフトウェアを開発し、自動化・標準化を推進する立場となりました。その中で、初期の失敗を挽回したいという一心で、なんとか今年のYAPCでご報告するレベルにまで到達させることができました。

これも、粘り強い、そして優しい仲間に支えられた結果だと感謝しています。本当にお世話になりました。ありがとうございました。

まとめ

今年は1人目の子供も生まれ、ガラッと生活が変わりました。そのため、独身時代のように仕事中心ではなく、できるだけ多くの時間を家庭の時間として使うよう生活するように変わりました。それでも、思ったより自分は対外的な活動をしているなと感じました。

今ある人生は過去からの連続した変化からの結果で、それが未来に続くという認識は、昨年からは変わりません。しかし、人の生死に限って言うと、連続性がない大きな変化だと受け止めています。正直、どのようにやっていけば良いのか結構悩んだ年になりました。それでも、こうやって生きていけているので、なんとかなっているのかもしれません。

来年は本務の勤務先も変わりますので、また違った変化が起こることでしょう。いろいろなことがありそうですが、まずは淡々と受け止めて、冷静な判断と燃え続ける心をもって事に当たる所存です。

皆様、今年も一年、大変お世話になりました。良いお年をお迎えください。

TENTO 第4回プレゼン大会の幹事をしてきました

少し遅くなりましたが、10月25日(日)、僕が小学生〜高校生にプログラミングを教えるボランティアをしているTENTOにて、毎年恒例のプレゼン大会の幹事をしてきました。今回は4回目、東海大学さんのキャンパスをお借りして催すことができました。

プレゼン大会について簡単に説明すると、TENTOは小学生〜高校生にプログラミングを指導する私塾でして、様々な年齢の生徒さんが自分のレベルにあわせて様々なソフトウェア開発を学びます。言語も様々、ペースも様々で、現代の寺子屋といっても過言ではありません。

当日の模様をブログにまとめている方がいらっしゃいましたのでまとめてみました。

また、以前のプレゼン大会の模様は次のエントリにまとめています。

IMG_3752

さて、今回のお話は、「発表に賞はつけない」「実際に作品に触れることの良さ」そして「イベントのネットワークについて」の3点についてお話しします。

発表に賞はつけない

今回、発表では3つの部門(「Viscuit+Scratch高学年」「Scratch低学年」「テキストプログラミング」)を用意しました。これまでは審査員の方がそれぞれの部門のトップ賞を決めていたのですが、今回は止めました。そのかわり、審査員はスーパーバイザーとして、発表後に発表者した子全員に対して30秒程度の講評をお話し頂くことにしました。

なぜこうしたかというと、3つの理由があります。

  1. 一人一人、年齢と成熟度が違うから。
  2. プログラミングの良さを決めることは簡単な話ではないから。
  3. 何を糧にして明日プログラミングに取り組めば良いかプロからのコメントを送って欲しいから。

1は、年齢が高くなればなるほど、人として知識や知恵がつく傾向にあります。従って、「小学1年生」とよほど細かく単位を区切らない限り、上級生の方が良い作品を作りやすい傾向が出てしまい、審査に公平感が出なくなります。また、細かく切ることができるほどには生徒は増えていません。

2は、例えば競技プログラミングなどの明確な基準があれば賞を出すことはやぶさかではありません。しかし、TENTOのプレゼン大会で出てくる作品は、テーマの縛りがない状態で、生徒さん一人一人が最も自信があり、最良だと考えて開発した作品が出てきます。従って、一定の基準を設けて審査することは容易ではありません。言い換えれば、一人一人が最高の作品を作ってきているのです。

3は、1と2を受けてのことでした。今、前線でソフトウェアと向き合っている人たちからの温かい言葉を受けて、生徒さん一人一人の自信につなげて欲しいと願い選択しました。担当は、OtOMO 代表の倉本さん、株式会社ワディット代表で @yusukebe こと和田さん、そしてピープルウェア翻訳者で東海大学の山浦先生にお願いしました。

イベントと言うとついつい賞を出すと自然と考えてしまいがちですが、そうではない形があるということを、日本のプログラミング教育のパイオニアを自負しているTENTOから発信できたとしたら、幸いです。

実際に作品に触れることの良さ

今回、発表は1トラックだったため、急増する生徒さん全てを発表のステージに立ってもらうことは叶わない状況となってしまいました。そこで、発表する人も、そうでない人も、作品を展示できる機会を設けました。これは昨年試行して好評だったため、今回からイベントの中に正式に組み込むことにしました。

IMG_3788

TENTO代表の竹林さんは「プレゼン大会を学園祭のようにしたい」という想いがありました。また、全ての発表したい生徒さんに何らかの機会を提供することは、指導を担当する私たちの責任でもあると考えていました。その結果として、展示が存在しています。

展示の良い所は、生徒さん同士で交流が発生することです。これは情報交換を通じて互いのプログラミングスキル向上が期待できることはもちろん、「これは良い作品を作っているな!」と互いが喚起しあうことでモティベーションを高める効果もあります。また、あちこちに人が行き交うため、まさに学園祭のような様相を呈します。なかなかよいものですよ。

この展示イベントだけでももう少し短期間でやってもいいかな、そう思えるくらいです。

イベントのネットワークについて

せっかくですので、ネットワーク環境について述べておきます。

ネットワークは、公衆回線はUQ WiMAXのURoad-Home2+ → ルーターはYAMAHA RTX810 → Wi-FiはYAMAHA WLX302 で組んでいます。PCは40台以上接続しています。この状態で、ノントラブルで乗り切ることができました。

ScratchやViscuitはhttpの非同期通信が多発しますので、ルーターにNATテーブルを多量に要求するなかなかシビアな環境です。また、家庭用Wi-Fi機器ではさすがにこのPCの台数を支えることはできません。一方で、アクセスポイントを増やすだけですとかえって通信が輻輳しますので、よほど慣れていない限り避けた方が良いです。

これらのコツは、Software Design 2015年3月号の「カンファレンスネットワークの作り方」で解説されていますので、検討される方や、実際にネットワーク環境に困っている方はぜひ参考にしてみてください。

一つのフォーマットの完成

TENTOのプレゼン大会を第1回から手伝ってきまして、4回まで来ますとだいたいのイベントのフォーマットができたかなと思っております。発表と展示、相互に盛り上げることで生徒さんのプログラミングスキル向上の一つのマイルストーンにできているのではと自負しています。また、TENTOという場で、コンピュータとは何か、そしてそれを通じて仲間の絆や、学校で学びづらいスキル(プレゼンテーションや論理的思考力)を生徒さんが理解してもらえたら何よりです。

実は、私は家庭の事情から、このイベントを持ってTENTOを離れることとなりました。その一区切りに、TENTOで一番はじめに取り組んだプレゼン大会で締めることができることを幸運に思います。大変感謝します。

また、ここまでに至るまでに、代表の竹林さんをはじめ、多くの仲間に支えられてここまでできたことを深く感謝しています。重ねて、どうもありがとうございます。

IMG_3819

情報教育自体には引き続き関心を持ちながら生活して行きますので、イベント等でお会いする機会がありましたら、どうぞよろしくお願いします。

TENTO×デジタルポケット 第3回プレゼン大会の幹事をしてきた #tentodp2014

去る10月26日(日)、DeNA様の会議室にて、ボランティア先の小中学生向けプログラミングスクール「TENTO」と、主にViscuitを利用した教育を行う「特定非営利活動法人デジタルポケット」(以下 DP)さんと共催で、第3回プレゼン大会を催しました。当日の模様は、「TENTO×ビスケット塾 第三回プレゼン大会 模様のまとめ #tentodp2014 – Togetterまとめ」にトゥギャりました。

今回は以前にまして、TENTO, DPに通う40名の小中学生が登壇し、自慢のプログラムをLTしました。

IMG_6828

当日の模様をブログを書いていただいた方がいらっしゃいます。ぜひ、ご覧ください!

また、過去の模様は、以下のエントリに残していますのでご覧ください。

さて、僕は今年から本格的にTENTOの講師ボランティアとして加わったため、準備開始の段階からイベントの一切のマネジメントに関わる事となりました。とはいえ、第1回から撮影係として関わってきましたので、何をしなければならないかの大筋は確認できていてあまり不安はありませんでした。そこで、今回の事後blogでは、今までとは違う気付きがあった3つの話「ポスターセッションの導入」「テキストプログラミング部門の審査員について」そして「プレゼンテーションとプログラミングを考える」についてまとめようと思います。

ポスターセッションの導入

第3回から導入した事として「2セッション同時進行」「保護者会」そして「ポスターセッション」があります。さて、この中でポスターセッションについてお話しします。

IMG_0970

一般にポスターセッションとは、カンファレンス等で、自分自身の研究成果を1枚の模造紙にまとめ、決められたブースに待機して対面で説明する事を言います。今回は、それを拡大解釈して、生徒自身が開発したソフトウェアを他の人に触ってもらいながら対面で説明できる場を作りました。デモブースと言っても良かったかもしれません。

これは、今回共催するにあたりDP 渡辺さん(たけしぃ)から「作ったプログラムは触れられた方が良い」という提案を受けて設定したものです。たけしぃさんが言うのは最もでして、僕もプログラムは実際に使ってなんぼのものだと考えていました。また、たけしぃさんはワークショップの実務経験が豊富であったため、彼の知見をベースにうまくできるのではないかとも考えました。

実際、やってみて成功だったと僕は考えています。ポスターセッションにて、3つの発見がありました。

  1. 違う拠点の生徒同士の交流が生まれる
  2. 技術の交流が生まれる
  3. プログラミングのモティベーションがより高まる

1は、TENTOやDPは首都圏各所で教室を開いていますが、通常は別の教室の生徒同士が交流する機会はありません。そんな中、生徒一人一人が、自分は一人や狭い世界にいるのではなく、多くのプログラミングを学ぶ友達がいることを身をもって知ってもらえたのではないでしょうか。

2は、実際に他の人のプログラムに触れると、自分が知らない技術や実装の工夫をしていることを知る場合があります。そんなときに、開発した子と直接会話する事で、技術を通じた交流が生まれます。本人が席を外しているときに、「〇〇を作った人、来て下さい〜!」と呼んで説明を求める子さえいました。僕はこれを見て心底やってよかったと思いました。

3は、1や2を通じて、人との交流やより高い技術の研鑽を通じて、より高度な技術、より魅力的な演出ができるプログラムを書こう、という生徒のモティベーションが上げられたのではと考えています。仲間同士で鍛えあう姿は、僕個人はとても素晴らしい事だと理解しています。

これらは、たけしぃさんの段取りあってこその成功でした。本当に感謝しています。

最後に、1点問題がありました。Wi-Fiです。今回はDeNA様のWi-Fi環境がありましたので無事乗り切る事ができました。今後は、過去のエントリ「JPA Thanks CONBU トークセッションでWi-Fi設定の知見を聞けた #yapconbu」で学んだ知識をベースにより良い環境を構築しなければならない事を痛感しました。

テキストプログラミング部門の審査員について

テキストプログラミング部門は、Webアプリエンジニア養成読本の共著者で81忘年会仲間である @uzulla さんに依頼し、二つ返事で引き受けてくれました。

IMG_7456

今回、運営担当者内で部門の特性(Viscuit, Scratch低学年, Scratch高学年, テキストプログラミングの4部門)に沿って手分けして依頼をしたのですが、その際にテキストプログラミングを担当していたのが僕でした。なぜuzullaさんだったかというと、「現場でソフトウェア開発をしている」「若い人と柔軟に交流できる」そして「YAPC::Asia Tokyo 2014 ベストトーク賞受賞者」であるという点でした。ソフトウェアの完成度は当然評価するとして、プレゼン大会なのですからプレゼンテーションのよさを知っている方にお願いしたかったのです。また、ソフトウェア開発の現場にいる方に審査をお願いするのは、これが初めてです。

実際、彼にお願いして本当に良かったと思います。実務の現場で働く人がどのような視点でプログラミングに関わっているのか、そして生徒の皆さんも自分自身がどこを磨くとより魅力的になれるのか、強い刺激をもらえたのではないかと思います。 uzulla さん自身の感想はエントリにまとまっているのでぜひご覧ください(冒頭でリンクしています)。

もし可能であれば、ソフトウェア開発に興味をもつ現場にいる人たちを交わり、よりプログラミング開発のスキルを高めつつ、そしてより広くたくさんの人たちとの輪を広げる…そう、コミュニティ参加への道も開く事ができたらと考えています。

uzulla さんをはじめ、審査を担当いただいた皆様に深く感謝致します。

プレゼンテーションとプログラミングを考える

TENTOでは、ピアノや水泳教室のように、社会に出る時の教養としてプログラムを学ぶ環境を提供するよう努めています。中には社会人になってプログラム開発の現場に入る子もいるかもしれませんが、それは一部だと考えています。

「構成を考え(モデリングスキル)」「開発を行い(プログラミングスキル)」そして「多くの人に自分が開発したプログラムの良さを知ってもらう(プレゼンテーション)」の3つを指導しています。言い換えれば、モデリングスキルを養う事で論理的思考(再現性のある説明・可視化するスキル)を学び、プログラミングを通じてこれから長く付き合うであろうコンピュータの活用方法や技術の学習方法を学び、そしてプレゼンテーションを通じて自分自身を表現する方法を獲得します。これらは全て、社会に出ると求められるスキルであることは、皆様同意していただけるかと思います。

IMG_7367

その上で、学習のマイルストーンとして、このプレゼン大会と関わり続けて行きたいと考えています。そうすることで、生徒自身はもちろん、私たち指導に携わる者としても、共に学習しより成長して行くために何をすれば良いのか、計画的に考えて行動できるようになります。

10年後、20年後に、ここで学んだ生徒さんたちが、コンピュータを当たり前に活用しながら、論理的に考えて仲間や多くの人にその考えを伝え、より多くの人に新しい価値を提供してくれるようになればいいなと願っています。そこまでいかなくとも、彼らが社会に出たときに、彼らの力でソフトウェア開発の際に発生する意思疎通に起因したトラブルがせめて少しでも減ってくれれば、との思いもあります。

まとめと今後について

ここまで、第3回プレゼン大会について「ポスターセッションの導入」「テキストプログラミング部門の審査員について」そして「プレゼンテーションとプログラミングを考える」の3点に分けてお話ししました。特に、ポスターセッションの導入はDPさんの知見と協力があってこその成功でした。重ねてありがとうございました!

プログラミング教育と一口に言っても、1回〜数回のワークショップ型もあれば、TENTOのような寺子屋教室型、そして今後は学習塾のような一斉指導型も出てくるのではないかと思います。また、英国をはじめとして先進国から順に公教育におけるプログラミング教育の普及が既に始まっています。従って、プログラミング教育はこれからもどんどん盛り上がるのではないかと私は考えています。

ただし、そのときにどのような形を目指しているのかは、充分確かめておく必要がありそうです。プログラムを書く楽しさを伝える所もあれば、TENTOのように論理的思考を通じてプレゼンテーションスキルを高める所もあれば、プログラミングは一つの手段として情報システムの仕組みや倫理を学ぶ所もあるでしょう。他にも出る事でしょう。

ソフトウェア開発者がプログラミング教育を考える事は、どのような後進を育成したいか、そして自分たちがどのような世界にしていきたいのかを考える事に通じます。「コードで世界を変えられる」という有名な言葉があります。もし、変えられたとき、その後の継続性をどのように担保するのか?という点は、あまり議論されてこなかったのではないでしょうか。勝手に誰かが引き継ぐ?それは滅びて別のものが出る?確かにそれはあるでしょう。でも、それだけで良いとは僕は思いません。

恐らく…僕がプログラミング教育に関わる最大のモティベーションは、未来を見つめることができるからだと、考えています。

IMG_0541

会場をお貸し出しいただいたDeNA様、ありがとうございました。一緒に運営して下さったTENTO, DPのみなさん、審査員の皆様、大変お疲れさまでした。保護者の皆様、大変ありがとうございました。そして、発表した生徒の皆さん、お楽しみ様でした!

小中学生にプログラムのデバッグを教えるときに僕が引っかかった3つのこと

※エントリの最後にお知らせがあるよ!

プログラミング教育の熱が高まり始めている今日この頃。今年から本格的に、小中学生向け プログラミングスクール「TENTO」にて、ソフトウェア開発教育のボランティアをしています。巷ではワークショップ型で1回ぽっきりのものが多いですが、TENTOでは書道やピアノの塾と同様、継続して指導している点が特徴です。

さて、最近こんな記事がありました。

 イギリスの場合は、Key Stage 1(5歳〜7歳)のコンテンツは以下の通り。アルゴリズムって何?から始まり、デバッグしたり、学校外でのテクノロジーの利用とか、個人情報についてのこととか、たしかに大事!と思うことが多い。

(中略)

 そして、どちらかというと、プログラミングの教え方がわからない先生ほど、「お手本を見て、このとおりに書いてみましょう」みたいな授業をしてしまうんじゃないかな、と思います。そうすると、子どもたちはきっと、「わけがわからないまま」に、ただ写してしまうのではないかと思います。
 ただ写すのがトレーニングになるかもしれない、という可能性もありますが、本来与えたかった学習目標はそうしたことなのか、というのが考えるポイントだと思います。

プログラミング教育について思うこと – 教育ICTリサーチ ブログ より引用

一つ一つの項目について、いろいろな話があるのですが、今回は「デバッグ」について僕が指導中に引っかかったお話を、「知識」「モデリング」そして「心理」の3つまとめてみようかと思います。

知識が無いばかりに遠回りな実装をしている

まずは、知識の有無によって出る問題です。

知識が無いばかりに、遠回りな実装をしてしまう生徒さんがいます。例えば、Scratchでゲームを作る際、単に敵キャラを増やすために複数のスプライトを予めコピーして増やそうとする事があてはまります。

こうしてしまうと、あらかじめ複製した敵キャラ スプライトの一つのプログラムを変更してしまうと、他のものも同様に実装し直すか、コピーし直さなければなりません。そうしていくと、いつかどのスプライトのどのプログラムをなおしたのか、そもそもどういう実装にしたかったのか、生徒さん自身がわからなくなることがしばしあります。

この問題を解決する方法の一つは、基となるスプライトをクローンして増やす事です。こういった知識を、指導者は提供します。また、僕は指導の時に実装例を積極的に作って、理解してもらうようにしています。こうする事で、どういった境遇のときにどのようなメソッドを使えば良いのか、腹の底で理解してもらいやすいのです。また、他者の実装をまねてみることで理解を深める場合もあり、その場合はどのように探し出すのかを指導しています。

これは、アルゴリズムなどでも同様です。プログラミングで必要な数学の知識は高校以上で学習する事が多くあります。例えば、敵キャラを動かすために三角関数を用いたり、出現率を計算するために確率論を用います。とはいえ、これはほんの触りです。

従って、指導者は各種プログラミング言語で実装できる力が求められます。Scratchは阿部先生が書かれた本がありますので、ぜひ参考にしてみて下さい。

構造を生徒自身で理解できないでいる

続いて、モデリングの問題です。

小学生は、特に「こんなものを作りたい!」と思って、ガシガシとコーディングします。この集中力は目を見張るものがあり、感服するばかりです。しかし、ここは小学生、途中でコードがこんがらがり始め、バグが出てきます。そのときに、どこでどのような問題が起きているか生徒自身が理解できなくなってくるのです。例えば、Scratchではメッセージをブロードキャストする事で他のスプライトの挙動を制御する事ができるのですが、そのメッセージの管理が破綻したりするのです。

この問題の解決方法は実に様々あり、実際に開発現場で働く方々の中でも数多くの知見があるかと思います。そんな中、僕は2つの方法をとって解決を促しています。

  1. プログラムのライフサイクルを整理する
  2. グローバルに影響するメッセージや変数を整理する

1つ目ですが、次の2次元に分けます。Scratchですと、1次元目は「背景」及び「スプライト」毎に分けます。2次元目は、「初期時」「実行時」そして「終了時」の3つの時間軸に分けます。肝は2次元目です。例えば、ゲーム開発であれば、敵キャラですと「初期時」にはどこに生成するか、HPはいくつにセットする、など初期状態とは何かを整理し、生徒自身が定義します。これを忘れてしまうと、ゲーム中に敵キャラがおかしな場所に登場したり、ダメージを受けきった状態で生成されてしまっていきなりやられてしまうなどの問題が出ます。また「終了時」は、ボスを倒したあとに敵キャラを全て隠してステージクリアの背景に変える、そしてスコアを保存してランキングにまとめる、等の整理をしてもらいます。

ライフサイクルを理解しないまま進めてしまうと、どのタイミングでどのスプライトがどのような動きをしているか理解できず、問題を切り分ける事ができません。そのため、生徒自身でバグを収束させる事が大変困難になってしまいます。

2つ目ですが、これまたScratchを例にとります。メッセージを使うと全てのスプライト・背景にブロードキャストされる事はご存知かと思います。これを使って別のスプライトを制御する事はよく使われる実装ですが、このメッセージがどこでどのように掴んで処理しているのか、そしてそもそも1つ1つのメッセージがどのような意図を持って発しているかを定義せず、生徒さんがなんとなく実装を進めてしまっている場合があります。コードを書いた事がある方であれば、あーこれはいわゆるスパゲッティコードになる要素が満点!である事がおわかりいただけるかと思います。

僕は、メッセージ毎に何をしているか、整理して書き出してもらう事で解決しています。見通しが立ちますと、自分自身がどのような実装をしているのか、生徒自身で理解できるようになります。そうすれば、自分で問題を解決するのは時間の問題ですね。

プログラミングに限らず、問題をどのように発見し、クールに解決するかは、以下の本が大変参考になります。

問題を自分自身に受け入れない

これは、気持ちの持ち方の問題かもしれません。

上記の2つの問題を指摘した時、素直に聞く生徒さんと、そうでない生徒さんがいます。素直な子はここではあまり問題になりません。問題は後者です。

これは僕自身の分析ですが、次のような心理になっているのだと思います。

  1. 自分は正しいと思っているのに間違いを指摘されるのが辛い
  2. コードの問題を追及しているときに自分自身が追及されていると思っている
  3. 気が乗らない

1は、大人でも難しい時があります。ただ、プログラムは大変素直でして、原則「実装した人が書いた通りに動く」のです。話を聞いたあと、だいたい僕はそれを伝えています。ただ、それをいち早く生徒さんに飲み込んでもらえるための良い方法を知りません。どなたかと知見を共有できたら良いなと思います。

2は、これまた大人でも難しい問題です。行った作業について問題を指摘しているのに、自分自身の人間性に問題があると捉えてしまい、かたくなになる生徒さんがいます。この、物事と自分自身を分離させるのは、一度紐づくと切り離すのはなかなか難しいのです。特に、自分自身で精魂込めたプログラムだとしたら、問題はより深くなります。僕は、「君ではなくてプログラムの作りについて指摘している」点を明確にしながら指導しています。ただ、先の1の問題と同様、より良い方法を誰かと共有できたらと思っている今日この頃です。

3は、僕自身も仕事のときにあります。想定と違い動かなくなったコードを目の前にするのは辛い事です。ですので、気が乗らない時は、気が乗るまで待ちます。大人と違い、小中学生は切替が早い子が多く、気分転換すればだいたいあとは大丈夫だったりします。また、気を晴らすのがあまり上手でない子は、全く違うプログラミング言語や教材に触ってもらって、気持ちを切り替えてもらう時もあります。または、雑談をする事もあります。実は、僕が妖怪ウォッチを知るきっかけはTENTOだったりします。

必要であれば、児童心理学をやった方がいいのかなとも考えています。

生徒と同じ目線で 成長は早い

ここまで、僕がプログラミング教室でデバッグの指導をしている際の3つの事柄を、「知識」「モデリング」そして「心理」の3つに分類してお話ししました。

将棋や囲碁に「多面打ち」というのがあります。これは、指導者や上級者が、複数の生徒と同時に対局します。僕はやっているのはまさに(便宜的に言うと)ペアプログラミングの多面打ちなのです。というのも、プログラミングは一人一人が違う成果物を作りますから、成果物に対する指導は画一的に行う事はほぼできません。講義形式の指導は、できたとしても多くの人が使う知識に関する部分までです。

また、ここまで「指導」や「教える」という言葉を便宜的に使いましたが、僕自身はその意識はありません。あくまで、問題を「一緒に考える」事を通じて、生徒さん自身がプログラミングを学ぶ際の手伝いをしているだけです。それどころか、中学生にもなってくると、自力でプログラミングスキルを磨き続けてきた子は、指導者の知識を凌駕する分野を持つため、まるで大学院生が指導教授に相談する姿そのものをやるだけです。それほどまでに、生徒さんの成長が早いのです。従って、同じ目線で接する事が今は最善であると、僕は考えています。

そう考えて行きますと、指導者はめまぐるしく変わるコンピュータ技術の知識を日々獲得し実践しつつ、その技術を支えるモデリングスキルと心の持ちようを予め作り上げておく事が大切だと、僕は思っています。その上で、日々指導者の立場として生徒と向き合う事を試されているのではないでしょうか。

お知らせ: 小中学生が開発したプログラムの発表を聴きにいらっしゃいませんか?

TENTO

来る2014/10/26(日) 13:00より 渋谷ヒカリエにて、TENTO・ビスケット塾(デジタルポケット)で学ぶ生徒さんたちが開発したプログラムを発表する「第3回 プレゼン大会」を催します!一般の方も観覧できます(1,000円)。ご家族そろって足を運んでいただけましたら幸いです。プログラミング教育の一つの例、そしてTENTO・デジタルポケットがプログラミング教育を通じて何を目指しているのか、知っていただけると思います。

事前にWebサイトからお申し込みをお願いします。直前でも大丈夫です。

また、過去の模様はブログにまとめています。どのような雰囲気か知っていただけるものと思います。あわせてご覧ください。

第1回 小中学校ハッカソンの幹事をやってきました #tento_hs1

去る3/30(日)、日本でも珍しい小中学生が参加するハッカソンイベントが、筑波大学 東京キャンパスにて行われました。主催は、小中学校向けプログラミングスクール「TENTO」と、ビスケット塾を主宰する「デジタルポケット」です。

僕は、企画段階からTENTO側の幹事団の一員として本イベントに携わってきました。せっかくですので、振り返りの意味も込めて、「目的」「種目の設定」そして「当日の模様」についてまとめておこうと思います。

P1017495

■ハッカソンの目的

大きく次の3つの目的があります。

  • 普段、教室で学んでいるプログラミング学習の成果を出す場として。
  • プログラミング教育の成果の一つを示す場として。
  • 同じプログラミングを学ぶ人同士の交流の場として(※0)。

これらは、以前から行っている「プレゼン大会」とそれほど変わりません。とはいえ、第1回プレゼン大会の頃に比べてTENTOメイト(生徒)さんも増え、かつ組織自体も大きくなり、ハッカソンのような大きなイベントも開催できるようになってきたという事で、取り組む運びとなりました。

■種目の設定

種目は、当初より3種目を設定する事で決まっていました。

Viscuit部門は、主に小学校低学年の子向けに設定しました。テーマは「ゴールがあるゲームを作る」とし、1.5時間で開発を進めました。開発用PCは、主にビスケット塾さんの備品であるタブレットPCで行っていたのですが、マウスよりもより柔軟に操作できるようです。昨今のWindows 8搭載PCだとタッチパネル付きのものが多く、この開発手法はより普及してくるのではと思います。

Scratch部門は、広く小・中学生に参加してもらえるよう設定しました。テーマは「身近な人の生活を助けるソフトを開発しよう」とし、3時間で開発を進めました。テーマ設定の背景として、「問題発見力」「課題のモデリング」そして「ソフトウェアを通じた問題解決力」を試せる機会にしたい、というものがありました。

HTML + JavaScript部門は、主に小学校高学年以上の子向けに設定しました。他の2部門と違い2〜3人でチームを組み、テーマとして「RPGゲームを開発する」事としました。チームで役割分担をしながら、6時間の中で一人ではできない規模で成果が出せるのか、大人になった時に求められるチーム開発の経験が出来る機会にしてみました。

ハッカソン経験者の方だと、多くの部門で「時間が短めだな」と思われた方もいるはずです。これは、小学生…特に小さい子はそれほど集中力が持たないのではと想定したのが大きな理由です。

また、各部門の開発中は、普段TENTO・ビスケット塾で指導にあたられている方々に「サポーター」として携わっていただきました。主に、ルールの説明、開発環境のトラブルの対処、そして発表の対応を行っていただくこととしました。

■当日の模様

ちょっと時間が前後する事もありましたが、事前に設定したスケジュール通り進める事ができました。

P1017325

各部門、ほぼ全ての子が作品を仕上げる事ができました。これが何よりよかったと思っております。また、参加者の保護者や観覧者の皆さんに、実際開発している様子をご覧いただく時間を確保できた事も、好評だったようでした。

そんな中、いろいろなことが起こりました。特に、Scratch部門で「開発環境がABENDしてソースが全部飛んだ」という、大人である自分でさえ身の毛もよだつトラブルが発生しました。その子は本当に落ち込んで泣いてしまっていたのですが、その後は何とか気を持ち直し、残り1時間のところから発表にこぎ着けるまで作り直す事ができました(※1)。大人の開発者の皆さんはこまめに保存されていると思いますが、これらを小中学生の参加者の皆さんにもちゃんと話した方がよさそうです。

開発の状況ですが、各部門で違いが出ていました。

  • Viscuit部門は、ビスケット塾さん主導で進めていただきました。さすが普段Viscuitを使って指導されているな、というすごさを見た気がします。
  • Scratch部門は、サポーターのマンパワーが足りなかったなと反省しています(最も参加者が多かった)。結局、審査員として来ていた阿部先生にも入っていただき、何とか進める事ができました。本当にすいませんでした…(※2)。なお、参加者3〜4人に1人のサポーターを割り当てると無理なく行くはずです。
  • HTML + JavaScriptは、プログラミングスキル差がはっきり出ていました。今後、よりプログラミングの経験を深めて、再挑戦してもらえたらと思っています。マクドナルドの食べ物が山積みになっていたのが、ハッカソンらしくて印象的でした(笑)。

他にもいろいろ反省点があるのですが、現在TENTO内で総括を進めている所です。これらをまとめて、次回実施するときは同じ問題を起こさないよう取り組みます。また、大人向けのハッカソンを運営するのとはまた違った難しさもある事がわかってきましたので、その辺りも経験を蓄積して行けたらと思っています。

■今後について

今回のハッカソンですが、成果物やアンケートの内容を確認する限り、当初の目的は達成できたのではと考えています。1回目から3種目やるのも大変ではありましたが、次回以降は土台がありますから少しずつこなれてくるはずです。また、当日にいろいろな事が発生しましたが、幹事団全員で柔軟にワークアラウンドで対処できホッとしております。多くの方の想いと力を持ってして、このようなイベントができたんだなと感じずにはいられません。

昨今、プログラミング教育の重要性が唱えられています。ただ、どういった結果が出ているのか、わかりづらい所もあるかと思います。そこで、本イベントを通じて現段階の「成果」について、一つ示す事ができたのではないかと思います。ただ、先ほども申し上げました通り、まだまだできる事がたくさんあります。

そして、「世の中にはすげぇ奴が一杯いるんだなぁ〜」ってのを、多くの子たちに経験してもらいつつ、明日のプログラミングのモティベーションにしてもらえるような場として、今後ももっと盛り上げて行けたらと願っています。そのためには、次回以降はより多くの団体の方々に参加・幹事に加わっていただいて進める事も検討したいと考えています。また、より多くの方に見に来ていただけるようにもしたいですね!

皆さん、お楽しみ様でした!次回も、どうぞよろしくお願いします。

P1017494

※0 新宿・さいたま・横浜・市川、各教室の子たちが一堂に集まります。

※1 審査の結果、その努力をたたえて受賞される事になりました。

※2 あのScratch本を書いている阿部先生と直接話ができるという事で、参加者の子たちには好評でした。