NHK高校講座

社会と情報

Eテレ 隔週 金曜日 午前10:20〜10:40
※この番組は、前年度の再放送です。

社会と情報

Eテレ 隔週 金曜日 午前10:20〜10:40
※この番組は、前年度の再放送です。

今回の学習

第17回 社会における情報システム

プログラミングとは

  • 神奈川大学附属中・高等学校 副校長 小林 道夫
学習ポイント学習ポイント

プログラミングとは

プログラミングとは
  • 緑川光さん
  • 松田好花さん

第17回のテーマは「プログラミングとは」。
司会は緑川光さん、一緒に学んでいくのは日向坂46の松田好花さんです。

プログラミングとは、意図した処理を自動で実行させるために、コンピュータに指示を与えることです。

  • 身近にあるもの

お掃除ロボット、パソコン、ゲーム機、スマートフォンなど、身近なところにもプログラミングされているものがあります。

緑川さん 「ここにはありませんが、エレベーターとかもそうですよね。“この階に行きたい”とボタン押したらそこに連れていってくれるし、電車の改札とか、飛行機の搭乗、銀行のATM。我々の周りはプログラムされたものだらけで、それがないと生きていけない感じがするんですけれども。」

  • 小林道夫先生

今回は、小林道夫先生に教えていただきます。

小林先生 「今では、小学生からプログラミングを勉強する。それから、『プログラミング的思考』を学ぶ、というのが役に立っているとわかってきたんです。現代の社会は難しい問題がたくさんあります。例えば、気候変動の問題、格差社会、食品ロス、答えのない問題がたくさんありますよね。そういった問題に対じしたり、解決策を考えていくには、問題解決力というのが必要になってくる。そういった力をつけるには、ものを順序立てて考えるとか、ある条件が違った場合にはどう処理していこうかとか、そういった問題解決力を必要とするので、そういった力をつけていかなくちゃいけない、ということになっています。」

  • ロボットを動かす
  • 目の前に障害物があると感知する

では、ロボットを使ってプログラミングを学んでいきましょう。

小林先生 「目の前に障害物があると、それを感知する(画像・右)。そういったプログラムになっていますね。」

緑川さん 「感知すると、止まって旗を上げている状態ですか?」

小林先生 「そうですね。」

  • ブロック式プログラム言語
  • センサが付いている

このロボットを動かしているプログラムを見てみましょう。

小林先生 「ブロックのようなものが並んでいますよね。これが実は命令なんですね。こういったロボットを動かすソフト、プログラミングソフトはいろんな種類があるんです。今回はわかりやすい、ブロックを並べて指示ができる『ブロック式プログラム言語』のソフトを使って、やっていきたいと思います。」

では、ブロック式プログラム言語でロボットを動かしてみます。

ロボットにはセンサが付いていて、床との距離を測っています(画像・右)。

小林先生 「床がなくなると、後ろに下がって方向転換する。」

このロボットのプログラミングから、基本を学んでいきましょう。

  • モータ
  • センサ

ロボットは基本的に、動くためのモータと、物などを感知するセンサによって動いています。
今回登場したロボットも同じです。
このロボットには、2つのモータと、2つのセンサが搭載されています。
モータとセンサの動きを、プログラミングソフトを使って動かします。

  • スタートのブロック
  • モータを動かすブロック

それぞれの「ブロック」を組み合わせて、モータとセンサの動きを命令していきます。
まず、ロボットを走らせるためには「スタート」のブロックと、「モータを動かす」ブロックを並べます。

  • 繰り返しをオンにする

そして「モータを繰り返し動かす」というループのブロックを並べます。
モータの動きが止まらないように「オン」をクリックすると、モータが回り、ロボットが動き続けます。

しかし、これだとロボットは走り続け、机から落ちてしまいます。

  • 机との距離を感知している間はモータが動く
  • バックして方向転換する

そこで、さらに「センサのブロック」を追加してみます。
搭載したセンサは、机との距離を測るように設定されています。
机との距離を感知している間は、モータは動き続けますが(画像・左)、机がなくなり決められた距離が伸びてしまうと、バックして方向転換する(画像・右)、というプログラミングをします。

こうして、机の上から落下せずに動き続けることができるロボットのプログラムが、完成しました。

こうした、動きの方法や手順をアルゴリズムといいます。
アルゴリズムをコンピュータが実行できる形式で表したものがプログラムです。

  • フローチャート

アルゴリズムは、処理の流れを視覚的に表現するとわかりやすくなり、プログラミングを周りの人と共有しやすくなります。
これを、フローチャートといいます。

例えば、今回のアルゴリズムは、センサが物との距離を感知するかどうかの条件によって、モータの動きが変わり、それを繰り返すというフローチャートだとわかります。

  • 「順次」「分岐」「反復」

また、処理の流れは「順次」「分岐」「反復」、3つの構造の組み合わせで構成されています。

記述された通りに処理を実行していく「順次」。

条件によって処理を選択する「分岐」。
今回の場合は、センサが机を感知するかどうかの条件によって、走り続けるか止まるかの分岐です。

そして、処理を繰り返し実行する「反復」です。
今回は、モータが動き続けるようにする反復と、ロボットが分岐を繰り返しながら机の上で動き続ける反復です。

この3つの構造の組み合わせをいくつも重ねて、さまざまな指示をプログラミングしていくと、単純な動きだけではなく、複雑な動きができるロボットをつくれるようになります。

