Scratch (プログラミング言語)
概要
初心者が最初に正しい構文の書き方を覚えること無く結果を得られる、遊び心のある実験やインタラクティブアニメーション、ゲームなどの製作を通してさらなる学習のやる気を起こさせることを意図している。
2006年に最初のバージョンがMITメディアラボのミッチェル・レズニックが主導するライフロング・キンダーガーテン・グループにMITに来たEtoys開発チームのジョン・マロニーを招いて開発された。Scratchは製作者の最優先事項を子供達が可能な限り簡単に学習するように作成できるため触覚的なプロセスを通した構築とテストが可能となっている。
Scratchの触覚や視覚的GUIは子供達がコンディション（パラメータ付き）や結果(アクション)のブロックを選択したエージェント（スプライトと呼ばれる）や背景（ステージと呼ばれる）にドラッグ・アンド・ドロップすることでインタラクティブアニメーション、プレゼンテーション、ストーリーやシンプルなゲームを遊び心かつプログラム的に製作することを出来るようにしている。文法的に正しい構文を読んでも未だに書けない子供達のために視覚的にグループされたブロックはそれらをクリックすることでテストできたり、リミックスや修正、プロジェクトの新バージョンを製作するために違うブロックを容易に書き換えることもできる。
ScratchはWindows、macOS、Linuxに対応しており、ソースコードはGPLv2ライセンスとScratch Source Code Licenseとして公開されている。
2013年5月にScratch 2.0が公開され、ウェブアプリケーションとなり、ソフトのダウンロードが不要になった。そのため、リミックス（改造）が容易になり、その他従来のバージョンにはなかった、ウェブアプリケーションならではの機能が追加された。
2019年1月、Scratch 3.0が公開された。これにより、タブレット端末での利用がサポートされるようになった一方、Internet ExplorerやOperaなど一部のブラウザでは動作しなくなった。
Scratchユーザーインタフェース
Scratch開発環境のユーザインタフェースは複数の枠に分かれており、左側はブロックパレット、真ん中は現在のスプライト情報とスクリプトエリア、右側がステージ（背景）とスプライトのリストである。
ブロックパレットにはプログラムを作るためにスプライトエリアにドラッグできるScratchではブロックと呼ばれるフラグメントがある。パレットを保持するにはあまりにも大きすぎるため、ブロックは動き、見た目、音、ペン、制御、調べる、演算、変数の8つのグループに分けられる。
バージョン1.3.1以前では「オペレーター」は「ナンバー」と名付けられていた。メッセージパッシングのあるマルチスレッドコードはScratchにとって重要だが、現バージョンは最初のクラス構造の手続きを扱っておらず、ファイルI/Oオプションも無く、リストのような1次元の配列しかサポートしていない。フローティングポイントのスカラーや文字列はバージョン1.4以降でサポートされているが、文字列操作機能に制限がある。またScratchプログラミング言語のかなり限定された範囲においてパワフルなマルチメディア機能とマルチスレッドプログラミングスタイルとの間に強い差異がある。
ユーザーコミュニティ
Scratchは教育施設、博物館、コミュニティセンター、そして家庭内といった多くの異なる場所で使用される。例として低年齢の子供達は親や兄姉とプロジェクトを製作することが出来たり、大学生はいくつかの計算機科学入門クラス（ハーバード大の初級コンピュータクラス）でScratchを使用したりしている。Scratchでダウンロード出来るローカライゼーションファイルでインターフェイスの言語を変えることで世界中で使用できるようになっている。ジョンズ・ホプキンス大学のCenter for Talented Youth(CTY)ではCTYオンラインプログラムにて6年生の生徒向けにScratchプログラミングのオンラインコースを提供している。
様々な機能に関して実証研究が行われた。直感的な学習に干渉する機能は放棄され、初心者を励まし、探究・学習を容易にするような機能は残された。いくつかの結果は驚くべきもので、Scratchを他の教育言語（BASIC、LOGO、Alice）と全く異なるものにしている。
オンラインコミュニティ
Scratchのオンラインコミュニティのスローガンは「Imagine, Program, Share（想像・プログラム・共有）」でScratchの背後にある哲学の重要な部分として共有と創造性の社会的背景を指している。
またScratchのプロジェクトは新たなプロジェクトを作るためのリミックスに向けたものになっている。プロジェクトは開発環境から直接Scratchのウェブサイトやコミュニティのメンバーに直接アップロードができ、ソースコード全てをダウンロードして勉強や新たなプロジェクトにリミックスすることも可能である。
Scratcherはまたプロジェクトのギャラリーやコメント、タグ、好きを作ったり、他のプロジェクトを好む意思を示したりアイデアを共有することが出来る。プロジェクトはゲームからアニメーション、CPUチャットまで範囲が及んでおり、全てのプロジェクトはクリエイティブ・コモンズの表示-継承ライセンス下で公開されウェブブラウザ2018年9月時点で3000万人以上の登録ユーザーがおり（しかし、プロジェクトを共有しているのは275,000以上のユーザーのみとされる）、330万以上のプロジェクトがある（1分ごとに複数のプロジェクトがアップロードされる計算）。またウェブサイトでは頻繁に「Scratch Design Studio(SDS )」というユーザーが基本デザインコンセプトを使って製作、共有を奨励するチャレンジが開催されている。メキシコやイスラエル向けのカスタムホームページでは幾つかのセクションにローカルコンテンツが置かれている。ポルトガルやアラブ首長国連邦でも独立したScratchウェブサイトがある。2008年、Scratchのオンラインコミュニティプラットフォーム（ScratchRと命名されている）がArs Electronica PrixのHonorary Mentionを受賞した。教育者向けのオンラインコミュニティとしてScratchEdというのもある。
またScratcherによる百科事典である「Scratch Wiki」も存在する。Scratchの様々な情報が記載されており、日本語版は2015年3月23日に作成された。
名称の由来
Scratchの由来はディスクジョッキーがレコードを手でこするスクラッチと呼ばれる技術であり、DJが気軽に曲をミックスすることと、Scratch言語によって簡単にプロジェクトをミックスすることを関連付けたことによる。
派生
Scratchのいくつかの派生はScratch Modificationsと呼ばれScratchのバージョン1.4のソースコードを使って製作された。これらのプログラムは通常「ブロック」が追加されたりGUIが変更されたScratchのバリエーションである。
Build Your Own Blocks(BYOB)のようにそのうちのいくつかはさらにコンピューティングへの基礎的アプローチへのシフトを導入しているがBYOBにのみユーザーを許容しないものの、Scratchの一部ではないファーストクラス手続き（ラムダ）、ファーストクラスリスト（リストのリストを含む）、プロトタイプ継承を備えたファーストクラス真オブジェクト指向スプライトがある。BYOBはイェンス・ムーニッヒが開発し、カリフォルニア大学バークレー校のブライアン・ハーベイがドキュメンテーションを提供し、計算機科学専攻ではない学生への計算機科学初級コースにおける「The Beauty and Joy of Computing」を教える時に使用された。
2014年にはScratch 1.4と同等の環境をiPadで実現した「Pyonkee」が登場した。伊藤忠テクノソリューションズが児童向けに開催するプログラミング教室でも採用されている。
日本国内では更にJavaScriptではなく、日本発祥のプログラミング言語であるRubyを同一の操作性でプログラムする為に、任意団体スモウルビー(2014年6月1日に「NPO法人Rubyプログラミング少年団」へ改名)により「Smalruby」というものも作られて展開している。
展開
ミッチェル・レズニック本人による、Scratchを題材としたプレゼンテーション「Let's teach kids to code(子供たちにプログラミングを教えよう)」が、2012年11月におこなわれたTEDxBeaconStreetにて講演され、その模様がTEDによって公開されている。この中でミッチェル・レズニックは、Scratchを利用して子供にプログラミングを覚えさせることの優位性、特にコーディングを通して得られる様々な経験が、その子供がプログラマになるかならないかに関わらず、将来職に就き、仕事をこなすうえでとても有益である、と説いている。
また、TEDやTEDxの講演イベントでおこなわれたプレゼンテーションから英会話を学ぶことを目的とした、NHKによる教育番組「スーパープレゼンテーション」でもこのプレゼンテーションが取り上げられている。NHK Eテレでは『Why!?プログラミング』で公式にプログラミングソフトとして採用されたり、民放では千葉テレビ放送・BSフジの『GP LEAGUE プログラミングコロシアム』で放送される「GP LEAGUE」での公式言語の1つにもなっている。