Python会〜タートルグラフィックスで幾何学模様を作ったよ。

はじめに

前回の内容はこちら:Python〜ev3とVSCodeで音楽作り

Pythonのタートルグラフィックスで幾何学模様を作ってみました。タートルグラフィックスは画面上に表示される亀を移動させることで、亀の動いた跡が線として描かれます。1967年にLOGO言語とともに登場し、プログラムの結果をすぐに目で見て確認できるため、理解しやすく、プログラミング教育でもよく使われています。
今回は、このタートルグラフィックスにフィボナッチ数列を使うことで、幾何学模様を簡単に作る方法を紹介します。

今回、参加した子達が作った幾何学模様

目次

1.タートルグラフィックスを使った基本的な図形の書き方
2.フィボナッチ数列について
3.フィボナッチ数列を使った幾何学模様の書き方

1.タートルグラフィックスを使った基本的な図形の書き方

エディターはVsCodeを使用しています。まずは、タートルグラフィックスで基本的な図形の書き方として、円を描いてみましょう。コメントアウトで説明しています。

from turtle import * #タートルグラフィックスを使えるようにする
color('red') #ペンの色
pensize(2) #ペンの太さ
speed(0) #描くスピード 0が一番速い

#円の描き方
begin_fill() #塗りつぶしスタート
circle(50) #半径50の円を描く
end_fill() #塗りつぶし終わり
done() #処理が終わっても表示させる

circle()内の数字を変えることで円の大きさが変わります。また、塗りつぶしをしない場合は、begin_fill()とend_fill()をコメントアウトするか削除してください。
三角形の場合は、亀が100前に進み、進行方向から120度左に向きを変えるという動作を3回繰り返すことで描くことが出来ます。

#三角形の描き方
color('pink')
begin_fill()
for i in range(3): #3回繰り返す
    forward(100) #前に100進む
    left(120) #左に120度曲がる 
end_fill()
done()

三角形と同じ要領で、他の多角形も描いてみましょう。四角形なら、下のコードのXを4に置き換えます。

#多角形の描き方
color('pink')
begin_fill()
for i in range(X): #xに描きたい辺の数を入力
    forward(100) #前に100進む
    right(360/X) 
end_fill()
done()

Xに9を入れた場合は、9角形が出来ます。

多角形が作れたら、
right(360/X)の行を、right(360/X*n)にして、nに整数を入れてみると、どんな図形になるか色々実行してみよう。例えば、X=5,n=2にすると、下のような星の形になります。

2.フィボナッチ数列について

フィボナッチ数列は、1,1,2,3,5,8,13,21,34,55,89,144,233,……といったように、最初の二つの1をのぞいて、三つ目以降は、前の二つの数を足した数で出来た数列です。このフィボナッチ数列は不思議と自然界に深く関係しています。例えば、ひまわりのタネの並び方や、オウムガイやDNAの螺旋構造、木の枝の別れ方などにもフィボナッチ数列やフィボナッチ数が出現します。また、私たちが美しいと感じる黄金比にも関係しているという神秘的な数列です。

まず、フィボナッチ数列のリストを作ってみます。フィボナッチ数は前の二つの数字の和になるという特徴を利用します。ここでは、6回繰り返しているので、1,1,2,3,5,8,13,21,34,55,89,144,233,377の数列が完成します。

a=1
b=1
fibonacci=[1,1] #fibonacciという名前のリストに1と1が入っている
for i in range(6):#6回繰り返す
a +b = a #aの値にbの値を足してaの値を更新
b +a = b #bの値にaの値を足してbの値を更新
fibonacci.append(a) #aの値をfibonacciリストに追加
fibonacci.append(b) #bの値をfibonacciリストに追加

3.フィボナッチ数列を使った幾何学模様の書き方

先ほど作ったfibonacciリストを使って幾何学模様を描いてみましょう。fibonacci数列のリストを作った後に、fibo_circleという関数を作り、パラメーターを設定します。

from turtle import*
a=1
b=1
fibonacci=[1,1]

for i in range(6):
  a = a+b
  b = b+a
  fibonacci.append(a)
  fibonacci.append(b)

def fibo_circle(iro,muki,okisa,kakudo,hane,hen):#fibo_circleという名前の関数を作る。
  for i in range(hane):#羽の数だけ繰り返す
    for j in fibonacci:#fibonacciに入っている数で繰り返す
      pencolor(iro)#ペンの色
      pensize(2)#ペンの太さ
      circle(j/okisa,kakudo*muki,hen)
    speed(0)
    penup()#ペンを上にあげる
    home()#ペンの位置をホームに戻す
    pendown()#ペンを下に下げる
    rt(360/hane*(i+1))
