2020年からプログラミング教育を小学校の必修科目になります。
親としては
- 「プログラミングって何?」
- 「どこで勉強できるの?」
- 「どんな内容なの?」
と気になっている人も多いと思います。
わたしはプログラミングをゴリゴリやる「プログラマー」ではありませんが、
システム系のプロジェクトをやる手前、素養としては勉強したことがあります。
バリバリの文系出身であるわたしが、知ったかぶりして「プログラミングとは何か」に
ついて書いてみたいと思います。
目次
プログラムとは何か
「プログラミング」とはその名の通り、「プログラムをすること(つくること)」です。
プログラムはそのまま日本語でもよく使っていますが、「ものごとを行う手順や計画」のことです。
例えば、小学校の運動会では「当日のプログラム」が配られると思います。
その中で「開会式」のプログラムの内容はこんな感じになっているかと思います。
【開会式】
- 選手入場
- 代表あいさつ
- 校長あいさつ
- PTA会長あいさつ
- 選手宣誓
- 選手退場
最初に「1.選手入場」があって、その次に「2.代表あいさつ」があります。
「2.代表あいさつ」の中身は校長あいさつ⇨PTA会長あいさつ⇨選手宣誓という順番になっています。
それが終わると最後に「3.選手退場」です。
こんな風にこの「プログラム」は「開会式」で行う「ものごとの順番」を書いたものです。
同じように「コンピュータープログラム」もコンピューターに「処理をさせる順番」を書いたものです。
プログラミング思考とは何か
子供がプログラミングの学習をするといっても、いきなりJavaやC+といった「プログラミング言語」を取得することが目標になるわけではありません。
プログラミングの基礎となる「プログラミング思考」を身に着けることが大事です。
子供向けの教材の多くは、いきなりプログラミング言語を書くのではなく、一見ブロックやパズルのようなものをいじらせるものが多いです。
これがプログラミング思考の学習に役立つからです。
プログラミング思考とは、「ものごとを順序立てて考えられる思考」です。
少し難しく言うと、「原因と結果を論理的に考えられる」ということになると思います。
Aが行われる→だからBが行われる→Cという結果になる
というように、物事には順番と結果があることを勉強します。
これは一般的なゲームでも十分勉強することができます。
プログラム思考は一般生活にも生かせる
プログラミング思考は一般生活にも生かすことができます。
何かの結果を得たいときに、AとBとCをやればいいと順序立てて考えらえるようになります。
大人だって仕事をしていると、C部長の許可を取りたいので、Aという資料を作って、B課長にOKをもらってからC部長にもっていこう。
というように日々段取りをしながら仕事や生活をしているはずです。
プログラミングはそんな普段自然にやっている手順を可視化して、1つ1つ丁寧に記載しているだけです。
大事なのは得たい結果を得るために、必要な手順を「要素分解」できること。
そして、同じ結果を得るためには、「飛ばせる要素」や「効率化できる要素」があると学ぶことだと思います。
C部長に許可をもらうということが決定していても、その前に何をしたら良いかは決まっていません。そこでCという目標を達成するためには、「Aという資料が必要」「B課長の許可が必要」と作業を分解しました。
まずここまでが「要素分解」です。数学の因数分解と近いと思います。
さらに、こなれてくると「実はAという資料」も、「B課長の許可」も必要なく、
C部長に直接話に行けばよいと気が付くかもしれません。
AとBがなくなると、とても物事が進む速度があがります。
コンピュータープログラムも同じ結果を得るために必要な処理は最低限にするのが美しいです。
プログラミング思考は
まず物事には要素が順序立ってあることを学び
慣れてくると
効率化できる要素もあることを学ぶこともできる
というのが素晴らしいところだと思います。
子供にやらせたい習い事の1位はプログラミング
2020年からの義務教育化を意識してか、
2017年「子どもに習わせたい習い事」の1位はプログラミングだそうです。
2016年は9位だったのが、今年はいきなり1位となりました。
そういう世間の風潮を受けてか、
最近IT企業を中心に子どもがゲーム感覚でプログラミングの考え方
を学ぶことのできるソフトを提案している例が多く出ててきています。
画面イメージが映ってますが、「スタートした」、「どこかを向く」などの<命令>が順番に書かれています。
この画面をぱっとみて思い出したのが、子どものころにやった「RPGツクール」です。
「RPGツクール」とはゲームをつくるゲームという、ちょっとマニアックなゲームです。
今思えばこれって、プログラミング思考にかなり似ているんじゃないかと思うんですよ。
ゲームを構成する要素とは何か
ゲームを作るって、どういうことかというと
(1)スタートがあって、
(2)何かのイベントがあって
(3)ゴールがある
ということだけなんです。
例えばマリオなら、
(1)画面の左端からスタートして
(2)敵をやっつけたり、アイテムとったりして
(3)旗をまたぐとゴール
という内容ですよね?
RPGも同じで、
RPGツクールでは、
(1)スタートする場所決めて(村とか作れます)
(2)敵と戦わせたり、感動する会話書いたりして(イベントです)
(3)エンディングロールを流す(だいたいボスを倒すとエンディング)
という3つさえあればゲームとして成り立ちます。
RPGツクールでプログラミング思考を学ぶ
で、この(2)イベントの部分を作るときにかなりプログラミング思考に近いことをしている気がします。
村長と話してから入れる洞窟はif文の考え方
例えば、
「勇者が村長と会話してからじゃないと入れない洞窟」を作るときは、
「勇者が村長と話す」
「村長と話したらフラグが立つ」
「フラグがたったら洞窟に入れる」
ということになると思います。
フラグは「スイッチ」というのが用意されていて、
「スイッチ1がOFFのときXX」、「スイッチ1がONのとき⚪︎⚪︎」
という感じの設定をします。
これってプログラミングのif文とかに近いです。
if文とは「もしも」
「AがBの場合は⚪︎⚪︎」、
「AがCの場合はXX」
という風に、条件で処理を分けるときに使います。
プログラミングとは、やりたいことを要素分解して、順序立てて書くこと
また、イベントを作るときにキャラを移動させたりするのに、
いちいち命令を書くのもプログラミングに近いと思います。
例えば、
「勇者が魔王に近づくが、超能力で吹き飛ばされる」というイベントを作ろうとします。
すると、どういうタイミングで、何をしなければならないか考えます。
発生条件:「勇者が魔王に触れる」
となると思います。
そして、イベントの中身は、
①「魔王のセリフ(ワハハ、ワシに近づくことなどできぬわ!!)」を表示
②「画面を光らせる」効果を入れる
③強制的に「勇者が⚪︎歩、画面の下側へ移動する」という命令
というような感じにするのではないでしょうか。
このように、「やりたいことを要素分解して、一つ一つ順序立てて書いていく」ことが必要になります。
これがいわゆる、プログラミング思考に非常に近いと思うわけです。
これをスーパーファミコンのボタンでテコテコつくるのでめちゃめちゃ時間がかかりました。
青春はRPGを作って過ぎて行きましたね。。。((=´ω`)_з