Scratch (プログラミング言語)

Scratch（スクラッチ）は、アメリカにある非営利団体Scratch財団がマサチューセッツ工科大学（Massachusetts Institute of Technology、MIT）のMITメディアラボ（MIT Media Lab）内にあるライフロング・キンダーガーテン・グループ（Lifelong Kindergarten Group）と共同開発する、8歳から16歳のユーザーをメインターゲットとする無料教育ビジュアルプログラミング言語及びその開発環境、コミュニティサイトである。ウィキペディアと同様、収録されている全ての内容がオープンコンテントで、商業広告が存在しないことが特徴の一つである。

ScratchはMicrosoft Windows、Mac、Linux、Raspberry Pi、Android、iPadなどに対応しており、ソースコードはGPLv2ライセンスとScratch Source Code LicenseとしてGitHubにて公開されているScratch source-code download page http://info.scratch.mit.edu。

 概要 
代替文=|サムネイル|200x200ピクセル|プロジェクト作成時のスクリーンショット
Scratchは、コミュニケーション能力の育成をすることを意図している。また、8歳から16歳の子供向けに開発されたものであるが、年齢に関わらず使用可能で、子供から大人まで幅広い年代が使用している。世界においては1.35億人、日本においては2018年10月現在、33万人以上の登録ユーザーがいるとされる。そして、Scratchのプロジェクト総投稿数は、10億以上である。

Scratchという名称はディスクジョッキー（DJ）がレコードを手でこするスクラッチングに由来しており、DJが気軽に曲をミックスすることと、Scratchで簡単にプロジェクト（Scratchを用いてプログラミングされた作品のこと）をリミックス（プログラムの改造、ミックス）することを関連付けている。

Scratchの視覚的GUI（グラフィカルユーザインタフェース）は、子供達がプログラムブロックをドラッグ・アンド・ドロップすることでアニメーション、アート、ストーリーやゲーム制作を遊び感覚で簡単にできるようにしているScratch websiteScratch: Programming for All. Resnick, M., Maloney, J., Monroy-Hernandez, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., Kafai, Y. (2009). Scratch: Programming for All. Communications of the ACM, November 2009。Scratchではブロックが視覚的にグループ分けされており、正しい構文を読み書きできない人のために、ブロックをクリックすることでテストしたり、リミックスや修正、プロジェクトの新バージョンを制作するためにブロックを容易に書き換えたりすることができるデザインとなっている。

ライフロング・キンダーガーテン・グループにEtoys開発チームのジョン・マロニーを招いて、2006年にScratchの最初のバージョンが開発された。

2013年5月にScratch 2.0が公開され、ウェブアプリケーションとなり、開発環境のインストールが不要となった。そのためリミックスが容易になり、従来のバージョンにはなかった、ウェブアプリケーションならではの機能が追加された。

2019年1月にScratch 3.0が公開された。Scratch 2.0まで使用していたAdobe Flashを使用せず、HTML5を使用しているため、Internet Explorerなど一部のブラウザでは動作しなくなったが、スマートフォンやタブレット端末（Android, iPhone, iPad等）での利用がサポートされるようになった（開発グループは画面の大きさの関係でタブレット端末を推奨している）。ただし、リストの表示のサイズ変更など、マウスのポインターでないと行えない操作もある。また、いくつかの拡張機能の追加、ブロックの文字の読みやすさ向上、機能性や画質の向上などの変化があった。

 ユーザインタフェース 

Scratch 3.0のエディター（ユーザインタフェース）は複数の枠に分かれており、左側はブロックパレット（ブロックが陳列されている場所）、真ん中はスクリプトエリア（ブロックをつなげてプログラムを作る場所）、右上がステージ（プログラムに従ってスプライトなどが動作する場所）、右下がスプライトのリストである。
サムネイル|Scratchのユーザインタフェースのスクリーンショット|310x310ピクセル
プログラムを作るにはブロックを使う。ブロックはブロックパレットに並んでおり、スクリプトエリアにドラッグ・アンド・ドロップすることで、プログラムを作ることができる。ブロックは主に動き、見た目、音、制御、イベント、調べる、演算、変数、ブロック定義の9つのカテゴリーに分けられている。また、拡張機能を追加すれば、音楽、ペン、カメラ、合成音声、外部機器との連携などの機能が使えるようになる。

カテゴリー説明動きスプライトの動きを制御するブロック動きブロックはスプライトのコーディングにのみ使用でき、背景をコーディングする際は表示されない。。見た目スプライトやステージの見た目を制御するブロック。音あらかじめプロジェクトに読み込ませておいた音を実行、制御するブロック。イベントスクリプト実行のきっかけとなるブロック。制御スクリプトを制御したりクローンを作成したりするブロック。調べるプロジェクトのさまざまな要素について調べるブロック。演算数式や計算、文字列を扱うブロック。変数変数やリスト（配列）に数値や文字列を保存して使うブロック。ブロック定義特定のプログラムを制御するブロック。拡張機能音楽、カメラ、合成音声などの様々なブロック。(デフォルトでは非表示)

 Scratch Lab 