fibo_circle('skyblue',1,4,270,8,12) #パラメータに好きな値を入力する。この場合は、色=skyblue, muki=反時計回り,okisa=4,kakudo=270度,hane = 8,hen = 12となっている

fibo_circle(iro,muki,okisa,kakudo,hane,hen)のパラメーターの解説

iro ペンの色
muki -1 = 時計回りに動く、 1 =反時計回りに動く
okisa 小さくすると描かれる図形が大きくなります
kakudo 描く円弧の大きさ

↑kakudo による図形の違い

hane 何回、同じパターンを繰り返すか

↑hane の数による図形の違い

hen 多角形の形。henのパラメーターを入れない場合は、円形になる。その場合は、def fibo_circle(iro,muki,okisa,kakudo,hane,hen):の行から、henを削除する。

↑hen の数による図形の違い

あとは、fibo_circle()の中の各パラメータに好きな値を設定するだけで、様々な模様が描けます。

pythonする会

Python〜ev3とVSCodeで音楽作り

小学6年生と中学生を対象にlegoのマインドストームev3とPythonを使って遊ぶ会<Pythonする会>を開催しました。

第一回目は、<音楽>がテーマ!

みんなで、それぞれ、メロディを作って、それを繋げ合わせて、一つの大きな曲を作ろう、というもの。小学校でも音楽の時間にやる節づくりのアレンジです。

みんな揃ったところで、名前と学年、参加した理由を一言ずつ自己紹介。

自己紹介からスタート

Pythonが全く初めての子から、Pythonに興味があって触ってみたいと思っていたという子も。


<Python会について>
Pythonする会は、実社会の様々なサービスで使われているPythonを、子供たちと色々なアプローチで使ってみよう、と企画しています。

こんな事がプログラミングで出来るんだ!を、実際に体験する事で、じゃぁ、こんな事も実現できるのでは?というアイデアや、こんな事をやりたい!といった気持ちの芽みたいなものが、うまれてくれるといいなぁ、と。

みんなの関心も様々。得意な事をお互いに教え合ったり、興味あることに出会ったら、もっと深掘りしていく、そんな場になればいいなと思っています。

まずは3回の予定で実験的に行い、より良い形を探していこうと思っています。

<プログラミグ言語Pythonについて>

曲作りに入る前に、プログラミング言語とは、そもそも何?Pythonとは?という話から始めました。簡単にいうと、プログラミング言語は、人間もコンピューターも理解できる言葉のこと。

私たちは、普段、人に何かを伝えたり、また、表現したりといったコミュニケーションを<言葉>を使ってしますよね。その言葉は、日本語であったり、英語であってり、中国語であったり、住んでいる国や相手によって、様々な言語があり、お互いに意思疎通が成り立つ言語を使って、コミュニケーションをおこなっています。

一方、機械であるコンピューターは、情報をスイッチのON/OFFの二通りでのみ受け取ります。そのため、コンピューターが理解するには、伝えたい情報を2進法で表す必要があります。

コンピューターが2進法しか理解できないから、といって、私たちは、2進法でコンピューターとコミュニケーションは出来ません。いや、やろうと思ったら、出来ないことはないけど、、

Helloというのを2進法で伝える?

01001000 01100101 01101100 01101100 01101111

いやいや、考えるだけで、きっと気が遠くなっちゃうよね。

なので、人もコンピューターもお互いに理解できるプログラミング言語を使ってコミュニケーションしようということ。

人が使う言語もたくさんの種類があるのと同じで、プログラミング言語も様々な種類や特徴があって、Pythonはその一つ。

Pythonの特徴は、比較的、読みやすく、わかりやすい文法。

豊富なライブラリーがあり、機械学習やAIの開発がしやすい。

YoutubeやInstagramに使われているように、Webアプリケーションの開発も可能。

プログラミング言語とPythonの特徴をかなりざっくりと理解してもらったところで、テーマの音楽づくりに入っていきます。

<音楽のルールを知ろう>

今回は、最終的には、みんなのメロディを繋げて、一つの曲にしたいので、ある程度のルールを決めて、音楽づくりを行います。

決めたルールは次の三つだけ。

①レとソを使わない<ヨナ抜き短音階>で曲を作る。

この音階は、サクラサクラやなど、日本の童謡などでよく使われる音階です。曲に使う音階を統一すると、繋げた時に全体のまとまり感が出る。

