日本情報科教育学会 第10回全国大会 (2017年7月1日)

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

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

1

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

プログラミングを学習科学の対象とする。
2

分析対象1: 教育実践者の経験値
略称タイトル

種別

WhyWhy! プログラミングTVWeb

Koka

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

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

概要

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

3

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

891128

総総リ
総プロ
グラム 自作数 ミック
ス数
数
232
137
95281
208
73358
283
75
871
628
243

平均リ
平均プ 平均
ログラ 自作数 ミックス
数
ム数
29.0
17.1
11.9
31.2
23.1
8.1
32.5
25.7
6.8
31.1
22.5
8.7

4評価基準: 基準の考え方
Scratch用プログラミング評価フレームワーク(MIT)
コンピュテーショ
コンピュテーショナ コンピュテーショナル・
ナル・シンキング
ル・シンキング概念 シンキング実践
⾒方(Perspective)
・順次・ループ・イベント
・並列処理
・分岐・演算⼦・データ・反復型開発
・テストとデバック
・再利用とリミックス・表現
・つながり・質問すること

5

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

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

学年
発達段階

分岐演算⼦

ループ

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

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

データ利用

変数を宣言したり割り当てる。

5

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

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

評価基準: CTC評価項目
1

2
If - else

3
論理演算⼦

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

分岐Ifループ

無限ループ

モジュール

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

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

データ利用

変数利用

発動・トリ
ガー

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

連携・同期

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

ユーザインタフェース

文字入⼒の使用

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

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

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

キーの検出

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

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

本来、⼦供が会話型で、プログラムの診断を⾏う。
Excelシートに記載したプログラム情報をもとに大量一括分析も可能「⽣徒のリフレクションと教師のファシリテーションを促進するプログラミング学習支援システムの開発」でデモします。

8

教材・事例の分析結果(1)
If
If - else
論理演算⼦
If (- else)の入れ⼦
ループ 無限ループ
ループ回数指定終了条件付きループ
ループの入れ⼦
モジュー 複数のスプライト[オブジェクト]
ブロック[サブルーチン]
ル
引数のあるブロッククローン[オブジェクトのコピー]
モデル/ 1つのスクリプトで複数のブロックモジュー 異なるスクリプトでブロックの利用
ル共有 異なるスプライトで同一ブロック利用

分岐

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

ブロックの再帰的呼び出し

9

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

Waku Code
Waku rDojo Keiyo Koka Why〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇

〇

〇〇〇

〇
10

⼦供のプログラムの分析結果(1)

人数10

学年間のCTC評価項目の獲得状況の比較

32

828

246420122168

マウスクリックの検出1112

マウスの座標位置の利用

0

キーの検出

4

文字入⼒の使用

0

メッセージ後のWaitでの連携

小6

他のスプライトへのメッセージで…

小5

同一スプライトでのメッセージの…

小4

背景変化を介した複数スクリプト…

0〜4 〜8 〜12 〜16 〜20 〜24 〜28 〜32
個人CTC得点5年 6年

背景変化による起動
タイマー等による起動

4年

マウス操作による起動

学年の効果 は有意（F(2,25）=3.641 ,p<.001）

クラウド変数利用
特定キーにより起動

但し。小学校4年⽣でも6年⽣と同様に高いプログラミング能⼒を獲得することは可能である。

小6

リスト型変数利用

⼦供のプログラムの分析結果(2)

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

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

小5

ブロックの再帰的呼び出し

90%

異なるスプライトで同一ブロック…

100%

小4

異なるスクリプトでブロックの利用

80%

クローン[オブジェクトのコピー]
1つのスクリプトで複数のブロック

70%

引数のあるブロック60%

ブロック[サブルーチン]

50%ループの入れ⼦
複数のスプライト[オブジェクト]

40%

終了条件付きループ

30%

無限ループ
ループ回数指定

20%

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

10%

If
If - else

個人CTC得点±SD応用: 京陽小学校のカリキュラムを分析する

実践事例も使っているプログラムのレベルからみることができる。

〇教科の中でのScratchの使用
1年

2年

3年

4年

5年

6年

・教科の内容にそった課題
・抑えられたコンピューテショナルシンキング概念レベルの課題
特に1〜5年⽣、創造性や協働の確保 (楽しみながら創造性の意
味で自由度の高いプログラム)
・6年⽣では急に高度なプログラム(リスト配列使って素数を求める)〇活用した授業(市⺠科:総合的な学習の時間)
3年

6年

・テーマはあるがメイキング的な活動
・プログラムの技術レベルは個々の⽣徒のレベルに合わせて・グループの協働制作
13

京陽小学校のプログラム

1年⽣のプログラム

5年⽣のプログラム

簡単だけど、⽣徒がいろいろ工夫するところがあるおまけ: その他の分析結果
学年間のプログラムのブロック数の比較
各学年のプログラムの分布(各学年の総プログラム数に対する割合)
25.0%
20.0%
15.0%
10.0%
5.0%

〜4914

〜2980〜1808〜1096〜665

小6〜403〜245

小5〜148

小4〜90〜55〜33〜20〜12〜7.4〜4.5〜2.7

0.0%

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

15

おまけ: プログラムの大型化から⾒える「プログラミング的思考」のモヤモヤ
CTC項目: Computational
Thinking Concept 評価項目

⼿順的な問題解決能⼒

構造分析的?な問題解決能⼒
システム的?思考プログラミング的思考

構造化によるプログラムの作成

プログラミング的思考の定義の範囲/限界か?

CTC項目の応用による新たな機能

つつ

CTC項目の意識機能(特定パターン)としてのプログラミングの作成・理解

つつ
CTC項目の理解と初歩的な応用機能(特定パターン)の増加

UKやオーストラリアの情報教科はもともと、こっちを最終的に目指す?

プログラムの大型化が可能になる
小6〜中1の時期か?

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

教材検索17