プログラム機能の⾃動分析機能とプログラム概念の⾃動評価機能を持つScratch用プログラミング学
習支援システム小学校からプログラミング教育が始まるような話があるけど、どうしよう。機械
音痴の私にプログラムを教えるなんで無理無理…..

•太田 剛:放送大学 修士課程
•森本 容介:放送大学•加藤 浩 :放送大学

私たちがお手伝いします.

1

1.背景: 出発点と現状初等教育でのプログラミング教育の動き
英国、オーストラリア等で、初等教育でのプログラミン
グ教育を含む新しい情報科目の必修化。
政府が2016年6月に産業競争⼒会議が新しい成⻑戦略で2020年からの初等中等教育でのプログラミング教育の必修化が明記。
⽂部科学省も「小学校段階における倫理的思考⼒や創造性、問題解決能⼒等の育成とプログラミング教育に関する有識者会議」を⽴ち上げ。
⽂科省の問題指摘(2015)①プログラミング学習を担当する教員の指導⼒②プログラミング学習に適した教材③社会の変化に伴うプログラミング学習の目標・内容
2

1.背景: 国内のプログラミング教育の基本的な方針
小学校段階におけるプログラミング教育の在り方について（議論の取りまとめ）「プログラミング的思考」などを育むこと「プログラミング的思考」（いわゆる「コンピュテーショナル・シンキング」の考え方を踏まえつつ、プログラミングと論理的思考との関係を整理しながら提⾔された定義である。) <= 情報教育の三本柱(情報活用の実践⼒、情報の科学的な理解、情報社会に参画する態度)と理数教育の推進(論理的思考の育成)からのしがらみか?
各教科等で育まれる思考⼒を基盤としながら基礎的な「プログラミング的思考」を身につけること => 専門の教科は作らない = 平成10年の小学校の学習指導要領の時の情報教育といっしょでは、デジャブ?
3

ちょっとデモ: 対象⾔語

スクラッチはMITのメディアラボが開発した子供向けのビジュアル⾔語であり、スタンドアロン及びWebで使用が可能である。国内を含め全世界で広く利用され、Webのコミュニティには1100万人以上が登録し、1600万以上のプログラムが共有されている。

例えば上手は簡単なシューティングゲームであるが，スプライトと呼ばれるキャラクターを画面上に置き，それぞれのスプライトがどのように動作するかブロックを使ってプログラムするものである．

4使ってみよう: コード忍者の⾥ for Scratch

検索 コード忍者の里「コード忍者の⾥ for Scratch」はPC上で作成又はダウンロードしたファイル、又はプロジェクトIDを指定すると分析できる。⾃分のプログラムが無い場合でもプロジェクトIDは、Scratchの個々のプログラム(プログラム)につけられた番号で、上手のような、画面に表⽰される番号を⼊⼒することで診断することもできる。
“コード忍者の里 for Scratch”. http://tk2-249-34225.vs.sakura.ne.jp/ncv4s/

5

簡単なシューティングゲームを診断

術の巻物 データ:ポイントプロジェクトID:109784985
6

コード忍者の⾥で診断

7

二つの診断結果

8

プログラミング概念
12
If - else

3
論理演算子

4
If (- else)の⼊れ子
ループの⼊れ子

分岐

If

ループ

無限ループ

モジュール

複数のスプライト ブロック[サブ[オブジェクト]ルーチン]

モデル/モジュール共有

1つのスクリプト 異なるスクリプ 異なるスプライ ブロックの再帰で複数のブロック トでブロックの トで同一ブロッ 的呼び出し
利用
ク利用

データ利用

変数利用

発動・トリ
ガー

特定キーにより起 マウス操作によ 背景変化による タイマー等によ動
る起動
起動
る起動

連携・同期

背景変化を介した 同一スプライト 他のスプライト メッセージ後の複数スクリプトで でのメッセージ へのメッセージ Waitでの連携の連携の使用
での連携

