学校のろうかや駅のトイレで、近づいたときだけ明かりがつく照明を見たことがありますか。あれは、だれかが見ていてスイッチを入れているわけではありません。人がいるかどうかを調べる部品と、「人がいるならつける」という短い指示の組み合わせでできています。この、電気をむだなく使うための指示のまとまりがプログラムです。6年の理科では、電気を作る・ためる・変えるだけでなく、必要なときだけ使うところまでを学びます。この記事では、電気の利用とプログラミングのうち、プログラムの部分だけを取り出してくわしく見ていきます。
電気のむだづかいというと、消しわすれを思いうかべます。けれども、消しわすれは「気をつける」では減りません。人は必ずわすれるからです。そこで考え方を変えます。人が消すのではなく、いらない時間は自動で切れるようにしておくのです。
同じ明るさ、同じ器具でも、つけている時間を4分の1にすれば、使う電気も4分の1になります。もっと明るいものに取りかえたわけでも、がまんしたわけでもありません。使う時間を短くすることは、器具の性能を上げることと同じくらい大きな節約になるのです。ここに、プログラムの出番があります。時間を短くするための判断を、人ではなく機械にまかせるためです。人は一日じゅう何度も同じ判断をし続けることはできませんが、機械は何度でも同じ判断をくり返せます。
自動でつく照明には、センサーという部品がついています。ここで、多くの人が思いちがいをします。センサーは「人」を見わけているのではありません。センサーが調べているのは、次のような数だけです。
| センサーの種類 | 実さいに調べているもの | 使われている場面 |
|---|---|---|
| 人感センサー | まわりの温度の変化 | ろうか・トイレの照明 |
| 明るさセンサー | 光の強さ | 街灯・自動で暗くなる画面 |
| 温度センサー | 空気の温度 | エアコン・冷ぞう庫 |
| 音センサー | 音の大きさ | 音でつく照明 |
人感センサーがつかまえているのは、人の体から出る熱によって起きる、まわりの温度のわずかな変化です。だから、じっと動かずにいると消えてしまうことがありますし、ストーブのような熱いものにも反応してしまうことがあります。センサーがしていることは「数をはかること」だけで、その数をどう使うかを決めるのはプログラムのほうです。この区別ができると、機械が思いどおりに動かないときの理由も、自分で考えられるようになります。温度計が温度をはかるだけで、暑いか寒いかを決めないのと同じです。
プログラムというと難しそうですが、組み立てに使う部品は、たった3つです。
①の順番は、料理の作り方と同じで、書いた順にそのまま実行されます。②のくり返しは、機械が得意なところです。人は「1秒ごとに調べる」を一日中続けられませんが、機械は文句を言わずに続けます。そして③の分かれ道が、いちばん大事な部分です。コンピュータは、自分で気をきかせたり、その場の空気を読んだりはしません。「もし〜なら」という形で条件を書いてもらったときだけ、そのとおりに判断します。賢いから正しく動くのではなく、書かれたとおりにしか動かないから、いつも同じ結果になるのです。むずかしい命令をたくさん覚える必要はなく、この3つの組み合わせだけで、身のまわりの自動の仕組みはほとんど説明できます。
いきなり画面でブロックをならべ始めると、たいてい途中でわからなくなります。先にすることは、やりたいことを日本語の一文にすることです。
この書きかえができれば、プログラムは半分終わったようなものです。注意したいのは「かつ」の部分です。条件を「人がいる」だけにすると、昼間の明るいろうかでも点いてしまい、むだが残ります。反対に「暗い」だけにすると、夜はだれもいなくても一晩じゅう点いたままになります。2つの条件を両方みたすときだけ、という形にして初めて、ねらったとおりの節約になります。どちらか一方でよいのか、両方必要なのかを、作る前に決めておきましょう。
もう一つ、日本語のままでは機械に伝わらない言葉があります。「暗い」です。人によって暗いと感じる明るさはちがいますが、機械は感じることができません。そこで、境目を数で決めます。
この30という数を、しきい値といいます。しきい値を50にすれば夕方から点き、10にすれば真っ暗になるまで点きません。どちらが正しいということはなく、どこで切るかを決めるのは、作る人の目的です。安全のために早めに点けたいのか、電気を減らすことを優先したいのかで、選ぶ数は変わります。理科の実験で数を記録するのと同じように、実さいに何回かはかってから決めると、うまくいきます。
プログラムは、一度で思いどおりになることのほうが少ないです。うまく動かないときは、感覚で直さず、順番に切り分けます。
| 起きたこと | 調べるところ | 直し方の例 |
|---|---|---|
| まったく点かない | センサーの値そのもの | 値を画面に出して、変化しているか見る |
| いつも点いたまま | 条件の向き(大なり・小なり) | 不等号が逆になっていないか確かめる |
| すぐ消えてしまう | しきい値・待ち時間 | 消すまでの時間を長くする |
| ときどきちらつく | 境目あたりでの行ったり来たり | 点ける値と消す値を少しずらす |
ここで役に立つのが、5年で学んだ実験の進め方です。うまくいかないときに、しきい値と待ち時間を同時に変えると、どちらが効いたのか分からなくなります。変えるのは一度に一つだけ。これはプログラムでもまったく同じで、条件を一つ変えるたびに動かして確かめれば、原因は必ず見つかります。くわしくは実験の計画の立て方を読み返してみてください。
6年の理科では、手回し発電機で電気を作り、コンデンサーにためて、豆電球や発光ダイオードで使う実験をします。同じ量をためた電気で、発光ダイオードのほうが長く光るのは、光にならずに熱ににげてしまう電気が少ないからです。ここにプログラムを足すと、節約の道すじが3つそろいます。
③までは、器具を取りかえることでよくなる部分です。それに対してプログラムは、器具を変えずに「使う時間」そのものを減らすやり方です。信号機、エスカレーター、エアコン、自動ドア。町の中で自動で動いているものはどれも、この考え方でできています。電気の利用全体の話は電気の利用にまとめてありますので、あわせて読むと、作るところから使うところまでが一本につながります。
「人がいるのに消えた」のは、機械が気まぐれを起こしたからではありません。
書かれた条件に、そのときの数が当てはまらなかっただけです。まず条件を読み返しましょう。
「人がいる または 暗い」にすると、どちらか一方でも当てはまれば点いてしまいます。
両方そろったときだけ動かしたいなら「かつ」です。ここを取りちがえると、節約になりません。
しきい値も待ち時間も条件も一度に変えると、うまくいっても理由が分かりません。
直したところを一か所にしぼれば、結果の意味がはっきりします。理科の実験とまったく同じきまりです。
Q1 人感センサーが実さいに調べているものは何ですか。
A まわりの温度の変化。人の形を見ているわけではない。
Q2 プログラムを組み立てる3つの部品を答えましょう。
A 順番・くり返し・分かれ道(もし〜なら)
Q3 「人がいる」だけを条件にすると、どんなむだが残りますか。
A 昼間の明るい時間にも点いてしまう。「暗い」と「かつ」で結ぶ必要がある。
Q4 明るさが30より小さいときを「暗い」とする、この30を何といいますか。
A しきい値(点ける・消すの境目にする数)
Q5 思いどおりに動かないとき、直し方のきまりは何でしたか。
A 手を入れる場所を一か所にしぼるようにして、そのつど動かして確かめる。
電気の利用とプログラミングは、6年理科の中で、日常生活といちばん近い単元です。パソコンの操作が得意かどうかは、ここではほとんど関係ありません。大切なのは「どういうときに動いてほしいのかを、あいまいさなく言葉にできるか」で、これは国語の力にも、実験の計画を立てる力にも重なります。ご家庭では、自動ドアや人感センサーの照明の前で「どんな条件で動いていると思う?」と問いかけてみてください。じっと立ち止まると消える、日なたでは点かない、といった気づきは、そのまま条件の発見です。うまく説明できたら、それはもうプログラムを書けているのと同じことだと伝えてあげてください。