SSS2017(2017年8月17〜19日)

プログラミング能⼒の発達段階と要因に関する定量的分析
小学校でプログラミン
グ教育が始まるけど、何年⽣に何を教えたらいいの?

太田 剛:放送大学 修士課程
森本 容介:放送大学
加藤 浩 :放送大学
このスライドはネットにアップしてあります。
最後にURL示します。

1

背景と目的約900+100のScratchプログラムの内容を分析しました。
カスタムブロックスクリプト

ブロック(コマンド/ステートメント相当)を組み合わせてプログラミング2

はじめに: 背景

文部科学省:“発達の段階に即して，「プログラミング的思考」を育成すること”
プログラミングの発達段階について論議されることは無い。
何年⽣でどのようなプログラムが作れるのかも明確になっていな
い。
〇いろいろ実践が⾏われているが、そこで作成するプログラムが対象の学年の⼦供にとって適切なものなの?
〇「プログラミングは楽しかった」「プログラミングを理解できた」など定性的な評価が多いのでは?
〇小中高校でプログラミング教育の系統性が曖昧になり，現在の情報教育のワープロや表計算のように各学校段階で同じ学習内容を繰り返すんじゃないの? 高校でもScratchのネコ歩き。

プログラミングをちゃんと分析して評価する。

3

先⾏研究の概要

従来のプログラムの評価、分析:
主に高等教育で、正しいプログラムや正しい操作の判定。
(実⾏結果の判断や、正答プログラムとの⽐較等)
Scratch等のビジュアル言語を対象に、自由課題場面などの多様なプログラムの質を評価。
・使用ブロックの有無や使用ブロックの数
・ブロックのカテゴリー
・プログラミング環境のコミュニティの活動などで評価基準で分析し・プログラミング能⼒の発達段階
・プログラミング能⼒の獲得の要因
現状:・評価基準や分析⽅法を試⾏錯誤で構築している状況
・必ずしも明確な発達段階や獲得要因が明らかになっていない4

分析調査の目的

1. ⼦供のプログラミング能⼒の発達段階を明らかにする。
何年⽣でどんなプログラムが作れるの実際のプログラムから、教材から
おまけ: ⼦供と大人のプログラムはどこが違うの
2. プログラミング能⼒の獲得に影響する要因は?
先⾏研究: リミックス(他のプログラムをもとに作成)
開発期間、作成数
コミュニティとのかかわり
3. 適切な評価基準は何? 分析⽅法は?
新しい2種類の基準
コンピュテーショナル・シンキング概念(CTC)評価項目
機能分析
5

分析・評価基準
分析ツール:コード忍者の⾥ for Scratch クラスルームシステム

本来、⼦供が会話型で、プログラムの診断を⾏う。
Excelシートに記載したプログ
ラム情報をもとに大量⼀括分析
も可能
6

本分析調査の評価基準の考え⽅

1. プログラムの基本的特徴
ブロック数(通常のプログラムのステートメント数)
変数の数等2. ブロック種別:CTC評価項目
MITのScratch用プログラミング評価フレームワーク(分岐・ ループ等)に分類。
コンピュテーショナル・シンキング概念(CTC)
問題点: 基本的なブロックは小4〜5で習得できるみたい-> 本分析では発達段階に基づく評価基準を作成
3. 機能分析
⼦供達は機能を中心に作成しているようである。
-> 本調査では63種類の機能を想定し、その機能を検出
7

評価基準: CTC評価項目(新規作成)
12
If - else

3
論理演算⼦

4
If (- else)の入れ⼦
ループの入れ⼦

分岐Ifループ

無限ループ

モジュール

複数のスプライト カスタムブロッ 引数のあるカス クローン[オブ[オブジェクト]
ク[サブルーチ
タムブロックジェクトのコン]ピー]

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

データ利用

変数利用

発動・トリ
ガー

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

連携・同期

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

ユーザインタフェース

文字入⼒の使用

ループ回数指定 終了条件付き
ループ

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

キーの検出

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

評価基準: 機能分析(新規作成)
ピンポン

⼦供同士のプログラミング場面での教えあいでは機能で会話する。

壁反射

使用例

機能壁反射

