Kid's Programming Training Workshop開催のお知らせ

といっても、個人で筆者の子供達への開催です。 こんなWorkshopあったらいいな、と思ってアジェンダを起こしてみました。


アマゾンで欲しいものを検索してみよう

ここでは、まずやってみる、ということから始めます。
これといった正解はありませんが、
  1. ブラウザで「アマゾン」を検索する
  2. 検索結果から、Amazonのページに移動する
  3. Amazonのページで欲しいものを検索する
  4. 検索結果から、欲しいもののページに移動する
ざっくりとこんな操作が必要になると思います。
最近の小学生はこれくらいできる子は多いと思いますが、できないとしてもWorkshopなので手順を教えてやってみてもらえばいいのですが、まずはこれをぶつけてみました。
正解はないので、いきなりamazon.co.jpと入力して、いきなりAmazonにアクセスしても構わないのです。

アマゾンで欲しいもの、という例を出したのは、欲しいものを探すために、どんなキーワードを入れればいいか、を考えさせるためです。
そして欲しいものは、おもちゃとか、本とか、自分に興味のあるものになるかと思います。
楽しみながら進める、という掴みをここでできればいいかな、という思いもあります。

プログラミングとは

検索することそのものや、その結果を表示すること、これらすべてがプログラムによって実現されている、というところから始まります。
なかなか抽象的で、プログラミングってどこでどう動くんだっけ、というのが表現しずらいですが、今自分が操作した時に動いていたんだよ、という体験を得てもらえたかと思います。
アプリケーションなどには踏み込みません。最初なので、この程度に留めます。

言語のお話

日本語や英語、フランス語みたいに色んな国の言葉があるように、プログラミングにも色々な言語がある話をします。
その中で、WorkshopではPythonで進めようと思います。
最近よく使われていること、中でもAIでよく使われていることなどを理由に挙げ「あのAIで!!」という得体のしれない凄いものに近づけるワクワク感を味わってもらおうと思います。

Hello,World!

まずは、やっぱりこれですね。

環境はエディタにVisual Studio Codeを使用します。PythonとVSCは予めインストールしておきます。
今回はWindowsではなく、MacBook Airを使用することにしました。

そして、
  1. ファイルを作成
  2. print("Hello,World!")
  3. demo.pyという名前でファイルを保存
  4. ターミナル起動(VSCから)
  5. python demo.py
と手順通りに進めてどうなったかを体験してもらいます
ここで「print」という命令で、指定した文字を表示する、ということを体験します。
中の文字を変えれば、表示される文字が変わる、ということもやってみてもらいます。

変数

今度は表示する文字列を変数に入れて表示する、ということをやってもらいます。
筆者の子供は、今年4年生になったばかりで、まだxがとかyがとか、方程式は習っていませんので、この概念がしっくりこないと思うので、まずは文字を代入してそれを表示する、ということを体験してもらいます。

そして、それを数式に置き換えてやってみる、という別の例題で応用実践してもらいます。
ここでやっかいなのが
 a = a + 1
が子供には難しい数式であるということです。
「=」は、右と左が等価、ということを算数では教わっています。
つまり、この数式は算数上は成立しない数式です。
プログラムでいうところの「=」は等価ではなく、代入です。
a+1の計算結果を、aに入れ直す、ということを図示して説明してあげればいいわけですね。
わかりやすい例として、「a」をお財布に置き換えて説明してみました。
財布(a)に今お金が20円入っていて、そこに1円たすと、財布(a)の中身は21円になりますね。
a = 20
print(a)
a = a + 1
print(a)
この概念を教えてあげるのです。等価と代入の違いをここで教えてあげるのです。
算数に影響しないか、少し心配ではありますが、ここは重要なことなので。

これで演算した結果を表示する、ということを実際に動かしてみて体験してもらいます。

繰り返し

続いては繰り返しです。
最初は、1から9の数字を繰り返すfor文で、その内容を表示する、ということからはじめます。
for i in range(1, 10):
    print(i)
この処理で1から9までの数字が表示されます。
この時、for文に使う変数に値が自動的に入って、それを表示する、ということを体験してもらいます。
ここで、九九の結果を全部表示するにはどうすればいいか、考えてもらいます。
入れ子の中に入れ子を入れる、というのをこの時点で思いつけば、完璧ですが、難しいかもしれません。
for i in range(1, 10):
    print(i * 1)
    print(i * 2)
    print(i * 3)
    print(i * 4)
    print(i * 5)
    print(i * 6)
    print(i * 7)
    print(i * 8)
    print(i * 9)
でもいいと思います。
繰り返しを忘れて、
print(1 * 1)
print(1 * 2)
と81個のprint文を羅列してもいいのです。
最適な処理は、
for i in range(1, 10):
    for n in range(1, 10):
        print(i * n)
という感じになるかと思います。
ここで覚えて欲しいことは、解はいくつもある、ということと、工夫することで少ない行数でやりたいことができるようになる、ということです。
もちろん行数が少ないことが、イコール最適なコードとは限りません
ただ、他にどんな方法があるか、もっといい方法はないか、ということを考えるということがここでは大事である、ということを前面に推し出そうと思います。

まとめ

Workshopはここまでです。
子供向けのプログラミングの本は色々売られていますが、プログラムがどういうものかは、やはり実際に動かしてみることで理解が深まると思います。
いや、そうしないとイメージがわかない気がします。

今回、Workshopを計画するにあたって、まずは体験することを重視したかったので、実際に手を動かすことをやってみました。
やはり、自分が書いたコードが実際に動く、というのは楽しいものです。

最後に、我が家にも実は子供向けのプログラムの本はあり、アルゴリズムやロジックにフォーカスした内容のものが多いと感じました。
実際に学校の授業でどこまで踏み込むかはわかりませんが、その辺は、最後の九九の問題で問うてみたつもりです。
後は、学校にバトンを託そうと思いますが、このような状況でプログラミングのカリキュラムの優先度がどうなるか、も気になるところですね。

このブログの人気の投稿

無料で使えるWeb版ホワイトボード「Google Jamboard」の使い方おさらい

GitLabで、認証なしにPrivateリポジトリのコードをgit cloneさせる方法

モンテカルロ法によるゲーム戦略の進化