感染者数をシミュレーションした
実践事例
東京都立小平高等学校
小松 一智

実践した学校（前任校）
東京都立石神井高等学校
１単位50分(50分×6時間、土曜授業18回/年)
１学年７クラス
１年必履修「情報の科学」２単位2020（令和2）年度の実践「モデル化とシミュレーション」の題材をどうするか
教科書では・・・• 入場者数／家具の配置／電気料金• グッピーの増加／タンクの水量変化／円周率π／サイコロ／待ち行
列／最大の利益／席替え• ケーキ詰め放題／ラーメン店の利益／最大の売り上げ／待ち行列• 選挙／硬貨投げ／待ち行列

2020（令和2）年度の実践• 2021年（令和3）年1月8日

2回目の緊急事態宣言• 東京の感染者数シミュレーション 十分に減少させるには2021年1月5日 NHK（https://www3.nhk.or.jp/news/html/20210105/k10012798521000.html）• 簡単に計算できる新型コロナの実効再生産指数を提案

鳥取大学（https://www.tottori-u.ac.jp/item/18052.htm）
表計算ソフトでシミュレーションしてみよう

感染者数シミュレーション
モデル化の目的

感染者数の推移を予想する

モデルを数式や図であらわす

鳥取大学の実効再生産指数を活用
Rw8(i)=Nobs(i+8)/<Nobs (i+3)>

モデルを使ってシミュレーションする
https://www3.nhk.or.jp/news/html/20210105/k10012798521000.html
https://www.tottori-u.ac.jp/item/18052.htm

授業スライド実効再生産指数
Rw8(i)=Nobs(i+8)/<Nobs (i+3)>

授業スライドw8
R (i)･･･日付 i日の実効再生産指数
Nobs(i) ･･･日付 i日 の新規感染者数
obs
N (i+8) ･･･i日から8日後の新規感染者数
obs<N (i+3)>･･･i+3日を中心とした週平均

授業スライド実効再生産指数を求める
Rw8(i)=Nobs(i+8)/<Nobs (i+3)>
新規感染者数を予測する
obsobsw8
N (i+8)=<N (i+3)>*R (i)2020（令和2）年度の実践（表計算ソフト）
平均2020（令和2）年度の実践（表計算ソフト）

生徒の感想（毎時間の振り返り）2021（令和3）年度の実践（Python）• 2022（令和4）年度から「情報Ⅰ」が始まる• 大学入試センターからサンプル問題が出た

プログラム（各政党に配分する議席数）• 配列、繰り返し、判断分岐

授業進度
1.

micro:bit

8.

表計算ソフト2.

Python 判断分岐・繰り返し

9.

表計算ソフト シミュレーション

3.

Python 入力

10. 表計算ソフト

4.

Python 乱数

11. 表計算ソフトで行った内容を5.

Python グラフ（繰り返し・配列）

6.

Python WebAPI（郵便番号）7.

Python その他のWebAPIグラフ

Pythonでシミュレーション

12. 感染者数のシミュレーション

授業スライド実効再生産指数を求める
r[i]＝kansen[i+8]／heikin[i+3]新規感染者数を予測する

kansen[i+8]=heikin[i+3]*r[i]授業スライド
課題１ 実効再生産指数を求める

この部分をしっかりと考えよう

生徒に渡したソース
import matplotlib.pyplot as plt

kansen=[556,392,563,748,888,884,949,708,481,856,944,1337,783,814,816,884,1278]
heikin=["-","-","-"]
r=list()for i in range(0,9,1):
goukei=heikin.append(goukei//7)
print(r)plt.plot(r)plt.show()解答例
import matplotlib.pyplot as plt

kansen=[556,392,563,748,888,884,949,708,481,856,944,1337,783,814,816,884,1278]
heikin=["-","-","-"]
r=list()for i in range(0,9,1):
goukei=kansen[i]+kansen[i+1]+kansen[i+2]+kansen[i+3]+kansen[i+4]+kansen[i+5]+kansen[i+6]heikin.append(goukei//7)

r.append(kansen[i+8]/heikin[i+3])
print(r)plt.plot(r)plt.show()課題２ 60日後までの感染者数授業スライド

この部分をしっかりと考えよう

生徒に渡したソース
import matplotlib.pyplot as plt

kansen=[856,944,1337,783,814,816,884,1278]
heikin=["-","-","-"]r=for i in range(0,60,1):

goukei=kansen[i]+kansen[i+1]+kansen[i+2]+kansen[i+3]+kansen[i+4]+kansen[i+5]+kansen[i+6]heikin.append(goukei//7)
print(kansen)

plt.plot(kansen)
plt.show()解答例
import matplotlib.pyplot as plt

kansen=[856,944,1337,783,814,816,884,1278]
heikin=["-","-","-"]
r=1.1
for i in range(0,60,1):

goukei=kansen[i]+kansen[i+1]+kansen[i+2]+kansen[i+3]+kansen[i+4]+kansen[i+5]+kansen[i+6]heikin.append(goukei//7)
kansen.append(int(heikin[i+3]*r))
print(kansen)

plt.plot(kansen)
plt.show()生徒の感想（毎時間の振り返り）生徒の反応（毎時間の振り返り）• 理解度

1:よく理解できた
2:理解できた
3:まぁまぁ理解できた
4:イマイチわからない
5:わからない

• 満足度

5点満点

生徒の反応（毎時間の振り返り）• 理解度

1:よく理解できた
2:理解できた
3:まぁまぁ理解できた
4:イマイチわからない
5:わからない

• 満足度

5点満点

2020年度 2021年度
理解度

2.19

3.28

満足度

4.11

3.58

生徒の反応（毎時間の振り返り）• 理解度

1:よく理解できた
2:理解できた
3:まぁまぁ理解できた
4:イマイチわからない
5:わからない

• 満足度

5点満点

2020年度 2021年度
理解度

2.19

3.28

満足度

4.11

3.58

授業進度
1.

micro:bit

8.

表計算ソフト2.

Python 判断分岐・繰り返し

9.

表計算ソフト シミュレーション3.

Python 入力

10. 表計算ソフト

4.

Python 乱数

11. 表計算ソフトで行った内容を5.

Python グラフ（繰り返し・配列）

6.

Python WebAPI（郵便番号）7.

Python その他のWebAPI

途中で表計算ソフト配列の中身を意識させなかったグラフ

Pythonでシミュレーション

12. 感染者数のシミュレーション

反省点• 表計算ソフトを使った授業があったのでPythonを忘れていた• 配列の中身を意識する内容を扱わなかった• その他いろいろ→ 理解度が下がった
まだまだ工夫する必要あり• HUMAN PICTOGRAM 2.0（https://pictogram2.com/）• 読売オンライン（https://www.yomiuri.co.jp/kyoiku/kyoiku/renaissance/）• NHK（https://www3.nhk.or.jp/news/html/20210105/k10012798521000.html）• 鳥取大学（https://www.tottori-u.ac.jp/item/18052.htm）• 大学入試センター（https://www.dnc.ac.jp/kyotsu/shiken_jouhou/r7ikou.html）