高等学校 情報

高等学校 情報

「プログラミング」(第1学年)
2022.11.24
高等学校 情報 <No.007>
「プログラミング」(第1学年)
東奥義塾高等学校 井上嘉名芽

1.はじめに

 本校は青森県弘前市にある私立の高等学校で、2022年に創立150周年を迎えた。全校生徒は630名程度で、それぞれの卒業後の進路に合わせ、3つのコースに分かれている。「情報Ⅰ」は3コースとも1年生で履修している。
 新学習指導要領の実施に伴い、「社会と情報」から「情報Ⅰ」へと科目が移行したが、内容が大きく変わることから、思い切ってそれまでの一斉授業をなくし、新しい指導計画を立てることにした。
 一斉授業をなくすことで、生徒の個別最適化が図られるのと同時に、自ら学ぶ力が育まれると考えた。年間の指導は次のような構成になっている。

 年間を通じて、まず基本となるのが、教科書の記述内容をまとめる活動である。単にまとめるのではなく、発表するまでのパフォーマンス課題として設定している。教員側は先々まで取り組める課題をあらかじめ用意しておき、生徒は自分のペースで用意された課題に取り組む。
 生徒はまず出席番号に基づいて指定された教科書のページ(単元)の「まとめ」に取り組む。最初の「まとめ」は、『ロイロノート・スクール』(*1)を用いて10枚の規定枚数でプレゼン資料を作成する。

 ロイロノートでの提出は仮提出と位置づけ、本提出は『Google Classroom』(無料)で行う。本提出にあたっては、課題と一緒にルーブリックを配信し、ロイロノートで作成した資料をルーブリックに基づいて改善する。期限内にルーブリックで示された要件を満たす内容が作成できれば満点とし、修正が必要な場合は限定コメントでアドバイスをし、再提出させる。ルーブリックによって、生徒たちは何をすればよいかが理解できる。換言すれば、自分に不足している力が何であるかが明らかになる。個人が直面する課題はさまざまだが、自分に足りないことが明らかなため、生徒は課題を解消しようと自発的に学習に向き合う。
 生徒たちはこの学習に一年を通じて各自が取り組む。各課題の提出期間は1か月程度と十分な期間を設けており、生徒は自分のペースで進めることができるように配慮している。さらに、後述するが、この学習と併行して、個人あるいはグループでさまざまな課題に適宜取り組む。
 なお、教師は、授業中に机間巡視を行い、個別に質問に答えて生徒の疑問を解消させる。ただし、だんだん生徒の情報検索能力が高くなっていくため、日を追うごとに質問が少なくなる傾向がある。
 その一方で、教科書の内容によっては、自力での学習がむずかしい場合もある。その場合は、教科書の「まとめ」をするまえに反転授業形式で動画を視聴させている。動画は『Edpuzzle』(*2)を使用し、Google Classroomで配信する。Edpuzzleは『YouTube』にある教育教材を好みの箇所でカットすることができる。また、生徒がどの程度、学習に取り組んでいるかがパーセンテージで表示されるため、学習への取り組み状況に応じて、個人に合わせた声がけもできる。さらに、Edpuzzle経由でYouTubeの動画を観る場合は「早送り」できないように設定できるため、じっくり視聴してもらいたいときにも好都合である。そのうえ、問題も挿入でき、その解答を点数化することもできる。

 生徒たちはこの教科書のまとめ課題を基本学習とし、併行してさまざまな課題に取り組む。たとえば、情報デザインの単元として、本校が所有する白黒写真を『Adobe Photoshop』(有料)のAI機能を利用してカラー化する課題や、情報通信ネットワークの単元では、カテゴリ5eのLANケーブル作成課題(▶生徒用の説明動画 )などに取り組む。そのため、ある時点でクラスを見渡すと、教科書のまとめを行う生徒もいれば、情報デザイン単元の課題に取り組む生徒もいるし、プログラミング単元の課題に取り組む生徒もおり、それぞれがまったく異なる課題に取り組んでいる。

▼『Adobe Photoshop』で白黒写真をカラー化(左:元写真、右:カラー化した画像)

▼LANケーブル作成課題

