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

Scratch（スクラッチ）は、Scratch財団がマサチューセッツ工科大学（MIT）メディアラボ ライフロングキンダーガーデングループ（MIT Media Lab Lifelong Kindergarten Group）と共同開発する8歳から16歳のユーザーがメインターゲットの無料教育プログラミング言語及びその開発環境、コミュニティサイトである。
2023年6月17日の時点で、共有されたプロジェクト数は134,066,007個、投稿されたコメントはおよそ814,546,850件、作成されたスタジオの数は32,944,614個、ユーザー登録数は111,203,048ユーザー、日本はそのおよそ1.70%にあたる1,803,148ユーザーである。
概要.
Scratchは、初心者が最初に正しい構文の書き方を覚えることなく実行でき、遊び心のある実験やアニメーション、ゲームなどの制作を通してさらなる学習意欲を起こさせることを意図している。また、色々な人とのコメントや、ディスカッションフォーラムなどでコミュニケーション能力の育成も図れる。8 - 16歳の子供向けに開発されたものだが、子供から大人まで幅広い年代が使用している。2023年6月17日現在、12歳で登録するユーザーが最も多い。
Scratchという名称はディスクジョッキー（DJ）がレコードを手でこするスクラッチングに由来しており
DJが気軽に曲をミックスすることと、Scratchで簡単にプロジェクトをミックス（リミックスと言う）することを関連付けている。2006年に最初のバージョンがMITメディアラボのミッチェル・レズニックが主導する「ライフロング・キンダーガーテン・グループ」にMITに来たEtoys開発チームのジョン・マロニーを招いて開発された。Scratchは制作者の最優先事項を子供達が可能な限り簡単に学習するように作成できるため触覚的なプロセスを通した構築と実行が可能となっている。
Scratchの触覚や視覚的GUIは子供達がプログラムブロックをスプライトやステージにドラッグ・アンド・ドロップすることでアニメーション、アート、ストーリーやゲーム制作をゲーム感覚で出来るようにしている。正しい構文を読んでも書けない人のために視覚的にグループ分けされたブロックはそれらをクリックすることでテストできたり、リミックスや修正、プロジェクトの新バージョンを制作するために違うブロックを容易に書き換えることができる。
ScratchはWindows、Mac、Linux、Raspberry Pi、Android、iPadなどに対応しており、ソースコードはGPLv2ライセンスとScratch Source Code LicenseとしてGitHubにて公開されている。
2013年5月にScratch 2.0が公開され、ウェブアプリケーションとなり、開発環境のインストールが不要となった。そのためリミックス（プログラムの改造）が容易になり、従来のバージョンにはなかった、ウェブアプリケーションならではの機能が追加された。
2019年1月、Scratch 3.0が公開された。Scratch 3.0では、Scratch 2.0まで使用していたAdobe Flashを使用せず、HTML5を使用しているため、Internet Explorerなど一部のブラウザでは動作しなくなったが、その一方でスマートフォンやタブレット端末（Android, iPhone, iPad等）での利用がサポートされるようになった（開発グループは画面の大きさの関係でタブレット端末を推奨している）。さらに、いくつかの拡張機能の追加、ブロックの文字の読みやすさ向上など機能性や画質が向上した。
Scratchユーザインタフェース.
Scratch 3のユーザインタフェースは複数の枠に分かれており、左側はブロックパレット、真ん中はスクリプトエリア、右側がステージとスプライトのリストである。
プログラムを作るために必要なブロックはブロックパレットに並んでおり、スクリプトエリアにドラッグできる。全てのブロックを表示するにはあまりにも多すぎるため、ブロックは主に動き、見た目、音、制御、イベント、調べる、演算、変数、ブロック定義の9つのグループに分けられている。また、拡張機能により、ペンや外部機器との連携などの機能が追加できる。
webサイトの色の更新.
障がいのある人々を含むすべての人にとって、ウェブサイトがよりアクセシブルで、皆が利用できるように、2023年6月28日に画面上部のナビゲーションバーが青から紫に変わったり、プロジェクトエディターにハイコントラストブロックが追加されたりした。
Scratch Lab.
Scratch LabはまだScratchに実装されていない機能を試すことができる場所である。2023年3月現在、Face Sensing、Animated Text、New Block Colorsを試すことができる。しかし、ここで作った作品はコミュニティに共有できない。
このうち、New Block Colorsが実装され、3.0のページが2023年6月28日22時43分頃、2.0のページが同日23時15分頃に更新された。そのアップデートはプロジェクト制作画面にとどまらず、Scratchのすべてのページが変更された。
拡張機能.
Scratchの拡張機能を使用すると、様々な種類のブロックが追加され、実際にロボットを作りそのプログラムを設定するなどのことができる。
以下は、Scratch3.0での拡張機能の一覧である。
ユーザーコミュニティ.
Scratchは教育施設（学校やプログラミング教室など）、博物館、コミュニティセンター、そして家庭内といった多くの場所で使われている。例として、低年齢の子供達は親や友達とプログラムを書くことが出来たり、大学生はいくつかの計算機科学入門クラス（ハーバード大学の初級コンピュータクラス）でScratchが使われたりしている。表示される言語を変えることで世界中で使えるようになっている。ジョンズ・ホプキンス大学の (CTY) ではCTYオンラインプログラムにて6年生の生徒向けにScratchプログラミングのオンラインコースを提供している。 様々な機能に関して実証研究が行われた。直感的な学習に干渉する機能は放棄され、初心者を励まし、探究・学習を容易にするような機能は残された。いくつかの成果は驚くべきもので、Scratchを他の教育言語（BASIC、LOGO、Alice）と全く異なるものにしている。
オンラインコミュニティ.
Scratchのオンラインコミュニティのスローガンは「Imagine, Program, Share（想像・プログラム・共有）」でScratchの背後にある哲学の重要な部分として共有と創造性の社会的背景を指している。
またScratchのプロジェクトは新たなプロジェクトを作るためのリミックスに向けたものになっている。プロジェクトは開発環境からScratchのウェブサイトに直接アップロードでき、プログラムをリミックスして学習や、新たなプロジェクトとして共有することもできる。
Scratchユーザーはコメント、好き（高評価の類）・お気に入り（「好き」と大差はないがユーザーが直近「お気に入り」をつけたプロジェクトを確認できるようになる）をつけたり、プロジェクトを共有することが出来る。
プロジェクトはゲームからアニメーション、3Dにまで範囲が及んでいる。
共有されたプロジェクトには、クリエイティブ・コモンズ 表示-継承2.0ライセンスが適用され、商用利用が出来る。
ウェブサイトでは頻繁に「Scratch Design Studio (SDS)」というユーザーが基本デザインコンセプトを使って制作、共有を奨励するチャレンジが開催されている。メキシコやイスラエル向けのカスタムホームページでは幾つかのセクションにローカルコンテンツが置かれている。ポルトガル やアラブ首長国連邦 でも独立したScratchウェブサイトがある。2008年、Scratchのオンラインコミュニティプラットフォーム（ScratchRと命名されている）がArs Electronica PrixのHonorary Mentionを受賞した。教育者向けのオンラインコミュニティとして「ScratchEd」というものもあったが、2019年5月にサイトが閉鎖された。
またScratcherによるオンライン百科事典「Scratch Wiki」が存在し、日本語版は2015年3月23日に作成された。
イベント.
Scratch Day.
Scratch Day は、年に一度世界中で行われるScratchのイベントである。 だれでもイベントを主催することができ、どこでも開催することができるが、基本的に5月15日の前後の休日（土日）に行われるのが伝統である。これは、Scratchというサービスそのものが2007年の5月15日に始まったことに由来する。
2009年にMITのKaren Brennanが、Scratchのリリース日にイベントをしようと思いたち、開催したのが初めてのScratch Dayである。 以後、Scratch Dayは毎年世界各地で行われている。
日本では主に東京で毎年2009年から毎年開催されている Scratch Day in tokyo や、各地域のCoderDojoなどが主催するScratch Dayがある。
現在はScratch Weekと名前を変え開催されている。
エイプリルフール.
Scratchでは、エイプリルフール限定のイベントが毎年必ず行われる。2021年、2020年は、「旗が押されたとき」などのイベントブロックが猫の形に変化していた。2022年では、大きなものでいうと、特定ワードで検索すると検索結果が変化したり、エディターの上部に「モード」というのが追加された。また、Scratch Wikiでは、一部の記事がエイプリルフール用の記事に変化していた。
Scratchの派生.
Scratchのいくつかの派生 はScratch Modificationsと呼ばれ、Scratchのバージョン1.4のソースコード を使って制作された。これらのプログラムは通常「ブロック」が追加されたり GUIが変更されたScratchのバリエーションである。
 (BYOB)のようにそのうちのいくつかはさらにコンピューティングへの基礎的アプローチへのシフトを導入しているがBYOBにのみユーザーを許容しないものの、Scratchの一部ではないファーストクラス手続き（ラムダ）、ファーストクラスリスト（リストのリストを含む）、プロトタイプ継承を備えたファーストクラス真オブジェクト指向スプライトがある。BYOBはイェンス・ムーニッヒが開発し、カリフォルニア大学バークレー校のブライアン・ハーベイがドキュメンテーションを提供し、計算機科学専攻ではない学生への計算機科学初級コースにおける「The Beauty and Joy of Computing」を教える時に使用された。
