情報Iの教科書におけるプログラミング分野の比較と分析

愛知県立小牧高校 井手広康先生

「情報I」のプログラミング言語、何を使う?

ご本人提供
ご本人提供

まず、本研究の背景と目的からご説明します。

 

教科情報科は平成15年から、下図のように推移してきており、来年度からいよいよ「情報I」が始まります。

 

この「情報I」では、授業でどのプログラミング言語を扱うのかということについて、長らく議論がされてきています。

 

※クリックすると拡大します

 

下図が、文部科学省が公表した「高等学校情報科『情報I』教員研修用教材」です。左側の「本編」の第3章「コンピュータとプログラミング」がプログラミングを扱う分野になりますが、教員研修用教材のプログラミング言語にはPythonが使われております。その後、「別冊」として右側の4つ、JavaScript、VBA、ドリトル、Scratch版が公開され、Pythonとあわせて計5つのプログラミング言語となりました。文科省では、これらのプログラミング言語の使用を想定しているのだろうといった話が現場でも上がっていました。

 

※クリックすると拡大します

 

下図は、高等学校情報科『情報I』教員研修用教材の1年後に出た「情報Ⅱ」の教員研修用教材です。「情報Ⅱ」におけるプログラミングの単元は、第4章「情報システムとプログラミング」が該当しますが、「情報Ⅱ」に「別冊」はなく、教員研修用教材ではプログラミング言語にPythonが使用されています。

 

 

大学入学共通テストは疑似言語(DNCL)で出題か

情報科と情報入試導入の流れについて、電気通信大学の中山泰一先生の資料を引用してご説明しますと、この左側の表の流れで現在まで進んでおり、2025年の大学入学共通テストから「情報」が新たに加わって、7教科21科目に再編されます。

 

着目すべきは、これまでのセンター試験や共通テストの「情報関係基礎」です。これは「数学」の科目群の中にあり、プログラミングの問題もこれまで出題されてきていました。

 

※クリックすると拡大します

 

下図は2021年1月に実施された大学入学共通テストの「情報関係基礎」の第2問のプログラミングの問題です。問題文のプログラミング言語には「センター試験用手順記述標準言語」、いわゆるDNCLと呼ばれる疑似言語が使用されています。

 

※クリックすると拡大します

 

なお、現在、情報処理学会情報入試委員会が、この「情報関係基礎」の1997年から2020年までの問題と解答、問題作成委員会の見解をアーカイブにして公開していますので(※1)、ぜひ参考にしていただければと思います。

 ※1 https://sites.google.com/a.ipsj.or.jp/ipsjjn/resources/JHK

 

※クリックすると拡大します

 

大学入試センターが、2020年11月に公開した大学入学共通テスト「情報」試作問題でもDNCLが使われていました(下図:上)。また、2021年3月公開の大学入学共通テスト「情報」サンプル問題でも、同様にDNCLが使われています(下図:下)。

 

一見して「情報関係基礎」に使用されているDNCLと同じように見えますが、実は結構違います。

 

※クリックすると拡大します

 

※クリックすると拡大します

 

同じ問題ではないので比較は難しいかもしれませんが、左が「情報関係基礎」のDNCL、右が試作問題やサンプル問題で使用されているDNCLです。幾つか例を挙げますと、例えば、左側の緑色の枠で囲っている箇所(制御構文の後ろの部分)は、右のサンプル問題ではなくなり、代わりに赤枠の箇所のように文末に「:」が表記され、Pythonを彷彿させる表記に変わっています。

 

※クリックすると拡大します

 

また、青色の枠は代入部分で、「情報関係基礎」では矢印でしたが、サンプル問題ではイコールになっています。その他にも変更点は多いですが、やはり一番衝撃だったのが、この赤枠の「:」の使用です。これはPython特有のブロックを表す表記ですが、これが試作問題やサンプル問題でも使用されていることから、「情報I」のプログラミング言語にPythonが使われることが多くなると予想できます。

 

「情報I」の教科書ではPython、JavaScript、VBA、Scratchの4言語が主流

その後、2021年4月から5月にかけて各教科書会社から合計13種類の教科書の見本本が、全国の高等学校に届けられました。そのうち下図の赤枠で囲んだ2冊は、「ブックインブック」という冊子形態で、採用時には1冊としてカウントされます。本研究では、この13種の教科書に採用されているプログラミング言語を調査するとともに、プログラミング分野における内容の比較を行いました。

 

※クリックすると拡大します

 

文部科学省が公表している現行の令和3年度教科書目録がこちらになります。左側が「情報の科学」で8種類、右側が「社会と情報」で13種類あります。「情報の科学」よりも「社会と情報」の数が多いですが、内容を見ると「社会と情報」には「改訂版/新編」が多く含まれているので、実際に採用を検討する教科書の数としてはここまでは多くありません。

 

※クリックすると拡大します

 

