学校用理科実験用具 トピックス
2017.7.18

プログラミング学習

プログラミング学習。



難しいなぁ、と思います。

世の中の便利なもののブラックボックスを教えるって、難しい。

まして、プログラミング的思考も併せて身に着くように教えるなんて・・・難しい。



でもね、最近思うんです。「プログラミング的思考的なものって大事だなぁ」って。

"プログラミング的思考"じゃなくて、"プログラミング的思考的なもの"。



今日は、ここ最近VBAをお遊び程度に使って思った"プログラミング的思考的なもの"について書こうと思います。

プログラミング的思考について調べてから書くと、無意識にその情報に合わせていってしまいそうなので、

あくまでも、プログラミング超初心者の私が思う"プログラミング的思考的なもの"について。



私、「プログラミング?何それ食えるの?」程度です。

でも、他分野を勉強する時って、学ぶ内容に対する閾値が低いから、一つ一つに対してテンションが上がる。

だからこそ、「こうやって考えるとスッキリいくのか!」とか

「あぁ、こういう考え方をし慣れてるから、SEのあの子は頭の回転が速いのか、いや私の回転が遅いのか」とか発見がある。



☆プログラミング的思考的なものその1

「曖昧なモノを明確にする」

どういうことか。

たとえば、

「会社のみんなに好きな食べ物を思い付くだけ答えてもらって、

それをExcelで表にまとめたんだけど、それぞれの食べ物で絞り込んで、

"この食べ物が好きな人リストファイル"を食べ物別で作りたいの♡

でも、データがいっぱいあるし、どうしたらいいか分からなくて...」

こんなことを言われた時。

仕事しろよというツッコミはさておき、

「結局何が出来るファイルにすればいいか?」を考えます。



この場合、

①好きな食べ物でフィルターをかける

②それを食べ物別でファイルを作って個別に保存する

③ファイル名をその食べ物に出来たら尚良い

くらいがワンクリックで出来たらいいなぁと考える。



「どうしたらいいか分からなくて...」から課題を明確にして、「こうすればいい」を考える。

この考え方って、商品企画や開発のときにも役に立つなぁと思うんです。

漠然と「こういう風な商品」と考えるより、必要な機能を明確にして、

「要するに、こういうことが出来たらいい」と考える。

漠然と考えると、イメージが先行して本来必要のない部分に固執してしまって進めなくなったり、

盛りだくさん過ぎて「結局何がしたいの?」となってしまったりする。



また、必要なものが分かっていると、躓いた時にぱっと代替案が出てきます。

「これが出来たら良いわけだから、このやり方でもいけるよね」と。

必要なものを抽出して、曖昧なものを明確にする。

大事な考え方だなぁと思います。



☆プログラミング的思考的なものその2

「デバッグする」

デバッグってなんぞや?

デバッグとは、プログラムのエラーやバグを直す作業のこと。



ファイル出来たっ!とクリック(カチッ)

・・・わくわく

・・・わくわく

・・・ピタッ→エラー表示

うそーーーん。



ということ、よくあります。

落ち込みます。が、落ち込んでいても仕方無いのでデバッグをしていきます。



プログラムって、要するにパソコンに「こうやって動いて」って命令をするってこと。(ですよねっ??)

その命令がコードで、コードにも文法があったりして。

で、エラーになる原因のほとんどはコードがおかしいから。(私レベルではね)

だから、必死で命令ミスを探します。

コードに誤記はないか?

「たこやき作って」と「たいやき作って」では材料も違うし機材も違うし、何しろ出来上がるものが違う!

コードに抜けはないか?

「起立!礼!...」。...座りたい。

コードに重複や矛盾はないか?

「起立!礼!礼!着席」。...どこに参拝してるのかな?

「着席!礼!着席!」。...机におでこぶつけるわ。



こんな風なミスが無いか見て行きます。間違えていれば、それを直してもう一回動かしてみる。

それで動けばOK!ダメなら、もっと血眼になってミスを探す。

地味な作業。でも、推理小説みたいで楽しかったりもします。

上手くいけば「なぁんだ」ってスッキリするし。

(私レベルでは、エクセルさんが「ココが違うんじゃないの?」って教えてくれるところ直せば回ることも多いし笑)



「デバッグする」。

これって、すごーくざっくり考えると「どこがダメだったか振り返って次に活かそう」っていう考え方と同じじゃないかと思う。

デバッグは、プログラムが動くまで許してくれないから厳しいけれども(笑)



料理をする時。

「このレシピで作ったときにえらい塩辛く感じたから、今度はレシピよりも塩控えめにしよう」

運動をする時。

「この投げ方だとボールが右に曲がりすぎるから、この動作を小さくしてみよう」

仕事をする時。

「資料のこの部分の書き方を指摘されたから、今度はこういう書き方をしてみよう」

どこがダメかを考えて、そこに手を加えてみる。

がむしゃらに頑張るのもいいかもしれないけれど、課題を明確にして改善していく方が効率が良い。



最後に...

「アップデートする」ということ。

「出来た!」で終わりではなくて。

出来たものを使っていると「もっとこうなれば...」と絶対に思うことがあります。

改善・改良をして、よりよいモノにしていく。

より便利なモノが出来ると周りも助かるし、より便利にするために勉強すると自分の知識も増えるし。



以上、プログラミング初心者がプログラミング的思考的なものについて、初心者なりに考えてみました。

「わーい!ロボット動いた!」だけじゃなく、動かすには何が必要か?動かない理由は何か?

よりカッコよく動かすにはどうすれば良いか?そんな風に学べるプログラミング学習って素敵だなと思う。



物事がうまく進まない時って、課題が曖昧なままやみくもに進めていることが多いです。

行き詰ったときにはロジカルに(ロジカルって言葉、なんかカッコよすぎて使うの恥ずかしい笑)、

プログラミング的思考的な考え方を頭の片隅に置いて、考えたいと思う今日この頃です。

〈やま〉

TOP