2014年にはScratch 1.4と同等の環境をiPadで再現した「Pyonkee」が登場した。伊藤忠テクノソリューションズが児童向けに開催するプログラミング教室でも採用されている。
日本国内では更にJavaScriptではなく、日本発祥のプログラミング言語であるRubyを同一の操作性でプログラムする為に、任意団体スモウルビー(2014年6月1日に「NPO法人Rubyプログラミング少年団」へ改名)により「Smalruby」というものも作られて展開している。
ScratchJr(スクラッチジュニア)は、Scratchを使うのに必要な文字の読み書きや算数を使えないより小さい子供たちのためにMITメディアラボが、タフツ大学とThe Playful Inventor Companyと協力して開発した。
Scratchで使われる言葉.
このうち「Scratcher」「New scratcher」「Scratchチーム」に関しては、ユーザーのプロフィールに表示されるなどウェブサイト内で公式な使われ方をしている。また、「New scratcher」から「Scratcher」になるところにも明確な基準が存在していると言われることもあるが、これは単なる噂であり、公式な情報はない。詳しくは後掲。
展開.
ミッチェル・レズニック本人による、Scratchを題材としたプレゼンテーション「"Let's teach kids to code." (子供たちにプログラミングを教えよう)」が、2012年11月におこなわれたTEDxBeaconStreetにて講演され、その模様がTEDによって公開されている。この中でミッチェル・レズニックは、Scratchを利用して子供にプログラミングを覚えさせることの優位性、特にコーディングを通して得られる様々な経験が、その子供がプログラマになるかならないかに関わらず、将来職に就き、仕事をこなすうえでとても有益である、と説いている。
また、TEDやTEDxの講演イベントでおこなわれたプレゼンテーションから英会話を学ぶことを目的とした、NHKによる教育番組「スーパープレゼンテーション」でもこのプレゼンテーションが取り上げられている。NHK Eテレでは『Why!?プログラミング』で公式にプログラミングソフトとして採用されたり、民放では千葉テレビ放送・BSフジの『GP LEAGUE プログラミングコロシアム』で放送される「GP LEAGUE」での公式言語の1つにもなっている。
Scratcher.
Scratcher (スクラッチャー) とは、Scratchのユーザーの一つの称号であり、Scratchチームが荒らしやスパム、「コミュニティーガイドライン」に違反をしていない安全なユーザーと確認したユーザーに与えられる。Scratcherになると、クラウド上にプロジェクトの変数を保存する「クラウド変数」や、コメントの連続投稿の規制が解除される。さらに、ディスカッションフォーラムでの投稿の合間に待つ時間が、120秒から60秒（60秒ルール）になったりScratchのスタジオを作成できるようになるなど、複数の制限が撤廃される。
また、アカウントを作成したときは「New Scratcher」となっている。前述のように様々な規制がある。Scratcherになるための条件は明示化されていない。
Scratchの機能.
Scratchにある機能の一部を紹介する。
Scratchアプリ.
Scratchをインターネットに接続しなくても使用ができるオフラインエディターとして、Electronで動作するScratchアプリがWindows、Mac、Android、ChromeOS用に用意されている。
3.16.1 以前まではScratch Desktopと呼ばれていたが、3.16.1で名称がScratch 3に変更された。
以下、ソースコード上では存在したがインストーラー等が存在しないバージョンもあるが、GitHub上のソースコードからコンパイル可能である。
ファイルの形式.
Scratch1.4.
Scratch1.4は、.sb形式である。このファイルは9つに分かれている。以下にその説明を記述する。
Scratch2.0.
Scratch2.0は.sb2形式であり、内容は.jsonファイルと、サウンド（.wavとして保存）および画像（.pngとして保存）を含むzipファイルである。
Scratch3.0.
Scratch3.0は.sb3形式であり、これはScratch2.0の.sb2と非常によく似ているが、違いの1つに音がある。
公式キャラクター.
Giga(ギガ).
また、このキャラクターはScratchの商標であり、
Scratch以外のサイトで明示的な許可なく利用することはできない。
ScratchのMOD.
TurboWarp.
TurboWarpは、ScratchのMODの一つ。プロジェクトをJavaScriptにコンパイルして1FPSから250FPSまでの速度で実行できるようにする。他にも補完機能、ペンのHD化などがあり、「高度な設定」で細かな設定ができる。TurboWarpには、Scratchのプロジェクトをロードする機能があり2022年11月9日まで非共有プロジェクトの閲覧、編集が可能だった。2022年11月10日にScratch APIの仕様が変更された為、閲覧、編集共に不可能になった。
JSONハック.
Scratchは.jsonというファイルにデータ、ブロックが保存されている。それを編集することで、引数となる部分を変更できる。
Stretch3.
いくつかの拡張機能が追加されている。例えば、QRコードを読み取る機能など。
他のサイト.
Scratchにはその他にもMODがたくさんある。その一部を紹介する。
検閲.
2020年8月、中国政府がScratchのWebサイトへのアクセスをブロックしたことが判明した。原因はScratchに登録する時に選択する国リストに 「香港」「マカオ」「台湾」が含まれていたからである。 当時中国ではScratchを使用していた人の5.7%にあたる、300万ユーザーが利用していた。現在中国本土ではオンラインでScratchは出来ず、オフラインエディターを使用している。検閲を担当している中国の機関は「Scratchに掲載されている情報は、中国本土に対して、屈辱的で中傷的、また虚偽のものである」と声明を出している。