※Photoshopでカラー化した画像は、『Adobe Express』(小中高は無料)の機能を用いてWebページを作成し、一般公開している。 
『東奥義塾高等学校 創立150周年記念』

 さて、今回取り上げるのはプログラミングの単元になる。
 プログラミング教育は、2020年度から小学校で、’21年度から中学校、’22年度から高等学校ではじまった。開始当初の高校生は、まったくといってよいほどプログラミング教育を受けておらず、教科書に載っている内容をすぐに実施しにくい状況であった。プログラミングは、とくに言語の規則性を理解する必要があるが、生徒が理解するペースは一律ではない。一斉授業であれば十分な時間をとることができず、理解が遅い生徒は理解できないまま授業が進んでしまう。プログラミングの単元は個別最適化がとくに重要な単元であり、この実現にはe-ラーニングの導入が大いに役立った。
 同単元の導入では、Googleが提供しているブラウザベースの『Blockly Games 』(無料)や『MOONBlock 』(無料)のビジュアルプログラミングを利用し、プログラミング的思考を身につけさせようと試みた。Blockly Gamesは、理解到達段階を丁寧に踏んだ課題が各種用意されている。とくに、課題『迷路』は「順次処理」、「分岐処理」、「反復処理」の3つの組み合わせでプログラムが実現できることを理解させるのに最適である。
 もう一方のMOONBlockは、Scratchとよく似ているが、ゲームを作ることに特化しており、簡単にゲームを作ることができる。生徒たちには「ゲームクリエーターになろう」と投げかけ、プログラミングの楽しさを知ってもらうことも狙いとしている。
 これらの取り組みでビジュアルプログラミングにある程度慣れたところで、実際のプログラム言語へと移行する。
 このとき、本校では『Progate』(*3)を利用している。はじめに情報デザインの学習を趣旨としてマークアップ言語である『HTML&CSS』を実施し、テキストを使った記述に慣れさせてからプログラム言語『Python』に取り組む。Progateの最大の特長は、自分が記述した文字列と模範解答の文字列を簡単に比較でき、間違っているところはハイライトで表示されるところである。生徒は自分の間違いをすぐに確認できるため、大部分の生徒がつまずくことなく自分のペースで進めることができる。

*1 ロイロノート・スクール……教員のみで使用する場合は無料。職員会議等の職員間での情報共有や電子黒板での教材提示も無料で使用可能。生徒用端末での使用は、生徒数による課金制。
*2 Edpuzzle……動画は20コンテンツまで無料で作成できる。本数制限なしの場合は有料になる。
*3 Progate……学校(小中高)として契約することで、原則無料で2つの言語まで進捗管理機能付きで登録が可能。

2.単元の目標

【知識及び技能】

  • プログラミングを学ぶことによって、コンピュータを活用する方法について理解し、プログラムの基本構造を理解したうえで、簡単なプログラムを作成する技能を身に付ける。

【思考力・判断力・表現力等】

  • 社会や自然にある事象を、プログラミングを手段として用いることで表現できる。

【学びに向かう力・人間性等】

  • 自ら作成したプログラムや既存のプログラムの課題を発見し、自分が作成したプログラムの改善につなげる態度を養う。

3.単元の評価規準

ア 知識・技能

イ 思考・判断・表現

ウ 主体的に学習に
取り組む態度

・アルゴリズムの基本構造について理解している。

・プログラムの構成要素である変数、データ型、演算の意味や種類を理解している。

・基本構造を組み合わせてアルゴリズムを構造化することができる。

・演算例をもとにして、プログラミングの構成要素について考え、正しい結果を出力することができる。

・処理内容を自分で考え、アルゴリズムを構造化、可視化しようとしている。

・既存のプログラムを改良することで、プログラミングの理解を深めようとしている。

4.単元の指導と評価の計画

(ア:知識・技能/イ:思考・判断・表現/ウ:主体的に学習に取り組む態度)

 Blockly Games、MOONBlockといったビジュアルプログラミングは、小中学校でプログラミング教育を受けてこなかったときの橋渡し教材として位置づけている。逆に、小中で十分にプログラミングを学習しているときは、Progate(HTML & CSSやPythonなど)からスタートしてもまったく問題はないと考える。
 また、本校では、Microsoftの『マインクラフト』(有料)も導入している。こちらは『Microsoft MakeCode』(無料)を利用してマインクラフトのエージェントにブロックを置かせるプログラムを作成させている。MakeCodeでは、ブロックで作成したコードを、ボタン1つでPythonのコードに変換、表示できる。マインクラフトは大半の生徒にとって馴染みがあることから、テキスト型プログラミング言語に興味を持たせるためのしかけとしても有効である。なお、このとき本校では青森県津軽に古くから伝わる伝統芸能の「こぎん刺し」の模様を表現することを課題に設定している。場合によっては、家庭科で作成したオリジナルデザインを情報の授業でプログラミングしてもよいだろう。
<参考>こぎん刺し(かちゃらず) https://www.youtube.com/watch?v=1x-tbezaT5k
<参考>こぎん刺し(石畳) https://www.youtube.com/watch?v=UQ1L9k6g-G8

