【授業事例12】

画像データのディジタル化の仕組みを学ぶ

~プログラミング教育で利用する教材に関する一考察

早稲田大学高等学院 穴田浩一先生


実際のところ、コンピュータの中で情報はどのように処理されているのでしょう?


高校で教科「情報」が必須となってから10年以上になりますが、その点に関する生徒たちの理解は、いまだ十分だと言えないのが現実のようです。自分たちが扱うディジタル化されたファイルの中身はどうなっているのか? この点への理解を深めさせるため、共通教科情報科「情報の科学」「社会と情報」のどちらでも使え、また、基本的なプログラミング知識があればさまざまに活用できる教材を考えてみました。
              
コンピュータに関する知識を身につけるためには、さまざまなプログラムやソフトウエアの操作方法を学ぶことが重要であると思いがちです。しかし、ファイルの中身がどのようにできているかということは、これらを学んだだけでは身につけることができません。

 

コンピュータ上で扱うファイルは、「0」と「1」からなる数値の並び(ビット列)で構成されていますが、プログラムやソフトウエア、あるいはいろいろな情報機器は、このような構造を知らなくてもファイルを作成できるようになっているために、ファイル自体の仕組みにはあまり関心が持たれていません。また、生徒たちが「ビット列」を直感的に理解できるようなよい教材が見当たりません。


そこで、ここでは、ごく単純な画像データをディジタル化することを例に、数値の並びで構成された情報に関心を持ってもらい、ディジタル化に対する理解を深めさせる教材を工夫しました。

 

生徒たちはディジタル化の原理を知らない


生徒たちの多くはデジカメで撮った写真はそのままの形でデータ化されていると思っていたりします。だから授業では「少し年配の方だと、フィルムと同じようにそのままSDカードに写真を焼きつけていると勘違いしている人がいますが、そういうものではない」という話から始めていくことにしています。

 

また、撮った写真の画像ファイルフォーマットにもいろいろ種類がありますが、そもそもファイルフォーマットとは何だろうということを理解させるのが大変です。「ファイルの中には画像の色や画素などのほかにも、それに付随するファイルの情報がたくさん入っている」という話をするのですが、生徒たちはなかなかピンときません。言葉だけではなかなかわかってもらえないのです。


そこで、ここで紹介する教材を使ってコンピュータの中で情報がどのように処理されているのかを理解させるようにしていきます。    

                 

生徒が理解しやすいよう、「0」から「9」の並びで情報を表現した教材を用意

 

ディジタル化の知識にはあまり深入りしないようにしながら、「ごく単純な画像データを数値の並びに変換する」展開を行う一例を紹介していきましょう。


ここでは、直感的に理解できるように、「0」と「1」のみで数値だけが並ぶバイナリファイルではなく、「0」から「9」の並びによって情報を表現した教材例です。

 

【教材用の画像フォーマット】
1.手順(法則)
与えられた画像に対応して、「0」~「9」の数値が、次の規則に基づいて並んでいる「数値の列」を考えます。
a.左から初めの2個の数値は、「画像の縦の行数」の数値(10進法2桁で示す)。
b.続いて、次の2個の数値は、「画像の横の列数」の数値(10進法2桁で示す)。
c.さらに続けて、「画像の最左上から順に、それぞれの画素の色」に対応した数値(10進法1桁)を1行目 2行目 ・・・ と並べる。

 

2.具体例
例えば、下記の縦4行、横6列で、左の2列は緑、真ん中の2列は白、右の2列に赤が並んでいる画像データを、画像フォーマットに変換してみます。
 

(3)が、画像データの情報を「1.手順(法則)」に従って「数値の並び」に変換して表現したものとなります。

 

 

画像という「平面」的な情報が、数値の並びで構成されることを理解する


この教材用の画像フォーマットを使う体験を通して、生徒たちは次の2点を理解します。


1.画像は「平面」的な情報だが、数値の並び(作成するファイル)は横に並んだ直線的な情報であること。


2.数値の並び(作成したファイル)には、画素や色だけでなく、その情報を再現するために必要な「画像の縦の行数」や「画像の横の行数」などの情報も含まれていること。

また、理解をさらに深めさせるには、次のようなことを考察させるとよいでしょう。
・この規則で扱うことができる画像の行数と列数は、最大でいくつ?
・この規則で扱うことのできる色の種類は、最大で何種類?

 

プログラミングへの展開もできる


また、これらの考察をもとに、「行数・列数や扱うことができる色の種類の最大を増やすにはどうすればよいか」を考えさせた上で、生徒たちにオリジナルのフォーマット(規則)を作成させたりする課題もいいと思います。


さらに、プログラミングの基礎的な知識を用いて、「?行?列の色を出力させる」「?行?列の色を変更する」などのプログラムを作成させながら、コンピュータにおける情報の扱い方を学ばせることもできます。 

このように、プログラミングの難解な知識がなくても、生徒たちが、「数値の並び」で構成された情報に関心を持ち、さらに理解を深めさせられるような教材の工夫および活用が不可欠と考えます。

※本記事は、日本情報科教育学会第6回全国大会(2013年6月29日・30日、東海大学 高輪キャンパスにて)でお話しされた内容です。