ユーザインタフェース

⽂字⼊⼒の使用

ループ回数指定 終了条件付き
ループ
引数のあるブロック

クローン[オブジェクトのコピー]

異なるスプライ リスト型変数利 クラウド変数利
トで変数共有用
用

キーの検出

マウスクリック マウスの座標位の検出
置の利用
9

情報教育・プログラミング教育の目標[日本]
プログラミング的思考[英国・オーストラリア等]
コンビュテーショナル・シンキング
⾃分が意図する一連の活動を “複雑かつ雑然で，一部しか⾒実現するために、どのような えない現実問題を，知能のな動きの組合せが必要であり、 いコンピュータだけで問題に一つ一つの動きに対応した記 取り組めるような指⽰に変換
号を、どのように組み合わせ する，いくつかの知的能⼒のたらいいのか、記号の組合せ 集合(英国)”をどのように改善していけば、より意図した活動に近づくの本システムではこちらのか、といったことを論理的に考え方をベースに作成する
考えていく⼒10

プログラミング教育の目標
原田

コンビュテーショナル・シ
ンキング「コンピュータとはなにか」 現実問題を，知能のないコンということを知るためにプロ ピュータやらせるためのプロ
グラミングを学ぶべき
グラムを作るにはどうしたらよいか学ぶ
太田の感想:
ビスケットは一般の⾔語に比その考え方や手法はコンべて知能がある。
ピュータを使わない場合でも役に⽴つ
プログラマー的思考
11

コンピューテショナル・シンキングをもとにした
各国カリキュラムのキー概念 ≒ 知的能⼒の集合
UK Computer Progress
Australian Curriculum
CSTA(USA) *1
Pathway
Abstraction
Abstraction
Abstraction
Decomposition
Generalization
Modeling andSimulation
Algorithmic thinking Specification,
Algorithms
algorithms
Problem solvingData collection,Data representation
representation andinterpretation
Evaluation

Wing(2006)が明確に定義していない、広範囲に⾔及
12

本システムでのコンピュテーショナル・シンキングの考え方
プログラミング的思考の具体的な能⼒は，コンピュテーショナル・シンキングの中にあると考え，本システムの目標として以下の具体的なキー概念を選んだ．
•抽象化（Abstraction）: 問題解決では，問題を解きやすくするため，問題や事象の適切な側面・性質だけを取り出し，他の部分を捨てること．
•モデル化（Modeling）: 抽象化の結果であり，問題解決では問題や事象を簡潔に理論的に表現すること．
•デコンポジション（Decomposition）: 大きなまたは複雑な問題や事象を理解または解決可能な細部に分割すること•アルゴリズム（Algorithms）: 問題を解決するための明確な手順で，同様の問題に共通して利用できるものである．
13

機能サンプルプログラム集と⾃動機能分析
生徒がプログラムを作る場合に必要な個々の機能を含んだ小さなプログラムをサンプル集として提供することで，プログラム作成作業を手助けするプログラム分析機能により，生徒はプログラムがいろいろな機能から構成されることを気づかせ，子どもは作りたいプログラムに必要な機能をサンプル集の中から探して組み込むことで，大きく複雑なプログラムも容易に作成できる
子どもがお手本となるプログラムを⾒つけた時，それがどんな機能から作られているか知ることができる

14

プログラミング教育の教材・学習方法[スモールステップ][メイキング]「特に，教員は目標を細分化 「単なる操作できる教具を与し，小さな目標を達成する体 えるだけでなく，学習者が何験を積み重ねながら最終目標 か意味あるものを作り出す時に近づけるようスモールスに教育は最も効果がある」
テップで課題を設定すること (Papertの構築主義)
で，児童生徒の『プログラミ 「簡潔でゆるい課題設定におングは難しい』という思い込 いて，コンピュータを一つのみを払拭させ，⾃分にもでき 素材として，“いじくりまわるという⾃⼰効⼒感を⾼めさ し”，⾃分の好みで，考えてせているようです」(⽂部科 作っていく活動」(Sylvia and学省のプログラミング教育実 Gary)践ガイド)
本システムでは創造性の杭性の観点等から、この学習
15
方法を支援

