色々なプログラミングを試していますが、今回は教育用プログラミングの本丸とも言えるScratchについて書いてみたいと思います。ただ、もう試して見たというより結構触っているので、今回はScratchとはなんぞやをいつも以上に掘り下げて見たいと思っています。なおScratchを使って作ったサンプルプログラムなどは、別途記事にする予定です。
Scratchとは
Scratchとはマサチューセッツ工科大学(MIT)メディアラボが開発したブロック型のプログラミング言語で、今一番教育用プログラミングとしては人気のあるものとなっています。
動作環境
Scrathは現在大きく3つのメジャーバージョンに分かれており、それぞれの特徴は次の通りです。
Ver | オンライン | オフライン | PC | タブレット | ベース | 変更箇所 |
1.4 | × | ● | ● | × | Flash | – |
2.0 | ● 現利用不可 | ● | ● | × | Flash | 1.4→2.0変更点 |
3.0 | ● | ● | ● | ● Web経由 | HTML5 Javascript | 2.0→3.0変更点 |
バージョンは分かれているといいますが、よほどのことがない限り最新のバージョンを使うので良いと思いますし、オンライン版(ブラウザでWebアクセスして使うもの)については3.0版しか使えません。よほど古いバージョンじゃないと対応していないインターフェースとかじゃない限りこれからの人は最新版を選ぶで良いと思います。(市販のテキストは2.0などを対象としたものもありますが、それらを見ながら3.0で操作してもそんなに困ることもないと思いますよ)
対象年齢とScratch Jrとの比較
Scratchの対象年齢は、公式サイトでは8歳となっており、それ以下の年齢にはScratchJr(5歳から)を用意しているということなのでしょう。ということで、ここでScrachJrとの比較も書いておきたいと思います。
分類 | 対応機種 | キーボード マウス操作 | 保存 | コード 共有 | 扱う範囲 |
Scratch | PC スマホ タブレット | 有 | 端末内 Web上 | 可能 | 順次/反復/分岐 変数/配列/関数 |
Scratch Jr | タブレット | 無(指操作) | 端末内 | 不可 | 順次/反復/分岐 (一部) |
基本的にScratchはプログラムに必要な一通りのことはでき、実践的なプログラムの足掛けとなるようなもの、Scratch Jrは制限を絞り、タブレットに特化することで不慣れなマウス操作やキーボード操作を廃止し、純粋にプログラムの楽しさや仕組みを学ぶものとなるかと思います。
Scratch Jrについてはこちらの記事を参照ください。
Scratchの良い点
さて、数ある教育用プログラム言語の中でScrathが一番であるとオススメする理由ですがScratchの良い点としていくつか挙げられると以下の通りです。
ブロック言語であること
ブロック言語ということなので、提示されているブロックを組み合わせたり、そのブロックの中に数字や文字を入れることで順番があっていたら基本問題なく動きます。これに対して一般的なプログラミングは文字を打ち込んでいきます。そうした場合、スペルが違うとか最後に : (カンマ)がないとか、カッコで囲っていないとかで怒られたりして、あまりにもその回数が多いと心が折れます。
見た目が良いこと
まず書いたプログラムのアウトプットがとてもビジュアライズです。よくある本格的なプログラミング言語のテキスト教材を買ってきてやってみると、黒い画面に文字が表示されました、四則演算をして1+2=3になりましたとか、とてもつまらない結果ばかり、これに対して、Scratchでは画面の中の猫が左右に動く、音がでるなどあらかじめ用意された素材を使って、見た目に楽しいプログラムがすぐに書けます。これは子供にとってモチベーション維持に役立ちます。
環境がすぐに整うこと
プログラム言語によってはプログラムを実行させるのに、実行環境というものを別途用意する必要があります。この環境を作るのが初心者にとって1つのハードルです。C言語などは、プログラムを書いたあと、実行環境でコンパイルという変換処理を噛ませてできたプログラムを、さらに実行させるためにパスを正しく切ってあげる必要があったりと面倒です。それが教育用プログラミングの場合は、ソフトをインストールすると書いたすぐそばから実行できるので、このあたりのハードルが取り除かれています。もちろんScratchもそうです。
豊富な教材が揃っていること
プログラミングを勉強するにあたっては、いかに多くの教材が揃っているかが選択する際の1つの目安になります。特にScratchなどは、課題を1つ1つこなしていくドリル型ではなく、自分で作り上げるクリエイト型です。そう行った場合、教材テキストが多くあることが大きな手助けとなります。まず書店に行って、教育用プログラミングのコーナーを見たら、一番多いのがScrathに関する本ではないでしょうか?またWeb上に置いてもScratch関連の記事やサンプルプログラムを置いている人が多数いらっしゃると思います。そして一番心強いのが、今何かと話題のNHKでScratchを使った番組「Whyプログラミング」が放送されています。これを見るだけでもフムフムとプログラミングを勉強する上での道しるべとなります。
コミュニティがしっかりしていること
プログラミング選択の上でのもう1つの基準はコミュニティ(ボランティアでやっているサークルみたいなもの)がしっかりしていることです。プログラミング言語をやっていく中でも、細かな疑問点や不具合が出てくることがあります。それらは、教材に反映されたり、バグフィックスという形で次のバージョンで改善されることがあるのですが、それを待っていられないということもあります。そんな時にコミュニティと呼ばれる場に質問を投げると、解決策が帰ってくることがあります。
比較的豊富なプラグイン
ScratchにはLEGOのEV3やmbotというロボットとの接続や、micro:bitといった電子工作機器との接続が用意にできる機能が備わっていたり、インターネットにつないでGoolgeの翻訳機能や発音機能を使うといったことができます。つまりプログラムがScratchを使ってできる範囲がかなり広いということになります。先に書いた通りコミュニティがしっかりしていますので、このような拡張機能(プラグイン)は今後ますます増えていくことになるかと思います。
おそらく教育現場で使われるであろう言語の候補NO.1
Scrathはおそらくですが小学校などの教育機関で使われるであろう候補ナンバー1だと思います。なぜそうなのかについては、以下に示すメリットを総合してであると思うのですが、これについて分析した記事はこちらですので、こちらを参照してください。
学校で使われる可能性が一番高いということは、まずそれだけで選択したいという大きな理由になりますよね。
Scratchの悪い点
逆に悪い点を挙げるとすると、これはScratchに限らず教育用プログラミング全般に言えてしまうことかもしませんが以下のようなものがあげられます。ただし、これらは教育用プログラミング言語という枠で捉えると、まずはプログラミングの基礎をまなぶことが目的ですから、大きなデメリットにはならないとは思います。
実践的なプログラムではない
Scratchを極めても本格的な実践的なプログラムは作れないということが一つのネックです。これはScratchを使った本格的な業務用ソフトやゲームが存在していないことでもわかる通りです。就職で募集要項に「Scratch言語」ができることというのはありません。私Scratchできますと書いても、採用担当からは「うーん?」となってしまいます。そのため、プログラミングは何歳から始めるのという記事でも書きましたが、もう高校・専門学校とか大学生で次に就職を控えているという人は最初のとっかかりとしてScratchを数ヶ月やるのはいいけど、そのあとは、実践的な言語であるPythonやJavascript/JAVAなどを勉強することをオススメします。
あくまで教育的プログラミング言語ということを自転車でいうところでは補助輪付の自転車に乗っているようなもの、自動車で言えば仮免許で運転しているようなものです。
様々な制限
本格的なプログラミングに比べていくつか制限されていることがあります。これは教育用ということで分かりやすさ間違いを減らすことのトレードオフなのかもしれませんが、具体的には
配列が2次元以上作れない/変数の表示エリアが固定されている/変数は10個まで/スクリプトの複製が中途半端などや、そもそもiPhoneやAndroidのスマホアプリが作れないということです。
ただ、これについては、Scratchでできないことがわかってきて、それに不満を持つレベルになっていると、もうScrathは十分理解して卒業していいころかと思いますので、それほど気にすることではないかと思います。
オブジェクト思考を学べない。
こちらも上記の実践的なプログラミングではないという部分とかぶるのですが、Scratchでは純粋な意味でのオブジェクト指向を学べません。
オブジェクト思考を学べないとプログラミングが書けないのかというとそうでもないのですが、現在の開発においてはオブジェクト指向は基本となっています。しかし、このオブジェクト指向、なかなか理解するのが難しく。これは実際にオブジェクト指向に対応した言語を使ってコードを書いて見ないと身につきません。本格的なプログラマーになるという場合は、この部分を別の本格的な言語(PythonやJava)などで学ぶ必要があります。
Scratchの学び方(最初)
さて、Scratchをつかったプログラミング学習はどのように行うかです。
このScratchは基本がドリル型ではなく、自分で一からコードを書いていくクリエイト型なので、最初は誰かに教えてもらう必要があります。ただ、プログラミング教室に通わなければいけないかというとそうでもないと思っています。お父さん・お母さんにやる気があれば十分、最初のとっかかりはつかめます。以下に述べることをやるだけでも、かなりScratchでのプログラミング学習が進みます。
お父さん・お母さんが基本を理解して子供の隣で教えてあげる。そして子供が操作方法やプログラムの基本的なことを理解したら、あとは子供に任せてもどんどんコードを書いていくと思います。ある程度の年齢(ゲームの攻略法を自分でYoutubeやネットで探してくるよな年齢)であれば、プログラミングの楽しさを体感したら自分で問題解決をして成長していきますよ。
市販のテキストを購入
色々とScratchに関する市販のテキストを見てやって見たところ以下のテキストが一番がよいかと思いますので、まずはこのテキストをみてお父さん・お母さんが一度トライしてみてください。
NHKの教育番組を見る
あとはNHKの教育番組をみることです。NHKについては、N国党が出てきて最近何かと話題となっていますが、NHKの教育番組はやはり良質です。(僕はスクランブルではなく、NHKはニュースと教育用番組だけ残し、それ以外の朝ドラや大河ドラマ、紅白といったものは民放化して、BSも不要で受信料は500円以下にするという考え方なのですが、それはここでは関係ないですね。)
さて、そんなNHK。Scratchを教材として扱った番組があり「Why⁉プログラミング」という名前で厚切りジェイソンさんが出ておられます。こちらの番組では毎回1つのプログラムを例に出して、そこでどのようなコードがどのようなロジックに基づいて処理されているかを解説しています。それらを見ると、順次・反復・分岐といったことや、変数・配列・関数といった部分が理解できていくと思います。
mosipro.comの記事をみる
そしてこのmosipro.com の記事を見る(笑)。カテゴリプログラムの基本を選んでいただければ上記の部分についてざっくり解説していますよ。
Scratchの学び方(次のステップ)
Scrachの基本を学んで自分でもプログラミングが作れるようになったら、次のステップとして何をしていくかについて述べたいとおもいます。
書いたコードを公開しよう
書きたい内容が被るのでScratchの良い点の章であえて書きませんでしたが、Scratchでは自分が書いたコードを公開する場があります。プログラミングって基本パソコンの前に座って、一人でやる作業です。自分でいいプログラムを作っても、それを褒めてくる人がいないとモチベージョンが下がってしまいますよね。ピアノやバレエのレッスンも、発表会があるからこそ頑張れるもの。そういった公開の場がScrathには備わっています。そうやって公開することで、ちゃんと動く恥ずかしくないプログラムを書くぞという意識になるし、同時にいいねと褒められることでやる気が続きます。
他の友達が書いたコードを分析しよう
公開の場は同時に他の友達が作った作品を見る場でもあります。そして嬉しいことにScrathでは、他の人が書いたコードを見ることができます。この作品はどんな仕組みで動いているのだ?とそのコードの中身をみることで、ああ、そういうやり方をするのだと気づきにつながります。
そして、他の友達が作ったコードの一部を書き換えて再度公開するというリミックスという行為がみとめられています。公開の場でみつけた良質な作品に実際に手を加えて、より良いものにしていくことで、自分の実力も更にあがることでしょう。
Scratchコミュニティガイドラインより引用
Scratchで見つけたプロジェクトやアイディア、画像などすべてのものは、自由にリミックスできます。同様に、あなたがシェアしたものも、誰でも自由に使うことができます。リミックスするときは、必ずクレジット(元の作者名)を「作品への貢献」として記載してください。
以上がScratchの紹介になります。教育用プログラミングの再有力候補なので、記事がつい長くなってしまいました。ここに書いたことを参考にぜひScratchにトライしてみてください。
コメント