②次の音を置くとき、その場に留まるか、隣の音に移動する。

ドの隣の音は、シかミになる。飛び飛びの音は使わない。

③4分の4拍子は変えない。

4分音符を8分音符二つに置き換えたり、16分音符四つに置き換えたりしてもいいけど、4分の4拍子は必ず維持!

音は、普段、親しんでいるドレミファソラシドでなく、英米式を使ってCDEFGABと表します。

<実際にプログラムを作ろう〜曲作り〜>

プログラミングの簡単な説明をして、まずは、サクラサクラの4小節分を雛形として使い、そこから、音符を置き換えていきます。

では、サンプルプログラム!

サクラサクラのはじめの4小節分です。エディターは、マイクロソフトの無料エディターVisual Studio Code (VSCode)を使用しています。

#!/usr/bin/env pybricks-micropython 
#micropythonでev3を使うための記載。
#vscodeでは自動的に記載される。
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile

# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.

# Create your objects here. 
# この下にオブジェクトをかく。
ev3 = EV3Brick()

#タッチセンサー1を使えるようにする。
t1_sensor = TouchSensor(Port.S1) 
#タッチセンサー2を使えるようにする。
t2_sensor = TouchSensor(Port.S2)

# Write your program here. 
# 実際のプログラムはこの下にかく。
ev3.speaker.beep()


#サクラサクラのメロディー(4小節)
tempo = 100 #テンポを100にする。
ev3.speaker.play_notes(['A4/4','A4/4','B4/2'],tempo) 
#ラ・ラ・シー 書き方は'音・オクターブ/音の長さ'
ev3.speaker.play_notes(['A4/4','A4/4','B4/2'],tempo) 
#ラ・ラ・シー
ev3.speaker.play_notes(['A4/4','B4/4','C5/4','B4/4'],tempo)
#ラ・シ・ド・シ
ev3.speaker.play_notes(['A4/4','B4/8','B4/8','F4/2'],tempo)
#ラ・シ・ラ・ファー

まず、先ほどの音楽ルール①②を意識して、C(ド)→E(ミ)など、音だけを変えてみよう。
自分で、音を五線譜に書き込んでから、コードに写していってもいいし、やり方は自由です。
出来たらダウンロードして確認してみて、自分で、心地いい音の流れを見つけよう。

そこまで、出来たら、あとは、音符の長さを変えて、リズムを変えたり、自由に作曲。

<プログラムを作ろう〜音楽再生をタッチセンサーで制御〜>
次に、ロボットのタッチセンサーを押すと、曲が始まる、というプログラムにしました。こうする事で、自分の好きなタイミングで曲を演奏する事ができます。コードは下のwhile文を、先ほど作った音楽メロディのコードの上に付け加えるだけです。

while not t1_sensor.pressed(): #タッチセンサー1を押すまで無限ループ。
    pass


一人ずつ順番に作った曲を再生してみました。あらかじめダウンロードしておいて、自分の番になったらタッチセンサーを押すと再生されます。

今回は、ヨナ抜き短音階で作ったので、なんとなく和を感じる音楽になっていないでしょうか?

和を感じるには、ev3の電子音っぽいところが気になりますが。。

<音階を変えて曲をアレンジしよう>

では、音階を変えてみるとどうなるか?と実験してみました。

独特な響きを持つ琉球音楽は、主に<ニロ抜き長音階>を使って作られている事が多いです。THE BOOMの島唄などもそうですね。ニロ抜き長音階は、レとラを抜かしたド・ミ・ファ・ソ・シ・ドになります。先ほどの<ヨナ抜き短音階>のラをソに変えると<ニロ抜き長音階>になるので、琉球音楽っぽい雰囲気になります。

先ほど作ったコードのAをGに変えてみよう!

琉球アレンジ 音楽あわせ


どことなく琉球音楽っぽいメロディが。ただ、これもやっぱり、ev3の電子音が気になりますが。。

<まとめ>

今回は、ごく簡単なプログラムで、色々遊びました。音楽への関心度は様々だったと思いますが、楽器をやっている子も、特に音楽の知識がない子も、みんな集中して曲作りに取り組んでいました。
EV3が導入されている中学校も多いと思うので、音楽の時間にプログラミングを絡めたこんな授業があっても楽しそうです。

次回は、フィボナッチ数列を使って、綺麗な幾何学模様を作っていく予定です。

おしまい

消えゆく職業と仕事。

【メガバンクのIT化、大幅な人員削減時代へ突入】