アクティブラーニングから⾒た
スモールステップとメイキングの比較

メイキング

スモールステップ(写経?)
16

プログラミング教育の教材・学習方法:問題点[スモールステップ][メイキング]「（Hour of Codeの）パ「習得度にばらつきがでズル⾃体を⾃分たちで作りる」や「基本的なテクニッだせるようなメタな仕組みクを理解していない」(みどは提供されていない．そのりっ子クラブ)
ため，解き終わった子供た
Scratchの場合、ぬり絵や電ちは短い時間で飽きてし子絵本のレベルで留まる子まった．」(阿部)供
今までの教育と同じで落ち「ブロックを適当に組み合こぼれやプログラミング嫌
わせて不規則に動く作品をいを作るのでは(太田の考
子供の創造性と誤認(教師側え)の過去の失敗原因)」(兼宗，阿部，原田)
本システムでは、この問題点に対応

17

メイキングの問題点の解決方法
みどりっ子クラブ
各習得レベルに対応しプログラミング方法のサンプル提供
プログラミング方法を「技」として技一覧表を作り、技の習得度合を判定する検定の実施
Scratchの⾃動評価
MITのプログラミング場面での評価フレームワーク
Wolz(2011) Scratchのブロックの⾃動分析
Moreno-León(2015) Dr.Scratch プログラム概念の⾃動評
価ツール(評価結果の得点化)
数週間Scratchを学習した生徒に対して1時間のワークショップを実施。ワークショップの前後で得点が上がる。
本システムでは、これらを発展させシステム化したもの

18

教育の指導⼒の問題への対応[人的リソースの強化][システムでの支援]
プログラミング能⼒の低い教師を支援
教員研修による教師のスモールステップのパズル
プログラミング能⼒の Hour of Code等
育成
正答、正しいプログラムへの支援体制と支援要員の⾃動評価
整備
従来の⾼等教育用等「若年層に対するプログラプログラミングレベルの⾃動ミング教育の普及推進」事
評価
業(総務省)
どのようなプログラムか評価し、生徒と教師にフィードバッグ
本システムでこの考え方をベースに作成する

19

おまけ:従来の⾃動評価との違い真正(Authentic)な学習内容、学習場面、学習評価• 従来は学校知の⽂脈で、全員に共通した目的を教師が教える。
生徒は正しい回答を覚えるだけかもしれない。
• 本物の、意味のある活動をしたとき、本当に学べる(より実社会に近い⽂脈で学習する。個々の生徒が異なる認知過程で学習をする。)
・「期待する要素」を含む答えを出せたかで評価する・ひとりひとり固有の過程を評価し、次の指導を考えていく。そのサイクルを回し続ける。:変革的形成的評価

20おまけ:従来の形成的評価と変革的形成的評価[従来の形成的評価][変革的形成的評価]
Goal

Goal

21
21

2. 本システムの開発思想
生徒にとってプログラミングの奥深さを気づかせる。
⾼度なプログラミングを作る動機を与える。
⾃分のプログラムを客観的に評価する。
プログラミング的思考、コンピューテショナル・シンキングに必要な能⼒を意識させる。
教師にとってプログラミング経験の浅い教師でも、生徒の作ったプログラムの内容を把握できる
短時間で多くの生徒のプログラムの内容を把握できる。
生徒のプログラム能⼒の変化を把握できる。
(特にクラスルーム用システムにおいて)22

本システムの⽴ち位置
プログラミング教育用⾔語 プラットフォームの覇権争い?
ドリトル, VISCUIT, Scratch, アルゴロジック, プログラミン,スモウルビー, Mincraft/Microsoft Block Editor, PEN,MOONBlock, GLICODE, Tynker...

