こどもとIT

大学入試用の日本語プログラミング言語「DNCL」に高校教育はどう対応するべきか?

――手続き型のDNCLだけでなく、「社会で使える学習」のためにオブジェクト指向を

大学入学共通テスト手順記述標準言語「DNCL」で記述された、大学入学共通テスト「情報」教科の想定問題
2021年10月、大学入学共通テストの情報関係基礎科目で用いられる「大学入学共通テスト手順記述標準言語(DNCL)」に、日本語プログラミング言語「なでしこ」が対応した。ほかにも、「Visual-XTetra/XTetra」や「つちのこ」といったプログラミング環境がDNCLに対応している。

DNCLのような疑似プログラミング言語は、アルゴリズムの理解や学習が目的であり、言語の習得がゴールではない。特定のプログラミング言語に習熟した受験生とそうでない受験生の不公平をなくすために必要とはいえ、プログラミング教育や社会との接点も近い高校生の教育という視点で考えたとき、このような動きは望ましいことなのか。

兵庫県立神戸甲北高等学校の情報科教員である松本吉生主幹教諭に、大学入学共通テストに加わった「情報」と、その先のプログラミング習得のために、高校教育で何が大事かを寄稿いただいた。

大学入学共通テスト「情報」と言語仕様「DNCL」とは

日本の高等学校教育は、文部科学省の出す学習指導要領に教育内容が示される。学習指導要領はおよそ10年ごとに改定され、その節目にあたる次の令和4年度入学の高校1年生から、いわゆる「新学習指導要領」となり、教科「情報」の必履修科目は現行の「社会と情報」と「情報の科学」の選択から「情報Ⅰ」に一本化される。

これらのことから独立行政法人大学入試センターは、令和4年度入学の高校1年生が受けることになる令和7年度以降の「大学入学共通テスト」で、これまでの「国語」「地理歴史」「公民」「数学」「理科」「外国語」に加えて「情報」を出題することを決めた。

現行の大学入学共通テストや令和2年度以前の「センター試験」には、工業科などの生徒を対象として「情報関係基礎」という科目が設置されている。ここにはプログラミングの問題が出題されるが、生徒が学ぶ言語による偏りをなくすため、既存のプログラミング言語を用いず、「センター試験用手順記述標準言語(DNCL)」という独自のプログラミング言語が使用されている。

この言語仕様はおよそ20年前に決められたものだが、大学入試センターが開発環境を提供しないため、情報処理学会の研究者らにより、初学者向けプログラミング学習環境「PEN」や、オンラインプログラミング学習環境「どんくり」、教育用に設計された日本語ベースのプログラミング言語「ドリトル」などが独自に開発されてきた経緯がある。

令和7年度以降の大学入学共通テストにおける「情報」の試験にも、DNCLに準拠したプログラミングが出題される予定であり、令和3年3月24日に公開された「サンプル問題」で想定問題を見ることができる。

「なでしこ」はDNCLのプログラミングの学習に役立つ、が……

そのような状況の中、日本語プログラミング言語「なでしこ」が2021年10月13日にDNCLに対応したと発表された。「なでしこ」はプログラマーで多くの技術書も執筆されている「クジラ飛行机」氏が、2005年に公開した開発環境だ。

プログラミング学習における「なでしこ」の特徴は、日本語による自然なコーディングと、PCのインストールが不要なWeb開発環境が用意されていることにある。「なでしこ」の公式ページをPCの画面に左右2つのブラウザで開き、一方にチュートリアルを、他方にエディタを表示すれば、チュートリアルのコードをコピーして試すといったことが容易にできる。

PCの画面に左にチュートリアル、右にエディタを開いて学習する画面

「なでしこ」は自然な日本語で記述できるように、たいへん優れた言語仕様になっている。たとえば画面に文字列を表示するコードは、次のどれでも実行できる。

「こんにちは」と表示
「こんにちは」を表示
「こんにちは」を表示する
「こんにちは」を表示させる
「こんにちは」を表示させます
「こんにちは」を表示させましょう
「こんにちは」を表示させてください

2021年4月15日発行の情報処理学会の学会誌「情報処理Vol.62」に「クジラ飛行机」氏による「日本語プログラミング言語『なでしこ』に関する解説」が書かれており、「助詞区切り」というルールを採用したこと、助詞に意味を持たせたこと、特別変数「それ」を実装したことなどが説明されている。

これらはおそらく欧米人には想像がつかないことであり、「クジラ飛行机」氏のプログラミングに関する長い経験と、日本語に対する造詣の深さによるものだろう。これにより学習者は日本語の揺らぎに思考を乱されず、アルゴリズムに集中することができる。