Scratch Labは、まだScratchに実装されていない機能を試すことができるウェブサイトである。2025年9月現在、Video Sprites、Face Sensing、Animated Textを試すことができる。また、このサイトで作ったプロジェクトは、Scratchウェブサイトに共有できない。また、Face Sensingは既にScratchに実装されている。

 Scratchの色の更新 
障害等の有無に関わらずサイトをアクセシブルにするため、当時Scratch Labの機能の一つであったNew Block Colorsが、2023年6月28日にScratchに実装された。ブロックの色をハイコントラストに変更できる機能の追加が行われたほか、ユーザインタフェースの色が青から紫に変えられるなどしたウェブサイトの色を青から紫にする変更も同時に行われた。

 ユーザーコミュニティ 
Scratchは教育施設（学校やプログラミング教室など）、博物館Scratch Day at Science Museum of Minnesota、コミュニティセンター、そして家庭内といった多くの場所で使われている。例として、低年齢の子供達は親や友達とプログラムを書くとき、大学生ではいくつかの計算機科学入門クラス（ハーバード大学の初級コンピュータクラスScratch for budding computer scientistsScratch for budding computer scientists）で、Scratchが使われている。また、ジョンズ・ホプキンス大学の（CTY）では、CTYオンラインプログラムにて、6年生の生徒向けにScratchプログラミングのオンラインコースを提供しているCTYOnline Scratch Programming Course。Scratchは様々な言語に対応しているので、世界中で使える。

 オンラインコミュニティ 
Scratchのオンラインコミュニティのスローガンは「Imagine, Program, Share」（想像・プログラム・共有）であり、Scratchの背後にある考え方の重要な部分として、共有と創造性の社会的背景を指しているMonroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. ACM interactions 15, 2 (March 2008), 50-53。