先日、三菱UFJ銀行が店舗を集約していく旨の方針を発表しました。
2割程度の店舗を廃止して、余剰人員は配置転換していくようです。これにより約1万人程度の人員が削減されるとされています。この判断の裏側には、もちろん銀行の収益性低下に対する危機感があります。

マイナス金利という情勢下では預金がいくら集まっても運用先がない現状、下手をすると逆ザヤになりかねないからです。

大手企業の社債は、年利0.05%程度のものでも高利回りと言われるぐらい利率が付かないのです。
(当然、短期債か長期債で利回りは違いますが)

資本主義社会が成熟を通り越すと、経済成長が止まり資金需要がなくなるという事なのでしょう。

三菱UFJ銀行の決断は、収益性を確保するためにAI(人口知能)を使い、IT化を一層進めることにより、仕事の効率化を図り余剰人員を削減してコストを低下させていく事で生き残りを図っていくことにあります。

AIを導入することで、ルーティンワーク等は人海戦術に頼らなくても処理可能になりつつあるというのが、決断を下せた理由の一つなのでしょう。

三菱UFJ銀行だけでなく、同じメガバンクのみずほ銀行も、店舗の統合やIT化による業務の見直しなどを進めることにより、大幅な人員削減が予定されています。

【将来、労働人口の約半分はAIに置き換わる?】

野村総合研究所が2015年に発表したオックスフォード大学との共同研究では、10年から20年後の日本の総労働人口の約50%の仕事は、人工知能やロボットに置き換わることが可能と予測しました。今、まさにこのことが、急速に進んでいるのではないかと感じます。

実際、あるメガバンクの関連会社に勤務していた私の友人は、人員削減にともなって、一般事務系での派遣の契約更新が打ち切られました。新しい職を探そうにも、女性の場合は年齢によって一般事務での派遣契約は難しくなるのを年々感じるそうです。彼女は、たまたまプログラミングの知識があったので、別の派遣社員という形でプログラミングの仕事を得ましたが、それがなければ露頭に迷うところだったと話していました。

今後の社会では、プログラマーという職業につかなくても、幅広い職種でプログラミング的素養や基礎的な知識は必要になってくるのではないでしょうか。

先日も米国の投資銀行ゴールッドマンサックスは、AIが運用を担当する投資信託を日本国内でローンチしました。

もともと投資銀行ではロケット物理学者や数学者が運用プログラムを独自に制作し資産運用の世界で成功を収めてきました。

ゴールドマンサックスが最強の投資銀行といわれるようになった理由の一つは昔から積極的に理系科学者を登用して、リサーチ部門のみならずリスク計量モデルを開発する事で収益性の拡大を果たすことが出来たからです。

今から20年程前になりますが、私が、理系の大学院生だったころは、外資系の投資銀行が積極的に採用活動を行っていました。

国内企業に比べて、外資の投資銀行は破格の待遇でした。大半が企業や公的機関などの研究職に進む中、投資銀行に就職するというのはわりに珍しかったのですが、今になれば、外資が積極的に理系学生を採用していた理由がわかります。

今では、日系の証券会社もAIが運用するファンドを負けじと設定してきています。

どのプログラムが優れているのか、という競争で更にAIが進化してくのでしょう。

今後、金融業界が求める人材にもプログラミングの知識が必須の時代が到来しそうですし、他の業界もその流れの中から無縁とはなりえないでしょう。

ただし、いくらIT化、ロボット化が進んでも、完全に置き換わることもありえません。

高度な知識やスキルが求められる仕事や、創造性や協調性が必要な業務などは、人工知能での代替が難しく、これまで通り人が担うと予測されます。

これからの未来を担う子ども達には、プログラミング素養はもちろん、その学びを通して、人にしか担えない能力、それは、思考力や問題解決力であったり、表現力やコミュニケーション能力、また想像力や創造力であったりするのですが、そういった力を小さいころから身につけていって欲しい、思います。

未来の働き方を考える。

「将来、小学生の65%が今はない職業につく」

これは、今から数年前、アメリカのデューク大学の教授キャシー・デビッドソン氏がニューヨークタイムズのインタビューで語った言葉です。「2011年度にアメリカの小学校に入学した子どもたちの65%は、大学卒業時に今存在していない職業につくだろう」という話は、当時、大きな話題になったので、知ってる人も思いますが、この当時から、社会の情報化はさらに加速度的に変化し、時代はますます予測がつかなくなっています。