手続型言語を学ぶだけでは、ただの「ドリル学習」オブジェクト指向の取入れで「社会で使える」学習に

では、高校のプログラミング教育は「なでしこ」などを用いてDNCLでプログラミングができればよいかといえば、そう単純な話ではない。

大学入学共通テスト「情報」教科の想定問題を「なでしこ」で解いた画面

実務におけるプログラミングの大半は英語ベースの言語であり、かつ、オブジェクト指向が必要だ。実務では効率の良いプログラミングをするためには、開発環境に用意された豊富なクラス(※)を、英語のクラス名から機能を直感的に理解し、少ない行でプログラムを完成させる必要がある。

※クラス:プログラムの中でデータの構造を定義するための設計図

実務でも使われるプログラミング言語のC#は、このように英語ベースで記述されている

構造化定理で示される手続型の処理ならば、英BBCと米マイクロソフト社による「micro:bit(マイクロビット)」や「Scratch(スクラッチ)」を使えば、小学生でも体験的に身につけることができる。高校で手続型言語の処理をいくら極めても、それはいわば「何重にもかっこで挟まれた複雑な足し算引き算を練習する」ようなドリル学習でしかない。

小学生でもScratchなどで手続型の処理は身に付けられる

「大学入試のためのプログラミング」ならば、DNCLだけ学べば点は取れるかもしれない。しかし、高校で「社会に出て使える」プログラミング学習をさせたいなら、オブジェクト指向を取り入れる必要があると私は考えている。

プログラミング基礎の定着とオブジェクト指向の両方を押さえた授業デザインをVBAマクロやC#、Power Automateの活用もアリ

プログラミング教育の目標は「コーディング手法を身につける」ことではない。しかしコーディングをしなければ、プログラミングを理解することはできない。

それは、英語が文法と単語だけを覚えるだけでなく、聞き・話し・読み・書かなければ、本当の意味で英語を理解できないことと同じだ。では、私たち高校の情報教育に携わる者は、いかにして目の前の大学入試に備えつつプログラミングの本質を生徒たちに学ばせればよいだろうか。

「なでしこ」などのプログラミング環境を使うことで、日本語で自然にコードを書くことができ、アルゴリズムに思考を集中させてプログラミングの基礎基本を定着させることができるだろう。それと同時にJavaやC#、C++なども体験させ、オブジェクト指向プログラミングの考え方を学ばせる必要がある。

例えば、高校1年生の「情報Ⅰ」の授業で「なでしこ」などを使った手続型言語を学んだ後で、ExcelのVBAマクロなどを使いオブジェクト指向プログラミングの概念を教える。2年生または3年生では選択科目の「情報Ⅱ」でC#を使った簡単な実用アプリを作るといった授業を展開する、といった授業デザインが考えられる。もしも、学校でMicrosoft 365が使えるなら、マイクロソフトのローコード開発環境であるPower AppsやPower Automateを使って、クラウドやAIを活用するプログラミングも良いだろう。このような授業を経て、大学入学共通テスト直前に再び「なでしこ」を使った試験対策をするのも有効だろう。

ExcelでもVBA(Visual Basic for Applications)という言語を使える(画面左)ほか、最近では最小のコード入力(ローコード)でAIなどクラウドのサービスを利用できるPower AppsやPower Automateという環境(画面右)もある

思い返せば、2003年度に高校の教科「情報」は実施された当時は、「プログラミング教育は必要ない」という風潮が教育界を席巻していた。プログラミング教育の必要性を感じて、細々と授業実践を重ね実践報告をしてきた筆者にとっては、今日のプログラミング教育に対する注目の高さは感無量である。

あらゆるモノづくりにプログラミングが必要な時代になり、高校生にプログラミング力をつけることは高校教員にとって大きな課題であるとともに、日本の未来にとっても重要なことだ。子どもたちには、目先の試験だけに囚われず、プログラミングの本質を理解し、社会で使えるスキルを身に付けていって欲しい。

松本吉生(兵庫県立神戸甲北高等学校 主幹教諭)

高校教員/マイクロソフトMVP,MIEE。文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わり、学籍管理データベースシステムをSQL Serverで構築・運用するなど教育の情報化に貢献。工業高校でプログラミング教育を、総合学科高校で情報教育と情報教育に取り組む。これらの実績により2004年からマイクロソフトMVPを18年連続受賞。「兵庫県優秀教職員表彰」「文部科学大臣優秀教職員表彰」を受賞。