情報教育

実践研究「情報科」

プログラミング × 情報セキュリティ
~プログラミングで学ぶ情報科の授業~

大里 有哉(神奈川県立相模原総合高等学校 教諭)

大里 有哉 神奈川県立相模原総合高等学校 教諭

はじめに

2018(平成30)年3月に高等学校学習指導要領改訂が告示され、情報科については共通必履修科目として「情報Ⅰ」が設置されることとなった。文部科学省が示した「高等学校学習指導要領の改訂のポイント」
(https://www.mext.go.jp/content/1421692_2.pdf)では、重要事項として「情報教育(プログラミング教育を含む)」が挙げられ、以下の事柄について述べられている。

高等学校学習指導要領改訂のポイント

5.教育内容の主な改善事項 その他の重要事項

○情報教育(プログラミング教育を含む)
情報科の科目を再編し、全ての生徒が履修する「情報Ⅰ」を新設することにより、プログラミング、ネットワーク(情報セキュリティを含む。)やデータベース(データ活用)の基礎等の内容を必修化(情報)
データサイエンス等に関する内容を大幅に充実(情報)
コンピュータ等を活用した学習活動の充実(各教科等)

すべての生徒が「プログラミング」や「情報セキュリティ」について学ぶことになり、これまで以上に情報科に注目が集まっている。また、情報科以外の教科においてもコンピュータ等を活用した学習活動を充実させたり、情報活用能力を育成したりすることも注目すべきことである。

勤務校では、2016(平成28)年度〜2018(平成30)年度の3年間、神奈川県教育委員会より県立高校改革Ⅰ期指定事業「プログラミング教育研究推進校」に指定され、2019(平成31)年度より継続してさらに3年間の指定を受け、情報科のみならず、すべての教科において「プログラミング教育の視点」を踏まえた授業づくり・授業改善を行っている。以下に本校が策定した「プログラミング教育の視点」を示す。

プログラミング教育の5つの視点

  • ① 抽象化する
  • ② 物事を分解して理解する
  • ③ やるべきことを順序立てて考える
  • ④ ベストな方法かどうかを分析・評価する
  • ⑤ 方法をほかに置き換えて一般化する

(『日経Kids+ 子どもと一緒に楽しむ!プログラミング』(日経BP社,2017)をもとに本校で策定)

情報科はプログラミングを学ぶ教科でもあることから、他教科でプログラミング的に学ぶ上での導入と位置づけられると考える。本校では、現在「情報の科学」を1年次必履修科目として設置しており、プログラミング教育の導入科目と位置づけている。本稿では、「情報の科学」においてプログラミングそのものを学ぶ単元ではない単元で、プログラミングをとおして情報セキュリティについて学ぶ授業実践を紹介したい。それにより、今後の「情報Ⅰ」の実施や他教科でのプログラミング教育の視点を踏まえた授業づくりのヒントを探る上で有益であると考えたからだ。

情報セキュリティへの導入

情報セキュリティは生徒に身近でありながら、その基本的な事柄や仕組みなどは生徒にあまり知られていない。例えば、スマートフォンのパスコード認証や生体認証、SNSアプリ等における相手との暗号化通信など、情報セキュリティの仕組みが使われている事例は身近にたくさんある。身近にある情報セキュリティの事例を授業でより身近に感じてもらうために、まず導入場面で次のような実習ファイルを用意し、おのおのの生徒に開かせた。【図1】のような画面が表示される。

図1

このような画面が表示されると、生徒は教員の指示がなくても操作をしてしまう。「ここをクリックしてください」というボタンを疑いもなくクリックしてしまうと、【図2】のようなポップアップ画面、続いて「OK」をクリックすると【図3】のようなポップアップ画面が表示される。

図2図3

ポップアップ画面が続いて表示されてしまって消えないため、焦りを感じる生徒がいるが、初期設定では10回「OK」をクリックすると表示は停止する。プログラミングの基礎を学習した後、このような題材を使用して生徒に「情報セキュリティ」について考えさせている。ワンクリック詐欺による、クリックしたらポップアップ画面が消えない仕組みや、ランサムウェアによる身代金の要求などの簡単な仕組みはプログラムを少し記述するだけで実装できてしまうことを体験させ、身近なところでプログラムが活用されていること、情報セキュリティは特別なことでないことを意識させている。この題材のプログラムは、以下の数行のコード【図4】で実装されている。

情報セキュリティを学ぶとき、その事案や対策などの知識の理解だけで終わるのではなく、その仕組み(プログラム)に目を向けさせることで、体験的に学習することができる。プログラム自体は、繰り返しと変数の増分による単純なものであり、プログラミングの基礎の復習としても活用できる。プログラミング自体を学ぶこと、プログラミングを活用して学ぶことの両方を行いながら、情報セキュリティに関心を持たせることができると考えている。

図4

コードから暗号化の仕組みを考える

情報セキュリティにおける「暗号化」の部分でもプログラミングを活用して学習している。今回は古典的な暗号化方式である「シーザー暗号」を題材として取り上げた。

まず、実行画面【図5】とプログラム(コード)【図6】を提示し、1行1行のコードがそれぞれどのような意味(役割)があるのかを考えさせた。1行1行のコードの意味(役割)が分かったら、全体のプログラム(コード)がどのようなことを行っているのかをグループで考えさせることで、暗号化とはどのような仕組みなのかを教員が提示することなく生徒に発見させることができた。

図5図6

生徒には、これまでのプログラミング学習の復習を兼ねて1行1行の役割を文章化させ、すべての文章を上から下へと順序立ててつなげていくことで、全体ではどのようなことを行っているのかを考えさせた。プログラムは、セルへの値の代入や条件分岐などシンプルなものであるが、生徒にとってはなかなか難しいものであった。【図5】の実行画面上における「暗号化」ボタンをクリックして考えることを促すことで、だんだんと理解することができていったように思われる。プログラム中における「key = Cells(5, 1)」と「Cells(8, 1) = Cells(3, 1) + key」でセルA5に指定した数値の分だけ文字コードの値を増やしていることに気づけるかどうかが鍵である。

生徒全員がこのことに気づき、シーザー暗号が指定した文字数分ずらして平文を暗号化していることを発見することは難しいが、暗号化もプログラム(プログラミング)によって実装されていて、身近で使われているということに気づかせることはできたのではないかと思う。「暗号化」においても知識としてその仕組みを知るだけではなく、プログラミングをとおして体験的に学ぶことで、生徒の理解がより定着し、興味・関心を持ってくれるのではないかと考えている。

おわりに

実は、最初に授業を行ったクラスの実習ファイルでの実行画面では、3行目の平文(もとの文)の文字コードを表示する部分と8行目の暗号文の文字コードを表示する部分は設けていなかった。つまり、平文・暗号文の文字コードを表示する部分がなかったため、文字コードの数値を増やすという部分が可視化されず、生徒にとって難しい課題だったと思われる。【図6】のコードと合わせて【図5】の実行画面によりGUIベースで実行させることで、プログラムの1行1行の意味(役割)をよりスモールステップでかみ砕いて考えさせることができたと思われる。

本稿ではプログラミングをとおして「情報セキュリティ」を学ぶ授業実践を紹介させていただいた。「情報Ⅰ」では、プログラミングそのものを学ぶことも重要であるが、ほかの学習内容においてもプログラミングを活用し、順序立てて体験的に学ぶ過程をとおして、情報の科学的な理解、情報社会の仕組みの理解を促すことができるのではないかと考える。ほかの学習内容におけるプログラミングの活用についても研究していきたい。

(2020年7月掲載)