プログラミング初心者の方でプログラムの文法は覚えたけど、問題を解くときにプログラムが思いつかない、どのように解けば良いかわからないという人は多いのではないでしょうか。折角プログラムの文法を覚えたのに、使えなければ意味ない上、挫折の原因にもなります。この様な、プログラムが書けない人の多くが、プログラミング的思考ができていません。
この記事では、プログラミング的思考を鍛えて、身につける方法を紹介します。プログラミング的思考と聞いて難しく考えがちですが、電車に乗りながらでも出来る簡単な方法です。
プログラミング的思考とは?
プログラミング的思考とは、プログラムの考え方ではなく、「物事を順序的に考える」「箇条書きの手順書のように考える」ことを指します。
2020年から、義務教育にプログラミング教育が始まり「プログラミング的思考」という言葉が広がってきています。プログラミング教育の目的は、プログラミングだけでなく、生活に関わる物事をコンピュータプログラムのように思考することです。ここでも同じように生活の一部をプログラミングのように考えていきたいと思います。
プログラマーの考え方
プログラマーは、普段の生活から「ここは自動化できるのではないか」、「もっと使いやすくできるのではないか」と言った考えを持つ人が多いです。プログラミング初心者が陥りがちなのは、プログラミングを目的にしてしまうことです。何に使えるのか分からないまま勉強しても、長続きしません。
プログラムを書けるように勉強するのは良いことですが、プログラムというのは目的ではなく、身の回りの面倒な作業を楽にしたり、楽しくする為の手段であることを忘れてはいけません。プログラマーはこれを理解した上で、プログラムの活用方法を考えています。
身の回りの物について考える
身の回りには、車、エアコン、ショッピングサイト、スマホアプリなどの色々な機械やシステムがあります。特に最近の機械には、殆どプログラムが組み込まれています。
これらがどのように作られているのか、考えたことはありますか?
あらゆる機械やシステムの仕組みを考えることが、プログラミング的思考に繋がってきます。いきなりプログラムを考えるのではなく、日本語で考えることから始めます。勉強していく上で躓きやすい、オブジェクト指向にもつながっていきます。
では、具体的にエアコンを例として考えてみましょう。エアコンはリモコンのボタン一つで電源のオン・オフが切り替えられて、部屋の温度を調節してくれます。まずは、エアコンを起動させる動作を考えてみます。これらをプログラミング的に考えてみると
①リモコンの電源ボタンが押される
②リモコンは電源ボタン(1)が押されたことを認識する。
③リモコンがエアコンに対して、(1)という信号を発信する。
④エアコンがリモコンから発信された信号を受信する
⑤受信した信号が(1)であれば、起動してカバーを開き冷房を動作させる
簡単に考えてこの5個の動作が思いつきます。中身の見えない物なので間違っていても良いです。この様に動作を細分化することが、プログラミング的思考になります。また、足りない物は後付けで追加します。
⑥前回、動作させたモードが冷房であれば冷房、暖房であれば暖房を動作させる
プログラミング初心者は、この細分化ができておらず、いきなりエアコンを起動させるプログラムを書こうとします。細分化しなければ、必要な処理が分からず、結果どの様に書けば良いか分かりません。
自分のルーチンを文章化してみる
普段の自分の行動を思い返してみてください。同じような行動を多くとっている時があると思います。私が大学時代の時、某ファミレスでフロアのアルバイトをしていたのですが、作業中に 「この作業は、ロボットでもできるのでは?」 と考えていました。
業務としては、基本的にフロア内を巡回してボタンが押されたらお客様の注文を取りに行くという作業です。
これを細分化して表すと
①巡回のスタート地点から終点を目指して歩き始める
②ボタンの音が鳴ったら押された席番号を表示する電光版を見る
③電光版に表示された席へ移動して注文を受け付ける
④終点への移動を再開する
①~④を繰り返しています。もちろん実際の作業はこれだけではありません。②の「ボタンの音が鳴ったら…」は、どう考えればいいの?という時は、別途以下のように考えることができます。
a 0.1秒毎に音が鳴っていないか確認する
b 音が鳴っていれば、ボタンの音かを確認する
c ボタンの音であれば電光板を見る
a~cを高速で繰り返しているものと考える
人の認識は簡単には表せませんが、上記のように掘り下げてみましょう。掘り下げることで、よりプログラムに近い形になります。他の作業も考えて徐々に繰り返しや行動の条件を考えていくことで、自分の作業を細分化することができます。
まとめ
大事なのは身の回りの物に興味を持って、文章として考えていくことです。文章にする際はできるだけ具体的に考えて、細分化します。細分化することで、必要な処理が見えてきて、プログラムを書くイメージができます。作ったら終わりではなく、後々で追加するのも良いです。
勉強と考えるだけでなく普段の生活からプログラミング的思考をとりいれて、プログラミングを得意と言えるようになっていきましょう。