初等・中等教育におけるプログラミングのための教材開発
帝塚山学院大学

大成学院大学帝塚山学院大学

喜家村 奨（発表者）

西野 和典

稲川 孝司

NPO法人 学習開発研究所

NPO法人 学習開発研究所

三輪 吉和

高橋 参吉

本研究の目的• 初等・中等教育の連続性を考慮したプログラミング教材をmicro:bitを利用して，小学校（算数，理科，総合的な学習の時間）の教材，中学校技術・家庭科及び高校情報科の教材を開発する※小学校の教材については、Scratchを用いた教材も作成

今まで作成してきた教材の概要

今年度の活動• 小学校 総合学習、中学校 技術・家庭科のためのプログラミング教材の作成• Scratchやmicro:bitを用いたプログラミング指導者への講習• 今まで作成してきた教材のオンデマンド化

今年度の教材作成と実施研修• micro:bitを利用した計測・制御プログラミング教材• 第16回 情報教育合同研究会 報告「micro:bitによるフルカラーLEDの制御―シミュレータを使ったプログラミング実習―」
稲川 孝司 帝塚山学院大学• 第16回 情報教育合同研究会 ワークショップ（オンライン）• 本全国大会発表論文「遠隔による計測・制御プログラミングの実習授業」
稲川 孝司 帝塚山学院大学• 京都府教員研修• 第16回 情報教育合同研究会 発表論文
「コロナ禍における大学での遠隔教育および教育センターでの対面研修」
高橋参吉 NPO法人 学習開発研究所

micro:bitによるフルカラーLEDの制御教材

光の３原色についての説明なども可能

MakeCode Editorのシミュレータ上でもフルカラーLEDは表示される

2020年 京都府教員研修の内容

プログラミング的思考を重視した教材の開発

問題提起
例えば、Scratchやmicro:bitで、自動販売機のプログラムを作成することを考える• このとき、自動販売機の振る舞いを文章で表現するように学習者に求めると、学習者はそれを記述することができるだろう。しかし、下記のようなScratchの自動販売機のプログラムを書いてみなさいというと、なかなか上手にプログラムを記述することは難しい・・・
システムの振る舞いを文章で表すことと、それをプログラム化することにはギャップがある。
• 試行錯誤しながら、記号を並び替えて、改善していくこともプログラミング的思考を意識した１つのプローチかもしれないが、他に方法はないか？
⇒ モデルリングと段階的詳細化について考えるプログラムの作成過程• 対象世界の問題をコンピュータで処理するためには、対象をモデル化する必要がある。
• 対象世界の問題を吟味し、問題の抽象化を図り、設計と呼ばれる段階を経てプログラムを書く。

対象世界

モデル化

モデル1

モデルn
段階的詳細化プログラム

自動販売機と環境の相互作用を考える• モデルを作成するためには、まず、対象となるシステムとその環境との相互作用について明らかにする必要がある。

相互作用

客

飲み物の自動販売機

モデリングの手順• モデリングをどのような手順で行えばいいか。自動販売機のような状態遷移機械のモデリングは以下のような手順で行うことができる。
またモデルは状態遷移図で表すことができる。
• システムとその環境との相互作用（イベント）を選び出す。
• イベントを入力と出力分ける。
• イベント、システムの動作を抽象化する。
• イベントをシステムの動作する順に並べ、図示する。

客と自動販売機の相互作用の抽出例
購入可能LEDが点灯する

1000円札を入れる

購入ボタンを押す
お金を入れる
商品が出てくる

ジュースを買うボタンを押す
100円を入れる

ジュースが出てくる

おつりがでてくる
どれを買うか考える

品切れLEDが点灯する
返却レバーを押す
お金が戻ってくる商品を見る

投入金額が表示される抽出したイベントを入力と出力に分ける• 次に選び出しされた、情報を入力と出力に分けます。またこのとき、相互作用と言えないような事柄は削除する。
自動販売機からの出力
品切れLEDが点灯する

自動販売機への入力
1000円札を入れる
100円を入れる
購入ボタンを押す
ジュースを買うボタンを押す

おつりがでてくる
ジュースが出てくる 商品が出てくる
お金が戻ってくる

お金を入れる

投入金額が表示される返却レバーを押す
商品を見る

購入可能LEDが点灯する

どれを買うか考えるイベントの分類と抽象化• やり取りする情報を分類し、抽象化する。
1000円札を入れる
お金を入れる

100円を入れる

品切れLEDが点灯する
投入金額が表示される
購入可能LEDが点灯する

購入ボタンを押す
ジュースを買うボタンを押す
返却レバーを押す

ジュースが出てくる商品が出てくる
おつりが出てくる
お金が戻ってくるイベントを吟味し、さらに（抽象化）単純化する• 更に、動作を単純化するために、イベントを吟味する。
品切れLEDが点灯する
お金を入れる投入金額が表示される
購入可能LEDが点灯する

購入ボタンを押す
商品が出てくる
返却レバーを押す

おつりがでてくる

対象となるシステムの動作を表現する• イベントを実行順に並び替えてみる

返却レバーを押す

おつりがでてくる
お金を入れる

おつりがでてくる
お金を入れる

お金を何枚入れることができるか、これもモデルの単純化のために決めておく必要がある。

お金を入れる
購入ボタンを押す

おつりが先に出ると書くことも商品が先に出ると書くこともある

おつりがでてくる商品が出てくる商品が出てくるおつりがでてくる

状態遷移図でモデルを表現する• 並べたイベントの順を参考に状態遷移図で表現する

おつり

返却ボタン
お金

商品

おつり

おつり
お金

購入ボタン

おつり
商品

お金

購入ボタン

モデルの詳細化の例（状態変数の導入）
７
おつり

３

返却ボタン
お金０お金１購入ボタン商品
４おつり
６おつりおつり商品

２購入ボタン５お金

実装にむけて• 詳細化した最終のモデルはプログラムと等しいと言える必要がある（振る舞いが等価である必要がある）。

対象世界

モデル化

モデル1

モデルn
段階的詳細化＝プログ
ラム
実装

最終のモデルと実装は等しいと言える必要がある

実装における問題点• 自動販売機の振る舞いを１つの状態遷移図で表現することは、モデリングとして正しい。しかし、Scratchのプログラムおよび、micro:bitのMakeCode Editorでのプログラムでは、オブジェクト、イベントハンドラが並列に動作する。

？

＝モデルを生かして正しく動作する並列プログラムを記述するには？
モデル（状態遷移図）

実装（並列実行）プロセス代数におけるプロセスの等価性• CSPなどのプロセス代数を用いるとプロセスの等価性を示すことができる。モデルを生かして正しく動作する並列処理プログラムを実装する方法を提案できるのではないか？

モデル（状態遷移図）

実装（並列実行）まとめ• 本研究における今年度の活動内容にいて• プログラミング的思考を意識したプログラミング教育について：試行
錯誤するだけではなく、モデリングをし、段階的に実装に向けて設計を詳細化していく必要がある• 形式的手法を用いた段階的詳細化（実装のためのプロセスの等価性を含む）を如何に平易にプログラミング教育に導入するかが今後の課題

おわり