基本は順次・分岐・反復
  • 緑川さんのフローチャート

小林先生 「基本は順次処理、分岐処理、繰り返し(反復)処理の3つの組み合わせなんですよね。実は私たちの生活もそうなんです。」

では、緑川さんに「家からパン屋に行くまで」のアルゴリズムを、フローチャートにしてもらいましょう。
「疲れたときはお茶を飲む」という条件設定で考えてみます。

小林先生 「一度もお茶をしない場合もありますし、何回もお茶ができる。いろんなパターンが楽しめる。このように、ふだんの生活や自分の行動も構造的に捉えることができて、プログラミングを作成する基本となる、ということですね。
無意識にやっていることを可視化するという。まずは考え方の癖をつかんで、コンピュータにどうやって命令を与えていくか、ということを考えていくのが大事だと思います。」

プログラミングに挑戦!
  • ロボットが障害物を感知すると旗を上げるというプログラミング

では、いよいよプログラミングに挑戦。
「ロボットが障害物を感知すると、旗を上げる」という仕組みを、松田さんにプログラミングしてもらいます。

小林先生に教えてもらいながら、「モータを動かす」という指示と「センサが障害物を感知したときは、止めて旗を上げる」という命令をプログラミングしてみました。

  • 1秒経つと旗を下げる
  • プログラム通りに旗が上がった

さらに、「上げた旗を、1秒経つと下げる」という命令と、「それを繰り返す」という命令をプログラミングしました。

小林先生 「基本のプログラミングの考え方がわかれば、どんどんプログラムを進化させていって、誰でもプログラマーへの道が開けると。」

緑川さん 「入り口がなんとなく難しそうだなって印象があるので、順番に見ていくと、やれそうかなって。楽しそう。」

プログラミングって楽しい!
  • 宇宙エレベーターロボット競技会
  • 神奈川大学付属中・高等学校

プログラミングの技術を競う大会に挑戦している生徒たちがいます。
訪れたのは神奈川大学付属中・高等学校。
小林先生の教え子たちも毎回、大会に参加しています。
彼らが参加するのは「宇宙エレベーターロボット競技会」という、架空のエレベーターを想定した競技大会です。

  • 地上とアースステーションの間でピンポン玉を移動させる
  • 使用するロボット

地上とアースステーションとの間で、どれだけ多くのピンポン玉を移動させることができるかを競います。
使用するロボットは、より軽いほうが高い点数を獲得します。
最後は地上にロボットが戻っていないと、大幅な減点となります。

使用するロボット(画像・右)は、2つのモータによって上下に動き、センサが天井を感知したら止まって、運んだピンポン玉をカゴに落とす仕組みになっています。

  • モータとセンサの動きを細かく設定
  • フローチャートを書く

プログラムを見てみましょう。
モータとセンサの動きを細かく設定しています(画像・左)。
フローチャートを書くことで、チームの仲間どうしで考え方を共有しています(画像・右)。

  • できたときに得られる達成感がある

しかし、ロボットは思い通りに動くとは限りません。
ロボットの重さ、バランス、宇宙エレベーターの揺れなど、さまざまな事態を想定しながらプログラミングをしなければいけません。
これが難しいところです。
思い通りにいかないことばかりのようですが、生徒たちはとても楽しそう。

本番まであと数日。
果たして納得いくロボットはできるのでしょうか。

  • 全国から強豪校が集まる
  • 競技の結果もさまざま

大会当日。
予選を勝ち抜いた強豪校が全国から集まりました。
ロボットの形もさまざまです。
ぎりぎりまでロボットを調整しているチームもいます。

競技の結果もさまざま。
思うようにロボットを動かして、多くのピンポン玉を運び出したチームもあれば、少ししか運び出せなかったチームもあります。
途中でロボットが止まってしまったチームも。

出場校の生徒 「人の目、感覚とかで数値を設定するっていうのも大事ですし、人も機械も両方必要なんです。」

  • ピンポン玉の移動に成功しているチーム
  • 優勝は千葉英和高等学校メカトロ倶楽部

小林先生の教え子たちのチームも、アースステーションでロボットが止まってしまい、思い通りの結果を残すことができませんでした。

そんな中、ほとんどのピンポン玉の移動に成功しているチームがありました。
しかし、最後のピンポン玉の移動が制限時間ぎりぎりです。 
制限時間内に地上に戻らないと大幅な減点になりますが、見事に生還!
会場を沸かせました。

入賞したチームも、惜しくも入賞できなかったチームも存分に楽しんでいた、宇宙エレベーターロボット競技会でした。

参加した生徒たちからは、「生産の効率化などに関わっていけたら」「救助だったり、困難な場所に行けるロボットをつくりたい」「アイアンマンみたいなロボットをつくりたい」など、将来の夢を聞くことができました。

小林先生 「プログラミングだけできても、実際何もつくるものがないとそれ以上の学びはないと思うんですけど、夢があったり目的があれば、本当に年齢関係なく、中学生でも高校生でも大人を超えることができるっていうことですよね。」


それでは次回もお楽しみに!

科目トップへ

制作・著作/NHK (Japan Broadcasting Corp.) このページに掲載の文章・写真および
動画の無断転載を禁じます。このページは受信料で制作しています。
NHKにおける個人情報保護について | NHK著作権保護 | NHKインターネットサービス利用規約