小学校にプログラミング授業をお届けする

#はじめに

小学生向けのプログラミング教育界隈は、2020年度からの必修化を控え、ここ数年、にぎやかな状況が続いています。

NSSOLでも、社会貢献事業の一環として、2017年の秋から、プログラミングの出張授業をやらせていただいています。2018年はこれまでに6校に訪問し、約350名の小学生に出張授業をお届けしました(2018/12/05現在。授業時間外のイベント含む)。

普段ITエンジニアとして仕事をしているみなさまの中には、何らかの形で小学校プログラミング教育に関われないかと考えている方もいるかと思います。私たちが小学校でどんな授業をしていて、その時の子どもたちの様子はどうだったのか紹介したいと思います。※個人の見解です。

#小学校でのプログラミング教育について

##小学生向け!=小学校向け

前提として「小学生向けプログラミング教育」と「小学校でのプログラミング教育」はニュアンスが違うので注意が必要です。[小学校プログラミング教育の手引き](http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1403162.htm)というものが公開されており、大きい狙いとしては以下の3つがあげられています。

- 「プログラミング的思考」を育むこと
- プログラムの働きや良さ、情報社会がコンピュータ等の情報技術によって支えられていることなどに気づくことができるようにするとともに、コンピュータ等を上手に活用して身近な問題を解決したり、よりよい社会を築いたりしようとする態度を育むこと
- 各教科等での学びをより確実なものとすること

一方で、

- プログラミング言語を覚えたり、プログラミングの技能を習得したりすること自体を狙いとはしない
- 実際にコンピュータを使ってプログラミングしてみることは必須である
- 具体的な例示をあげているが、これにとらわれずに実施することを推奨する

ということが明記されています。

どの学年で、どの程度の時間をかけて、何に取り組むかは完全には規定されていない状況であり、まだまだ試行錯誤が続いています。この記事でのお話は、文科省が出している方針に沿った**「小学校でのプログラミング教育」**を意識したものです。

#何をお届けすることにしたか

##個人的な思い入れ

私自身は、コーディングが好きで、仕事以外でもやりたい派なのですが、ギークな感じではありません。

小学生の頃、家にパソコンがあって、BASICに触る機会がありました。そこからはまって、誰も教えてくれないから雑誌と首っぴきになってコードを打ち込んだものです…なんてエピソードもなく、円を表示して満足して終わりました。

その後、大学時代に卒論の数値解析のためにプログラミングを使い始め、紆余曲折あって現在は。

Excel VBAが好き。すぐ動くし便利だから。
JavaScriptも好き。すぐ動くから。
今風のフロントエンド開発にしようとしたら大変だったけど、でも好き。

そんな私の目から、子ども向けプログラミング教育をとりまく色々を眺めていると、なんというか、居場所がない感。ゲームとか電子工作から入ってなくて、ギークな感じではないプログラミング好きがいてもいよね？誰かいいと言ってよ状態。

モンモンとした気持ちを抱えていたある日。

もしかして。

私だから作れるコンテンツがあるかも。

と思い立ちました。


##数理的な分野に焦点を当ててみる

