教員のための情報教育FAQ

登録番号:C01-007  A:用語の意味・基本的な意義

Q. 新しい学習指導要領では小学校でプログラム教育がはじまるということですが、何をどのように指導すればいいのですか。

A. 小学校でプログラム教育がはじまるというのは正確な表現ではありません。ねらいを正しく理解して対応できるようになりましょう。

情報教育のねらいとプログラミング

 小学校段階からプログラミングに関する能力をつけさせるべきという論議は「情報教育」の始まった2002年のカリキュラムからありました。
 情報教育の目標は、よく知られている3つの能力ですが、その中の1)情報活用の実践力、3)情報社会に参画する態度の中の情報モラルの育成が小学校段階で取り上げられ、2)情報の科学的な理解については、中学校以後のカリキュラムで対応することになっていました。また、ここでいう科学的な理解とは「情報活用の基礎となる」「自らの情報活用を評価・改善するため」の条件付きで、コンピュータの仕組みやネットワークの仕組みなどの情報技術、わかりやすい表現、デジタル表現などは扱うものの、プログラミング教育については深入りしないという考え方がこれまでは基本でした。しかし、コンピュータとはどのようなものか、どのような仕組みで動作しているのかを理解するためには、コンピュータに命令し動作させる基となるプログラミングやアルゴリズム、あるいはセンサーや制御の技術についての知識などを避けることはできない と考えられるようになってきました。
 ただ、小中高のどの段階で、どの程度まで、しかもすべての児童・生徒が理解したり、体験したりする必要があるか、またどのような学習活動が適切なのか、を議論する必要がありました。今回はそれらの議論をしたうえでの結論が、新しい学習指導要領に盛り込まれたのです。

 さて、このような論議で出てきたのが直接プログラミングをするというのではなく、「プログラミング的思考」力を養うべきという考え方です。小学生ではまだ代数的な考え方ができるまでに成長していないので、変数を使った実際のプログラムを全員が理解するのは困難ですし、単にBASIC、JAVASCIPT、Cなど実際に利用されているプログラムを教えても、将来のネットワーク環境(定型的なプログラムはAIが構成する)を考えると意味がないと思われるからです。
 サッカーや野球などスポーツの世界では、幼少期の体験を通じ技術や才能をもった子どもが見いだされ、有名選手になっていくことがあります。「情報でも」という期待はありうるでしょう。だからといって、将来のスポーツ選手育成のため幼少期からスポーツを行っているわけではありません。「機会やきっかけをつくること」には意味がありますが、小学生全員にプログラミング技術を身につけさせることが目的ではないという話と似ていますね。

プログラミングとプログラミング的思考

 それらの議論ででてきたのが、小学校では「プログラミング的思考」力を養うという考え方です。その前に、プログラミングについて少し説明しましょう。

 プログラミングとは、機械に理解でき実行できる命令の範囲で、目的の仕事(作業を)自動的に順次に行わせる手順を考え、示すことです。手順の記述には多くの場合、これらの命令を英語的な人に意味が分かる言語(最近は別のタイプの言語もありますが)で、動詞と目的語の形式でテキスト記述できるようになっています(プログラミング言語)。
 実際にプログラミングを行うには、プログラミング言語を使ってコンピュータに自動処理させる方法を学ぶ必要があります。
 プログラミングにおいて押さえておくべき基本的な考え方は2つあります。
  1)順に動作する一命令 である
  2)「条件分岐」と「繰り返し」の組み合わせで動作する(構造化プログラムの基本的概念)
 さらに次の概念が重要です。
  3)イベント(新しい状況)が発生するとそれに対応して動作するメカニズム群(イベントドリブンやオブジェクト指向)
 
 実際のプログラミングでは、変数や数値の代入、データの操作、関数の概念が必要で、(先にも述べたように)シンボルの「形式的な操作」が未成熟(12歳以後に身につくと考えられている)な児童には、概念的に理解することは困難です。
 したがって、プログラミングするとしても、言語ではなく、具体的な記号や図といったものを媒介にする環境がなければ、小学生には理解できないでしょう。また、処理の結果も、一つ一つの命令に対応した動作が目で確認できるものでなければ、自分で誤りにも気がつけません。すなわち、変数を使って、計算をさせるプログラムやアルゴリズムの理解ではなく、プログラミングの持つ本質的な特性や概念を、体験や実習を通して徐々に身に着けさせていくという学習が必要になります。これが「プログラミング的思考」の育成です。