自分の子ども時代を思い返してみれば、その頃にはなかったモノやサービスを当たり前のように享受している今の生活を思えば、この話は、あながち現実になるかもしれません。30年程前の夏休み、小学生だった私は戦前に製造された鋼鉄製の扇風機しかついていない古い電車に乗り蒸し焼きのような暑さに耐えながら、硬券の切符を駅員さんに渡し、隙間風が入る断熱材等が入っていない木造の、バランス釜の風呂で五右衛門風呂並みに熱くなり火傷に気を付けながら入る、冷暖房は冬場の石油ストーブのみという祖父母宅に通っていたものです。
今から考えると、このような生活は当時ごく普通でした。

この場所、実は東京都の多摩地区ですが、今でも新宿駅から電車で30分位なので宅地需要も旺盛で、2040年でも人口が減らない場所と推定されております。

日本の最盛期と今でも語られているバブル期であってもなお、庶民の生活は戦後の延長上であったと改めて感じるのです。

しかし、ネットやAIが進展する事で物理的な面もそれ以外も変化が起きてきています。オートロック付きのマンションで庭仕事も必要では無く、エアコンで常時快適な室温に保ちつつ、ネットスーパー等で必要なモノは宅配してもらい、PCやスマホで銀行振り込みや記帳も行える・・・。
資産運用では、AIが運用する投資信託まで登場しています。個別銘柄の売買や銘柄選定まで人工知能が全て学習しながら行うのです。
相場師が胆力で勝負するという時代は、おとぎ話のような世相になってしまいました。

バブル期より格段に上質な生活を手に入れてしまった現代人。
この生活の進歩は嫌でも今後ますます進みます。
その時に必要とされる仕事上のスキルは、今の我々の想像を超えたレベルなのかもしれません。時代によって暮らしはかわり、仕事のありようもかわります。+

今から30年後、どうなっているのかを考えると、国語算数理科社会以外の勉強も子供たちが果敢に取り組み、知見を広げていく事で変化に対応できるような柔らかいアタマを作る大切さを考えている最近です。

ロボ団泉大津校スタッフ 堀田

ITインフラ先進国の中国からIT後進国の日本の今後を考える。

【ITインフラで世界に後れをとる日本】

ロボ団泉大津校スタッフの堀田です。

最近、中国人の学生と話す機会がありました。

彼が言うには
「日本に来ると、20世紀に来たようで懐かしさをいつも感じるんですよ」

私は彼が何を言っているのか、咄嗟には理解できませんでした。
もう少し聞いてみると
「今の中国では、アリペイを始め、ITインフラがかなり整っていて
日本みたいに現金を御目にかかる機会はほとんどありません。」

「スマホがないと、もはや日常生活が営めないのが北京や上海等です。
タクシーもホテルも買い物も殆どがITを通じてサービスを享受しています。」

私が初めての外国旅行先に選んだのが20年前の中国でした。その時は
「財布を人前で出すな!財布を持てる身分だと思われると強盗にあうぞ!」
とか
「みすぼらしい格好でないと街をうろついてはいけません。日本人だと判ると
なんとか騙そうと色んな人がやってきますよ!」
とかなんとかかんとか。
色々中国人の教師に教えてもらい、生活レベルの格差に愕然としたものです。
財布を持たずに、薄汚れた現金をポケットにしまうのが中国流。
1元で美味しいふかしイモが買えるし、チンタオビールも3元。お金が減らない。
(地方では無くこれは北京での話です。)

一万円を両替して700人民元を受け取ると、そもそも100元札が使える所すら少なかった位です。(お釣りがないから)
700元で、それはそれは贅沢が沢山出来ました。高級料理店でかなり食べても100元いきませんでしたから。

その時代から20年が流れ・・・
もはやITが日常の買い物レベルまでほとんど制覇してしまい、ITがなくては大都市では生きるのもままならない中国に変貌してしまったようです。
当然、物価も日本以上。700元はたいしたお金とは最早思われていないようです。

IT社会の到来も予想を超えた速度で中国の大都市の有り方を変え、日々変化に富んでいるようです。
あの楽天ですら日本に逃げ帰るほど、中国のIT業界は熾烈な競争にさらされているわけですから。

冒頭の学生は、現金でやりとりする日本の生活に、思わず郷愁を覚えているというのが懐かしさの理由なのでした。

【止められないIT化の流れ】

日本でも、アマゾンやネットスーパーを始め、ITが少しずつ生活を変え始めています。

まだまだ中国ほど劇的ではありませんが。
しかし、この流れは世界的な潮流でもあるでしょう。経済や生活は絶えず成長と便利さと進歩を我々に促してきました。このまま立ち止まる日本、という訳にはいかないのでしょう。