そして勢いあまって開発した[^1]のがプログラミング学習サイト[K3Tunnel(ケイサントンネル)](https://k3tunnel.com)[^3]。数理的な分野への適用を重視したブロック型のビジュアル･プログラミング･エディタです。表出力やグラフ出力がしやすいことを特徴にしています。

こういうの、あってもよくないですか？
はじっこに置いときますね。おひとついかがですか？

![super_shisyku_woman_s.png](https://qiita-image-store.s3.amazonaws.com/0/308852/0175be12-1af7-aa91-7783-c6be71f92678.png)


という気持ちで作りました。

##K3Tunnelのアプリケーション
K3Tunnelのビジュアル・プログラミング・エディタは、Googleの[Blockly](https://developers.google.com/blockly/)を利用してJavaScriptで実装しています。

授業ではこういうチュートリアル画面を使います。
![kaden_tutorial.png](https://qiita-image-store.s3.amazonaws.com/0/308852/d7c589f5-7f45-a073-abce-e5b7c207cac4.png)

Blocklyを使うと、お手軽にブロック型のビジュアル・プログラミング・エディタを作れます。HTMLのどこに置いて、どのブロックを使うかを定義すれば、簡単にビジュアル・プログラミングのUIを作ることができます。その上、自分が欲しいオリジナルブロックもつくることができます。あのScratch3.0もBlocklyがベースになっていることもあり、猫も杓子もBlocklyな状況になりつつあります。

そんな中、出力が表とグラフのみ[^4]というのはなかなか~~シンプルすぎる~~挑戦的なのではないでしょうか。

授業の最後に出てくる出力はこんなのや。
![kaden_last.png](https://qiita-image-store.s3.amazonaws.com/0/308852/60037503-cc69-db3d-7baa-a214b6a0928d.png)

こんなのです。
![bakery_last.png](https://qiita-image-store.s3.amazonaws.com/0/308852/bb3a9ef6-2ebf-0eeb-bb42-a5ee6ab2f098.png)

お堅いSIerなので、こういうのしか作れないのは致し方ありません（言い訳）。

##とはいえ、SIerだからこそ

「ITによる課題解決」を生業としているSIerという立場で、文科省から出された小学校プログラミング教育の狙い[^2]を眺めてみると、「情報社会がコンピュータ等の情報技術によって支えられていること」を気づかせるということは、つまり、私たちSIerの仕事に気づいてもらうことなのではとさえ思えてきました。そんなこんなで、会社の次世代教育支援活動として、出張授業をやってみることになりました。

#授業の内容

##プログラミング環境

小学校のコンピュータ室などを使わせていただいており、小学校の端末、インターネット環境から[K3Tunnel](https://k3tunnel.com)サイトに接続して利用します。ブラウザはChrome最新版推奨ですが、これまでの授業はすべてIEで行っています。


##授業の構成

原則として45分×2コマで実施させていただいています。

「プログラミングで問題解決する」ことを体験してもらうことに重きをおいていて、オフラインワークに多くの時間をさいています。画面に向かって作業するのは授業全体の半分くらいです。

プログラミングも、自分のつくりたいものに向かって試行錯誤するのではなく、作られたストーリーに乗って、真似すればよいだけの体験モノになっています。といっても、前でお手本を見せて、全員一斉に真似するのではなく、ヒント動画やできあがり例、お助けブロックを用意しており、各自、必要な手助けを使いながら、真似できるようにしています。


##テーマ

学校の先生と相談して、下記2つのテーマから1つ選んでいただいています。全員対象の授業の場合は5年生以上でお願いしています。

- [家電買いかえ大作戦](https://k3tunnel.com/mission/001/)
    - 家電を買いかえる時に予算内でかつ家族の満足度を最大にするにはどうすればよいかを考えます。
    - 6年生算数の場合の数の単元や6年生家庭科の買い物の単元との組み合わせを狙っています。
- [パン屋さんアドバイザー](https://k3tunnel.com/mission/006/)
    - 需要データを読み取り、毎日いくつパンを作ればよいかを考えます。
    - 3年生社会での地域の商店に関する取組みや、 4年生のグラフや表の読み取りとの組み合わせを狙っています。

# 子どもたちの様子

##　｢わからない｣や｢はじめて｣に負けない

授業用コンテンツに対する社内の事前評価は「小学生には難しすぎるに違いない」というものでした。特に非エンジニア社員からは「無理」「できない」「わからない」の嵐。ところが、悲観的な予想に反して、多くの子供たちは夢中になって取り組んでくれました。多少わかりにくくても、文句も言わず、取り組んでくれます。「むずかしかったけど、たのしかった。またやりたい。」というのが代表的な感想であり、それはうれしい想定外の声でした。

ただ、おそらく、これは学校での活動だからこそだとも思っています。学校だと、ひょいっと乗り越えられるハードルってあるような気がします。

![school_class_osyaberi_s.png](https://qiita-image-store.s3.amazonaws.com/0/308852/417dacdb-5d86-1323-5d49-1a1897807810.png)


##キャラクターに励まされなくても頑張れる

かわいいキャラクターが出てくるわけでもなく、チュートリアルのステップをクリアするごとに｢よくできたね！｣と言われることもない。そんなそっけないモノであるにも関わらず、前のめりになって取り組む姿が多く見られます。これもうれしい誤算でした。

たとえば、「家電買いかえ大作戦」のハイライトはこれ。

![kaden_chart.png](https://qiita-image-store.s3.amazonaws.com/0/308852/601cb9bc-d841-08f6-4cc8-0bc6c81e7cd9.png)

これに小学生が歓声をあげるなんて。
誰が想像したでしょう。

## 慣れるのか速い

K3TunnelはBlocklyを使っているのでよくあるブロック型のビジュアル・プログラミング・エディターです。ブロックの動きにはややクセがあり、操作にはコツがあります。これまた特に初めてさわる非エンジニア社員からの評価は惨憺たるもの。そこまでダメですか…。と軽くへこむレベル。しかし、ふたを開けてみれば、子どもたちの順応力は想像以上。

![computer_girl_s.png](https://qiita-image-store.s3.amazonaws.com/0/308852/151d4cf4-8da2-8567-79b7-14597cec382a.png)

最近では、文句を言う大人は「子どもはすぐ覚えるので慣れてください」で一蹴することに。


## 気軽に実行しない子もいる

予想以上の好反応に気をよくしていた私たちですが、想定外の反応がもうひとつあります。言われるがままにブロックを並べるだけのチュートリアルになっているにもかかわらず｢問題を解いていく｣ように見えるせいか、実行する前に｢先生、これであってる？｣と聞かれるケースが多発したのです。

![girl_question_s.png](https://qiita-image-store.s3.amazonaws.com/0/308852/47ffeeaa-5030-8820-2323-8a0412e71aec.png)


軽くショックをうけつつも、｢実行してみればわかるよ｣と答えていたのですが、想像以上に多いので、「正解例」としていたボタンを「できあがり例」に変更してみました。「試行錯誤が大事」「まずは実行してみよう」ということを強調するようにしたこともあり、最近では、実行できないケースは減ってきたように思います。

##やたらブロック表示サイズを小さくする

多くの子供たちが、大人には判読不能なレベルで表示サイズを小さくします。全体を表示したいと思うのでしょうか。大変いいことですが、サポートに回る大人たちの第一声が｢見えない｣だったりします。老眼のメガネは持参したほうがよいでしょう。

![book_yomu_mushimegane_s.png](https://qiita-image-store.s3.amazonaws.com/0/308852/6d491e74-6bd3-8389-42a1-8fefc76e9053.png)


## この授業で子どもたちはプログラミングができるようになるのか

なりません。

でも、もれ聞く後日談によれば、何人かのココロにはプログラミングが刻まれたようです。ぜひ、次は自分で問題設定をして、K3Tunnelの自由にプログラミングする機能を使ってガシガシ計算してみてほしいものです。と言いたいところですが、まだまだ機能的にも未熟なので、ビスケットやScratchなどを使って、プログラミングそのものを楽しんでほしいと思います。

## その先の世界へ

授業の最後に、｢パレート最適｣や｢需要予測｣など、より高度な話題につながるキーワードを伝えているのですが、毎回、何人かはちゃんとメモしています。うれしい瞬間です。

# おわりに

なりゆきで始まった感のある出張授業ですが、とても楽しくて、小学生は、学ぶこと、楽しむことのプロだなあとしみじみ感じています。子どもたちの守備範囲に入っていないものを、見せてあげるのもオトナの役割だと思います。SIerで働いているからこそ見せてあげられる世界がきっとあると思っています。これからも色々なネタを提供していきたいと思います。

[^1]: 実際には複雑な経緯を辿って開発に着手しており、小学校プログラミング教育だけをターゲットにしていたわけではありません。

[^3]: K3Tunnel(ケイサントンネル)は新日鉄住金ソリューションズの登録商標です。
[^4]: 特別Missionはアニメーション出力したりしています。
[^2]: K3Tunnel初期開発時に参考にしたのは、「小学校プログラミング教育の手引」ではなく、その前段階に公表されていた[「小学校段階におけるプログラミング教育の在り方について（議論の取りまとめ）」](http://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/attach/1372525.htm)です。