2022年4月より全国の高等学校にて教科「情報Ⅰ」が必履修科目,「情報II」が選択科目として設けられた.また2024年度(2025年1月実施)の大学入学共通テストからは教科「情報」が必須となる.
その中で「プログラミング」については情報Ⅰにも含まれており,大学入学共通テストでの出題も決まっている.ただし取り扱うプログラミング言語の種類については各校にゆだねられている状況である.
(株)プログラミング総合研究所が全国の教員・学校関係者462名を対象に,2024年2~3月に実施した「2025年共通テストに向けた情報Ⅰに関する調査(N=462)」によると,2025年共通テストへの「情報Ⅰ」導入を目前に86.7%が不安であると回答している.
理由の上位3つは「生徒の理解度が共通テストのレベルに達していない」「指導時間の不足」「生徒の理解度が深まっていない」であった(図1).
この結果から,共通テストの試作問題が公開されているものの,初めての実施を前に,どこまで対策を行えばよいか推し量れないことに学校現場は不安を感じていることが分かる.
情報Ⅰの中でも特に「(3)コンピュータとプログラミング」の領域は情報分野独自の数理的領域で指導方法も評価もほかとは異なる面が大きいため,その不安も大きいと考える.そこで本稿ではプログラミングの基礎知識を客観的かつ詳細に測ることができる「プログラミング能力検定」を情報Ⅰにおけるプログラミングの評価の一環として採用している高等学校へのヒアリング結果をまとめ,今後の高等学校現場でのプログラミングの指導,評価の参考としたい.
今回情報Ⅰのプログラミングの評価に用いた「プログラミング能力検定」はプログラミングの基礎知識を客観的かつ詳細に測ることができるテストである.民間/公教育を問わず,教育の現場では「プログラミング教育」という一律の評価が難しい領域において,学習者のモチベーションや,目標設定に課題を持っている.プログラミング能力検定はこういった背景を踏まえ,学習内容に依らずプログラミングの基礎知識を同じ基準で評価するための尺度として設計されており,すでに多くの教育機関で採用されている.
プログラミング能力検定は表1に示すようなCFRP(Common Framework of Reference for Programming Skills)という独自のプログラミングスキル標準に基づいて構成されている.このCFRPを用いることで,プログラミング言語に寄らず,一律の基準でプログラミングの学習・指導・評価を行うことができる.
実際にこのCFRPは多くの学校,プログラミングスクールでも指標として用いられており,教員だけでなく保護者等,大人が子どもたちのプログラミング能力を確認する上でも有効とされている.CFRPでは表1のように6つのレベルでプログラミングの習熟度を定義しており,さらに60以上の概念にプログラミングの基礎知識を細分化している.表2はCFRPよりレベル1のみを抜粋したものである.
プログラミング能力検定はビジュアル言語,JavaScript,Python,Javaの4種類の言語から選択して受験が可能であり,受験レベルはCFRPに準拠し,ビジュアル言語が1から4(4が最高レベル),テキスト言語JavaScript・Python・Javaそれぞれでは1から6(6が最高レベル)で構成される.
出題される問題は,正しいプログラムまたは出力を選択肢から選ぶ「選択式問題」と,提示された使用,あるいは動きに応じてプログラムを組む「実装式問題」で構成され,問題数は20~30問で,合格ラインは正答率60%以上となっている.各問題に配点の大小は設けず,「その生徒が正答した問題の数/出題された問題数」をその生徒の正答率としている.
またプログラミング能力検定は受験後には図2のような詳細な分析結果を伴う「成績表」を発行している.
情報Ⅰにおけるプログラミングの位置づけは,「自然現象や社会現象の問題点を発見し,コンピュータやプログラミングを活用し解決策を考えられるようにする」とされている.よって情報Ⅰの中ではコンピュータの仕組みの理解から指導が行われるが,プログラミングについては「順次実行」「条件分岐」「繰り返し」といった基本要素の理解から始まり,簡単なアルゴリズムの実装までが範囲となる.
しかし,プログラミングは基本的な知識の習得と実際に使いこなせるようになるまでに一定の時間がかかるものと思われるため,情報Ⅰの授業の中で生徒が十分に習得できるのかに疑問がある.
今回プログラミングの指導内容とプログラミング能力検定を用いた評価の様子について8校の高等学校の情報科教員にヒアリングを行い,生徒のプログラミング知識の定着度や興味・意識の変化について確認を行った.以下はその結果である.
本校では情報Ⅰの取り組みの中でプログラミング実習を10時間程度かけて行っている.プログラミング実習の前段階として,Excelの実習を取り入れており,関数の使用を通じて命令文に対する基礎を学んだ.
プログラミングの実施にあたり2点重視したことがあり,1つはゲームなどの具体的な体験を伴う対象と,そのソースコードに触れることである.2つ目に,Google Colaboratory☆1(クラウド環境で動作するPythonの実行環境)等のクラウド環境での学習だけでは図形描画などの複雑な処理を起こせないので,PCローカルでの実践を重視したことである.
初心者が大半なので,導入時期にアルゴロジック(ゲーム感覚でプログラミングを体験するための「課題解決型」ゲームソフト)を課題として設定しておき,各自がゲーム的な課題を取り組む中で,基礎的なアルゴリズムについて学べるようにした.
実習期間全体の序盤では,私がPythonで実装したゲームを体験し,そのソースコードを見ることを行った.
このことは,今後の取り組みの具体的なイメージを持つことにつながり,後に描画ツールで実際に対象を動かす実習では,生徒の反応も良く効果的であったと思う.
また,短期間で,一挙に基礎的なコーディングについて学んだため,実習で取り組んだ表現やアルゴリズムについて忘れないよう,反復学習としてプログラミング能力検定を活用させた.2年生では情報Ⅰの授業は終了しているが,共通テスト対策の課外の一環として,9月から2カ月連続受験した.1年生では11~2月にプログラミングの実習の進度に合わせて適切なレベルで受験した.
1年生は,最終的に授業内でPythonを使った簡単なゲーム作りまで行ったが,表3のようにあわせてプログラミング能力検定で実力を測れたことは生徒からも好評であった.
受験回 | 人数 | 正答率平均 | |
2年生 Pythonレベル1 | 2023年9月 | 147 | 80.9% |
2年生 Pythonレベル2 | 2023年9月 | 100 | 68.2% |
1年生 Pythonレベル1 | 2023年12月 | 277 | 87.9% |
1年生 Pythonレベル2 | 2024年1月 | 274 | 80.4% |
プログル☆2情報(生徒が自分たちの力で取り組むことができるドリル型教材),Progate☆3(オンラインで各種プログラミング言語の学習ができる教材)を用いた授業を試行錯誤しながら実施.
学んだ時間は,プログル4時間,Progate4時間,教科書のプログラム2時間であった.
座学に入った後にシミュレーションのところで2時間だけ再びプログラミングに触れた.同校ではこの程度の時数がプログラミングにかけられる限界である.
問題集だけでは素養が十分身に付かないとの判断から,同校では実習を重視している.
プログラミング能力検定については前学習指導要領の「社会と情報」のときから先行実施をしていたため,3年ほど利用している.当初,新課程の情報Ⅰにプログラミングが取り上げられるという話題がある中で,プログラミング能力検定が情報Ⅰのプログラミングの評価に活用できると知り,利用に至る.表4のように,情報の履修学年である2年生の1年間に2回受験している.1回目はプログラミングの実習が終わった直後に,2回目は期末テストの直前(1回目の検定結果が届いた直後)にテスト対策を兼ねた復習として受験している.また,2回目の受験(再受験)は生徒からの要望でもあった.プロ検の受験は,学習モチベーションの向上,合格者の自信の向上に繋がっている.
受験回 | 人数 | 正答率平均 | |
2年生 ビジュアルレベル1 | 2022年9月 | 193 | 72.3% |
2年生 Pythonレベル1 | 2022年10月 | 200 | 77.2% |
2年生 Pythonレベル1 | 2023年9月 | 194 | 85.0% |
2年生 Pythonレベル2 | 2023年9月 | 195 | 62.0% |
Pythonを用いたプログラミングの授業を展開.理系コースに属する生徒と,文系コースに属する生徒の間で条件分岐や繰り返しを使ったアルゴリズムを組み立てる部分で差が如実に表れた.
プログラミングは得手不得手がほかの部分と比べて色濃く出やすい.
テキスト言語でのコーディングはハードルが高いと感じる生徒も多いため,ブロックの言語によるビジュアルプログラミングも用いている.タブレットやスマートフォンのフリックに慣れている世代で,タイピングにもハードルを感じている.
教科書をすべて終えようとするとプログラミングには2カ月ほどしか割けない.
1年間ずっとプログラミングを学ぶことができれば違うと思われるが,2カ月だけの勉強では厳しく,情報で問題解決や情報を伝えるという部分を4時間分短縮したため,生徒からは不評だった.
生徒に自信を持たせるためにプログラミング能力検定のレベル1を受験させたが,狙いどおりに自信や興味を持ってくれた.高校で興味を持ってくれれば,情報分野の専門学校などに進む進路を選択しそこでもプログラミングを学んでくれるであろうと期待できる.情報Ⅰの限られた時間では難しいと思うが,その道を目指すきっかけになればよい.
ビジュアル言語は小・中学校でも学習していると聞いたので,どれくらい覚えているか,Pythonのレベル1は基礎的なことが確実にできるかを確認したかった(表5).
受験回 | 人数 | 正答率平均 | |
2年生 ビジュアルレベル1 | 2023年7月 | 215 | 61.7% |
2年生 Pythonレベル1 | 2023年10月 | 275 | 61.0% |
「情報Ⅰ」の共通テストを生徒が受験することを考えると,プログラミングは最低でも半年の期間をかけた方が良いと考えられた.さらにアルゴリズムについて理解できていないと共通テストで用いられる擬似言語によるプログラムのトレースができないという仮説のもと,アルゴリズム→Python言語によるコーディング→定期考査→検定→モデル化とシミュレーションに関する学習(PythonとVBA(Visual Basic for Applications:Excel等のMicrosoftのアプリケーションを拡張することができる言語)を用いる)+情報デザイン(HTML・CSS)→検定→擬似言語(Pythonで実装)という流れで学習させた.一授業を一単元ではなく,複数単元を並行して行う.共通テストのプログラミングの出題内容が「配列およびループ処理」が必須なので,検定試験は最低でもレベル2を合格目標とし多くの生徒が合格してきた.課題としては一定数の生徒が,数値と文字列の概念が分からなかったと推測され,その生徒たちは定期考査が白紙解答になってしまったことである.
また情報Ⅰの履修内容をみて,他教科での学習と重複する部分は問題集で自学自習させ,その知識の定着は定期考査やExcelでのシミュレーション等で評価をすることで,あえて「情報でしかできない内容」に重点をおいて指導をした.
プログラムの流れ図を書かせ,そのプログラムの中でループを実行した変数の値は何になるかのトレースをさせてからPythonに取り組ませた.例外のプログラムをただ書き写させるという「写経」での学習はさせず,検定の対策講座問題と教師が用意した問題をPyScripter(Windowsで動作するオープンソースのPython IDE(総合開発環境))で実際に各問いをコーディングして正解を見つけさせた.なぜエラーなのか教師より隣の級友に尋ね,互いに教え合うムードがいつの間にか生徒間にできていた.難しい問題はやはり敬遠するが,次第に友達が分かり自分ができず悔しがる生徒が現れ,昼休みや放課後に課題を仕上げたいと希望する生徒も多かった.プログラミング能力検定はそれまでの学習の定着を確認する目的で実施.共通テストを意識すると最低でもレベル2の合格が必要と考えたため,レベル1と2を段階的に実施した(表6)が,高得点で合格する生徒が多く,普段から勉強が苦手,情報科の定期考査でも成績が振るわない生徒には自信になっていたようだ.また個人的に,もっと上のレベルに挑戦したいと志願し,レベル5と6に合格している生徒も現れた.1年間の最後に「情報で何が身に付いたか」とアンケートを行ったところ「論理的に考えることが何か自分なりに分かり,それが他教科の勉強でも役立った」という感想が多く見られたことに,指導した側も驚いた.
受験回 | 人数 | 正答率平均 | |
1年生 Pythonレベル1 | 2023年10月 | 265 | 92.0% |
1年生 Pythonレベル2 | 2024年1月 | 222 | 88.3% |
プログラミングの指導は授業時間だけでは到底足りないので,夏休みにもPythonによるプログラミングの教材の体験版を用いてプログラミングの学習に取り組ませた.授業ではGoogle colaboratoryを用いて5時間程度プログラミングの基本構造を演習させた.授業の理解度のチェックとして,プログラミング能力検定のレベル2を全員が受検した.情報Ⅰは内容が多岐にわたるため,どの分野も広く浅く学ぶことになってしまうが,いかに多くの体験をさせることにあると考える.
プログラミングは評価点が決めにくい分野であるが,プログラミング能力検定の成績表で詳細に評価点が決められるのは良い面がある(表7).検定という目標があるおかげで,生徒の学習意欲も高まったと考える.
受験回 | 人数 | 正答率平均 | |
1年生 Pythonレベル2 | 2022年10月 | 235 | 58.3% |
1年生 Pythonレベル2 | 2023年9月 | 109 | 77.0% |
プログラミングについては,HTML・CSSでの学習に続けて,基本的なところから時間をかけて実習している.これには指導計画上の時数を超える時間を充てている.プログラミング能力検定の受験に充てる時間を含めるとかなりの時間をプログラミングの学習に充てている.多くの生徒に検定は学習動機にプラスになっていると思われる.
表8のように,最初はレベル1を受験させたが,簡単だったので関数まで学んだあと同じ生徒にレベル2・3・4を受験させた.最終的にレベル5まで挑戦し合格した生徒もおり,進んで学習に取り組んだ生徒が合格していることをうかがわせる.また,レベル3以上のプログラミング能力検定の合格結果については指導要録へ記載している.
受験回 | 人数 | 正答率平均 | |
1年生 Pythonレベル1 | 2023年7月 | 225 | 73.8% |
1年生 Pythonレベル2 | 2023年11月 | 233 | 72.2% |
1年生 Pythonレベル3 | 2023年12月 | 222 | 53.0% |
1年生 Pythonレベル4 | 2024年1月 | 112 | 48.0% |
回数の制限なく生徒に受験させる機会を与えたことが,意欲的な生徒の活動に結びついていた.目標を持ち取り組みができた生徒は,結果として満足度も高く,プログラミング能力検定を実施した価値が十分にあったと考えている.
2年生で情報Ⅰを実施.言語はPythonを,プログラミング環境はGoogle Colaboratoryを用いた.
プログラミングの学習に充てる時間は10~12時間くらいが理想だと考えていたが,初年度は丁寧に実質14時間をプログラミングに時間をとった.アルゴロジックを利用した導入も含め基本構文や基本的な要素(input,print,データ型,if,random,for,while,bool型,リスト)の指導に7時間をかけ,関数やファイルの入出力,探索・整列アルゴリズム,Web APIの紹介などの応用に5時間をかけた.その後,生徒自身によるオリジナルのプログラム作成を冬休み課題とする導入として,フローチャートと状態遷移図の考え方の提示を含め,オリジナルのプログラム作成の取り掛かりまでに2時間をかけた.
プログラミング経験者は生徒全体の約3%であったが,オリジナルのプログラム作成で目標としていたレベルの簡易ゲームやシミュレーションなど身近な事象をプログラムで表現できた生徒は約20%で,基本構文を用いたプログラムを作成できた生徒は85%程度であった.残りの15%程度の生徒がプログラミングに対して苦手意識を持ってしまったので,この点を今後の課題としたい.
プログラミングの習得レベルを測る目的でプログラミング能力検定のレベル2とレベル3を受検させた(表9).
受験回 | 人数 | 正答率平均 | |
2年生 Pythonレベル2 | 2023年9月 | 229 | 86.1% |
2年生 Pythonレベル3 | 2023年11月 | 217 | 59.7% |
レベル2の合格率が90%程度,レベル3の合格率が50%程度であったため,次年度はレベル3の合格率(正答率が60%以上である生徒の割合)を70%以上にする指導の工夫をしたい.目標を具体的な数値で見取れる点は教える側が生徒の状況を把握する際の役に立つ.特に,レベル3には関数が登場するため,関数の理解が不十分であった生徒の合格率が低かったことが結果を分析したことで分かった.どのような指導,どのような教材が生徒の理解促進につながるのかを今後検討したい.
以前の学習指導要領での「社会と情報」のころから授業内で「5分間のアルゴリズム学習」と呼ぶ学習を行っており,授業の冒頭に簡単なフローチャートと生徒に提示してどのような動きをするのか確認していた.
情報Ⅰが始まってからは「変数の考え方」から始まり,数学での「変数」との違いを説明しながら,「文系コースの生徒でもプログラミングは大丈夫」と励ましながら生徒の心理的なハードルを下げていった.
また担当教員がプログラミング能力検定の存在を知ってからは,プログラミング能力検定対策講座の問題の解答をScratchで実際に作る授業や,同対策講座の問題を小テストとして練習させるなどして生徒がすでに学んだことの定着を図った.
表10のように,2022年には,当時の2年生(新3年生),新1,2年生と,プログラミング能力検定レベル4を受験した.
受験回 | 人数 | 正答率平均 | |
2年生 ビジュアルレベル4 | 2022年2月 | 174 | 66.1% |
1年生 ビジュアルレベル4 | 2022年6月 | 223 | 70.8% |
2年生 ビジュアルレベル4 | 2022年6月 | 230 | 69.5% |
プログラミング能力検定はアルゴリズムだけでなく,プログラミングの基本的な知識の定着を確認することができる.生徒へのアンケートでは,95.7%の生徒がプログラミング能力検定によって「アルゴリズムの理解が深まった」と回答.
またプログラミングを好きになった,あるいは,好きにまではならないが,考え方は分かった,等ポジティブな意見が半数以上を占めた.
これまでの学習成果を確認できただけでなく,「学習への意識」が変わり,友達に積極的に教える,教えてもらう場面が増えたのは大きな成果である.
前章で記した各校でのヒアリングで得られた情報Ⅰのプログラミングの指導における共通の課題としては「時数の不足」がある.これはアンケートの結果および,個別の事例から明らかである.情報Ⅰは2単位であり,年間70時間の時数しかない.今後学習指導要領の改訂等で情報Ⅰの時数が増えるまでは継続した課題となるだろう.
その中でプログラミングにかけられる時間は10時間から多くとも14時間程度が現実であり,本来ある程度のまとまった時数をとり自分でコードを書いて定着させていくべきプログラミングの領域においては圧倒的に使える時間が少ないといえる.
この課題の1つの対策としては家庭学習や長期休みなどの活用がある.端末の手配とある程度独学で進めてゆくことが可能な教材があれば実現できるため,今後DXハイスクール等の施策によって高等学校全体でプログラミングの学習環境が整っていくことを期待したい.
また(3)コンピュータとプログラミングの中のシミュレーションなどのほかの単元でプログラミングを使用することもプログラミングに触れる時間を増やすことに繋がる.実際共通テストの中でもプログラミングを直接扱う以外の領域でプログラミングを活用した問題も想定されるため,入試対策という意味でも有効と言えよう.
前章では情報Ⅰの評価の参考としてプログラミング能力検定を活用した事例を紹介した.プログラミング能力検定は「受験者のプログラミング概念の理解度を客観的かつ詳細に測る」ことを目指した試験であり,資格としての側面もありながら,プログラミング学習の成果(=理解度)を可視化することが特徴である.
プログラミングの能にはこれまで共通の指標がなく,最終的なアウトプット(作成したプログラム)を見てもプログラミング概念の理解度まで見通すことは難しい.
また数少ない情報科の担当教員が情報Ⅰを履修する全生徒がつくったプログラムを毎回すべてレビューすることも現実的ではないだろう.
ヒアリングの結果からも,プログラミング能力検定を通してプログラミングの指導・学習の成果が可視化されることによるメリットが挙げられており,実際に習熟度の定量的な把握や評価の一環として活用されていた.
また評価者の視点だけでなく,学習者本人の視点からも,自分の学習成果がしっかりと可視化・認定されることに対してポジティブであるようだ.
ヒアリングの結果から,一様に「生徒のプログラミングへの学習意欲・モチベーションが向上した」ことが分かる.
「検定」という納得のいく指標によって評価されること,また,あえて簡単なレベルから受験することによって,多くの生徒の自信に繋がったと思われる.
また一部の生徒においてはプログラミング能力検定の一定のレベルをクリアした後に次のステップを目指すケースや,クラスメイトに教える側に回るケースもあり,自発的に学習に向かう姿勢にも繋がっている.
情報Ⅰが必修化されて2024年度で3年目に入り,2025年1月の大学入学共通テストからはついに情報Ⅰが必須化される.
今後実際の入試の傾向を受けて情報Ⅰの授業内容や教材へのフィードバックが行われていくことが予想されるが,「プログラミングの概念」自体は基本的に普遍的なものであり,如何に効率よく習得・定着させていくかが引き続きポイントとなるだろう.プログラミング能力検定は言語に依らず,効率的なプログラミングの学習をサポートするものであり,普遍的なツールと言える.
もちろん入試においては,解答するプログラムの仕様を検討する場面の読解力も問われるが,限られた試験時間でプログラムのコードが直接示されている問題を解くには,ある程度コーディングに慣れておくことと,その前提となるプログラミングの基礎知識の定着が欠かせない.
できれば高等学校においては早い段階からプログラミングに触れる機会を作り,また生徒の苦手意識を少しでも軽減するような仕掛けを取り入れていきたい.その際にもプログラミング能力検定をうまく活用し,生徒のモチベーション向上に役立てていただけることを筆者らは希望している.
情報Ⅰの範囲はプログラミング能力検定のレベル5に相当すると想定すると,今回の実践結果を見ると,レベル2,3が多く,ここからも情報Ⅰの授業の中で十分にプログラミングの力を付けられていないことが示唆される.情報科教員のヒアリングでは十分な原因を特定できていないが,第一に,現在の高校生は,小中での十分なプログラミング教育の過程を経ておらず,基礎的な知識としての蓄積が少ない可能性がある.第二に,現在の高等学校の教育科目で情報Ⅰを理解するために必要な数学教科の選択科目により理解の差が生じ得る関係があるのではないかと推察している.情報Ⅰは,2022年4月に必履修科目として始まったばかりであり,今回の調査結果も限定的である.筆者らは,これからもプログラミング能力検定を活用した研究活動を通じプログラミング教育の実践に貢献してゆくことを考えている.
本稿の文章校閲などについては坂東宏和先生(獨協医科大学)および和田勉先生(長野大学)の協力を得た.
飯坂正樹(正会員)
iisaka@programming-ri.com
プログラミング能力検定協会代表,本会ジュニア会員サポーター,国立大学法人長岡技術科学大学客員准教授.国内外でプログラミング教育の普及に従事し,大学ではプログラミングの講義も行う.
五十嵐智生(正会員)
tom.igarashi@kyndryl.com
外資系企業でITコンサルタントとして勤務,本会認定技術者(CITP)情報教育支援SIG部会に所属し小中学校,高校,大学等への教育支援に取り組んでいる.
会員種別ごとに入会方法やサービスが異なりますので、該当する会員項目を参照してください。