今後、未来を担う子ども達の基礎として、ITの素養が今以上に求められる時代がやってきそうです。
別に文科省が強制するしないという卑小な話では無く、世界の動きは米中や欧州なども含め、メガトレンドとしてITやAI社会の到来が確実化しているからなのです。
その動きは隣の大国、中国の今を見ると速度が速まりつつあるようです。

現役プログラマーから見たプログラミング教育③

ロボ団泉大津校のロボ団認定講師の平井です。現役プログラマーから見たプログラミング教育③は、プログラミングで必要とされる能力について考えてみたいと思います。

プログラミングは理系?文系?

プログラミングというのは、理数系の分野だと思われている方は多いのではないでしょうか。数学が得意な人とか工学を学ぶような人達のものなので、文系の自分には難しい、と思う人も多いようです。

実際、プログラムを書く能力は理数系と言われますが、それは、プログラミングの一面を捉えているだけで、偏見だと思っています。プログラミングを書くことは、美しい数式を書くこととは全く違います。

誰もが理解できるプログラムというのは、「初めにこれをして、こうなるから、次はあれをして・・」という、容易な言葉をつなげた命令でコンピューターに指示をだしている言葉です。感覚としては、まだ言葉が十分でない幼い子に、かみ砕いた言葉で教えてあげるイメージです。ですから、プログラミングにおいて、文系であることは必ずしも不利ではなく、むしろ能力を発揮できるかもしれません。

読書力や読解力が優れているということは、マニュアルや説明文を読んで理解する力があり、プログラミングを理解する能力も高いです。それに対し、理系的な素養は、現象から法則性を導き出したり、計算式を組み立てたり、また、直感的に物事を判断し組み立てる能力が、プログラミングの過程で役に立ちます。

こう考えると、プログラミングとは文系、理系という枠に収まらない両方の領域にまたがっているもの、と捉えるべきだと思います。

プログラミング的思考力が大切なわけ

よく、プログラミングをすることで、プログラミング的な考え方や論理的思考能力が身につくと言われます。これは、どういうことでしょう。

プログラミングは、「自分の指示を相手(コンピューター)に理解させることを前提に順番に言葉を並べる」ことが必要です。この事ができれば、文系や理系といったことは関係なく誰にでもできるのです。プログラミングで養われるこの論理的思考能力は、プログラミングだけでなく、人に自分の考えをわかりやすく伝えるといった場面や、物事を論理的にとらえ、進めるときに非常に大切ですし、そこに文系・理系の区別はありません。

うちの子は算数が苦手だからプログラミングは難しいですか?とよく聞かれますが、まず、プログラミングを楽しむことから初めて欲しいと思います。確かに、プログラミングの中で、計算など算数が必要な場面は多くありますが、楽しんでやっているうちに、おのずと算数の力が必ずついてきますよ。

 

現役プログラマーから見たプログラミング教育②

ロボ団泉大津校のロボ団認定講師の平井です。現役プログラマーから見たプログラミング教育①の続きとして、ロボ団泉大津校でおこなっているロボット・プログラミング教育について書きたいと思います。

プログラミングを学ぶときの問題

まず、「プログラミング」とは何なのか、と言いますと、これは①でも書きましたが、プログラミングとは、何か行われる事(例えば、結婚式のイベントとか、運動会の種目)に対して順番に書き出す作業を指します。別の言い方で簡単に言うと、電卓に計算式を入力していく作業のようなものです。

実際のプログラミングでは、この作業を延々と行っていくわけですが、こういった方法でプログラミングを教えることはしません。なぜか?まだ、動機が弱い中では、この作業は楽しいものではなく、継続して意欲的に取り組むことがむつかしいからです。

それは、子どもだけでなく大人でも同じです。10数年前には、パソコン教室なるものがあふれ、パソコンの操作、Excel、Wordの使い方を一通り教えてもらっても、パソコンを買って年賀状を作って放置、、という感じになってる方も多いのではないのでし ょうか。「事務的に電卓に、数字を入力して結果を求める」作業は、便利ではありますが、楽しいことではありません。LINEやFacebookのようなアプリケーションを作るには、発想も、技術も、時間も足りません。使うのではなく、使われているようになり、やがてパソコンをすみっこに追いやります。

ロボット・プログラミングの魅力

