■Scratchの特徴
Scratchはマサチューセッツ工科大学メディアラボで開発された、子ども向けのプログラミング環境です。
一般のプログラミング言語では、多くの命令を覚えて、コードを打ち込み、プログラムを書きます。一方、Scratch ではブロックをつなぎ合わせることでプログラムを書きます。コードを打ち込む必要がないため、文法の誤りを気にせずにプログラミングできます。
また操作方法も基本的にマウスによるドラック&ドロップのみであるため、比較的簡単にプログラミングできる仕様となっています。
従ってScratch はプログラミング初心者やコンピュータに不慣れな者にも、簡単にプログラミングに入門できる環境です。
■教育現場でも注目が集まっています
プログラミングは、中学校の「技術・家庭」や高校の教科「情報」で教えられています。また、小学校の授業にも取り入れる動きが出てきました。アメリカをはじめ世界各国でもプログラミング教育の機運が高まっており、日本もその流れに乗ろうとしています。
小中学生にプログラミングの基礎を教えるにはScratchは最適です。高校生にも十分対応できます。IT企業も「グリー×教育プロジェクト」などでScratchプログラミングを推奨しています。
2020年度(平成32年度)から実施される新小学校学習指導要領においては、各教科等の特質に応じて、児童がプログラミングを体験しながらコンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動を計画的に実施することになりました(小学校プログラミング教育の必修化)。
本書はScratchプログラミングと小学校で習う教科を結び付けた具体例を紹介します。たとえば小学校5年の算数では、3角形や5角形などの多角形を勉強します。Scratchを使えば、方向と長さを与えて3角形、4角形、5角形を書くことができます。それぞれの多角形の角数と方向を回転する角度の関係を調べます。それがわかったら、3角形、4角形、5角形という個々の多角形を書くのではなく、n角形を書くという問題に一般化します。一般化にあたってはプログラミング的には変数という考えが必要になります。さらにn角形を書く処理を別なところにおいて、必要によって呼び出せるようにします。プログラミング的にはブロック(プロシージャ)という考えが必要になります。このように多角形を書くプログラムを通してプログラミン的概念や問題を一般化するという考え方(アルゴリズム)を習得することができます。
小学校で習う教科には国語、社会、算数、理科、英語、音楽、図画工作、家庭科、体育などがあります。本書ではこれらについて以下の9章で具体例を紹介します。
1章 算数
2章 理科
3章 国語
4章 社会
5章 英語
6章 音楽
7章 図画工作
8章 家庭科
9章 体育
プログラムを使って問題を解くための論理または手順をアルゴリズム(algorithms:算法)という。プログラム処理では多量のデータを扱うことが多く、この場合、取り扱うデータをどのようなデータ構造(data structure)にするかで、問題解決のアルゴリズムが異なってくる。データ構造とアルゴリズムは密接な関係にあり、良いデータ構造を選ぶことが良いプログラムを作ることにつながる。プログラムの世界に特有なアルゴリズムとして再帰という考え方がある。再帰とデータ構造の木を組み合わせることで効率的なアルゴリズムができる。
ある問題を解くためのアルゴリズムは複数存在するが、人間向きのアルゴリズムが必ずしもコンピュータ向きのアルゴリズムにならないこともある。本書では先達が研究した伝統的なアルゴリズムやScratch特有のアルゴリズムをできるだけ多く集め、以下の12のカテゴリで解説する。
1章 図形アルゴリズム
2章 アニメーションアルゴリズム
3章 画面出力アルゴリズム
4章 Scratch特有のアルゴリズム
5章 リスト操作アルゴリズム
6章 データ処理アルゴリズム
7章 文字列処理アルゴリズム
8章 数値処理アルゴリズム
9章 再帰アルゴリズム
10章 データ構造アルゴリズム
11章 ゲームアルゴリズム
12章 ミスレニアス・アルゴリズム
与えられた問題をプログラムする場合、いかに理論整然と効率よく、誤りの少ない、良いプログラムを作れるかが重要です。伝統的な学問の数学や物理は方程式などを使って理論的に問題を解決する方法が長年研究されてきました。プログラムの世界は歴史が浅いため理論的な手法が確立していません。
プログラムを使って問題を解くための論理または手順をアルゴリズム(algorithms:算法)といいます。拙著「Scratchによるはじめてのアルゴリズム入門」では先達が研究した伝統的なアルゴリズムをScratchで実現する方法を紹介しています。本書で言う「プログラミング技法」とはアルゴリズムほど普遍的ではないが、プログラミングのテクニックや定石的なものを指します。「プログラミング技法」というカードをうまく組み合わせることで効率的なプログラムを作ることができるようになります。
本書では以下の14のカテゴリに分けてScratchでのプログラミング技法を紹介します。1章~8章はScratchに限らず他のプログラミングにも共通する内容です。9章~14章はScratchならではの内容です。
1章 制御構造
2章 データ型と演算子
3章 リスト操作
4章 ユーザーブロック
5章 再帰
6章 Scratchの座標
7章 イベント
8章 メッセージ
9章 クローン
10章 調べる
11章 動き
12章 みた目
13章 音
14章 ペン機能
Scratchを用いて高度なプログラミングを勉強したい人にとって、本書で紹介したプログラミング技法を学ぶことが少しでもお役に立てば幸いです。
このテキストは小学校高学年(主に5年生、6年生)、中学生、高校生を対象にしています。
第1回~第10回までが以下のような構成になっています。各回を45分~50分の授業で学習します。
第1回 Scratchでねこを動かしてみよう
第2回 アニメーションに挑戦そのⅠ
第3回 アニメーションに挑戦そのⅡ
第4回 図形を描いてみようそのⅠ
第5回 図形を描いてみようそのⅡ
第6回 プログラムのデータを管理する変数
第7回 データをまとめて管理するリスト
第8回 プログラムを制御するそのⅠ
第9回 プログラムを制御するそのⅡ
第10回 同じ処理をひとつにまとめるブロック
学校等の授業のテキストとして利用する場合は無料でご使用いただけます。
PDFファイル
Wordファイル
第1回~第3回はアニメーションや図形を描くなどの視覚的に興味が湧く題材を扱っています。第4回~第7回はプログラミングをする上で必要な基本事項である、変数、リスト(配列)、流れ制御、ブロック(関数、メソッド)について説明しています。第8回はプログラムを使って問題を解くためのアルゴリズムや(algorithms:算法)やデータ構造(data structure)について説明しています。
小・中学生にとってはかなり高度な内容になっていますが、分かり易く説明しているので理解できるはずです。
学校での学習に使う場合は総合学習の時間やクラブの時間を使って45分×8回で学習できるようになっています。パソコン教室などのテキストとしても使えます。
本書を通して多くの小・中学生が、これからの情報化社会を生きて行くための「教養」としてのプログラミング能力を身につけてもらえたら幸いです。
第1回 Scratchでねこを動かしてみよう
第2回 アニメーションに挑戦
第3回 図形を描いてみよう
第4回 プログラムのデータを管理する変数
第5回 データをまとめて管理するリスト
第6回 プログラムを制御する
第7回 同じ処理をひとつにまとめるブロック
第8回 データ構造とアルゴリズム
子どもが一番興味のあるのはゲームです
プログラミングという行為には何か目的がなければモチベーションが上がりません。子どもが一番興味のあるのはゲームです。
そこで本書では以下の10本のゲームを作ることでScratchプログラミングを興味を持ってできるようにしています。
各ゲームはStep1~Step3の3段階で構成されています。Stepを追うごとに徐々に内容を追加して行きゲームを完成させます。1本の長いプログラムを一気に作るより負担が少なくなるように工夫しています。
本書を通して多くの小・中学生が、Scratchプログラミングの魅力を感じてもらえたら幸いです。
第1回 サッカーでシュート
第2回 シューティングゲーム
第3回 迷路
第4回 トラックレース
第5回 もぐらたたき
第6回 ラケットゲーム
第7回 ブロック崩し
第8回 リバーシー
第9回 じゃんけん
第10回 移動板パズル
プログラムを使って問題を解くための論理または手順をアルゴリズム(algorithms:算法)といいます。プログラム処理では多量のデータを扱うことが多く、この場合、取り扱うデータをどのようなデータ構造(data structure)にするかで、問題解決のアルゴリズムが異なってきます。データ構造とアルゴリズムは密接な関係にあり、良いデータ構造を選ぶことが良いプログラムを作ることにつながります。
コンピュータ言語が持つデータ型には数値型、文字型などの基本データ型とデータをまとめて管理するリストがあります。しかし、このようなコンピュータ言語が持つデータ型だけでは、大量のデータや複雑な構造のデータを効率よく操作することはできません。そこでデータ群を都合よく組織化するための抽象的なデータ型をデータ構造と呼びます。代表的データ構造として、表(table:テーブル)、棚(stack:スタック)、待ち行列(queue:キュー)、リスト(list)、木(tree:ツリー)、グラフ(graph)があります。
プログラムの世界に特有なアルゴリズムとして再帰という考え方があります。再帰とデータ構造の木やグラフを組み合わせることで効率的なアルゴリズムができます。
ある問題を解くためのアルゴリズムは複数存在しますが、人間向きのアルゴリズムが必ずしもコンピュータ向きのアルゴリズムにならないこともあります。本書では先達が研究した伝統的なアルゴリズムを中心に以下の12のカテゴリで解説します。
1章 画面出力
通常のプログラミング環境と異なりScratchにはprintのような画面出力を行う命令がありません。そこでoutputという名前のリストを出力画面の代用にします。
2章 数値処理
コンピュータで扱うデータをおおざっぱに分けると、数値データと文字列データです。この章では数値データを処理する各種アルゴリズムを紹介します。
3章 文字列処理
2章では数値データを処理する各種アルゴリズムを紹介しました。この章では文字列データを処理する各種アルゴリズムを紹介します。
4章 乱数の利用
規則性がなくまったくでたらめに並ぶ数を乱数といいます。プログラムの世界では乱数を利用することで様々な処理が行えます。
5章 リストデータの処理
リストに格納されているデータから標準偏差や度数分布などの各種統計を取ったり、ソートやサーチといったリストデータの処理を説明します。
6章 再帰
再帰という考え方は人間の一般的な感覚からは縁遠いものですがプログラムの世界では重要な考え方です。再帰を用いると、複雑なアルゴリズムを明解に記述することができます。
7章 データ構造
データ群を都合よく組織化するための抽象的なデータ型をデータ構造と呼びます。代表的データ構造として表、スタック、キュー、リスト、木、グラフがあります。
8章 2次元グラフィックス
図形を方程式で表し、コンピュータにより解析的に解けば、平行移動、回転、拡大・縮小などの座標変換が簡単に行えます。
9章 3次元グラフィックス
3次元空間にある物体を紙やデイスプレイという2次元平面に作画するには、それなりの方法が必要になります。
10章 リカーシブ・グラフィックス
リカーシブ・グラフィックスはグラフィックスの世界を解析的に表現せずに、再帰的に表現しようとするものです。
11章 パズル・ゲーム
子ども達がプログラミングで一番作りたいものがゲームです。ゲーム機のゲームのようなものは簡単にはできませんので、この章ではパズル的な簡単にできるゲームを紹介します。
12章 アラカルト
今までの各章で説明したアルゴリズムのカテゴリに属さない雑多なアルゴリズムを紹介します。
購入希望の方は以下のメールアドレスに連絡してください。個別に対応いたします。
asao.kasai@gmail.com