学習活動・内容

評価の観点

評価の方法

1

・Google Blockly Games (ビジュアルプログラミング)

行動観察
成果物
https://www.youtube.com/playlist?list=PLgMXw6a_Zkz6zhrrnwrbde2wF6GsxMFgF

2

MOONBlock (ビジュアルプログラミング)

行動観察
成果物
https://www.youtube.com/watch?v=2OnErvwct18

3
|
10

Progate (HTML & CSS、Python)
※HTML & CSSとPythonを実施する。HTMLとCSSについては教科書「2章 コミュニケーションと情報デザイン」で事前に座学で学習する。その後「3章 コンピュータとプログラミング」としてProgate で再度取り組む。

行動観察
成果物

5.単元の流れ

【1限目】『Blockly Games』

時間

学習活動・内容

指導上の留意点

導入
5分

・アルゴリズムの基本構造について理解する。
・『Blockly Games』内にある課題「パズル」を選択しビジュアルプログラミングの操作について理解する。

・ブラウザベースのため端末に依存しないことを確認する。

展開
40分

・課題『迷路』に取り組み、「順次構造」、「分岐構造」、「反復構造」の3つの組み合わせでプログラムが実現できることを理解する。
・クリアすると表示される「JavaScript」を確認し、ビジュアルプログラミングのブロックがソースコードとしてどのように表現されるかを理解する。

・「迷路」の後半は比較的難しいため、事前に教師側が正解動画を収録し用意しておくと、生徒の理解に役立つ。

まとめ
5分

・アルゴリズムの基本構造について振り返る。

・「順次構造」、「分岐構造」、「反復構造」の3つの組み合わせでプログラムが実現できることを理解する。

【2限目】『MOONBlock』

時間

学習活動・内容

指導上の留意点

導入
5分

・基本操作について理解する。

・ブラウザベースのため端末に依存しないことを確認する。

展開
40分

・見本の「くまさんのりんごがりゲーム」を作成する。
※このゲームは、キャラクター(くまさん)を動かし、画面上にたくさん表示されたリンゴに触れると点数が加算されるという単純なゲームである。
・見本を作成できたら、各自がプログラミングを改変する。

・見本を作成後、プログラミングを改変し、どのように変化するかを体験させ、プログラムの構成を理解させる。

まとめ
5分

・プログラムを改変する際、一箇所の変更だけでなく関連する複数箇所の変更が必要になることを確認する。

・「順次構造」、「分岐構造」、「反復構造」の3つの組み合わせでプログラムが実現できることを確認する。

【3~10限目】「HTML & CSS」と「Python」

時間

学習活動・内容

指導上の留意点

8時間
程度

・座学として一度学習した「HTML & CSS」をProgateで実施する。
・Progateで「Python」を実施する。

・途中で困ったら「答えをみる」をクリックし「自分のコードと比べてみる」を押し、模範解答と自分のコードを比較させる。

6.まとめ

 一斉授業をしないためには、年間授業計画をしっかり立てる必要がある。初年度は、年間を通じた課題をあらかじめ用意しておく必要があり、準備に大変時間がかかるが、一度作成さえすれば、その後は部分的にブラッシュアップすればよいのでむしろ負担は少ない。
 理解の早い生徒は次々に課題を進めることができる。フォローする教員は年間すべての学習内容を頭に入れておく必要があるが、先々まで自発的に学習するその様子を見ると、一斉授業を止めたことの成果を強く感じることができた。
 とくに、個別最適化においてe-ラーニングの利用は大変有効である。とりわけプログラミングの単元ではそれが顕著であり、たとえばProgateでは、学習の進捗状況を教員側で管理できる。そのため、長期にわたる課題でも、学習が遅れている生徒を見逃すことがなく、適切なタイミングで声がけできた。そのうえ、学校として同サービスを契約しており、履修年だけでなく、2年生に進級しても、在学中はいつでも自分のペースでプログラミング言語の学習に取り組める環境を用意できた。Progateでは、こちらが授業計画に盛り込んだHTML & CSSとPythonだけでなく、JavaScriptやRuby、SQL、PHP、Javaなど16の言語を学ぶことができる。理解の早い生徒がHTML & CSSとPython以外の言語を学習する様子を見られたのも、同サービスを導入した大きな成果だったと考える。
 Progateにかぎらず、Blockly GamesもMOONBlockも、同様にそれぞれに特長がある。生徒の学習到達に応じて活用すれば非常に有用であり、個別最適化をはかるうえでこれらのe-ラーニングの導入は非常に有効だったと考えている。