2020年3月23日
小学生がScratch(スクラッチ)で学ぶべきプログラミング「3つの基本」
ユーバープログラミングスクール代表 中村 里香
小学校でのプログラミング教育必修化が目前に迫りました。目覚ましいスピードで進化する、コンピュータにより支えられる社会を生きるために、論理的に思考して課題を解決する「プログラミング的思考力」が全ての人に求められていることが背景にあります。
子どもがプログラミング的思考力を学ぶツールとして注目の「Scratch(スクラッチ)」ですが、具体的に何をどんな風に学び始めたら良いのかと迷われる方も多いと思います。今回はプログラムの基本「順次」「反復」「条件分岐」についてやさしい例をあげながら紹介します。一緒にScratchを起動し実行しながらみていただけたらと思います。
■Scratchの入手方法
・Webサイトを利用する。ScratchのWebサイト
・Scratchをダウンロードする。Scratchアプリのダウンロード
順次
プログラミングとは、コンピュータにやってほしいことをコンピュータの理解できる言語で「順番」に記述することです。記述した命令は、基本的に上から順番に実行されます。このようにひとつひとつ順番に実行されることを「順次処理」と言います。
身の回りのことで例をあげると、ごはんを炊く場合、米を計る→米を研ぐ→水を測って入れる→吸水→火をつける→火加減調節→消火→蒸らす、など多くのやるべきことがあります。順番を間違えたらどうなるでしょうか?上手にごはんを炊くことができなくなりますし、場合によっては大変なことになってしまうかもしれません。プログラムでも同様にやってほしいことを整理して抜けや漏れがなく順番を意識して命令することが大切なのです。
Scratchでは、命令のブロックをハットブロック(イベントパレットの「緑の旗が押された時」など)につなげてプログラムを作ります。ステージの上の「緑の旗」がクリックされると「緑の旗が押された時」につながっているブロックは、上から順番に実行されます。
具体的にねこのキャラクターに「①『スタート!』と(吹き出しでセリフを)いう」「②画面の中のどこかに行く」「③終わるまでニャーと鳴く」というプログラムを作ってみます。
始めに①「スタート!」とセリフを言ってから、②どこかに移動、③ニャーの音が再生されます。
これを、「①終わるまでニャーと鳴く」「②『スタート!』と(吹き出しでセリフを)いう」「③画面の中のどこかに行く」と入れ替えて実行してみれば、子どもにも違いが明確に伝わります。
実際に試しながら自分の意図した通りに何かを動かすためには、順番を考えてプログラムを作る必要があるということを少しずつ理解していけると良いでしょう。
目的があると練習も楽しくなると思いますので、スタート地点から矢印に沿ってドーナツのところまで移動する簡単な例題を用意してみました。「スタートちてんにいく」からスタートして「↑うえにあるく」と「→みぎにあるく」という移動の順番を考えて組み立ててみてください。
ユーバープログラミングスクールのサイトから、この例題のプロジェクトファイルをダウンロードできます。
【注意:ファイルの開き方】ダウンロードしたプロジェクトファイルは、Scratchのサイトまたは、ローカルエディタで「ファイル」メニュー「コンピュータからよみこむ」で開いてご利用ください。ダブルクリックでは起動できません。
反復
順次で紹介した練習問題もそうですが、同じことや規則性のあることを繰り返し実行したいということがよくあります。もしも「↑うえにあるく」と「→みぎにあるく」の移動が100段分あったならプログラムがとても長くなりそうでうんざりしませんか?作るのも修正するのも大変ですから、人間の手作業では疲れてうっかりしてしまいそうです。
しかし、プログラムには同じことを何回も繰り返し書く必要はありません。繰り返し実行してくれる便利な機能があります。これを「反復処理」と言います。Scratchでは、「ずっと繰り返す」「○回繰り返す」「◇まで繰り返す」のブロックがあたります。
先ほどの移動の練習問題でいうと「↑うえにあるく」と「→みぎにあるく」という同じ処理を5回も繰り返しています。回数を指定し繰り返すブロックを用いれば、「5回繰り返す」の中に「↑うえにあるく」と「→みぎにあるく」それぞれ1つずつをはさめば良くなるのでプログラムが短くなります。これなら作るのも楽ですし、万が一繰り返す回数や、繰り返す中身が変わった場合の修正も容易になります。
コンピュータは繰り返し計算することが得意なので、処理の反復部分を発見してどんどん活用してください。次は、繰り返しに条件分岐を合わせてさらに効率よく処理する例を見ていきます。
条件分岐
条件を設定してその答えが「はい」か「いいえ」か、で次の実行を分岐する命令を「条件分岐」と言います。反復と条件分岐による処理は、プログラミングの基本です。
日常生活の例を見てみましょう。放課後に「児童館へ遊びに行こう。」と誘われました。「お稽古の日か?」という条件を調べます。「はい」なら「お稽古に行きます」、「いいえ」なら遊びに行けそうですが、続けて「宿題は終わっているか?」という条件を調べます。そして「はい」なら「遊びに行きます」、「いいえ」なら「先に宿題を済ませます」。
さらに「お腹は空いているか?」→「はい」なら「おやつを持っていきます」、「いいえ」なら・・・といった具合に条件分岐が日々の暮らしの中においても連続しています。コンピュータにやってほしいことがあったら、適切な条件を設定できるかが非常に重要です。
Scratchでは、「もし◇なら」「もし◇なら、でなければ」「◇まで繰り返す」「◇まで待つ」のブロックがこれにあたります。
先ほどの練習問題を条件分岐で改造してみましょう。ねこが移動する画面(矢印が書いてあるところ)ですが、上に移動する部分は水色で、右に移動する部分は黄色か茶色になっています。この色を条件に利用して動きを分岐し処理を自動化したいと思います。
「ねこが水色に触れたか?」という条件を調べて「はい」なら上にあるきます。同じように「ねこが黄色に触れたか?」という条件に合えば右にあるきますし、「ねこが茶色に触れたか?」という条件に合えば右にあるきます。この処理を繰り返します。繰り返すのは、ゴールするまで、つまりドーナツに触れるまでです。「◇まで繰り返す」のブロックは条件の答えが「いいえ」の間はずっとはさんだブロックを繰り返しますから、条件としては「ドーナツに触れた」が入ります。
実行すると、ねこはスタート地点で水色に触れるのでまず上にあるきます。すると今度は黄色に触れますから右に・・・と繰り返します。ドーナツに触れたかどうか、が「はい」になると反復処理をおえて、次の処理「終わるまでBiteの音を鳴らす」が実行されて終了します。
この3つの色の条件を「ねこが水色に触れたか?」という条件で2つに分けることもできます。「はい」なら上へあるき、「いいえ」なら右に歩きます。他にも「◇または◇」(どちらかの条件が合っている:論理和)のブロックも使えます。
条件分岐のブロック自体は、使い方がわかると比較的理解しやすいと思います。ただ自分のやりたいことを上手に分岐できる条件を考えるのは、小さな子どもには少し難しいので練習が必要です。
身の回りのことで考えよう
朝起きてから夜寝るまでの毎日の生活、料理のレシピ、遊びやゲームなどなんでも良いので子どもと一緒に「順次」、「反復」、「条件分岐」を使って手順を考えてみることをお勧めします。やることの順番をあげてみる、反復している部分がないか考える、そしてどのような条件で分岐したらよいのかをシンプルな流れで考えてみてください。ぜひScratchを使って楽しみながらアイデアを制作してみてください。
<著者プロフィール>
ユーバープログラミングスクール代表
ユーバー株式会社 代表取締役 中村里香
子どもも保護者も続けやすい、楽しく手軽なプログラミング教育実現のため、2017年4月ユーバー株式会社を設立。環境に左右されず全ての子どもに広く等しく楽しい教育を届けることを信念に、子ども向けプログラミング教室の運営、教材ライセンスの販売、通信教育向けプログラミング教材開発、プログラミング講師育成を手がける。
著書「遊びながら楽しく学ぶ!小学生のScratchプログラミング(ナツメ社)」
関連URL
関連記事
最新ニュース
- 内田洋行、東京都荒川区でNEXT GIGAの教育ICT基盤を刷新(2024年10月31日)
- サイバートラスト、「端末認証」が東京・荒川区の「教育ICT基盤」のアクセス制御に採用(2024年10月31日)
- 大阪・豊中市、官学連携で密集市街地の小学生に「AR活用した防災教育」実施(2024年10月31日)
- hab 、大阪・豊中市で「子ども送迎」に関する実証実験を実施(2024年10月31日)
- リーフラス、「非認知能力測定システム」が兵庫・加西市の課題解決に採択(2024年10月31日)
- 港区・嘉悦学園、eスポーツ体験事業を通じた「地域社会の発展に関する連携協定」締結(2024年10月31日)
- KDDI、つくば市の高校生発案した高齢者対象「期間限定スマホカフェ」オープン(2024年10月31日)
- 高専合格者の約7割が教育サービスを利用 塾・予備校が31.4% =じゅけラボ予備校調べ=(2024年10月31日)
- a.school、オンライン探究部活動「プロジェクト部」がお茶の水女子大附属中などで導入(2024年10月31日)
- 東急、「まちづくり」をテーマにした探究学習の授業支援を11月から開始(2024年10月31日)