教材の作成
授業案の作成・実践
教員研修
指導員育成
指導支援体制の整備

システムによる支援
ここ:正しいプログラムの判定や正しいプログラム作成の支援ではなく、プログラミング内容/レベルや進歩の様子の支援
23

トップ画面

24

システムの2つの診断機能

診断結果

本システムの中核は以下に⽰す機能サンプルプログ
ラム集と二種類の診断機能である．
本システムは，スクリプ
トを読み込み，左図の例ではプログラム概念として，分岐はレベル1，ループはレベル1，2，4のコーディングをしていることと，プログラムの機能としては，「壁反射」，「ポイント」，「サイコロ」のサンプルプ
ログラムと同等の機能を使用していることを診断結果として表⽰する．
25

術一覧画面

26

3.2種類の診断機能
左側[プログラム概念評価]
分岐、ループ、データ利用等のプログラミング概念の使用レベルについて評価

右側[プログラミング機能分析]
プログラムで使用している機能について分析

MITのプログラミング場面に特化したコンピューテ
ショナル・シンキングの評
価フレームワーク
目的: プログラミングの能⼒の育成と評価

Wingのコンピューテショナ
ル・シンキングをベースとしている
目的: プログラミングを通じたコンピューテショナル・シ
ンキングの能⼒の育成

二つのレベルのコンピューテショナル・シンキング

27

3.1 左側 [プログラム概念評価](プログラマーの技)

ループ、分岐、モジュール、データ等、通常のプログラミング教育
でも対象としている内容
生徒がプログラミングを⾏う中で、⾃らこれらの概念があることを学び、その意味を考えて、プログラ
ムをより良いものにしていく
教師はこれらの概念を生徒がプログラムの中で使用しているか把握できるMITの評価フレームワーク等、ここ数年、Scratchを対象に⾃動評価の研究が始まっている。

28

プログラミング場面の評価フレームワーク(Brennen, K..(2012) )概念

Computational
Thinking Concept

・順次・ループ・イベント・並列処理・分岐・演算子・データ

実践

Computational
Thinking Practice・反復型開発(Iterative andIncrementalDevelopment)

考え方・⾒方Computational
Thinking Perspective・表現・つながり・質問すること・テストとデバック・再利用とリミックス「プログラム概念」と本システムでは呼んでいる

29

プログラム概念評価の評価基準の作成の流れ

英国Computing
ProgressionPathways(G1-10:約150項目)

プログラミングに関する28項目を抽出し、MITのプログラム概念で整理(8レベル)

Scratchの⾔語使用をもとに評価内容を定義し4レベ
ルに分類
30

UK computing pathwayをプログラム概念で再構成
学年
発達段階

分岐演算子

ループ

2
ループやif⽂などの分岐を使った簡単なアルゴリズムを設計。
ステートメ
ントの中で算術演算子を使用
プログラムの中でループを使用

Year 1-6
3
4
反復やif-else⽂ if⽂とif-thenのような二分岐 else⽂の違いを使う解決方法 を理解し、それらを適切に（アルゴリズ使用ム）を設計
if -then-elseを 変数と比較演含む分岐の流れ、 算子を、終了をプログラムの 判断を制御す中で使用るために使用"until"等の後判定ループを使用モジュール

モデル(抽象化)

データ利用変数を宣⾔したり割り当てる。

5

論理型等の演算子と数式をプログラムでの制御で利用
イリーテー
ション繰り返しの処理であることを理解Year 7-9
6⼊れ子(ネスト)になった分岐⽂を使用

7

