第13回全国高等学校情報教育研究会全国大会（オンライン大会）
8月16日

教えないアルゴリズム
プログラミング教育の実践
プログラミング教育

情報I が迫りくる
プログラミングやらなっちゃ普通の高校⽣に、どうやって配列やソートを教えるの???

パワポ100%+ Amazon Poly 音声合成

関東第一高等学校
千葉県⽴⽣浜高等学校
情報科非常勤講師 太田 剛

1

説明内容
1

はじめに:目的2 プログラミング教育の難しさ
3 問題点への対応
4

2020年度⽤に改良した教材

5

想定授業方法6 今後の課題2

はじめに: 目的3

はじめに: 目的
プログラミングが得意でない先⽣でも授業ができる。
普通の学校の⽣徒で、プログラミング経験が無くても検索ぐらいのアルゴリズムのプログラムを作成できる。
⽣徒が主体的、対話的に楽しんでプログラミングを学習する。

4

プログラミング教育の難しさ

5現状の高校でのプログラミング教育の実践
Python/JavaScript等で分岐や繰り返しを学習

アンプラグドで並び替えなどのアルゴリズムを学習

データサイエンスやWebアプリの実⽤プログラム開発

ロボットやフィジカルな装置を制御・計測

根本的に、検索や並び替え等のアルゴリズムをプログラミングしているという実践はあまりないみたい6

高校プログラミングの問題1: 小中高の連携の欠如
高校中学校・双方向性のあるコンテンツ
小学校
・計測・制御の・プログラミング的思考 プログラミング・プログラミングの体験 ・順次・分岐・繰り返し

・計測・制御システム
・アルゴリズム・シミュレーション
・データサイエンス

7

高校プログラミングの問題2: 論理的な難しさ
情報関連の学部・学科においてアルゴリズムのプログラミング教育は⻑年⾏われてきました。
その経験から配列・添え字による配列の操作・⼆重ループ等が学⽣にとって難しいものと認識されています。

8根本的な問題: プログラミングの認知的ギャップ

下駄箱には数字は入れません。

9問題点の対応
1 2018年度の実践

3 2020年度の実践準備変数の可視化やトレースなど考慮
個人ペースの協働学習
アルゴリズムを中心に
Scratchを使⽤

簡易的なタンジブル変数
初歩内容の充実
より細かな指示の追加
動画解説の追加

2 2019年度の実践
プログラミングの認知過程に注目タンジブルな変数の利⽤
適切なステップ
フローチャートとプログラムの対応

10対応1: チェックシートに使って個人ペースの学習

教材 ・Web上の指示書
・課題を示したチェックリスト
・変数リストシート11対応2: ビジュアル言語のScratchの利⽤・ビジュアル言語なので使い易い・変数の内容を⾒る(可視化)ことができる(大学等の教授法として可視化は有効)でも、Scratchなんか言語じゃないという人も学習指導要領解説での言語要件
アルゴリズムをプログラムとして表現
ライブラリや APIを利⽤プログラムを分割して構造化/関数作成
ツールやアプリケーションを開発
カメラやセンサ及びアクチュエータを利⽤
画像認識や音声認識及び人⼯知能等利⽤

〇〇
△
△〇〇
12

対応3: タンジブル(手で操作できる)な変数環境の利⽤

2019年度アンプラクドとプログラミングの連携

2020年度13

対応4: フローチャートをヒントとして活⽤
タンジブルな変数、フローチャート，プログラムの対応の明確化プログラムとタンジブルな変数の対応

フローチャートとプログラムの対応
14

対応5: 考えるスモールステップ
今回課題は、難しかったと思う。

今回の課題が出来た時は、うれしかったと思う。
0%
5:そう思う4:

20%

40%3:どちらでもない60%
2:80% 100%

1: 思わない15

考えるスモールステップ
何とか出来たよ!
課題が出来ないよ!

課題のステップが大きい場合
16

考えるスモールステップ
指示の通りやったら出来たけど、なんで出来たかわかりません

課題のステップが小さい場合
17

考えるスモールステップ
難しかった
けど出来た!

課題のステップがうまく設定された
場合
18

2020年度⽤に改良した教材

