見出し画像

スクラッチが学校で禁止される理由と、その解決に向けて


スクラッチの概要

スクラッチ(Scratch)はMITが共同開発したプログラミング言語および、それを用いた作品の開発・共有を行うプラットフォームである。改めてその特徴について記述しておく。

特徴①「ビジュアルプログラミング言語」

プログラミング言語の特徴としてはまず第一に、子供が利用することを前提として「ビジュアルプログラミング言語」となっていることである。

「ビジュアルプログラミング言語」は「テキストプログラミング言語」の相対するようなものである。
「テキストプログラミング言語」を子供が使用する問題点として、テキストで記述するという特徴からハードルが高いことが挙げられる。例えるなら他国の言語をライティングすることと同じであると捉えてもらってよい。文法や単語を理解するのはもちろん、記述するにはスペルを覚える必要がある。また、実行するためにはタイピングする必要があることもあり、それらの要素は習得や学習を困難にしている。

その解決として、「ビジュアルプログラミング言語」が使われている。一口に「ビジュアルプログラミング言語」といっても形式は様々だが、スクラッチを例とすると、前述したような覚える必要があった文法や単語がブロックとなっており、それらを積み木のように組み合わせることでプログラムすることができる。操作の多くはマウスで完結していることもあり、「テキストプログラミング言語」の多くの課題を解決している。

特徴②「低い敷居・高い天井・広い壁」

「ビジュアルプログラミング言語」というだけであれば、他にもたくさんの言語やプラットフォームが存在している。では何故スクラッチが多く利用されているのか。

「低い敷居・高い天井・広い壁」はスクラッチのコンセプトである。
「低い敷居」は誰でも始めやすいこと。
「高い天井」は難しいこともできること。
「広い壁」はいろいろなことができること。

「低い敷居」として「ひらがなでできること」・「自然な日本語に近いこと」・「UIが分かりやすいこと」などが挙げられる。日本産のビジュアルプログラミング言語は少なく、その影響で翻訳される中でどうしても固い日本語になっているものが少なくない。ひらがなでできることと自然な日本語であることはそれだけで大きな価値であるといえる。

「高い天井」として「本格的な作品が作れる」・「変数をはじめとしたプログラミングの概念を学ぶことができる」などが挙げられる。スクラッチはゲーム・アプリ・アニメーションの開発に主眼が置かれており、作るのに必要なものが多く備わっている。変数をはじめとしたプログラミングの概念もそのひとつである。前述した「低い敷居」の他の言語として、言葉を使わずに絵や記号のみを組み合わせることでプログラムするものもあるが、そういったものはシンプルなアニメーションを作る程度にとどまる。スクラッチは低い敷居でありながらもその問題を克服しているといえる。

「広い壁」として「拡張機能に対応している」「ペイント機能がある」「音や音楽を作成できる」などが挙げられる。先ほども述べたが、スクラッチはそれ単体でゲームを作れるように様々な機能が備わっている。詳細はきりがないので省くが、基本的なことはワンパッケージでできると捉えてもらってよいだろう。

特徴③「コミュニティ機能」

スクラッチの代名詞と言えるのが、このコミュニティ機能である。ざっくり言えば作られた作品を中心としたSNSといったところだろうか。

各個人がアカウントを取得することができ、自分が作った作品を"投稿"することができる。それに対して閲覧者はコメントをしたり、その作品を改変したものを「リミックス」としてさらに投稿することができる(引用リツイートみたいなもん)。

人気のある作品はトップページに取り上げられるなどするため、スクラッチ上での人気クリエイターのような存在がいたりする。このコミュニティは年々大きく拡大している。

しかし容易に想像できると思うが、この特徴が現在学校でのスクラッチの活用を妨げている。

スクラッチを取り巻く環境

今回の問題の発端

まずはこの動画を見てほしい。

2:45~あたりから話題に上がっているのは、小学校でスクラッチを使用禁止にしているところがあるというものである。
その理由として、スクラッチでゲームができてしまうということが話されている。

コミュニティ機能の問題点

分かり切っているかも知れないが、前述したコミュニティ機能には問題が存在する。1つ目はスクラッチが無料ゲームプラットフォームと化しているということ。2つ目はコミュニティの一部作品に著作権問題があるということ。3つ目はSNS機能が存在していることである。

1つ目のスクラッチが無料ゲームプラットフォームと化している点については、スクラッチが大規模化したことによって起こったことともいえる。元々は子供たちの発表の場だった場所が気づけば様々な人間が参加し、とても子供が作るレベルじゃないようなとてつもない作品、子供たちが夢中になって長時間遊ぶことができるようなゲームがコミュニティにあふれるようになった。その結果どうなったかと言えば前述したコミュニティ機能の方式に則って、それらは人気のある作品となりトップページを席巻した。本来であれば、子供たちがそんな楽しいゲームをリミックスすることでプログラミングを学習することもできるのだろうが、大規模化したゲームはもはやそんな気も起こさせないレベルになってしまっている。