Year 10-118(ビット)反転の演算子を理解し使用引数を持つ関問題を分割し、個々の部分に数の必要性を対しての個別認識し、独⾃の解決方法をの関数を作成
作成
状況における いくつかの問
プロシー
ジャーは、下 類似性と差異 題が同様の特位の解決方法 を識別できて、 徴を共有し、の詳細を隠す それらを問題 同じアルゴリために使用で 解決に利用 ( ズムを使用すきることを理 パターン認識 ることを認識
解)。
適切なデータ 一次元配列変の型を選択
数構造を使用し操作"While"ルー
プと"For"
ループの違いを理解
同じ問題のより小さな部分の解決方法に依存する (再帰)の利用
問題解決の一 サブルーチン
般化において、として、どこ情報をどこで でも再利用可
取り除くこと 能なモジューができるか認 ルブログラムをデザイン、識。
作成
変数の有効な 二次元配列構
スコープを確 造を理解し利用認"前判定と後判定のループの違いを理解し、利用引数の受け渡しについて理解して利用

31

本システムの診断基準(プログラミング概念)
1

2
If - else

3
論理演算子

4
If (- else)の⼊れ子
ループの⼊れ子

分岐

If

ループ

無限ループ

モジュール

複数のスプライト ブロック[サブ[オブジェクト]
ルーチン]

モデル/モ
ジュール共有1つのスクリプト 異なるスクリプ 異なるスプライ ブロックの再帰で複数のブロック トでブロックの トで同一ブロッ 的呼び出し
利用
ク利用

データ利用

変数利用

発動・トリガー

特定キーにより起 マウス操作によ 背景変化による タイマー等によ動る起動
起動
る起動

連携・同期

背景変化を介した 同一スプライト 他のスプライト メッセージ後の複数スクリプトで でのメッセージ へのメッセージ Waitでの連携の連携の使用
での連携

ユーザインタフェース

⽂字⼊⼒の使用

ループ回数指定 終了条件付き
ループ
引数のあるブロック

クローン[オブジェクトのコピー]

異なるスプライ リスト型変数利 クラウド変数利
トで変数共有用
用

キーの検出

マウスクリック マウスの座標位の検出
置の利用
32

3.2 左側 [プログラム機能分析](プログラム内の術)

プログラミングや問題解決において小さな機能や部分に分解して考えることを生徒が意識し実施する。
プログラムは小さな抽象的な機能が集まってできることを生徒が意識し、プログラミングする。
教師は、使用している機能やその数から、生徒の作成しているプログラムの内容や複雑を判断する。

機能分析は新しい試み
33

本システムでのコンピュテーショナル・シンキングの考え方
プログラミング的思考の具体的な能⼒は，コンピュテー
ショナル・シンキングの中にあると考え，本システムの目標として以下の具体的なキー概念を選んだ．
•抽象化（Abstraction）: 問題解決では，問題を解きやすくするため，問題や事象の適切な側面・性質だけを取り出し，他の部分を捨てること．
•モデル化（Modeling）: 抽象化の結果であり，問題解決では問題や事象を簡潔に理論的に表現すること．
•デコンポジション（Decomposition）: 大きなまたは複雑な問題や事象を理解または解決可能な細部に分割すること•アルゴリズム（Algorithms）: 問題を解決するための明確な手順で，同様の問題に共通して利用できるものである．
34

機能サンプルプログラム集と⾃動機能分析
生徒がプログラムを作る場合に必要な個々の機能を含んだ小さなプログラムをサンプル集として提供することで，プログラム作成作業を手助けするプログラム分析機能により，生徒はプログラムがいろいろな機能から構成されることを気づかせ，子どもは作りたいプログラムに必要な機能をサンプル集の中から探して組み込むことで，大きく複雑なプログラムも容易に作成できる
子どもがお手本となるプログラムを⾒つけた時，それがどんな機能から作られているか知ることができる

35

術(機能)リスト例と検出パターン
サンプル
タイトル

機能

サイコロ
壁反射

乱数の使用
画面枠での反射

ポイント

得点の計算

迷路

方向キーによる左右の移動

ピンポン