では、当校で子どもたちにプログラミングを教えるツールとして、なぜロボット・プログラミングを使っているのか? その理由は、子どもたちにとって一番わかりやすいし楽しいからです。 自分でロボットを作ることにより、興味も増し、そのロボットが目の前で自分がプログラミングしたとおりに動くとなれば愛着も沸きます。画面上の2次元の世界でなく、実際に、手を動かし、つくりあげたロボットが、この3次元の現実世界でどう動くのか、予測し、プログラミングすることで空間認識力も鍛えられていきます。ロボットを動かして、思ったようにうまくいかなければ「くやしい」と思う気持ち、失敗とチャレンジを繰り返す中で、うまくいったときの成功体験、その時の「うれしい!楽しい!」という気持ちが、また次の学びへとつながっていきます。

プログラミングには、子どもを夢中にさせるようなゲーム的な要素がありますが、ゲームとの大きな違いは、「やらされているんじゃない」という部分があることです。そこで起こることは、すべて自分がくみ上げたもので、「やらされた」ではなく、自分で作り上げたものだという自信や達成感を得ることができる、それがプログラミング教育の醍醐味だと思っています。

現役プログラマーから見たプログラミング教育①

ロボ団泉大津校のロボ団認定講師の平井です。ロボ団泉大津校は、システム会社であるA&Cシステム設計が運営に参画し、私のような実際に実務でプログラミングを仕事にしている人間が講師としてかかわっている教室です。そこで、プログラマーからみた子ども達へのプログラミング教育というものを考えてみたいと思います。

プログラミングとは?

最近、教育としてのプログラミングという言葉を様々な場所で目にするようになりました。2020年から小学校で必修化される事も決まりましたが、ではプログラミング教育とは何?というと今ひとつ、ピンとこないのが実感ではないでしょうか。

そもそもプログラミングとは何ぞや?ということですが、プログラミングとはコンピューターに対する命令のカタマリです。もっと、簡単に言うと、私たちが、日常生活の中で使うプログラムという言葉があります。例えば運動会の進行表やテレビの番組表などのことをプログラムと言いますが、このプログラムとは、「ある物事の進行に対しての、順序や筋道を示したもの」です。

プログラミングはこの日常生活におけるプログラムと似たようなもので、対象がコンピューターになっているということです。コンピューターは基本的に命令してあげないと動きません。そこで、コンピューターがわかる言葉でいろいろな指示をしてあげることで、複雑な動きができるようになります。

いま、プログラミング教育が必要な理由

では、このプログラミングというものを子どもたちが学ぶ意味はなんでしょうか。なぜ、プログラミング教育が必要なのか。

プログラミング教育を受けることで、みんながプログラマーやSEになるわけではありません。また、子どもにプログラミングを習わせている保護者の方の多くは、自分の子どもをプログラマーにしたいと思っている訳ではありません。

では、なぜ、プログラミング教育が必要なのかと言えば、これだけ、あらゆるサービスやモノがインターネットにつながっていたり、あるいはプログラミングされたものになっている社会の中では、どんな職業についても、プログラミングを始めとする情報技術とは切り離せない時代になっているからです。

私自身、様々な会社でシステムの構築やアプリケーションを提供してきましたが、そこでは、どの職場でも、プログラミングの基礎的な知識の有無が、リーダーシップやコミュニケーション能力に大きく寄与しているという事を実感してきました。
今後、情報社会がますます進み、この傾向が加速するのことが容易に想像できる中、プログラミングの基礎的な知識であったり考え方をもっている、という事が非常に大事になってきます。世の中の仕組みの大きな部分を情報技術が担っている時代、今の子どもたちが、それを知った上で社会に出ていくことは、大きなアドバンテージになると考えられます。

だからこそ、今、子どもたちへのプログラミング教育が注目され、さらに必要とされているのでしょう。

プログラミング教育と普通の勉強との違い

小学校で「プログラミング教育」が必修化されることになりましたが、どの学年や教科で実施するかは、各学校に任せることになっています。これまでの通常授業に加え、先生方自身が自分たちが受けていない「プログラミング教育」というものを子どもに教えることになるのですから、その負担を考えると、学校によってかなり教える内容に差がでるのではないかと思います。

小学校でのプログラミング教育においては、このように不安定な部分もありますが、プログラムの考え方がしっかり理解できると、子どもたちは、自分の力で解決しだすようになります。私自身、長年、プログラミングにかかわり、次々、出てくる開発言語に対応せざるを得ない中で、経験上、最も覚えやすく、習得しやすい方法は「まずは動かしてみよう」です。