2つ目のコミュニティの一部作品に著作権問題があるということについてだが、これは実際にスクラッチのトップページを訪れてもらうのが早いと思う。そこには、アニメやゲーム等キャラクターの絵が使われているものが数多く存在している。中には音楽まで使っているものもあり、正直カオスな状態である。スクラッチで制作する際に、データをインポートしたり録音したりすることが可能なため、こういったことが起こる。厄介なのは、また一度それがコミュニティに出現すればリミックス機能によって瞬く間に広がっていくことであり、もうすでに根絶は不可能といえる。
(新たに投稿するのとリミックスとで色々違ったりするが、気になる方は調べてほしい)

3つ目のSNS機能だが、これは単純に作品に対してコメントするだけではなく、そこで会話が発生することもある。私の届く範囲でこれで大きな問題になったということは聞かないが、匿名同士のSNSで問題が起こらないことがあるのだろうか。

さて、これらのコミュニティ機能の問題から、学校で使うのはどうなんだという話になっているということである。
当たり前だが公的な場、もしくは教育の場である学校が使うと宣言することの意味は大きい。問題点が明確なものを敢えて使う意味が問われる。
(そこを教えるのも教育じゃないかという意見もあるだろうが、教材価値という面で見てもらえればと思う)

スクラッチの言語としての問題点

そもそも、上記のコミュニティ機能の問題がなかったとしたらスクラッチは教材として完璧なのだろうか。前述したスクラッチの持つ特徴は確かに価値があるが、一方で教材として使う上ではそうではない部分も存在している。その多くはゲームが作れるという高い天井ゆえの問題である。

問題①「実行するスピードが不変」

スクラッチはゲームを作る都合上、プログラムの実行するスピードがある程度高速(1ブロックあたり1/30秒)である。こうなると、個別のブロックがそれぞれどのように動作しているか、どの順番で動いているかなどを実行結果からフィードバックを得ることが難しい。実際、他のプログラミング教材では実行するスピードがブロック一つ一つわかるようになっていたり、可変であったりする。

問題②「疑似マルチスレッド」

(これは他の多くのビジュアルプログラミング言語もそうである。)
マルチスレッドとは、ざっくり言うとプログラムで2種類の動きを並行して行うことができるものであり、スクラッチはこれを疑似的に行っている。しかし、問題①と同様にマルチスレッドでは1つ1つのプログラムの順番性が不透明となってしまう。

問題③「プログラミング以外の要素」

前述した通り、スクラッチ内で絵を描いたり、録音したりなど様々なプログラミング以外のことをすることができる。これは良くも悪くも興味を引きやすい。結果それらで時間が終わってしまったり満足してしまうことにつながってしまう可能性がある。

これらの問題から、「なんかよくわからんけど楽しかった」活動になる危険性をスクラッチは常に抱えている。そうでなくともプログラミング教育は始まったばかりであり、目的が指導側で明確化されているとは言い難い。もう一度スクラッチの是非については議論を行うべきではないだろうか。(プログラミング教育の目的については別のnoteで話したいと思う)

解決に向けて

この問題に対し、2つの方向から代替案が考えられる。
代替案①はSNS機能を省いたスクラッチ。
代替案②はスクラッチ以外のビジュアルプログラミング言語である。

代替案①「SNS機能を省いたスクラッチ」

スクラッチ自体は元々オープンソースの言語であるため、それを用いたサービスはいくつか存在している。その中にはSNS機能が存在しないものもあり、これは今回取り上げた問題点を解決するものである。
例:つくるっち様 http://sohta02.sakura.ne.jp/tukurutch/

代替案②「スクラッチ以外のビジュアルプログラミング言語」

スクラッチ以外にも様々なビジュアルプログラミング言語が存在し、それぞれに特徴がある。これらを比較し、用途や子供に合ったものを選択するべきである。このスクラッチ以外のものについてはまた違うnoteでまとめたいと思う。

教材を選ぶこと

代替案を検討するべき大きな理由は、教材に合わせて授業を設計するべきではないからである。それよりも授業を設計するにあたり、授業の目的に即した教材を選択するべきであり、そう選べばスクラッチ以外のものも候補に入るはずだ。

もちろんスクラッチが最善であると考えたならばスクラッチを使えばよい。しかし、スクラッチしか知らない状態でスクラッチを選択するべきなのだろうか。様々な選択肢を知ることや、スクラッチを批判的に検討することも一つであると考える。そのきっかけとなったのであれば幸いである。

以下愚痴↓

プログラミング教育をやらせたいのであれば、公式として何かしらプログラミング言語なりプラットフォームを用意するべきなのではないか。
それが使いやすいかどうかはともかく、それをたたき台として様々な議論が生まれることも考えられる。今はそこにすらたどり着いていないのではないか。少なくともスクラッチが使用禁止になるこの現状(または禁止にせざるを得ない環境)は好ましいとは言えず、早急な解決が求められる。


この記事が気に入ったらサポートをしてみませんか?