特定の色に触れた場合の反射

Scratchプログラムの検出パターン"['randomFrom:to:'""['doUntil' | 'doForever'|'doRepeat'…['bounceOffEdge'""['doIf'|' doIfElse', ['…['changeVar:by:', … , 1]""['whenKeyPressed', 'leftarrow']… ['changeXposBy:', " & "['whenKeyPressed','right arrow'] …
['changeXposBy:', ""['doIf'|' doIfElse'['touchingColor:' …
['heading: … ]"36

4. 実装方法と検討項目
4.1 Scratchの対象バージョン
今後学習履歴をもとにした指導情報等の作成のため、ビックデータ処理関係のライブラリーが充実していることと、Scratch関連のツールがあることからPythonで実装。
Python3.4を使用
Scratch⾃体はVer 1.4と2.0があるが、今回はWeb上のコミュニティを利用することを想定しているので、現状2.0が対象。2.0⾃体のファイル形式は公開されていて、プロジェクトは使用している画像などをパッケージ化したZip形式のファイル。Zip内にプログラム⾃体はJSON形式のファイルで存在。
(1.4 -> 2.0のコンバータはPython2.x系で利用可能。現状使用できない。Scratchサイトに1.4をアップロードして2.0に変換すれば、診断可能)37

4.2 評価の得点化と評価基準の公表
診断結果はe-learningで使用されるバッジシステムと同様に学習者の動機づけになると考えられる．ただしバッジシステムは，時には学習よりバッジの収集⾃体が目的化される恐れがある．
Dr. Scratchのように評価結果を得点化して表⽰することは、本システムでは⾏わなかった．
Dr.Scrachでは、プログラミング概念の評価基準内容をWebで公開。本システムでは生徒の目につくところには置いていない。評価基準を提⽰すれば、単純にバッジを獲得できる。提⽰しないことで、バッジの意味を考えさせる。

38

4.3 プログラム書法の評価
Scratchの先⾏研究/システムではプログラム書法(変数名の初期値からの変更、無意味なブロック・変数)も評価．
本システムでも診断過程において、プログラム書法に関するチェックは⾏っている(Dr.Scratchより細かい)。
但し、生徒に⾃由なプログラミングを楽しんでもらうため、プログラム書法に関する情報は表⽰していない。

39

4.4 リミックス、他人のプログラム評価の問題
リミックスで作ると、いきなり⾼度なプログラムが出来上がってしまう。

リミックスツリー
他のプログラムをもとにした開発の関係図

考え方・⾒方(Computational
Thinking Perspective)のつながり(Connecting)から推奨
協働作業だけでなく、他人の為に作るなど含む

40

5. 授業形態/利用形態

プログラミング教育を実施する新しい教科を設けず，既存の教科内で学習することが提⾔された総合的な学習の時間
算数

理科

図画・工作

社会

各教科に共通する基本的な操作やプログラミング能⼒を習得
・・・

各教科で特有の使用方法

共通する基本的な操作やプログラミング能⼒を習得はメイキング場面で使用することが有効であると考える．
メイキングの考え方から⾃分の好きなものを作っていく
ことは，全く新しい授業の形態ではなく，すでに小学校の図画工作科で実践されてきて，図画工作科の学習指導
要領の領域「A表現」には“「表したいことを絵や⽴体，工作に表す」は，およそのテーマや目的をもとに作品をつくろうとすることから始まる．”とある。
41

6. 開発計画
2016/6月

コード忍者の⾥
for Scratch

2016/8月

Ninja Code Village
for Scratch

2016/8月
クラスルーム
学習履歴・個人履歴表⽰
クラスモニタリングシステム
2016/11月

e-ポートフォリオ
システム

詳細学習履歴
学習日記
指導・コメント記録

2017/3月 & 6月
LAK システム
生徒用指導情報生成
教師用指導情報生成

真正の学習支援システム

42

43

44

45