文部科学省大学入学者選抜改革推進委託事業「情報学的アプローチによる「情報科」大学入学者選抜における評価手法の研究開発」
第3回シンポジウム「2025年度 高校教科「情報」入試を考える -思考力・判断力・表現力を評価する試験問題の作問方法- 」講演
シミュレーション
東京大学 萩谷昌己先生
情報I「コンピュータとプログラミング」に登場する「シミュレーション」
私からは「シミュレーション」についてご説明します。学習指導要領では、こちらのスライドのように、「情報I」の「(3)コンピュータとプログラミング」の一部に登場します。
下図が我々が作ったルーブリックの全体像です。ルーブリックの各段階については、このあと具体的に説明していきます。
<レベル1>モデルとシミュレーションは与えられている
まずレベル1-1と1-2では、モデルとシミュレーションの方法は与えられているものとします。
1-1は、「与えられたモデルとそのシミュレーション方法に関する質問に答えられる」となっています。例えば、モデルの変数を特定できる、変数の値を与える・更新する式の記述を理解して、その式をどのように計算するのかということがわかるというレベルです。
1-2はもう少し進んで、「与えられたモデルを与えられたシミュレーション方法によって、小さい例に対して手計算したり、表計算などによって実行したりすることができる」というレベルです。これによって、実際にシミュレーションを実行することができるというのが1-2になります。
<レベル2>モデルやシミュレーションの方法を理解できていることが前提となる
2-1と2-2は、基本的にモデルやシミュレーションの方法を理解していることが前提になります。2-1は「与えられたモデルとそのシミュレーション方法について説明できる」。これは当然理解していて、それを説明できるというそういうレベルです。より具体的には、モデル化された対象や現象の記述を理解していて、その理解を説明できる。さらにモデルの変数および変数に対する式の意味について説明できる。ここになると式を計算できるだけでなく、その式がどのような現象に則してしてどういう意味を持っているかということを理解して説明できるというレベルになります。
2の2は、「与えられたモデルもしくはシミュレーション方法を指示された目的に沿うように修正できる」というものです。そこまで理解しているのであれば多少は変更できるだろうという考えに基づいています。より具体的には、モデル化された対象や現象に照らして、指示された指示された目的の記述を理解できる。そして、それに従って修正すべき変数や式を特定して、指示された目的に沿うように修正できるというレベルになります。
ここまでの分野で、レベル2-1と2-2で少しギャップがあるというご指摘がありました。確かに2-2では修正するということによって、そのモデルに対してある種の改変をするという修正が必要になるということで、少しレベルが上がっているように思われますが、基本的には第2レベルは理解を問うているというレベルとして設定されています。
そして問題を作る立場から言うと、実は2-1が難しいです。要は、理解しているかどうかを問うというのはとても難しくて、どのように問題を作ればよいかというのは、いまだに決めきれていない部分があります。それに対して2-2は、修正の目的を与えるわけですから、これは比較的易しくて、正しく修正できたかを確認すればよいわけです。
<レベル3>モデルとシミュレーションを自分で設計して作り、実行する
レベル3は、「与えられた目的に沿ってモデルを構築し、そのシミュレーションを設計して実行できる」というレベルです。今までは、モデルとシミュレーション方法が与えられていましたが、ここではモデルとシミュレーション方法を自分で設計して作らせる、実行させるというレベルになります。
<レベル4>シミュレーションの精度を上げる、効率化ができる
レベル4は、「与えられた尺度でよりよいモデルを構築したり、よりよいシミュレーション方法を設計したりすることができる」ということです。特定の尺度を持って改善することができることの典型的な例は、シミュレーションの精度を上げたり、効率をよくしたりするといったことになると思います。
細菌増殖のロジスティックモデルをもとにレベル1~レベル4の問題を作る
ここからが具体的な問題です。今回は問題自体は一つで、各レベルでどのような問題を作ることができるか、ということをやってみました。シミュレーションの適当な例というのは、そんなにいろいろあるわけではないので、細菌の増殖のロジスティックモデルから例を取っています。
「はぎや先生は冷蔵庫に入れ忘れた牛乳を1日後に飲んで、おなかをこわしてしまいました。そこで細菌の増殖のモデルについて調べてみました」ということで、こちらのスライドにモデルの条件が書かれています。
情報の問題としては易しくても数学で解くのは難しいという例も
こちらがレベル1-1で、与えられたモデルとそのシミュレーション方法に関する質問に答えさせる問題です。ここにあるように、細菌数をN、上限をM(=1億個)として、現在の細菌数Nに対して、1時間後の細菌数を産出する式を与えます。モデルもシミュレーション方法も与えてしまうということです。
ここでは、2時間後の細菌数を求める式を書いてくださいという問題を出しています。これは式の意味をわかっていれば解ける問題ですが、実際にやってみるとちょっと面倒な式になって、解くのはけっこう難しいかなという気もします。情報の問題としては易しくても、数学として解くのは難しいということです。
1-2は、実際にシミュレーションを実行させるというレベルなので、例えば手計算をやらせたり、エクセルの式を書かせて実際にシミュレーションをさせたり、という問題になります。
これを実際にやってみると、下図のようになります。ちょうど21時間ぐらいで最大限になって、24時間ならおなかをこわすけれど、8時間ぐらいだと大丈夫ということがよくわかります。
レベル2はモデルとシミュレーションの理解を問うものですが、先ほど言ったように、この理解を問うというのがなかなか難しいものです。ここでは、モデルとシミュレーション方法に関する説明文を与えて、それを穴埋めさせることによって、きちんと理解しているかどうかを問うという問題になっています。
レベル2-2はモデルとシミュレーションを修正させるということです。ここでは細胞分裂によって細胞が増える一方で、1時間で現在生きている細胞の4分の1が死ぬと仮定して、与えられたモデルを変更してください、という問題です。だから、これはモデルとシミュレーションが分かっていれば、与えられた式に「-N/4(マイナス4分のN)」という項を加えることはできるでしょう、いうことです。
次のレベル3は割に易しくて、基本的なモデルの考え方を与えて実際にモデルを構築させ、シミュレーションさせるということになります。あまり詳しく書くとほとんどモデルを与えてしまうというになるので、大ざっぱに基本的な考え方を与えて、1時間ごとの細菌数を予想するモデルを構築してシミュレーション方法を設計してくださいという問題になります
最後の第4レベルはいろいろな可能性がありますが、一応作ってみたのは時間の変化を細かくして、細菌数の変化を滑らかにしてください、という問題です。1分間で分裂する細菌の割合をcとすると、1分後に細菌数は(1+c)倍になるということを使って1時間ごとでなく分ごとのシミュレーションを行ってください、というような問題を作ってみました。これは高校レベルとしては、ちょっと難しいかもしれません。
以上は精度を上げるという問題でした。もう一つはモデルを一般化するという方法の改善で、ここでは温度のパラメーターを入れるという問題になっています。1分間に細胞分裂する細菌の割合が、現在の温度Tと最低温度Tminとの差の二乗に比例するモデルを考えてください、という問題を考えてみました。
細菌の増殖については私たちは専門ではありませんが、このようなモデルがある、ということで作問の参考にいたしました。
参考文献: 「Excelで学ぶ食品微生物学―増殖・死滅の数学モデル予測」藤川浩(オーム社,2015)
文部科学省大学入学者選抜改革推進委託事業「情報学的アプローチによる「情報科」大学入学者選抜における評価手法の研究開発」
第3回シンポジウム「2025年度 高校教科「情報」入試を考える -思考力・判断力・表現力を評価する試験問題の作問方法- 」講演より