番外編:プログラミングってどういうもの?

こんにちは、鳥井雪です。
ヒューマンアカデミー こどもプログラミング教室の教材監修をしています。
今回は番外編の続き、「プログラミングってどういうもの?」についてお話ししますね。

プログラミングってどういうもの?

みなさんはプログラミングについてどんなイメージを持っていますか?理系っぽい?英語がわからないと書けない?何か難しい数式を、コンピューターに打ち込んだりするもの?前回もお話ししたとおり、プログラミングは、人間がコンピューターにやってほしいことを、コンピューターにわかる形で伝えるものです。

<コンピューターにわかる形>、ここがポイントです。人間同士がおしゃべりするのとは、ちょっと勝手がちがいます。やり方はいくつかありますが、その一つはコンピューターに指示を与えるやり方。コンピューターに伝わる言葉を使って コンピューターへの指示を用意してあげなければなりません。 そして、このコンピューターへの指示は、“その通りに動くことで、コンピューターが問題なく役目を果たせる”ものである必要があります。

コンピューターに伝わる言葉 = プログラミング言語

まず、コンピューターに伝わる言葉について。これがいわゆる「プログラミング言語」です。
プログラミング言語にはたくさんの種類があり、それぞれ用途や得意分野が違います。スマートフォンのアプリを作るための言語があったり、最近よく聞くAIの分野が得意な言語があったりします。文字を打ち込む形のプログラミング言語は英語ベースが多いので、「英語がわからないと書けない」なんてイメージがあるのかもしれません。

けれどプログラミング言語は、人間同士のコミュニケーションに使われる言語(自然言語)よりずっと規則正しくて、覚えることも多くありません。それに、Scratch をはじめとするヴィジュアル言語であれば、カラフルなブロックを組み合わせてコンピューターへの命令を作れるため、タイピングもほんの少しで済みます。Scratchには日本語版もあり、英語が必須というわけでもありません。

挑戦したいことと、自分の得意不得意を考え合わせて、使うプログラミング言語を選ぶといいでしょう。始め方はなんでもいいのです。まず、プログラミングをやってみることが大切です。なぜなら、実際に書いて、コンピューターを動かして(そして失敗して)みないとなかなか身につかない感覚があるからです。 それがコンピューターへの指示の仕方です。

コンピューターへの指示

わたしたちは日常会話で、あまり厳密に行動を指示することはありません。
わたしは家に2歳の子がいて、一番よく使う言葉は「ちょっと待ってて」です。
こっちに来て遊んでほしいとか、台の上にあがりたいとか、飲みものを飲みたいとか、大抵のリクエストに「ちょっと待ってて」 と言いながら、えいやっと手元の仕事をキリのいいところまで終わらせて、子どものところへ駆けつけます。子どもは、いい子で待ってくれることも、「やだ!」と拒否することもありますが、少なくともこちらの言いたいことは伝わっています(と、信じたいところです)。

さて、コンピューターに同じく「ちょっと待ってて」をお願いしたいと思ったら、どういう指示になるでしょう。
たとえば、コンピューターが何かクイズを出して、その答えの入力をしばらく待っていてほしいとします。コンピューターの場合は、「ちょっと」という曖昧な言葉を、その場に合わせて「だいたいこれくらいの時間かな?」と予測する、なんていうことはできません。
「ちょっと」を正確に、たとえば「3分」と言い換える必要があります。

それから、「待ってる」ってどういうことでしょう?
コンピューターはこちらから指示したこと以外はしませんから、「3分間何もしないで」とわざわざ言う必要はないかもしれません。でも、3分間待って、そのあとは?もし何も答えの入力がなかったらどうするのでしょう。次の問題へ移る?それともプログラムを終了する?反対に、3分以内に答えが入力された場合はどうしましょう。答えが合っているかどうかを判定して、それから...といった一連の「やってほしいこと」をまとめると以下のようになります(1つのタスク、ここでは「クイズの回答を待つ」に対して、一連の指示や判断の流れをまとめたものを「アルゴリズム」と呼びます)。

<クイズの回答待ちアルゴリズム>
・クイズの問題を出してからの秒数を数える
 — もし3分経って回答が入力されなかったら
   — 不正解の表示を出す
 — 回答が入力されたら
   — 回答が合っているかどうかをチェックする
     — 合っていれば、正解の表示を出す
     — 合っていなければ、不正解の表示を出す

こんなところでしょうか。「ちょっと待ってて」とはずいぶん違う形になりましたね。

コンピューターは自分の力だけでは、曖昧な問題への推測や、次に何をするかの決定はできません。どんな場合に、何をするのか、もれなく指示してあげる必要があるのです。指示を出すためには、もちろん自分で
・どんな場合があるのか
・何をどのようにしてほしいのか
を整理して、言葉にできなければいけません。
上で書いたアルゴリズムのように、プログラミング言語を使わずに、日常の言葉で書いて整理してみてから、実際のプログラムに書き直すこともできます(こういった日常の言葉でアルゴリズムを書き下したものを擬似コードと呼ぶこともあります)。
この「コンピューターへの指示の出し方」、いうなれば「コンピューターに伝わる話しかけ方」の習得が、プログラミングを学ぶ、身につけるということのもっとも重要な根幹の1つなのです。

プログラミングを学ぶということ

プログラミングを学び、自分のやりたいことを実現するには、
・コンピューターに伝わる言葉(プログラミング言語)の使い方
・コンピューターへの指示の出し方
の2つを身につけることが必要です。

プログラミング言語に習熟すれば、自分のアイディアを動く形にすることができます。 コンピューターへの指示の出し方を身につけることで、さらに、状況を整理し、やりたいことを明確に、誤解の余地なく言語化する、という力を得ることができます。この力は、プログラミングだけでなく、新しい問題に取り組み、解決していく時にはいつでも役に立つ、“考える力”の1つです。

むずかしそう、と身構えなくても大丈夫。プログラミングに失敗はつきものです。どんなプロでも、バグのないプログラムを最初から書くことはできません。繰り返し失敗し、コンピューターを思い通りに動かそうと楽しく四苦八苦していくうちに、いつの間にか身についているものです。
ですからまず、始めてみましょう。大丈夫。失敗に付き合ってくれることにかけて、コンピューターほど根気強いパートナーはいません。そして、成功してコンピューターが自分の希望どおりに動いてくれたときの嬉しさを、ぜひ体験してみてください。

一覧ページへ戻る