19

基礎的なプログラミング方法の充実

四則演算やデータ入⼒に関する説明や課題を充実させる

20

基礎からアルゴリズムの比較までの幅広い内容

No
こまでは、 1やってみ2よう。
3

ここまで、できたらすごい。
もっと、やろう内容
アルゴリズムとプログラム:学習の進め方
準備運動1: Scratchの四則演算準備運動2: ネコに自分の名前を言わせる

5

課題1: 入⼒した2個の数で四則演算

78
9

課題2: 合格不合格判断
課題3: 3つの数の合計
課題4: 正三角形の判断

15

課題5: 2からXまでの偶数の合計

232425

課題6: リストの中から数を探す
課題7: リストの中の一番小さい数を⾒つける
課題8: 一番小さい数を配列の先頭に入れ替える

27
28
29

課題9: 数の並び替え
発展課題1: 他の並び替えの方法
発展課題2: 並び替えの方法の処理速度の違い

想定6時間の授業の目標として検索プログラムの作成できる⽣徒は、異なるアルゴリズム
での処理時間の比較まで
21

ヒントが少なく考える課題

プログラムを試⾏錯誤しながらつくる場面
友達に聞いたり、相談する場面

22

フローチャートとプログラムの対応

初めの方の課題は、全部のフローチャートをヒントとして提示

後の方の課題では、重要な部分は空白のフローチャー
トをヒントとして提示
23

タンジブルな変数での説明

変数シートに対応した説明

24

リストとその操作の充実した内容
No
16
17
18
19
20
21
22
23

内容
たくさんの数の合計の説明
打ち込み4: リストを使った3つの数の合計
打ち込み5: リストを使った5つの数の合計
リストと繰り返し
最後目標の課題の説明:数の並び替え(休憩: おみくじ)
リストに数を設定する方法
課題6: リストの中から数を探す

リストと、その操作について動画で説明
25

段階的な並び替えのプログラムの開発

No
内容
23 課題6: リストの中から数を探す
24 課題7: リストの中の一番小さい数を見つける
25 課題8: 一番小さい数を配列の先頭に入れ替える
26 打ち込み6: 二重繰り返しに挑戦
27 課題9: 数の並び替え

並び替えを構成するプログラム要素を順番に学習
26

想定授業方法27

学習時間と他のScratchを使⽤した単元との関係

ゆるキャラ作り(2時限)
・IDパスワード・デジタルデータ

面白プログラミング(2〜3時限)・情報デザイン・プログラミング入門

スマホアプリ開発(6〜8時限)・情報デザイン・ペーパー
プロトタイピング

おしえないアルゴリズムプログラミング教育(6時限)28

⽣徒は主体的で対話的な学習
⼆つの協働学習・授業中歩き回っていいです。
・分からないところがあったら、出来ている友達⾒つけて聞いてみてください。
・困っている友達がいたら助けてあげてください

・好きな席に座っていいです。
-> ペアプログラミング的に
例: サッカー部 ⼆人で協働して課題を解くこチーム競技とが自然発⽣。

例: 陸上部
基本、個人競技
授業はこっちでいきます。

29

ファシリテータとしての教師の役割

従来の一⻫教授型

支援で一番難しいのは、論理的に⼗分把握できない⽣徒を⾒つけ出し、タンジブルな変数などを使って教えたり、考えることを勧める。

・支援の必要な⽣徒に対応する・教えすぎないぐらいが丁度いいかも。

プグラミングの経験が少ない先⽣は、1年目は⽣徒のいっしょに勉強するぐらいの気持ちがいいかもしれません。
30

今後の課題 2020年度教材の授業での使⽤- ⽣徒の到達度と難易度の確認- フローチャートの有効性の確認- タンジブルな変数の有効性の確認
2020年度実践結果による、さらなる教材の改良。

31

補足情報
2019年度に使⽤した教材等は下記のサイトからダウンロードできます。
なお、教材は暫定版公開中で、動画の部分は2020年8月中に作成予定です。
高校「情報科」の教材・指導案作ってみました。
http://beyondbb.jp/

高校 情報科 教材 検索
Unit05 アルゴリズムとプログラム
32