また、Scratchのプロジェクトは新たなプロジェクトを作るためのリミックスに向けたものになっている。プロジェクトは開発環境からScratchのウェブサイトに直接アップロードでき、プログラムから学習したり、リミックスして新たなプロジェクトとして共有したりすることもできるMonroy-Hernández, A., Hill, B. M., González-Rivero, J., boyd, d. (2011) Computers Can't Give Credit: How Automatic Attribution Falls Short in an Online Remixing Community. In Proceedings of the 29th International Conference on Human Factors in Computing Systems (CHI '11)Hill, B.M, Monroy-Hernández, A., Olson, K.R. (2010) Responses to remixing on a social media sharing website. In AAAI International Conference on Weblogs and Social Media (ICWSM '10)。

Scratchのユーザーはコメントをしたり、他人のプロジェクトに「好き」や「お気に入り」をつけたり、自分のプロジェクトを共有したりすることができる共有の機能は、メールアドレスを認証していないと使えない。。共有されたプロジェクトにはクリエイティブ・コモンズ 表示-継承2.0ライセンスが適用され、商用利用や再利用ができるScratch内の再利用は一部制限されている。。

ウェブサイトでは頻繁に、「Scratch Design Studio (SDS)」というユーザーが基本デザインコンセプトを使って制作、共有を奨励するチャレンジが開催されている。メキシコやイスラエル向けのカスタムホームページでは幾つかのセクションにローカルコンテンツが置かれている。ポルトガルhttp://kids.sapo.pt/scratch やアラブ首長国連邦http://scratch.uaeu.ac.ae/ でも独立したScratchウェブサイトがある。

2008年、Scratchのオンラインコミュニティプラットフォームである「ScratchR」がArs Electronica PrixのHonorary Mentionを受賞したhttp://www.aec.at/prix_history_en.php?year=2008。教育者向けのオンラインコミュニティとして「ScratchEd」というサイトもあったが、2019年5月に閉鎖されたScratchEd。

 イベント 
 Scratch Day 
Scratch Dayは、年に一度世界中で行われるScratchのイベントである。誰でもイベントを主催することができ、どこでも開催することができるが、基本的には5月15日の前後の休日（土日）に行われる。これは、Scratchというサービスそのものが2007年5月15日に始まったことに由来する。Scratch Dayの始まりは、2009年にマサチューセッツ工科大学のKaren Brennanが、Scratchのリリース日にイベントをしようと思いたち、開催したことにある。以後、Scratch Dayは毎年世界各地で行われている。

 Scratch Week 
Scratch Dayから移行されたイベント。Scratchを世界規模でバーチャル内でお祝いするというもの。2024年から始まった。

 展開 
2012年11月に行われたTEDxBeaconStreetTEDxBeaconStreetにて、MITメディアラボのミッチェル・レズニックによるScratchを題材としたプレゼンテーション「Let's teach kids to code. (子供たちにプログラミングを教えよう)」が講演され、その模様がTEDによって公開されているミッチェル・レズニック 「子供達にプログラミングを教えよう」 ted.com。この中でレズニックは、Scratchを利用して子供にプログラミングを覚えさせることの優位性、特にコーディングを通して得られる様々な経験が、その子供がプログラマーになるかならないかに関わらず、将来職に就き仕事をこなすうえでとても有益である、と説いている。

また、TEDやTEDxの講演イベントで行われたプレゼンテーションから英会話を学ぶことを目的とした、NHK Eテレの教育番組『スーパープレゼンテーション』でもこのプレゼンテーションが取り上げられている。Eテレでは他にも『Why!?プログラミング』で公式にプログラミングソフト（一部画面が異なっている部分もある）として採用されており、民放では千葉テレビ放送・BSフジの『GP LEAGUE プログラミングコロシアム』で放送される「GP LEAGUE」での公式言語の1つになっている。

 Scratchのアプリ 
インターネットに接続しなくてもScratchを使用することができるオフラインエディターとして、Electronで動作するアプリがWindows、macOS、ChromeOS、Android用に用意されている。

Windows、macOS用のアプリは、3.16.1 より前まではScratch Desktopと呼ばれていたが、3.16.1で名称がScratch 3に変更された。

 ScratchのMOD 

ScratchのMODはScratch 1.4のソースコードScratch 1.4はSmalltalk処理系のひとつであるSqueak2.8から派生して作られたMIT Squeakを使用して記述されている。 を使って制作され、ブロックが追加されたりGUIが変更されたりしている。

 (BYOB)のように、ScratchのいくつかのMODは、さらにコンピューティングへの基礎的アプローチへのシフトを導入しているが、BYOBにのみユーザーを許容しないものの、Scratchの一部ではないファーストクラス手続き（ラムダ）、ファーストクラスリスト（リストのリストを含む）、プロトタイプ継承を備えたファーストクラス真オブジェクト指向スプライトがあるBYOB homepage http://byob.berkeley.edu。BYOBはイェンス・ムーニッヒが開発しJens Mönig user contributions pageMönig's blog post announcing BYOB as bringing protypal inheritance to Scratch、カリフォルニア大学バークレー校のブライアン・ハーベイがドキュメンテーションを提供しBrian Harvey homepageBrian Harvey user contributions page、計算機科学専攻ではない学生への計算機科学初級コースにおける「The Beauty and Joy of Computing」を教える時に使用されたThe Beauty and Joy of Computing course homepage。

 Pyonkee
 Scratch 1.4と同等の環境をiPadで再現したもので、2014年に登場した。伊藤忠テクノソリューションズが児童向けに開催するプログラミング教室でも採用されている子ども向けプログラミングワークショップ 「未来実現IT教室 Children's Technology Challenge」開催『FujiSankei Business i.』2016年（平成28年）10月21日付14面。。
 TurboWarp
プロジェクトをJavaScriptにコンパイルして1FPSから250FPSまでの速度で実行できるようにする。Scratch、Scratchチーム、Scratch財団とは提携していない。他にも補完機能、ペンのHD化など様々な機能がある。TurboWarpにはScratchのプロジェクトをロードする機能があり、2022年11月9日まで、Scratchウェブサイトでは非共有になっているプロジェクトの閲覧が可能だった。しかし、11月10日にScratch APIの仕様が変更された為、非共有プロジェクトは基本的に閲覧が不可能になった。ただし、ダウンロードしたプロジェクトを開くことや、共有されたプロジェクトを閲覧することは、従来通り可能。また、ゲームをアプリ化することもできる。
また、TurboWarpにはscratchLabのようにscratchにない拡張機能が多数存在する。中にはネットワークとやり取りできるものもあるこれらの拡張機能を使用したプロジェクトはscratchにアップロードできない。ただし「AnimationText」拡張機能はScratchLabと互換性がある。(一部互換性のないブロックあり)
 Penguinmod
ScratchとTurboWarpをベースに作成されたビジュアルコーディングサイト。Penguinmod独自の拡張機能41個に加え、TurboWarpの拡張機能13個も使用できる。

 中国政府による検閲 
2020年8月、中国政府がグレート・ファイアウォール（GFW）を使用して、Scratchウェブサイトへのアクセスをブロックしたことが判明した。理由は、Scratchのアカウントを作成する時に選択する国のリストに 「香港」「マカオ」「台湾」が含まれていたこと。 当時中国ではScratchを使用していた人の5.7%にあたる、300万ユーザーが利用していた。現在、中国本土ではオンラインでScratchを使うことは出来ず、オフラインエディターを使用している。検閲を担当している中国の機関は、「Scratchに掲載されている情報は、中国本土に対して、屈辱的で中傷的、また虚偽のものである」と声明を出している。

 脚注 

 注釈 

 出典 

 関連項目 
 Lego Mindstorms
 LOGO

 コンテンツ利用プログラミング

 外部リンク 
 Scratch
 Scratch Lab
 Scratch Wiki

Scratch
*
Category:2006年のソフトウェア
Category:教育用プログラミング言語
Category:教育に関する自由ソフトウェア
Category:マサチューセッツ工科大学
Category:ソフトウェア開発者コミュニティ
Category:インターネット・ミーム