10/20(金)「BPStudy#122〜いかにプログラミングを学ぶか?プログラミング教育を考える」に参加しました。
はじめに
先週金曜(10/20)は「BPStudy#122〜いかにプログラミングを学ぶか?プログラミング教育を考える」に参加してきました。2020年秋に小中学校で義務化されるプログラミング教育について最近ちょこちょこ調べているので、その一環です。BPStudyはこれで2回目の参加なんですが、受付の際に主催の佐藤さんがオレのことを覚えて下さっていてビックリしました。(どうやらドラゴンズファンつながりということで覚えて下さってたみたいです。ドラゴンズファンなのが役に立ったのは初めてだ)
この日はノートPCを持ち歩いていなかったのでメモはあきらめ、Twitterに走り書きを垂れ流していました。が、意外にログとしてちゃんと成立しそうなので、感想と合わせて掲載します。
第1部-1:子どものためのプログラミング道場「CoderDojo」とは? (CoderDojo Japan代表 安川要平氏)
#bpstudy に参加しとります。今日のテーマはプログラミング教育。 pic.twitter.com/M6fvUi7Kdh
— Youichi Takigawa (@takigawa401) 2017年10月20日
Code Dojoって世界中でやってるのか。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
とある子供のプログラミングの独学実例:Google先生→図書館&ドットインストール→Dojoで相談 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
10分ほど遅刻してきたので、最後の方をチラッと聞けた程度でした。100拠点以上ってすごいな!
第1部-2:子どもも大人もプログラミングで遊んで学ぶ!「CoderDojo」が楽しい!(CoderDojo藤沢代表 向井アリー氏)
向井アリーさん。藤沢市のゆるキャラのお母さん。藤沢道場の主催 #bpstudy pic.twitter.com/tps5fLdRre
— Youichi Takigawa (@takigawa401) 2017年10月20日
Code DojoじゃなくてCoder Dojoだったw #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
プログラミングは遊びか?学びか? #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
子供たちは勉強に感じるようなつまらなさを感じてない。学びでもあり、遊びでもある=「マソビ」 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
プログラミングの楽しさの三要素 = 思い通りに動かす感動、問題が解けた時の気持ち良さ、シェアして遊んでもらえる喜び #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
親が近くにいない方が上手くいく、親が子供にべったり張り付いていちいち口を出す(最悪子供からキーボード奪い取って自分が作ってしまう) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
子供が学ぶ場では保護者から離す事が大事 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
Coder Dojoでは子供たちはみんなバラバラな事をやってる。相手を驚かせて、それが前に進む力になる。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
早い子では小1で自主的にプログラミングできる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
子供向けプログラミングツール=スクラッチ, Viscuit, LEGOマインドストーム, Micro:bit, PETS, ラズベリーパイ, IchigoJam #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
「親御さんとお子さんを一緒にしちゃダメ」ってのがなかなか興味深かったです。あとで別の方と話していたら「自分もそうなってるので反省しなきゃなぁ」とおっしゃってました。」子供が学ぶのに親が邪魔になる、子の学びを親の邪魔しないよう、仕組みか親の忍耐が必要。親であるというのもなかなか難しいですね。
第1部-3:CoderDojoと教育行政 (CoderDojo柏代表 宮島衣瑛氏)
3番手、大学2年生の宮島さん #bpstudy pic.twitter.com/GTPdSFdL9j
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojo Kashiwa。2013/05開始、市内4拠点、学生主体で運営(高校生も運営に参加) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
小学生・中学生・高校生・大学生・大人が参加してるのがCoderDojo Kashiwa #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
発表の場=Special Presentation Day。今年は12/23に開催。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojo Kashiwaは男女比はほぼ均等 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojo Kashiwaのミッション:市内のどこにいてもプログラミングを学べる場を提供する。→4拠点作った。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
「まだまだいけるかな」 #bpstudy pic.twitter.com/xwCzaW34YH
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojoに固執する必要はない。→市と協業→市内42公立小中学校でプログラミング教室を実施 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
実際に活用している教材 #bpstudy pic.twitter.com/6tznSAzRSd
— Youichi Takigawa (@takigawa401) 2017年10月20日
先生たちとカリキュラム案の検討と相談 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
先生たち、教育委員会にはDojoのイベントに協力してもらう #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
学校はあくまで入門、もっとやりたい子供にDojoの場を提供 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
柏市 x CoderDojo Kashiwa:開かれた教育課程の提供 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
実例動画:スクラッチ「で」マインクラフトを作る子供 #bpstudy pic.twitter.com/C0A9KQ17lG
— Youichi Takigawa (@takigawa401) 2017年10月20日
この勉強会で一番驚いた発表でした。柏だけで4拠点が存在し、しかもそれを学生主体で運営している。行政や教育委員会とも連携をとり、実際にカリキュラム作りで提携も行い、実際に学校での授業も行っている。行政や教育は閉じた場だというのがオレの認識だっただけに、それがオープンに開かれて草の根で広まりを見せていることにただただ驚きました。
懇親会で宮島さんにお話を伺ったところ、柏市特有のレギュレーション(元々小中学校のIT化がさかん、行政側に課題感が強く、積極的に外部からの意見を求めている、etc)もあるそうですが、それにしても2020年を待たずに実践できているのは本当にすごいと思います。
第1部-4:元プログラマが辿り着けたプログラミングコミュニティ「CoderDojo」 (CoderDojo市川代表 土屋健一氏)
4番手は土屋さん。CoderDojo市川チャンピオン。Webソフトウェア開発企業経営。 #bpstudy pic.twitter.com/iWNQ2mD0dO
— Youichi Takigawa (@takigawa401) 2017年10月20日
マイコンBASICマガジンで写経して勉強してた #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
写経の効果=理解してなくても動くものが作れる、目見でデバッグ、理解できるとチートできる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojo アイルランドで発祥(貧富の差が激しい)→無料にこだわる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
CoderDojoの流れ:チュートリアルを写経→作ったものを発表 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
開催側のやってること:フォロー、親御さん対応、申込管理、出欠管理、収支管理、他の道場の手伝い #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
最初は事業として始めたが、儲からないし、ピンとこない。先ずは自分が盛り上がれる方向にスイッチした。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
開催にはむしろプログラミング以外の役割の方が多い。プログラミングがわからない人でも協力できる。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
開催にはむしろプログラミング以外の役割の方が多い。プログラミングがわからない人でも協力できる。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
参加者から参加費を貰うのがなかなかツライ。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
学生が率先して参加してくれる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
会社体とコミュニティの違い #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
継続するには一人で運営するサイズを意識すること。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
けものはいてものけものはいない。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:PCの扱いは? A:基本は自分で用意して貰う、参加者のPCを壊したことは無い #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:子供たちのセキュリティの意識付けは? A:Dojo全体での方針は無い、基本独自判断。教材(本)にセキュリティの話が入ってると話が早い。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
土屋さんは以前POStudyでお会いしたことがあり(たしか7つの習慣ゲームだった気がする)、Facebookでも繋がっているので、今日の発表者の方々の中では接点がある方でしたが、CoderDojoを運営されてるとは知らなかったです。企業(ビジネス)目線でどのようにマネタイズしていくか、からスタートし、紆余曲折を経て現在の形になるまでの話はとても参考になりました。
第2部−1:私の異常なプログラミング教育、あるいはどうやってプログラミングを教えているのか (株式会社クオリティスタート ゆもとみちたか氏)
第2部はござ先輩。この勉強会では常連登壇者 #bpstudy pic.twitter.com/z1n0bjXDOh
— Youichi Takigawa (@takigawa401) 2017年10月20日
某F社からの学習カリキュラムを変えたいという要望から始まった。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
「独習Python入門」を執筆した手前、やらざるを得なかった。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
Pythonを採用した理由:Javaはプログラミング初学に向いてない(オブジェクト指向が使える人向け、環境構築が面倒、学習コストが重い) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
プログラミング学習が難しい理由:抽象(概念)と具体(実装コード)の間が広すぎる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ハードル1:「条件分岐」「繰り返し」繰り返しでつまることが多い、イメージしづらい #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
whileはforより難しい(開始条件と終了条件がある) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
課題プログラム:ズンドコキヨシ #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ハードル2:データ構造。配列くらいから難易度が上がる。データ構造を意識させるには手書きで表作らせるのがベスト。(コードの写経だけでは理解できない) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ハードル3:オブジェクト指向。メリットが伝わりにくいものを理解させることは難しい。「オブジェクト指向とは?」みたいな哲学を語るのはアウト! #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
#bpstudy ちなみにPHPのクソコード地獄を体験した身としては、硬くて融通がきかないJavaは基礎が徹底的に身につくので、ぜひJavaをプログラミング初学に採用して欲しいと切に願ったりする。
— Youichi Takigawa (@takigawa401) 2017年10月20日
処理内容の順番をどう伝えるか? #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
大きな課題を、小さく分解する #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
プログラミングには「代入」「分岐」「繰り返し」しかない。それらにどう落とし込むか、をパターン化して身につけて貰う。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
プログラミングの学習曲線は、覚醒するとグンと伸びる。一次関数ではなく二次関数、あるいは階段状の成長曲線になる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:オブジェクト指向は結局教えたの? A:もちろん教えた。伝わったと信じてる。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
超有名ブログ「GoTheDistance」の執筆者:ござ先輩こと ゆもとさんの発表。今回の発表資料もシレッとホッテントリ入りしててさすが!という感じです。
某大手企業のプログラミング研修にPythonを用いた経緯と、実際の研修で苦労されたことを語って頂きました。ループで苦労したことは、実はオレ自身はなかったんですよねぇ。あ、でもPHPはじめた時に初めて触った鬼のような多次元配列には、最初のうちは苦労させられました。オレが教える立場だとしても、つまずくのはループでしょうね、きっと。
ござ先輩の意見に反するようではありますが、オレは社内研修のようなある程度強制力を持って教育を行える場では、Javaを教えるべきだと思っています。ござ先輩のおっしゃったように、Javaは非常に融通が利かなく、堅く、めんどくさい、というイメージを持っている言語で、それはある程度真実なのですが、それゆえに「覚える過程で堅く丁寧に書く習慣を強制的に身につけさせる」というメリットがあるとオレは思っています。(だから十把一絡げが集まる大型SI案件ではJavaが多く採用された)
丁寧に書く習慣なんて後からでも身につくだろ、とか言う台詞は、オレは過去に既存PHP作Webサービス案件に参画した際にドブに捨てました。書けんヤツは書けん。三つ子の魂百まで。なので、SIerで今後も大して勉強しないだろう駆け出しエンジニアを育てるには、最初くらい徹底的に勉強させるという意味で、Javaのようなある程度スパルタな養成ギブスを用いることは必要だろう、というのがオレの持論です。
ちなみに、自分で自学自習でプログラミングを始めるのならJavaScriptをオススメしてます。なぜなら環境構築がほぼ要らないから。
第2部−2:PyQの学習者サポートから学んだPython初学者への解説ノウハウ (株式会社ビープラウド 大村亀子氏 & 清原弘貴氏)
ピープラウド(PyQ:オンラインでPythonを学べるサービスの開発ツール)の大村さんと清原さん #bpstudy pic.twitter.com/VMTcMQqCZF
— Youichi Takigawa (@takigawa401) 2017年10月20日
PyQはPC壊れないよ! #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
問い合わせ内容への回答方針:写し間違え→答えを教える #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
そういうのはIDEでやって欲しいなぁ。
回答方針:解説を求められる→順序立てて解説、わざと複数回メールのやり取りをすることも。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ハマりポイント:繰り返し(ループ)処理。再帰はもっとキツイ。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ループの動きを一周ずつ丁寧に解説する #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
Python Tutorが解説に便利。他の言語にもある。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
Javaはeclipseのデバッガにあるな。
エラーが出てることを繰り返し意識付け、エラーをちゃんと読む習慣を身につけさせる #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
よくある質問はブログへ記載。→リファレンス化 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
Flake8を活用して読みやすいコードを書く #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:問い合わせ対応で言葉遣いで気をつけていることは? A:難しい専門用語は使わない。リファレンスを用意して勧める。上からものを言わない。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:Python初めての人と、習熟者の比率は? A:集計を取ってないので不明。スタンダードプランはほぼ全員初学者。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:Python以外の周辺知識(FWとかHTMLとかHTTPとか)をどう扱う? A:いきなりは教えない。徐々におしえる。ただし、伝え始めると難易度が跳ね上がる。 #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
質問:写経ミスはツールで救えないの? A:近々にリリース予定。(写経と元ソースの差分を表示) #bpstudy
— Youichi Takigawa (@takigawa401) 2017年10月20日
ビープラウド社で運営されているPython学習サイト「PyQ」の開発・運営を担当されているお二人から、サービスの紹介と、ユーザーから寄せられる問い合わせの内容を発表頂きました。
ユーザーからの問い合わせといってもクレームとかではなく「ここ分かんないんだけど」という学習内容に対する質問が主な内容。ユーザーのレベルがバラバラなので、全角半角ミスから前述のループ処理の理解まで、問い合わせの内容はさまざまです。オンラインサービス特有の苦労も聞けて面白かったですね。オンライン学習サイトって、オレ個人はドットインストールくらいしか試したことが無いですが、東進ゼミナールしかり、これからの学習スタイルの中心になっていくんでしょうね。
クロージング&懇親会
クロージング #bpstudy pic.twitter.com/WHMrDiGlQx
— Youichi Takigawa (@takigawa401) 2017年10月20日
ござ先輩、只今サイン中 #bpstudy pic.twitter.com/oISzHGYbXs
— Youichi Takigawa (@takigawa401) 2017年10月20日
懇親会は、パッと見30人くらいが参加。普段のBPStudyだと10人程度ということでしたから、それだけプログラミング教育についてもっと話を聞きたい、という人が多かったんでしょう。
感想
2020年秋から始まるプログラミング教育の義務化は、オレに言わせれば、ハッキシ言って文部科学省の仕切りがかなりデタラメです。
まず「プログラミング」っていう科目が増えるわけじゃないんですよね。国語・算数・理科・社会といった既存科目にプログラミング的要素を取り入れる、というのがその内容。しかもその方法は現場に任せる、という投げっぱなしジャーマンにもほどがあるだろ、と全力往復ビンタものの要項です。既存授業に組み入れる形だと、年間通した授業の流れが存在するし、既存科目の教員スキルとプログラミングスキルが混在するため、プログラミング授業だけの専任教師みたいなのは用意できないし、外注も無理。
おそらくベネッセみたいな教育資材を扱う会社が、今まさにプログラミング授業の商材を一生懸命開発している最中だと思いますが、それらのどれが最もいいのかを現場の教師が選ばなければならないわけで、それもプログラミング知識の乏しい人には大変な作業です。当たり前ですけど、現場の教師のみなさんはプログラミング経験なんてほぼ皆無なんですね。しかも教師の業務は多岐にわたり、普段の4~6コマの授業の準備に加え、生徒の生活指導・進路指導、学校行事の準備、部活の顧問、いじめ・暴力・不登校といったトラブルへの対応。残業代も支払われない壮絶ブラックな環境でこれだけのことをこなさなければならないのに、さらにその上プログラミング教育まで課される。
PG・SEとして15年以上飯を食っているオレから言わせてもらうと、プログラミングを自分の体感として身についた状態でこなせるようになるには、最低2年くらいの実務経験、あるいはそれに相当するプログラミング経験が必要です。これらを教師の方々が普段の仕事をこなしながら習熟するのは、ほぼ不可能に近い所業です。ちゃんとプログラミングを理解したうえで子供たちに教え、問題が生じたときに一緒に解決する、なんてのはまず無理でしょう。
とはいえ、子供たちにプログラミングを覚えてもらう、という方針自体は大賛成です。以前以下の記事でも書きましたが、当人が今後プログラミングを行わない立場であっても、発注側に立つ可能性は十分に考えられると思います。その時、過去にプログラミングを経験していれば、ある程度システムを作るということを理解した上で適切な発注ができるのでは、という淡い希望をオレは抱いています。今回の文部科学省のプログラミング教育の方針でそこまでの理解を身につけてもらえるか、はかなり怪しいですが、それでも0と1とでは雲泥の差でしょう。
で、あるならば、やはりITエンジニア側が教育現場に寄り添っていくのが直近の問題解決の近道であり、それを実践しているのがCoderDojoのみなさんだと思います。その存在はなんとなく耳にしていたのですが、今回こうやって話を聞いてみると、オレの思っていた以上に活発に、かつ広範囲で活動されていることに驚きました。実際にやるのは相当難しいんじゃないかな、と思ってたんですが、やってできるもんなんだなぁと素直に感心しています。
ただ、いくつか課題もあると思っていました。たとえばCoderDojoが無償・ボランティアであること。当たり前ですがサポート側も生活があるので、無償で続けることは不可能です。他者の善意にかまけていては、いつかその人のモチベーションがなくなったときに活動が途絶えてしまう。どうしても有償化は必要なはずなんですが、この時無償のCoderDojoの存在が逆にその動きを阻害してしまうのではないか、と。
この疑問には、懇親会で宮島さんが答えてくれました。CoderDojoはプログラミングの場の提供と若干のサポートをする程度で、基本的には何も教えないんだそうです。質問されたら答えるし、相談されれば可能な限り乗るし、でも教えたりカリキュラムを用意したりはしない。継続性を高めるために準備コストを極力軽くしている一方で、きちんと教えているわけではないので、有償の塾のような存在とはきちんと住み分けができるはず、とおっしゃっていました。事実、宮島さんは自身の会社では有償でプログラミングを教える事業をやっていらっしゃるそうです。なるほどねー。
あとは地域格差なども気になるのですが、それも何らかの対策を講じている人がいるかもしれません。オレ自身、プログラミング教育の現状を知り始めたばかりなので、もう少し突っ込んで調べて、現状把握と対策を考えてみたいと思いました。