実際に動かして、「動いた」という感動を味わって、理屈を後から知っていく。そして、自分がやりたいことをやる為にいろいろ試してパーツを作る。そのパーツを組み合わせソフトを完成させる。試行錯誤を繰り返す中で、プログラミングのルールを理解し、論理的思考が育つのだと思います。これは、最初に理屈を知って、その先に答えがあるような普通の勉強とは逆かもしれません。

ただ、子どもというのは、理屈を知る前に、手足を使っていろんなことをするのが得意ですよね。「虫」を捕まえることに夢中になる中で「虫」について詳しくなったりするように、体感を伴った学びにはどんどん夢中になるのが子どもです。ですから、子どもへのプログラミング教育も、理屈が先ではなく、まず自分で手を使って動かしてみることが大切だと感じています。

子どもの創造性を発揮できるプログラミング

「覚えるのが苦手」、「勉強が苦手」でもプログラミングは好きという子どもは多いです。今まで私が接してきた子達にもその様な子はたくさんいましたし、何より、私自身がそうでした。私自身、子どものころに、ホビーコンピューターを親に必死にお願いして、買ってもらい、マニュアルに書かれているプログラムコードを一心不乱に打ち込みました。動かなければ調べて直し、動けば楽しい、また理屈が勝手にわかるようになれば改造、改変したりと「なんでもあり」のおもちゃ箱でした。パソコンというフィールドで、自分の居場所を見つけられた感覚がありました。

プログラミングが得意分野を伸ばす意味でも、そういった子どもたちの受け皿でもあってほしい、と願っています。そして、そこから、子どもなりの発想が自然と生まれたり、持ち前の創造性を思う存分発揮でき、認められる、そういった場をこのロボ団泉大津校でプログラミング教育を通してつくっていきたいと思っています。

はじめまして。ロボ団泉大津校です。

 はじめまして。子どものためのロボット・プログラミング教室、ロボ団泉大津校の主宰者、高島です。ロボ団泉大津校は、ロボット・プログラミング教育を通じて、子どもたちが自ら学ぶことの楽しさを発見し、創造的に、問題を解決し、考え、学習する力を身につける地域の新しい学び場として、10月に開校します。

二人の子どもがいる私は、いわゆる、学校義務教育などの公教育という枠から離れたオルタナティブな教育に、とても関心があり、大学や民間の教育施設でオルタナティブ教育について学んだり、ホンノワまちライブラリー(街の中に小さな本箱を置いて本を通じて人と人との関係性を作っていく活動)という活動を通じて、子ども達と関わってきました。その中で、感じていたことは、子どもたちは、それが遊びであれ、勉強であれ、自分が楽しいと思う活動に取り組むことによって、様々なスキルや自己肯定感を育み、大きく成長していく、という本来の学びの姿です。一人ひとりが主人公であり、そして、そこに様々な学びがあるような、そういう場所を、大阪の南、泉大津という街につくりたいと思っています。

導入するロボット・プログラミング教育は、従来の学校教育の受動的な学習スタイルとは異なり、子ども達は能動的に関わり、そして、自ら答えを導きだしていく事が求められます。そこには学校のように一つの決まった正解があるわけではありません。試行錯誤しながら、自分で意思決定し、物事を進めていく過程は、やらされている感がなく、非常に、アクティブな楽しい学びです。いずれ、子ども達が実社会に出たときには、自分で考え、正解がない中を判断して進んでいかなければなりません。子どもの時から、物事を論理的に考え自分で問題を解決していく力をつけておくのは、そういった意味でも大切ですし、生きていく力を養うものだと思っています。

加えて、今は、あらゆるモノやサービスがインターネットにつながり情報化された時代です。今後、さらに加速度的な社会変化が予測される中、今の子ども達が、将来、大きくなって、どのような職業につこうとも、情報技術とは無縁ではいれないでしょう。その中で、プログラミングの素養を持っているというのは、仕事の選択肢や出会う世界を広げるという点で非常に重要なキーとなるのではないでしょうか。2020年から小学校でプログラミングが必修化されることも、こういった時代背景が多分にあります。ただ、子ども達にプログラミングを教えるには、基礎的な内容からであるにしろ、やはり、プログラミングに関して専門的な知識を持ち合わせた人間が傍にちゃんといる、という事が大切だと感じます。ロボ団泉大津校に、システム会社の現役プログラマーが講師として参画している理由がここにあります。

子どもも、大人も、様々な人が関わる新しい学びの場として、地域に開かれた場所として、ロボ団泉大津校を育てていきたいと思います。どうぞよろしくお願いします!