子供にプログラミングを教える時に役立つ方法　まとめ

# はじめに
子供にプログラミングを教える機会があったので優良だと思ったサービスをまとめておきます。

## 対象
私が教えていたのは小学校低学年程度の子供です。
ただし、子供は理解の範囲や性質が個人によって大きく異なるので同じ物ややり方で行っても思った結果にならない場合が多分にあります。
私自身も勉強中ですが、児童心理学系の本や教育に関する本を読んでおくと心に余裕を持って教えることが出来るようになると思います。

これは例ですが、子供を「まず」椅子に座らせるだけでもかなり難しいです。
途中で立ち歩いたり、机の上のものを触って別のことをやり始めます。
このときに単純に叱るのではなく、なぜこのような行動をとるのかを理解しておくと焦らずに対応できるからです。
実際に本には「この行動がストレスが蓄積されて発散しようとしていて、叱るとストレスが蓄積されて更にその行動が助長される」という話が書いてあります。
(どの本かは忘れましたが…)

子供も一人の人であり、うまく伝えられなかったり やり方が分からなかったりするだけだと思うので、押し付けや決めつけをせずに教えてあげることが大事だと思います。

### 参考：私が読んだ本
[教職ベーシック 発達・学習の心理学(新版)](https://www.amazon.co.jp/%E6%95%99%E8%81%B7%E3%83%99%E3%83%BC%E3%82%B7%E3%83%83%E3%82%AF-%E7%99%BA%E9%81%94%E3%83%BB%E5%AD%A6%E7%BF%92%E3%81%AE%E5%BF%83%E7%90%86%E5%AD%A6-%E6%96%B0%E7%89%88-%E6%9F%8F%E5%B4%8E-%E7%A7%80%E5%AD%90/dp/4779305918/ref=asc_df_4779305918/?tag=jpgo-22&linkCode=df0&hvadid=296056559939&hvpos=1o1&hvnetw=g&hvrand=9268042765199851895&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009278&hvtargid=pla-649139660860&psc=1&th=1&psc=1)
[算数・理科を学ぶ子どもの発達心理学: 文化・認知・学習](https://www.amazon.co.jp/%E7%AE%97%E6%95%B0%E3%83%BB%E7%90%86%E7%A7%91%E3%82%92%E5%AD%A6%E3%81%B6%E5%AD%90%E3%81%A9%E3%82%82%E3%81%AE%E7%99%BA%E9%81%94%E5%BF%83%E7%90%86%E5%AD%A6-%E6%96%87%E5%8C%96%E3%83%BB%E8%AA%8D%E7%9F%A5%E3%83%BB%E5%AD%A6%E7%BF%92-%E6%A6%8A%E5%8E%9F-%E7%9F%A5%E7%BE%8E/dp/4623071324)
[よくわかる教育心理学](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8B%E6%95%99%E8%82%B2%E5%BF%83%E7%90%86%E5%AD%A6-%E3%82%84%E3%82%8F%E3%82%89%E3%81%8B%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%82%BA%E3%83%A0%E3%83%BB%E3%82%8F%E3%81%8B%E3%82%8B%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E6%BE%A4-%E6%BD%A4/dp/4623051048/ref=sr_1_5?adgrpid=52969824426&gclid=Cj0KCQjwr-_tBRCMARIsAN413WTCdMN-BcJfEJNfGZUoEc6Gip2YmN9lVzlW8UOepEPKrsvd96zw9gkaAqUCEALw_wcB&hvadid=338513290680&hvdev=c&hvlocphy=1009278&hvnetw=g&hvpos=1t1&hvqmt=e&hvrand=2564502127248140674&hvtargid=aud-759242200006%3Akwd-363202399084&hydadcr=21103_10877257&jp-ad-ap=0&keywords=%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8B%E6%95%99%E8%82%B2%E5%BF%83%E7%90%86%E5%AD%A6&qid=1572664174&sr=8-5)

# 教材
## 概要
私は基本的に「WEBで出来る」、「出来る限り実際のプログラミングで役立つ事」の条件で探しました。
ですので、これの範囲以外でもっと良いものがあるかもしれません。

下記に、個人的につまづきやすい点をまとめました。
個人毎にスペックがバラバラだと思いますので子供を見ながら考えたほうが良いかと思います。

### プログラミングでつまづきやすい点
 * 英語
 * マウス操作
 * キーボード入力（ローマ字入力、半角/全角等）
 * 計算（低学年だと基本的に足し算/引き算しか分からないため）
 * 漢字（教材が対応していない場合、個人学習が難しい）
 * 独特な単語（エンター、スペース、カンマ等）
また、キーボードやマウス操作が雑な場合があり壊してしまう可能性があります。

## 言語
### Scratch
一番有名所はコレだと思います。
教材もかなり揃っていて、子供に教えるのには最適な部類だと思います。
また、「ひらがなで表示できる」など小学校低学年でも個人で学習を行わせやすい点でも素晴らしいです。

ただ、難点は通常のプログラミング開発では利用するタイミングが無いことです。
また他の言語に変更する事もできません。

#### サイト
<img width="971" alt="スクリーンショット 2019-11-02 12.43.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/8d7e7404-aaa8-f885-e73e-ee257e14bcd0.png">


こちらで登録を行えばWEBページ上でコーディング、テスト、他者への共有も可能です。
また、簡単なチュートリアルも可能です。
https://scratch.mit.edu/

### blockly

<img width="893" alt="スクリーンショット 2019-11-02 13.17.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/efd2d216-8ccc-c40b-b798-f0f736348da7.png">


Googleが作っているScratchのようにブロックを組み合わせて構築することが出来る言語です。
`Scratch Blocks`のようにScratchと一緒に作っているソリューションもあるようです。
この言語の利点は基本的にオープンソースですので、個人で問題や課題が作成できる事、また教材もいくつか量があることです。
また、Javascriptなどへの変換も可能ですのでそういった言語への移行もスムーズになるかもしれません。
（実際に最後に「Javascriptで書いたらあなたのコードはこうだよ！」と教えてくれるものもあります。）

https://developers.google.com/blockly


#### code

<img width="1007" alt="スクリーンショット 2019-11-02 12.42.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/cede013c-b02f-c37c-d3ce-c437e2537b7d.png">


プログラミングの学習を促進する非営利団体が提供するblockly学習サイトです。
課題の殆どが英語という点を除けば課題も潤沢にあり、おすすめです。
どうしても子供に教える場合、繰り返しで覚えさせることも重要だと思います。
その点では1コースの中で何度も復習しながら学習をすすめることが出来ると思います。

https://code.org/

#### blockly games

<img width="1539" alt="スクリーンショット 2019-11-02 12.43.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/5bc7cc57-266c-5e75-6a65-388625767c9e.png">


blocklyで作成したゲームを使って基本的な学習が出来ます。
問題数が各10問と少ない点、課題によっては日本語対応していない点が何点ですが、結構楽しく学習できると思います。

https://blockly.games/

### その他
#### Progate
pythonやjavascriptなどいろいろな学習を行えます。
レベルなどわかりやすく上がっていくので、非常に子供も熱心に取り組みます。
漢字での表示しか無い点と繰り返しの練習があまり出来ない点、また 無料での出来る範囲が制限されている点などのマイナスのポイントもあります。

https://prog-8.com/


#### Scrimba

<img width="1068" alt="スクリーンショット 2019-11-02 13.19.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/5c7508a4-7165-7600-d424-035524e1dd2e.png">


音声と操作を録画し、学習教材を作成/共有するソフトウエアです
vueの公式ページなどにもありますが、自分で課題を作る場合に簡単に作ることが出来ます。

https://scrimba.com/

*私が作った課題をここに共有しておきます。*

 * [n1:このアプリケーションの説明](https://scrimba.com/c/cPedkHg)
 * [n2:HTMLに関する説明](https://scrimba.com/c/cWGkWCJ)
 * [n3:CSSに関する説明](https://scrimba.com/c/caeynt9)
 * [n4:クラスとIDに関する説明](https://scrimba.com/c/cPedmfV)
 * [n5:CSSの三種類の書き方](https://scrimba.com/c/c3Jg6Hz)
 * [n6:CSSのポジション](https://scrimba.com/c/crpeRuK)
 * [n7:Javascrによる操作](https://scrimba.com/c/c7QJgcV)
 * [n8:Javascrによるイベント](https://scrimba.com/c/c7QJmCW)

#### Documents
初期のときに、個人でDocumentsを作って教えていました。
かなりの工数が必要なので、あまりおすすめは出来ませんが…
私が途中まで作っていたものをここに共有しておきます…
（誤字脱字たくさんありますのでご注意を）

<img width="1148" alt="スクリーンショット 2019-11-02 13.19.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89227/a354602d-87f6-2a8e-20ff-37263d23b9bb.png">


https://docs.google.com/presentation/d/1q8anWaPxWDGSaR5_NxOaQfhQRQHQrEOr63Ys7zVTw6s/edit?usp=sharing

# 結論
私がやってきたことのまとめになっていまいました…
私が伝えたいことは親も無理せず、子に無理させずに楽しく教えてあげてください。

進展あったらまた似た記事を書くかもしれません