こちらが令和4年度、来年度からの「情報Ⅰ」の教科書で、全部で13種類あります。令和3年度教科書目録の「社会と情報」と数自体は同じですが、「改訂版/新編」が入っていない分、やはり種類は多いという印象になります。下図の右の表は、教科書会社別に教科書数を比較したものです。

 

※クリックすると拡大します

 

下図は、13種の教科書のプログラミング分野において使われているプログラミング言語を比較したものです。Python、JavaScript、VBA、Scratchの4つの言語が主に使われていました。

 

着目すべきは、かなりの教科書が複数のプログラミング言語を併記していた点です。例えば、東京書籍は、PythonをベースにJavaScriptかScratchを併記しています。実教出版は、併記はせず4つのプログラミング言語をそれぞれの独立した教科書で取り上げています。数研出版は、Python、JavaScript、VBAの3つを併記しています。このように、教科書会社によってプログラミング言語の特色が強く表れているという印象でした。

 

※クリックすると拡大します

 

こちらは、プログラミング分野でどのような項目を扱っているのかを、教科書ごとに書き出したものです。各項目に対して、青色は全ての教科書に記載があったもの、黄色はほとんどの教科書に記載があるが、一部の教科書では扱っていなかったもの、赤色は一部の教科書だけに掲載があったものを表しています。

 

※クリックすると拡大します

 

やはり、基本的な項目はどの教科書も扱っていますが、中には発展的な内容として、二次元配列、探索、ソート、クラスの考え方まで扱っているものまでありました。これも、教科書によってプログラミングの単元で取り扱っている内容がかなり異なるという印象です。

 

教科書によって難易度も大きく異なる

この表は、具体的にどのようなプログラミングの内容をどこで扱っているのかを書き出したものです。この項目数が多いところ、例えば、実教出版の「高校情報Ⅰ」(教科書の構成は同じですが、PythonとJavaScriptの2冊に分かれています)には、オープンデータの活用や計測・制御、オブジェクト指向のプログラムなど、かなり高度な内容まで書かれています。

 

※クリックすると拡大します

 

他にも、日本文教出版の「情報Ⅰ」には、プログラミングの単元に続いて「モデル化とシミュレーション」の単元でも、「プログラムを使ってシミュレーションしてみよう」といった内容もありました。

また、東京書籍は2つのプログラミング言語が主ですが、巻末の実習のところにドリトルやmicro:bitを使った実習が入っていました。

 

さらに、私の独断と偏見で、プログラムの内容を見て、ざっくりと難易度(★~★★★の3段階)をつけてみました。難易度としても、全体的に均等にバラけているという印象です。

 

 

下図のグラフは、令和3年度愛知県高等学校情報教育研究会研究協議会で取ったアンケート結果です。左側の「採用予定のプログラミング予言語」のグラフを見ると、PythonとVBAに二極化してるという印象です。JavaScriptが少なかったのが意外でした。

 

右側の「採用予定の教科書」のグラフを見ると、実教出版の「最新情報Ⅰ」が多いですが、プログラミング言語別に見ると採用する教科書にはばらつきがあるという印象でした。

 

※クリックすると拡大します

 

最後にまとめと今後の課題です。教科書に採用されているプログラミング言語は、Python、JavaScript、VBA、Scratchの4言語であることが明らかになりました。もちろん、教科書に記載されているプログラミング言語を使わなければいけないという訳ではありませんが、少なくとも「情報Ⅰ」でプログラミングを初めて実施する先生にとっては、やはり使用する教科書に載っているプログラミング言語で授業を進めるのが一般的ではないかと思います。

 

 

また、教科書によってプログラミング分野の難易度に大きな差があることがわかりました。

 

さらに、アンケート結果から、授業で取り扱うプログラミング言語は、PythonとVBAの二極化になるのではないかと予想します。

 

今後の課題としては、「大学入学共通テストへの対応」という観点において、「情報関係基礎」の内容も含めて教科書の比較や分析を行っていきたいと思っています。

 

 

[質疑応答]

Q.高校教員

先ほど、プログラミングをどこまでやるか、というスライドがありました。現行の教科書だとソートが一番難しい、といったところがありますが、「情報I」のようにいろいろな言語を使ってよいことになると、例えば一発でソートができてしまうような言語を授業でやるとなると、その辺りの扱う内容が変わってくるのではないかと思うのですが、いかがでしょうか。

 

A.井手先生

おっしゃるとおり、例えばPythonであれば、sort関数を使えば、一発でリストの要素が並び換わってしまうので、あえてソートを学ぶ必要があるのか、という疑問はあるかもしれません。

 

ただ、共通テストへの対応という観点で考えると、「サンプル問題」も、その前の「試作問題」も、プログラムの中で「入れ子」(ネスト)が使われています。

 

ソートでも必ず「入れ子」は使います。ですので、このような「入れ子」の考え方や、変数にどのような順序で値を代入していけば、この変数の値が効率よく並び換わるか、という考え方(アルゴリズム)を学ぶ上では、少々古典的かもしれませんが、「ソート」や「探索」という概念を学んでおくことは大切であると感じています。

 

日本情報科教育学会第14回全国大会発表より