プログラミングなんて言われてもわからない!こどもにはプログラミングで困らないようにしてあげたい!
そんな方たちのこんがらがった頭をほぐす一助となれたら幸いです。
このページの目次です。
◆何から始めたらいい?
◆何が必要?パソコン?タブレット?
◆間違いだらけのプログラミング教育
◆プログラミングに有利な能力とは
◆身近なプログラミング
◆具体的にはどう進めるの?
◆必修化の目的
右も左も分からない。どうしたら?
「2020年からプログラミング教育が必修になるんだって」
こんな話を周りから耳にして、焦っている人も少なくないと思われます。心配になってプログラミング教室に通わせる親御さんたちも少なくないようですが、慌てて失敗する前に少し諸々の疑問を解きほぐしてみませんか?
プログラミング教育にまつわる疑問について、シンプルに回答してみたいと思います。
①パソコンが心配(家に十分なパソコンがある人は②へどうぞ)
新品で5~6万程度のノートPCが良いと思います。推奨スペックは何が必要?を参照ください。
②ネット環境が心配(ネット環境がとりあえず問題ない人は③へどうぞ)
定額の光回線にしましょう。家でもWi-Fi経由でスマホ使えば使い放題っていうメリットも。
③お金が心配(お金の心配がとりあえずないよという人は④へどうぞ)
パソコンが家にない場合はそれなりの初期投資ですが、プログラミングをするのであれば必須です。タブレットやスマホでは不十分です。
それ以外、基本的に追加費用は不要です。プログラミングソフトをお金払って購入する時代ではないので、ネットが見られればプログラミングできます。また、ネット上の有料のものはよっぽどのことがない限り不要でしょう。
④パソコンの電源を入れたけど、何をしたらいいのか…(わかる人は⑤へどうぞ)
(い)マウスに慣れる…マウス操作練習用プログラム
(ろ)アプリ(プログラム)の起動方法を知る
(は)アプリ(プログラム)の終わらせ方を知る
(に)キーボードに慣れる
(ほ)対象のアプリに慣れる
まずはタイピング練習なんて相当な的外れです。子供向けプログラミング言語はタイピング必要ないですから。
⑤どのアプリまたはプログラミング言語をやればいい?(決まってる人は⑥へどうぞ)
乱暴に言うならscratchやっとけば大丈夫です。
エディタでタイピングしまくる言語なんて学校でやるはずないです。
そういう次元の話ではないんですよ。
⑥何が正解かわからない(正解が分かる人は⑦へどうぞ)
目的が達成できていれば正解です。正解はいっぱいあります。あとは好みです。
プログラミングは図工のようなものだと考えてください。
図工で評価されるのは作品です。筆やハサミの使い方も重要ですが、どんなに使い方が上手くても作品がショボかったら評価は低くなってしまいます。
やりながら学べばいいし、失敗してもいい。繰り返していけばいずれ上手になる。それが楽しくなる。
続けてください。
⑦プログラミングでしてはいけない「ダメ」って何?(ダメを知ってる人は⑧へどうぞ)
プログラミングの結果によってパソコンが壊れたりすることはないので気楽にやって大丈夫です。
プログラミングを組み込んだ製品などは「人命にかかわる事、迷惑をかけること」に繋がる制御プログラムはダメです。ですがこれはプロ(ガチ)の世界の話なので気にしなくても大丈夫です。
気になる方はこちら。
⑧こどもにプログラミングをどうやらせればいい?(やらせ方を分かっている人は⑨へどうぞ)
まず、プログラミングって正解は一つではないので、間違いを見つけて指摘するのは上級者になってからにした方がいいでしょう。
前出のように図工みたいなもんですから、多少下手でも上手くできたねと褒めるところから入りましょう。
具体的なやり方は別項に記載されてますのでそちらをどうぞ。
得意なことしかやらない、それでも別にいいと思います。そこから得られるものもちゃんとあります。
「もう少し面白くしたいな」そう思ったら儲けものです!
「やりたい」は原動力です。次に進む一歩は、人が与えるよりも自身が発するものの方がはるかに価値がある!そう思います。
⑨どのくらいのペースでやったらいい?
あとは適度にやってください。慣れてるうちに次に進むようにしましょう。
やりたいこと、試したいことを閃いたときに、すぐにできる環境が理想ですね。『忘れる前』に継続しましょう。
プログラミングをするためには
「ネットに繋がるパソコンがあればできますよ~」っていうノー天気な回答を耳にしたことがある方も多いと思います。
間違ってはいません。でも正確でもありません。
語弊を恐れずに言うなら、
画面解像度はフルHD(1920x1080)以上、CPUはcore i3以上、メモリーは4GB以上、
HDDもしくはSSDは256GB以上、OSはWindows10以上、ネットは光回線
これらをすべて満たしていれば当面暫くは大丈夫でしょう。
「え、うちのPCは満たしてないよ」って方はどこが足りないかにもよります。
画面は要するに作業スペースなので広い方が良いですが狭くても出来なくはありません。
CPUはそれ以下でも動かなくはありません、極端に古くなければ。
メモリーはOSがWindows10なら4GBないと苦しいです。8GB推奨です。
HDD/SSDは最低128GBはないと厳しいでしょう。私の使うLet's Note(CF-SX1)はSSD128GBでまともに使える容量は20GBくらいしかありません。 これはPC教室用と割り切ってます。NASもあるし。
OSはWindows7だとサポートが2020年で切れるのでやめた方が良いですが現時点ではまだ使っていてもいいでしょう。
Windows8でもまぁ大丈夫だと思います。私は8をろくに触ったことがないので苦手ですが。
※Windows7のサポート切れました。Windows10を選びましょう。
そんなわけで、まぁ新品で5万くらいからってところでしょうか。
参考までに、コスパの良いPCだと6万円前後で買えるLenovoのPCがこんな感じです。
【SPEC】CPU:Core-i5, 画面:15inch(1920x1080), メモリー:8GB, SSD:256GB
タッチペン付属、タブレットモードに変形可能
タブレットじゃダメなの?って疑問もあると思います。
これは、正直厳しいと思います。
scratchをやろうとした場合、あれは基本ドラッグアンドドロップでプログラムを組みますからマウスを使う前提です。タッチだと出来なくはないですが操作性がすこぶる悪いです。それに制御ブロックの中には〔マウスのポインタに触れた〕なども有り、これをタブレットで使えるか、使えなさそうです。
Viscuitをやる場合は少々微妙かもしれません。ウチのYOGAタブですとタッチが上手くいかない場合が少なからずあります。
こうなるとプログラムの組み方が悪いのか使ってる端末の問題なのか判断付きません。
まぁタブレットは何かと便利なので持っていても全然いいと思います、ネット閲覧専用モデルとして自宅のWi-Fi専用機としてなら。
ネット環境も重要です。
自宅に光ケーブルを引いて光回線でネットに繋げるようにすることを強くお勧めします。
携帯とかの4Gを使うのはやめといた方がいいと思います。
最近は光回線でも月4,000円前後でできるんじゃないでしょうか。
自宅でのんびりじっくりやるなら速度も速く通信量の制限もない方が良いのは間違いないでしょう。
ちなみに光回線を引いて、それにどうやってつなぐの?って疑問がありますね。
ざっくり言うと、パソコンでもタブレットでもスマホでも、Wi-Fiで繋げます。もちろん有線LANも使えます。
一人用ではなく、家用なので家族みんなで何台でも繋げます。家族のスマホの通信量を節約できますね。
最近はテレビやレコーダーもネットに繋がるようになってますね。天才てれびくんがもっと楽しくなったりします。
そんな意味でいうところの、「ネットに繋がるパソコンがあれば大丈夫」なのです。
2020年からプログラミング教育が必修?そんな教科はあるのか?
2020年からプログラミング教育が必修になると言われております。これは間違いないでしょう。
「プログラミングの授業ではscratchをやるらしいよ」「ラズパイはやるまい」「ライトボットがいいな」
「プログラミン、誰も知らないかな」
等々言われてたりもしますが、とりあえず違うと言っておきましょうか。
まず、「プログラミング」という教科が新設される、ということではない。という方針を文科省が出しています。
【小学校プログラミング教育の手引き(第二版) 平成30年11月文部科学省】というpdfファイルに書いてあります。誰でも見れますよ。
(文科省のページの下の方にあります)
ここでも触れています。プログラミング教室の説明会で話した内容です。見てみる
ちょっと怖いんです。
何が怖いか?かつての英語教育の二の舞を心配してます。
教える先生、足りてるのかな。
シンプルな話をすると、教員免許には教えることのできる教科が限定されております。
プログラミングの教員免許を持ってる人っていないのでは?もう出来てるのかな?
小学校の教員免許を持ってる教員がプログラミング教育するか、大丈夫かな。
現場の話を聞くと怖いことが多いです。
文科省は教科としてのプログラミングは作らないと言っています。各教科の中にプログラミングの考え方を織り交ぜていく方針です。
どういうことか?
一例を挙げれば、算数の図形の授業で正三角形の描画を教える時、「だれでも同じ図形を描ける」方法を伝えると
その手順がまさにプログラミングなのです。
プログラミングは正解が一つとは限りません。まずはこれを強く認識してほしいです。
一辺5cmの正三角形であれば、
①ペンを紙に着ける→②右に5cm動かす→③左60度上方に5cm動かす→④左下60度に5cm動かす
こんな感じで教わるかもしれません。
実際にやってみましょう。
正三角形を描くという意識がある人が描くと左の青ペンで描いた図になるでしょう。無意識に良い方に解釈してます。
何も知らない人やロボットだとどうでしょう。真ん中の赤線の図形や右の緑色の図形になるかもしれません。
(赤)真ん中の図の場合は左60度を垂直方向を基準に左に60度に向けてしまった場合。
(緑)右の図の場合は自分の進行方向を基準にしてしまった場合。
恐らく今までの教え方だと、あの説明で正しく描けなかった方が悪いとなっていたでしょう。
でも違います。正しく描けないという事例を生じてしまった「誤解を生む指示のしかた」が間違いなのです。
解釈の仕方で結果が変わってはいけません!法律だってそんな余地を残すからヤヤコシイことになるんだから。
どうすればいいかというと、
①ペンを紙に着ける→②5cm動かす→③進行方向を120°左回転する→④5cm動かす→⑤進行方向を120°左回転する→⑥5cm動かす
これなら間違いがないでしょう。
なお、この場合は②の「5cm動かす」で方向を決めておりませんが、どの方向に行ったとしても正三角形が描けます。 上が尖った正三角形を指定するなら②で「右方向水平に5cm動かす」と指定すればいいんです。
でも正解はこれだけではありません。
①1mm方眼紙を用意し、原点を決めそこを座標(0,0)とする→②座標(0,0)から(50,0)に線を引く→③そこから座標(25,43)に線を引く→④そこから座標(0,0)に線を引く
これでも描けますね。厳密にいえば座標(25,43)が完全な正解ではありませんが。25*√3なのでY座標は43.30127です。
このように違う方法でも同じ結果になる、プログラミングの特徴でもあります。
もっと言うと、その二通りだけではなく、細かいことを言えば上記の2例は左回りですが右回りでも描けるのでそれだけでも方法は倍になります。
教えきれるのでしょうか。
もしテストでもあろうものなら採点は至難の業となります。
それでも採点しようとすると【学校側の用意した答えを当てるゲーム】になってしまいます。採点が楽ですから。教えるのも楽ですから。
学校側がメンツを優先してプログラミング教育をしてますという体裁を優先するとヤバいことになるのが目に見えてます。
あと陥りやすいのが「プログラミング言語への翻訳能力優先」です。
与えられたフローチャートを例えばscratchで組んでみましょう、なんてのは語弊を恐れずに言えば愚の骨頂です。そうじゃない。
それはscratchに慣れるためには良い方法ですが、それを評価の対象にしてはダメでしょう。
これがフローチャートではなく文章だったら別です。つまり、やりたいことをプログラミング言語にしやすい形に変えるのも重要な能力です。
scratchを使って何ができたか、何を作りたいか、それを考える力が重要なのです。
そんなわけで、プログラミング言語を上手く操れるけど面白い作品は何一つ作ったことがない、なんて寂しいプログラマーを作らないでほしいと願います。
その被害者の弁
もともとこの上の記事に書いていた内容ですが、長くなったので分けました。
プログラミングはプログラミング言語に変換する能力を鍛えるものではないよ、って上の記事では言っています。
さて、英語教育を中学から大学まで受けてきた私ですが、当然喋れやしませんでした。
従来の英語教育の何がダメか?それは、反応が分からないことです。
自分の発した言葉、それが相手に伝わるのか否か、どう伝わるのか。それを知らずに何年もアルファベットを書き書きしてテストの点で評価されてきました。
そしておそらく、学校の英語教師はレトロな英語を教えてくるでしょう。
「麻呂は先生でおじゃる。そちは?」外国人がそう喋ってきたらどうですか?
日本人はまだそれを微笑ましく受け入れる許容量がありますね。
これと同じようなことが教室で何年も続けられていたかと思うと、微笑ましく受け入れることは難しくなります。
結局、やはり反応がないから、自分があってるのか間違ってるのかわかりません。
それでもハードをherdと書いたら間違いってことは日本人でも分かります。だからこれに×が付きます。たった一文字の間違いにビビるようになった生徒は少なくないはずです。生徒の能力を評価するため、評価できる範疇に生徒を押し込んだ結果がこれです。
外国人と話をするとき、彼らは当然スペルミスを指摘しません。多少間違った文でも、状況などから彼らはその意味を「これのこと?」と聞き返してくれます。
そもそも、日本人は日本語を使うってことを彼らは知っています。正確な英語が出てくるとは思っちゃいないんです。だから、
間違ってもいいから、とりあえず言ってみる。
これを実践するようになってから、外国人との会話が怖くなくなりました。いろいろ考えたり悩んだりすることもありますが、それは言葉を発した後でも全然遅くありません。むしろ、「間違えちゃった」って経験が、今後の自分にとって同じミス防止のブレーキとなります。
また、翻訳能力だけでは役に立たないことがある一例を紹介したいと思います。
私が海外出張で外国人相手に仕事していた時の話です。長期出張が度々ありまして。
商社の人間が来てくれることもあったのでその時には働いてもらおうと通訳をお願いしました。
エンジン制御の話です。バイクのエンジンコントローラの中身、制御パラメータやら点火時期や燃料噴射量の計算などを通訳に伝え、それを翻訳してもらう。
まあこれが上手くいかない。
商社の人間には理解しきれず、それを英語に翻訳しても伝わらず。
結局その外国人は私に「キタガワサンガハナシテクダサイ」と日本語で懇願してくる始末。
どう話すかも確かに重要ではあるが、何を話すかより重要であることは絶対ないです。
詐欺師じゃないんだし。
ワケの分からないことを正確な英語で話されても理解できませんが、正確なことを不確かな英語で話した方がよっぽど伝わります。そのことを彼が証明したのです。
それを踏まえると、英語でコミュニケーションをとるときは「どう話すか」が結構有効でした。もちろん、「何を話すか」つまり伝えなければいけないことは何かをしっかり把握し理解していることが前提です。相手にどんな意味を伝える必要があるのか。それをいかに短い文で伝えるか。
短い文であれば誤解が生じることはあまりありません。変な伝わり方をするかもしれない長文よりは、誤解のない稚拙ではあってもシンプルな文が安心ですね。
あとはタイミングです。
相手が返答を期待したその瞬間に、応える。これが一番重要!この場合はむしろ長文は不適切で、2~3語もしくは単語だけでもいい。
タイミングを外した長い発言、これが不適切だってことはみんな知っているでしょう。
英語もプログラミングも、まずは背伸びせず自分の扱える技量の範囲でじっくり使って、やはり使っていくうちに少しずつレベルの高い所を求めるようになります。今の自分の技量では表現しきれない、巧くいかない、ってことに気が付いたらそれはレベルアップのチャンスです。
なぜ不足なのか?どうすれば解決できるか。
その答えを見つけ、それを活用し、身に着ける。
そんなことを繰り返していくうちに、だんだん上手にできるようになります。
プログラミングは当然パソコンが反応してくれます。先生に正解を聞くのもいいですが、パソコンから「なんか違うよ」とダメをいっぱい教えてもらって、うまく行く方法を自分で見つけるとそれが力になります。
プログラミングに有利な能力
やはり数学的な能力があると入りやすいですね。座標の概念を知っていると楽です。 ですが計算力や暗算力は無くても大丈夫です。それはパソコンの方がよっぽど得意ですから。
プログラミングでは絵を扱うことが多いので、漫画を描くことが好きな人はかなり有利だと思います。 動きの表現方法を知っていると役に立ちます。
また、すべての能力を活かすことができるのもプログラミングの素晴らしいところでしょう。
自分の好きなことをプログラミングで表現する、例えばテニスが上手な人がテニスゲームを作るとか、ピアノが上手な人が音のゲームを作ったり、パソコンのキーボードを鍵盤にしたピアノのプログラムを作ってみたりもいいでしょう。
本を読むのが好きな人がストーリー性のあるゲームを作ったりもできます。
積み木やパズルが得意な人は図形を扱うプログラミングで有利ですし、社会が得意な人ならクイズゲームを作ってみたりするのもいいと思います。
むしろ、得意なことありきかもしれません、自由なプログラミングは。
能力と言うか、飽きずに集中できる力が一番大事です。根気ですね。プログラミングは一回で上手くいかないことが多いです。この場合、直して試して、もう一度直して試して、これを直るまで繰り返します。これが楽しいと思えるようになったら素晴らしいですね。実際、少しずつ直っていくと嬉しいものです。
そして推理力、という能力があるかわかりませんが、これも重要です。上記の失敗を直して試して…って作業、慣れてくると失敗を見つけた段階で「あれがマズい」と不具合箇所の当たり付けができるようになります。
俯瞰視、客観視できる能力も非常に役に立ちます。
プログラミングは複数の処理が平行に実行されていることが多いです。スクラッチで言えば「キーが押された時」や「メッセージを受け取った時」などのイベントブロックはそれらのアクションが起こった場合に実行されます。つまり、プログラム制御の流れは綺麗な一本道ではないのです。
ビスケットは特に顕著で、描いた絵の個数だけ並列して処理されます。実世界に近いかもしれません。例えば風船とカラスと破裂の3つの絵を描きます。風船は左右に揺れながら上に動くように命令します。風船だけに与えられた命令です。同様に、カラスは左右に動くようにし、カラスと風船が当たったら風船を破裂の絵に変えるようにします。
こうするとゆらゆら揺れる風船にカラスが当たると破裂するというプログラム出来ますが、これは別に「風船が動いたらカラスを動かす」というような流れを作ったわけではありません。風船は風船のみ、カラスはカラスのみに動きの命令が与えられています。
二つが重なった場合のみ、破裂するという命令を与えています。
流れの中で明確に「ここで破裂する」ようにはなっておりません。
ここで意識しなければいけないのは風船とカラスそれぞれ別々に勝手に動いているということで、キャラクタが増えれば増えただけ個々への配慮が必要になってきます。想定しなければいけない場合が組み合わせで増えてきます。
ですが、やっていくうちにだんだん慣れて当たり前になっていきますので気楽にいきましょう。
プログラミングはどこに使われている?
パソコン上で動くものは全てそうですし、ゲーム機・スマホやカーナビなど画面のあるものもそう。電化製品のほとんどに使われております。
簡単に言うとセンサーのついているものはほぼすべてプログラミングが使われています。
エアコンなどは分かりやすいでしょう。クーラーの場合、
┌→電源OFFまで繰り返す
| ↓
| 条件◇〔 室温>設定温度? 〕
| ├→Yes:冷気を出す
| └→No :冷気を止める
| ↓
└―――戻る
すごくシンプルに表せばこのようになります。
厳密にいえば室温と温度の差をみて風速などの調整も行ってますし、リモコンからの設定温度検出も行っています。
また、実はプログラミングに非常に近いのが「ルール」です。
スポーツのルールはまさにプログラミングと言えるでしょう。
例えば、サッカーのゲームを作りたいと思ったときは、サッカーのルールをそのまま利用できます。
ざっくり表せば、チームA vs チームBで試合をすると、
このようにフローチャートで表せます。
なお、反則の判定やアディショナルタイムの判定などの細かい処理は書いていませんが、上記フローチャートの左側の45分を測っているループの中に反則の判定を入れることができますし、◇45分過ぎた?(Yes)→◇今は前半?(No)の後にアディショナルタイムの判定を入れ、それがある場合は時計を(45分-アディショナルタイム)にセットしなおして左側のループに渡せばこれも対応できます。
フローチャートにしてみると分かりやすいですし、問題が起こった時もどこでつまずいているのかが良く分かります。
また、このようにフローチャートを作ると、プログラミングが非常にしやすくなります。スクラッチの制御ブロックはほぼフローチャートそのままですから。
パソコン上で完結するプログラミングであればいくら失敗してもやり直しが効きます。
ですが、「スケジュールソフトを作ったから使ってみて」のようにパソコンの外に影響しだすと気を付けなくてはなりません。
また、パソコン上で完結するとはいえパソコンのファイルを消してしまうような命令があると怖いです。あくまで「プログラミング学習」や「プログラミングで遊ぶ」レベルにおいて、の話であれば失敗を恐れず伸び伸びやりましょう。
ちなみに失敗できないプログラミングってどういうことがあるのかというと、例えばエンジンコントローラの制御プログラムであればエンジンを壊してしまいやすい部品の動かし方、具体的に言えば点火時期を進角しすぎる制御だとかはヤバいですし、車速が180km/hを超えたらエンジンを停止するような制御プログラムを作ってしまうと車両運行に死ぬほど危険です、文字通り。
このように製品に組み込まれるようになってくるとしっかり注意しなければいけません。 便利なプログラムが出来たからと安易に人に渡すのも注意しましょう。しっかり動作確認をしてからでないとダメです。
また、誰かに使ってもらう場合、使う人は当然そのプログラムの中身を知りません。なので予期しない使われ方をされる場合があります。 プロの世界では、普通に使って問題ないのは当たり前で、おかしな使い方をされても悪影響を及ぼさないよう緻密に考えられています。
それでも想像を超える状態に陥ることも珍しくはありません。「そこまで想定してませんでした」と言っても許してもらえないのか今の世間じゃないでしょうか。 なので、「不具合が起きないよう先回りする」のと、「不具合が起きたときに被害を最小限に抑える」ことが大切です。両方必要です。
小さい頃からこのように心がけておくと人間関係の構築とかで失敗がなさそうですね。
とりあえず進め方を知りたい!
ちょっと決めつけで話をします。やる事と褒め方です。
マウス操作に慣れた小学校低~中学年生はViscuitをやってみましょう。
(い)好きな絵を描く・・・・上手に描けたね!
(ろ)それを動かす・・・・・動いてるね!
(は)絵が変わる・・・・・・絵が変わった!どういう仕掛けにしたの?
(に)動きが変わる・・・・・動きが変わった!どうすると動きが変わるの?
(ほ)クリックに対応する・・押したら変わった(動いた)ね!
(へ)上記を組合せる・・・・どうするとどうなるのかな?・・・ふん、ふん。すごいね!
マウスとキーボードに慣れた小学校高学年生はscratchをやってみましょう。
(い)猫を動かす・・・・・・動いてるね!
(ろ)パターンで動かす・・・おもしろい動きだね!
(は)キー入力を使う・・・・ここを押すと…変わった!どういう仕掛けにしたの?
(に)動きが変わる・・・・・動きが変わった!どうすると動きが変わるの?
(ほ)マウスに対応する・・・押したら変わった(動いた)ね!
(へ)上記を組合せる・・・・どうするとどうなるのかな?・・・ふん、ふん。すごいね!
何をしようとしたか、目的を自分で説明できるようになるのが理想です。また、その目的を達成するためにどのような工夫をしたのかも自分で説明できると素晴らしいです。
やりながら修正してって下さい。プログラミングの良いところは何度もやり直しが出来る事です。
とはいえ、それはPC上で完結するものに限りますが、子供がscratchをいじっているくらいのことでしたらもうバンバン失敗を繰り返してください。
人間は成功よりも失敗の記憶が残りやすくできています。それは危険を回避するために本質的に備わっている人間の機能の一つです。 やり方に迷ったら、全部試してみる。上手くいかなかったものは除外し、上手く行ったものはそのプロセスが分かりやすいかどうかで判断すると良いと思います。
プログラミングは英会話や図工などと近いなと思っております。
何を話すか、何を作るかを決めるところから始まり、どうやって話すか、どうやって作るかを考え、実際に話してみる、作ってみる。
数回やったくらいじゃ上手にできないけど、何度も何度も失敗しながら繰り返しやり続ければだんだん上手にできるようになる。
もう何度も言ってますが、少しずつ直っていくのが楽しくなります。そして出来るようになると、装飾を追加するようになります。
例えばゲームでゴールしたら、それで終わりではなく「ゴール」を表現する何かを追加したり、ファンファーレを鳴らしてみたり。出来る事が増えてくるともう勝手にデコデコしまくります。それが反復効果でより身に着きますので、決して「余計なことはしなくていい!」なんて言わないでください。「復習は無意味だ」って意味になりますから。
プログラミング教育を必修化したのは、「日本人として欲しい人材が今のままでは少ないから、育たないから」と政府が判断してこのようになったと考えられます。
この先、単純労働で食べていける職業は間違いなく減っていきます。ロボットに置き換わったり、賃金の安い外国人労働者に換わったりしていきます。
日本人を安くない賃金で雇うのなら、複雑なことをしてもらわなければなりません。
さて、ではロボットや外国人労働者を導入した場合、必要なのは指揮を執る人間です。
大きく二つの指示が必要です。
①仕事をキッチリこなすための手順の指導
②仕事中の安全を確保するための指導
今までのように、そこそこ賢い日本人労働者で回しているのなら「なんかあったら聞きに来いよ」とか「怪我しないように気を付けろよ」とか言っておけば回ってましたね。トラブルがあったときも「なんで聞きに来なかった?」とか「気を付けろって言ったろ?」とかで済んでいたはずです。
ですが、感覚や常識の違う外国人労働者や、そもそも感覚などないロボットではトラブルが起きた場合、「そういう指示はありませんでした」で被害者ヅラされますね。責任を取らされる立場になりかねません。
では、適切に指示するにはどうしたらいいか?
上手くいく手順を説明するだけでは足りません。起こり得るパターンを想定して、一つ一つに対策を施すことが必要です。
この考え方は人を使う場合だけに留まらず、物を作る場合、設計する場合にも必要な考え方です。
プログラミングに慣れていると、このような考え方には強いですよ。
プログラミングは、全体を設計する作業です。一部だけ作ればいいわけではありません。
スタートしたら、まず初期設定があり、基本的に終わらせるまでは繰り返されます。
例外処理や、各種の条件分岐であらゆる場合に対応しています。
また、プログラミングには『バグ取り』という作業が付き物です。動作確認ですね。
『必ずエラーがある』というのが常識です。なので、ねちっこく動作を確認し、また意地悪なことをしてみたりしておかしな挙動にならないかなどをチェックして仕上げていきます。
プログラミングに慣れていくと、物事を最初から最後まで考えるようになります。製造業には「ライフサイクル・アセスメント」なんて言葉があり、物を作るための原料調達から使えなくなって廃棄されてリサイクルされてまた次の製品の材料になるといったサイクルにおいて環境にどれだけ負荷をかけているかを測る手法があったりします。もはや『儲かるから作る』なんて単純なことは許されません。このような考え方もすんなり理解できるようになる筈です。
このように、全体を把握できる能力は絶対に身に付けておくべきです。
一部だけ見てたらそりゃ楽ですよ、頭にかかる負荷も小さいでしょうね。ですが、独りで生きていけるはずもなく、必ず何かに属して生きていかねばなりません。会社や組織に属していなくとも、地元に属しているだろうし、国民としてマイナンバーも与えられているでしょう。水道をひねれば水が出る仕組みはあなたが作ったわけではないでしょうし、外に出れば舗装された道路もあり川には橋が架かっていたり、誰かがあなたかわりにやっといてくれた物の中で生きているのです。
「税金を払うのが嫌だ」とか「〇×の建設反対」とか文句を言いたくなるのも分かりますが、皆が少し我慢して、皆がより良い生活を送れる世の中ですから、主観(=一部)だけではなく客観(=全体)をしっかり踏まえて物事を判断したいものです。
ちなみに、全体を把握することで自分の強みを最大限に生かすことができるようになります。
どういうことかというと、世の中全てじゃんけんのような世界です。パーに勝てるけどグーには勝てないチョキのようなものです。
ですが、全体を見て、グーがパーに負けて数が減ってきそうだなと大局を読むことができたら、その時こそ動くべき時じゃないですか。
いつも強いものやいつも役に立つものなんてありません。必ず、有利な状況でだけ強かったり役に立ったりします。状況を把握する力、先を見通す力はこれからの我々が身に付けておくべき能力だと、私は思います。