画面枠での反射ピンポン 特定の色に触れた場合の反射Scratch内部プログラムの検出パターン"['doUntil' | 'doForever'|'doRepeat'…['bounceOffEdge'""['doIf'|'doIfElse'['touchingColor:' …
['heading: … ]"⼦供の初心者がよく使用する機能を63種類作成し、そのパータンを検出する
先⾏研究の多くは、個々のブロックの有無のみ分析

9

分析1: 教材の分析:教員実践者の経験知

これらの教材の違いが判りますか?
Scratchの教育実践者らは、経験知識して、何歳/何年⽣ぐらいの⼦供はどんなプログラムが出来るか知っていて、教材に反映されているだろう10分析対象1: 教材:教育実践者の経験値
略称

タイトル

種別

WhyWhy! プログラミング(No.1〜.10 + No.11〜14)

TVWeb

Koka

Kokaプログラミング入 雑誌門(⼦供の科学)Web

Waku 小学⽣からはじめるわ 書籍
くわくプログラミング
2
Dojo Scratch(スクラッチ)で 書籍つくる!
たのしむ! プログラミング道場
京陽
プログラミング学習実 実践践事例集(品川区⽴京陽 報告小学校)
書

概要

プログ 対象学年
ラム数
11回のテレビ番組で，楽しみな
10 小中学⽣
がらScratchとプログラムの考え[技術 小5⽅を学習．視聴者がプログラム〜6・中]を投稿するWebサイトあり．
最終的にScratchでゲームを作る
27 雑誌の中ことを目標に，主にゲームを題
心読者層材にしたプログラム．
は小5〜6
Scratchの全くの初心者を対象に
7
小学⽣
して，各教科に対応した内容の初心者プログラム．
世界的なプログラミング教室の9
Scratch初
CoderDojoの国内各地の主催者
心者が実際に使用している初心者向
けプログラム．
京陽小学校での小1〜6の各学年
6
小学⽣での実践報告．

11

教材分析結果 CTC評価項目(1)
CTC評価項目If
If - else
論理演算⼦
If (- else)の入れ⼦
ループ 無限ループ
ループ回数指定終了条件付きループ
ループの入れ⼦
モジュー 複数のスプライト
カスタムブロック(Cブロック)ル
引数のあるCブロック
クローン
モデル/ 1つのスクリプトで複数のCブロック
モジュー 異なるスクリプトでCブロックの利用
ル共有 異なるスプライトで同⼀Cブロック利用
ブロックの再帰的呼び出し
分岐

Waku Coder
Waku Dojo Keiyo Koka Why〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇
12

教材分析結果 CTC評価項目(2)
CTC評価項目
データ 変数利用
利用 異なるスプライトで変数共有
リスト型変数利用
クラウド変数利用
発動・ 特定キーにより起動
トリ マウス操作による起動
ガー 背景変化による起動タイマー等による起動
連携・ 背景変化を介した連携
同期 同⼀スプライトでのメッセージの使用
他のスプライトへのメッセージでの連携
メッセージ後のWaitでの連携
ユーザ 文字入⼒の使用
インタ キーの検出
フェー マウスクリックの検出
マウスの座標位置の利用
ス

Waku Code
Waku rDojo Keiyo Koka Why〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇「Why!プログラミングの歩き⽅」が公開されました。いろいろな教材の関係
13図を作ってみたい

評価基準: 発達段階の参考情報

英国 教科Computing Pathwaysのプログラミング関係

学年
発達段階

分岐演算⼦

ループ

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

Year 1-634
反復やif-else文 if文とif-thenのような二分岐 else文の違いを使う解決⽅法 を理解し、それらを適切に（アルゴリズ使用ム）を設計

if -then-elseを 変数と⽐較演含む分岐の流れ、 算⼦を、終了をプログラムの 判断を制御するために使用
中で使用"until"等の後判定ループを使用モジュールモデル(抽象化)

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

5

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

7

Year 10-118(ビット)反転の演算⼦を理解し使用引数を持つ関問題を分割し、数の必要性を個々の部分に認識し、独自対しての個別の関数を作成の解決⽅法を作成
プロシー
状況における いくつかの問ジャーは、下 類似性と差異 題が同様の特位の解決⽅法 を識別できて、 徴を共有し、の詳細を隠す それらを問題 同じアルゴリために使用で 解決に利用 ( ズムを使用すきることを理 パターン認識 ることを認識解)。
適切なデータ ⼀次元配列変の型を選択
数構造を使用し操作"While"ルー
プと"For"
ループの違いを理解
同じ問題のより小さな部分の解決⽅法に依存する (再帰)の利用
問題解決の⼀ サブルーチン
般化において、として、どこ情報をどこで でも再利用可
取り除くこと 能なモジューができるか認 ルブログラム識。
をデザイン、作成
変数の有効な 二次元配列構
スコープを確 造を理解し利
14
用認"前判定と後判定のループの違いを理解し、利用引数の受け渡しについて理解して利用応用: 京陽小学校のカリキュラムを分析する
どのようなプログラム(レベルや学習するCTC評価項目)を作るかで、プログラミング学習の目標がはっきりするのでは。
教科でのプログラミング・ 1〜5年⽣抑えられたコンピューテショナルシンキング概念レベルの課題=> 創造性や協働の重視しているという意味がわかる(楽しみながら創造性の意味で自由度の高いプログラム)
・6年⽣では高度なプログラム(リスト配列使って素数を求める)
プログラミング能⼒の育成
補足:活用した授業(市⺠科:総合的な学習の時間)
・テーマはあるがメイキング的な活動
・プログラムの技術レベルは個々の⽣徒のレベルに合わせて・グループの協働制作
15

分析2: ⼦供のプログラムの分析

CoderDojo市川真間
16分析対象2: ⼦供の実際のプログラム
Scratchコミュニティで公開されている小学校4〜6年⽣のプログラムを対象に分析を⾏った．その中でコミュニティ利用が1年未満で10個以上のプログラムを公開している⼦供を対象とした。
4年
5年
6年
全体
おまけ
専門家

人数 総プログ
ラム数

891128232
281
358
871

1095

総総リミッ 平均プロ 平均 平均リミッ
自作数 クス数 グラム数 自作数
クス数

137
208
283
628

95
7375
243

29.0
31.2
32.5
31.1

95

17.1
23.1
25.7
22.5

11.9
8.1
6.8
8.7

9.5

制約事項
・Scratchコミュニティに参加している時点でプログラムに興味があると考えられ，⼀般の⼦供とは乖離している・公開しているプログラムなので，実際に作成した全体ではない・3学年分の被験者数が28名と十分でない
17

発達段階に関する分析結果(1) CTC得点

学年間のCTC評価項目(自作)の獲得状況の⽐較
人数
10

個人CTC得点(自作)の平均±SD322824820616412824小６小５小４0

学年の効果 は有意（F(2,25）=3.641 ,p<.001）*CTC得点: 32個の個々のCTC評価項目を使用していた場合、1点として得点化(Max 32)

00〜4 〜8 〜12 〜16 〜20 〜24 〜28 〜32
CTC得点

小4

小5

小6

CTC得点(自作)の分布
但し。小学校4年⽣でも6年⽣と同様に高いプログラミング能⼒を獲得することは可能である。
18

個人使用機能数(自作)

マウ スの座標位 置 の利 用

19〇ブロックの使用有無だけだと4年以上の違いを区別できないかも〇教育実践者との経験値ともの⼀致しているのでは(Pathways含む)

マウ スクリ ック の検出
キ ーの検出文字 入⼒ の使 用
後 の Wait
での連携
Mess
他 のスプ ライト への Mess
での連携
同 ⼀スプ ライト での Messの使 用
背景変化を介 した連携
タイ マ ー等 によ る起動
背景変化 によ る起動
マウ ス操作 によ る起動
ク ラウド変数利 用

特定 キ ーにより起動

12 16 20 24 28 32840

リ スト型変数利 用

5

個人CTC得点(自作)

個人CTC得点(自作)と個人使用機能数(自作)の関係

学年の効果 は有意でない（F(2,25）==1.999 ,p = 0.156）

10

10

異な るスプ ライト で変数共有

002015

カ スタム Ｂの再帰的呼び 出 し発達段階に関する分析結果(3) 使用機能数40

学年間の使用機能数⽐較

変数利 用

20異な るスプ ライト で同 ⼀カ スタム Ｂ

ク ロ ーン

異な るスクリプ ト でカ スタム B
単 ⼀スクリプ ト で複数 のカ スタム Ｂ

専門家

引数 のあ るカ スタム Ｂ

小6

カ スタム Ｂ

小5

複数 のスプ ライト
ル ープ の入れ⼦
終 了条件付 き ル ープ
ル ープ 回数指定
無 限 ル ープ

If - else

90%

80%

70%

60%

50%

40%

30%

20%

10%

使用した人数/グループ内容総人数

If

小4

小6

小5

小4の入れ⼦If (- else)
論理演算 ⼦0%3025

個人使用機能数(自作)の平均発達段階に関する分析結果(2) CTC項目別

学年ごとのCTC評価項目の使用率(使用した⼦供/⼦供の人数)
100%

やや相関がみられる(r = 0.60)〇ツールが機能を検出できない 〇機能を使わないプログラム(100%Penなど)

20発達段階に関する分析結果(4) プログラムサイズ
50%
40%
対する割合

各グループの総プログラムに学年間のプログラムのブロック数の⽐較
各学年のプログラムの分布(各学年の総プログラム数に対する割合)

30%
20%
10%
0%
〜10〜100〜1000〜
10000

ブロック数(対数変換)

小4

小5

小6

専門家

〇小5・6で明らかに大きなプログラムが作れるようになる

60%
50%
40%
30%
20%
10%

専門家

プログラム内のスクリプトの平均ブロック数

100以上〜100〜90〜80〜70〜60〜50〜40〜30〜20〜100%

小4-6

モジュール

60%
各グループの総プログラムに対する割合

各グループの総プログラムに対する割合

発達段階に関する分析結果(おまけ)

21

50%
40%
30%
20%
10%
0%

小4-6
専門家

0〜10〜100〜1000

プログラム内のスプライト呼び出し
関係のブロック数(対数変換)〇専門家はスクリプトへのメッセージ送信(他のスプライトを起動する)や、カスタムブロックの呼び出しを多用している。

〇専門家の平均のスクリプトサイズがある程度の大きさに収まっている。
22

能⼒獲得の要因に関する分析結果(1)
リミックス

32

32282824

個人CTC得点(自作)

個人CTC得点(自作)プログラム作成数

20161282420161284400020040

4812 16 20 24 28 32

個人CTC得点(リミックスプログラム公開数

やや相関がみられる(r = 0.46)〇作成した全部のプログラムではない〇参加期間とCTC得点の相関は無し

やや相関がみられる(r = 0.55)〇より詳細な分析が必要
リミックスの内容
自作プログラムへの反映

23

能⼒獲得の要因に関する分析結果(2)各タイプの総数に対する割合

プログラムのタイプ〇アニメーションを対象にした先⾏研究では、学習が進んでもあまりプログラムの内容に差がでなかった。
-> アニメーション自体がそん
なに難しいことしないのでは?

60%
50%
40%
30%
20%
10%
0%
0〜4〜8〜12 〜16 〜20 〜24 〜28

プログラムCTC得点(自作)アニメーションゲームデジタルアートミュージック

電⼦絵本

プログラムのタイプ別のCTC得点の分布〇学校での実践において、⽐較的自由な課題としてアニメーション的なもの(物語や説明など)を作ることがある。
この場合、どのようなプログラミング能⼒が獲得されるか把握しておく必要がある。
(アニメーション的なものについては、創造性などの育成については適切な課題という⼀面)

まとめ
1年⽣のプログラム

簡単だけど、⽣徒がいろいろ工夫するところがある

25

まとめ

1. 小4でifやループ・変数などの使用が可能。小6で入れ⼦や論理演算などの使用が可能。(な⼦供もいる)
2. 新たに作成したCTC評価項目は、プログラミング能⼒の獲得の違いについて分析可能。機能分析は今後の改良が必要
3. 今後:さらなる分析
中高を含めたプログラムの分析作成した全プログラムの分析
4. 今後: 応用
教材作成や実践において、もっとプログラムの内容自体を検討 -> プログラミング学習の目標を再考する。
5. ⼦供と大人のプログラムの違い-> 次ページ26おまけ: 「プログラミング的思考」のモヤモヤ
・小6程度で分岐・ループ・変数等の基本的なプログラミング能⼒の学習が可能ではないか :アルゴリズム的なプログラム:戦術的・専門家になるとプログラムをモジュール化して分割するなど、大きなプログラムを作成 :システム的なプログラム:戦略的
システム的

アルゴリズム的

構造分析的問題解決

手順的問題解決

システム設計能⼒

基本的なプログラミング能⼒?????????

プログラミング的思考

問:・「プログラミング的思考」を小中高のすべての段階で育成?
次期指導要領: 中学技術・家庭解説「プログラミング的思考等を発揮して解決策を構想する⼒」

発達的観点から小6-中学⽣の時期に移⾏可能????
各国の情報科目(小中高を通じて):
オーストラリア:システム思考、デザイン思考、コンピュテーショナル・シン
キング、プロジェクトマネジメント
英国:抽象化、デコンポジション、アルゴリズム的思考、評価、⼀般化

おまけのおまけ: 私的プログラミング教育の系統性
システム的アルゴリズム的構造分析的問題解決

手順的問題解決

システム設計能⼒

基本的なプログラミング能⼒

小学校

中学校

高等学校

教科

すべての教科

技術・家庭

情報

考え⽅

プログラミング的思考??????

??????

私的希望

プログラミング体験
プログラミンク嫌いにならない海外

パズル->ビジュアル言語

テキスト言語システム開発本日のスライドのアップロード先〇http://beyondbb.jp/Materials/SSS2017_GoOta_0818.pdf〇Web「高校「情報科」の教材・指導案作ってみました。」のトップページからアクセスできます。

高校 情報科 教材検索

お願い: 共同研究者/研究協⼒者の募集
今回の分析に使用したシステム「コード忍者の⾥」
本来は、プログラムの診断結果を学習記録として残す
プログラム学習支援用のe—ポートフォリオシステム/ダッシュボードです。
主にScratchを使用する自由課題でのプログラミング学習を⾏う
中学・高校・大学の先⽣のご利用お待ちしております。
29

30