「プログラミング的思考」の育成はどうすれば可能に

 では、どのようにすれば「プログラミング的思考」の育成が可能になるのでしょう。まずは、作業の流れから「定型的なこと・法則的なこと」を見つける練習が入門です。例えば、日常的に行っている(朝起きて、学校にいくまでの)動作や行動をみんなの前で説明してみるなどの活動です。国語や生活でもやっていますよね。しかし説明するだけでなく、手順をカードに書き出し、ならべてみる、条件(雨が降っていたらなど)によって行動が変化するならそれを列挙してみるなどの活動に発展させるとプログラミング的思考につながっている可能性があります。

 しかし、やはり、実際にプログラミングを体験して何かを完成させるという課題中心型の学習を行うことは必要不可欠でしょう。小学生を対象にするとすれば、児童が理解でき、自分で操作し、結果が確認でき、完成まで自分で確認できるように工夫されたプログラミングの環境が必要になります。古くは、LOGOなどが教育用として代表的でした。最近では、Scratch(スクラッチ)、Viscuit(ビスケット)など、ビジュアル型・ブロック型(イラストを並べたり動かしたりする)と呼ばれるプログラミング環境(ツール)が利用できるようになってきました。小中学生を対象としたワークショップの試行もあります。
 無料のものもありますので、一度先生自身で動かして遊んでみてください。イラストや、キャラクタの動きなどで示すというものですが、順番に動く、条件に分ける、繰り返す、状況に対応して動くなど、プログラミングに必要な基本要素が含まれています。これらのツールを使うと、物語を作ったり、キャラクタを躍らせたりできるので、児童・生徒も喜んで取り組める課題になるでしょう。

学習課題が重要

ここで重要なことは、おなじロボット操作や、アニメの制作でも、その課題に含まれている要素により、「プログラミング的思考」につながる学習とそうではない学習に分かれるということです。プログラミングでは、目標とする動きをはっきりイメージしてから、それに向かってプログラミングをさせることが重要です。
 子ども用のプログラミングツールを使っていろいろな機能を使って創作的な動きを試してみる、それを応用して「物語を創作しよう」という表現活動を主にしてしまうと、(それ自体は無駄な活動ではありませんが)結果を予想し与えられた命令や条件で考えるという「プログラミング的思考」にはつながっていきません。
 つまり、実際に動作する前に、あらかじめ目標を決め手順を考える(プログラムする)ということが大切なのです。また、自分で結果を見直し、自分で修正(デバッグ)させる十分な時間の確保も必要になります(プログラミングの答を教えてしまっては意味がないので)。総合的な学習の時間だけでなく、算数の図形描画、文章題の整理、理科の実験のシュミュレーション、音楽や図工、体育などの表現活動の演習と連携して取り組むことも必要になると思われます。

 教科書の内容が決まったら、わが国の学校利用に向けた小学校向けのプログラミング環境が開発され、利用できるようになるでしょう。それまでは、焦らずに、考え方の重要性を理解することをお薦めします。

理解度CHECK!

次の中で、小学生段階でプログラミング学習を行なうことの目的として適切なものをすべて選びなさい。


プログラムは楽しいという経験を幼少期に体験しておく
将来の優秀なプログラマーを、早期に発見する
試行錯誤を繰り返しながら目的を達成していくというプロセスの体験
プログラミングに適性の高い児童を早期に目覚めさせる
目的達成のために、方法や対策を考える態度の育成

  ▲ 選んだら を押してください。