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

Scratch（スクラッチ）は、アメリカにある非営利団体Scratch財団がマサチューセッツ工科大学（MIT）メディアラボ ライフロングキンダーガーデングループ（MIT Media Lab Lifelong Kindergarten Group）と共同開発する、8歳から16歳のユーザーをメインターゲットとする無料教育ビジュアルプログラミング言語及びその開発環境、コミュニティサイトである。ウィキペディアと同様、収録されている全ての内容がオープンコンテントで、商業広告が存在しないことが特徴の一つである。 Scratchは世界中で使われており、1億6000万個以上の共有されたプロジェクト、15億個以上の未公開のプロジェクト、1億3500万ユーザー以上の登録ユーザー、約10億個のコメント、3400万個以上のスタジオが存在している。日本のユーザーはそのおよそ1.8%にあたる230万人以上となっている。。 ScratchはWindows、Mac、Linux、Raspberry Pi、Android、iPadなどに対応しており、ソースコードはGPLv2ライセンスとScratch Source Code LicenseとしてGitHubにて公開されている。 Scratchは、初心者が最初に正しい構文の書き方を覚えることなく実行でき、遊び心のある実験やアニメーション、ゲームなどの制作を通してさらなる学習意欲を起こさせることおよび、色々な人とのコメントやディスカッションフォーラムなどでのコミュニケーション能力の育成をすることを意図している。8歳から16歳の子供向けに開発されたものだが、子供から大人まで幅広い年代が使用している。2024年10月現在では、13歳で登録するユーザーが最も多い。 Scratchという名称はディスクジョッキー（DJ）がレコードを手でこするスクラッチングに由来しており、DJが気軽に曲をミックスすることと、Scratchで簡単にプロジェクトをミックス（リミックスと言う）することを関連付けている。2006年に最初のバージョンがMITメディアラボのミッチェル・レズニックが主導する「ライフロング・キンダーガーテン・グループ」にMITに来たEtoys開発チームのジョン・マロニーを招いて開発された。 Scratchの視覚的GUIは、子供達がプログラムブロックをスプライトやステージ、スペースにドラッグ・アンド・ドロップすることでアニメーション、アート、ストーリーやゲーム制作をゲーム感覚で簡単にできるようにしている。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のユーザインタフェースは複数の枠に分かれており、左側はブロックパレット、真ん中はスクリプトエリア、右側がステージとスプライトのリストである。 プログラムを作るために必要なブロックはブロックパレットに並んでおり、スクリプトエリアにドラッグできる。全てのブロックを表示するには多いため、ブロックは主に動き、見た目、音、制御、イベント、調べる、演算、変数、ブロック定義の9つのグループに分けられている。また、拡張機能により、ペンや外部機器との連携などの機能が追加できる。 障害等の有無にかかわらずサイトをアクセシブルにするため、2023年6月28日に画面上部のナビゲーションバーの色が青から紫に変わったほか、エディター画面のナビゲーションバーからブロックの色をハイコントラストに調整できる設定が追加されるなどの変更が行われた。 Scratch LabはまだScratchに実装されていない機能を試すことができる場所である。2024年10月現在、video sprites、Face Sensing、Animated Text、New Block Colorsを試すことができる。このうち、New Block Colorsが2023年6月28日にScratchに実装され、Scratchではユーザインタフェースを含むすべてのページの色が変更された。また、ここで作った作品はコミュニティに共有できない。 Scratchの拡張機能を使用すると、様々な種類のブロックが追加され、ロボットとPCを接続させることなどができる。以下は、Scratch 3.0での拡張機能の一覧である。 Scratchは教育施設（学校やプログラミング教室など）、博物館、コミュニティセンター、そして家庭内といった多くの場所で使われている。例として、低年齢の子供達は親や友達とプログラムを書くとき、大学生ではいくつかの計算機科学入門クラス（ハーバード大学の初級コンピュータクラス）でScratchが使われたりしている。Scratchは、表示される言語を変えることで世界中で使えるようになっている。ジョンズ・ホプキンス大学のCenter for Talented Youth（英語版） (CTY) ではCTYオンラインプログラムにて6年生の生徒向けにScratchプログラミングのオンラインコースを提供している。 Scratchのオンラインコミュニティのスローガンは「Imagine, Program, Share（想像・プログラム・共有）」でScratchの背後にある考え方の重要な部分として共有と創造性の社会的背景を指している。 またScratchのプロジェクトは新たなプロジェクトを作るためのリミックスに向けたものになっている。プロジェクトは開発環境からScratchのウェブサイトに直接アップロードでき、プログラムをリミックスして学習や、新たなプロジェクトとして共有することもできる。 Scratchユーザーはコメントをしたり、プロジェクトに好き（高評価の類）やお気に入り（「好き」と大差はないがユーザーが直近「お気に入り」をつけたプロジェクトを確認できるようになる）をつけたり、プロジェクトを共有したりすることができる。 共有されたプロジェクトには、クリエイティブ・コモンズ 表示-継承2.0ライセンスが適用され、商用利用や再利用ができる。 ウェブサイトでは頻繁に「Scratch Design Studio (SDS)」というユーザーが基本デザインコンセプトを使って制作、共有を奨励するチャレンジが開催されている。メキシコやイスラエル向けのカスタムホームページでは幾つかのセクションにローカルコンテンツが置かれている。ポルトガル やアラブ首長国連邦 でも独立したScratchウェブサイトがある。2008年、Scratchのオンラインコミュニティプラットフォーム（ScratchRと命名されている）がArs Electronica PrixのHonorary Mentionを受賞した。教育者向けのオンラインコミュニティとして「ScratchEd」というものもあったが、2019年5月にサイトが閉鎖された。 Scratch Day は、年に一度世界中で行われるScratchのイベントである。 だれでもイベントを主催することができ、どこでも開催することができるが、基本的に5月15日の前後の休日（土日）に行われるのが伝統である。これは、Scratchというサービスそのものが2007年5月15日に始まったことに由来する。始まりは、2009年にMITのKaren Brennanが、Scratchのリリース日にイベントをしようと思いたち、開催したことにある。以後、Scratch Dayは毎年世界各地で行われている。 Scratch Week Scratch Dayから移行されたイベント。Scratchを世界規模でバーチャル内でお祝いするというもの。2024年から始まった。 Scratchでは、エイプリルフール限定のイベントが毎年行われる。2021年、2020年は、「旗が押されたとき」などのイベントブロックが猫の形に変化していた。2022年では、特定ワードで検索すると検索結果が変化したり、エディターの上部に「モード」の項目が追加された。 ミッチェル・レズニック本人による、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 (スクラッチャー) とは、広義には、Scratchのユーザー。狭義には、「Scratcher」になるまでの「New scratcher」を除いたユーザー。この節では後者のScratcherについて説明する。 Scratcherになる方法は、Scratchteamが、コミュニティーガイドラインに違反をしていない安全なユーザーだと確認した時に、Scratchteamから送られた通知を受け取り同意することである(新規登録)。ただし、Scratcherになるための条件は明文化されておらず、申請によってScratcherの称号が与えられることはない。 Scratcherになると、Scratchのウェブサイト上にプロジェクトを公開できるほか、クラウド上にプロジェクトの変数を保存する「クラウド変数」や、コメントの連続投稿の規制が解除される。さらに、ディスカッションフォーラムでの投稿の合間に待つ時間が、120秒から60秒（60秒ルール）になったり、Scratchでスタジオを作成できるようになるなど、複数の制限が撤廃される。 Scratchウェブサイトにある機能やページの一部を紹介する。 Scratchの新しいプロジェクトを作成するツール。作ったプロジェクトをコンピューター内にファイル形式に保存できる。(.sb .sb2 .sb3形式がサポートされている。)また、Scratchのアカウントを所持していると、自動で保存がされ、「私の作品」からいつでも見れるようになる。最後に保存されたステージの画面が、プロジェクトのサムネイルとなる。 見るには「傾向」「人気」「最近」がある。7つのカテゴリに分けられており、「すべて」「アニメーション」「アート」「ゲーム」「音楽」「物語」「チュートリアル」がある。また、2019年8月までは、傾向は「流行」と呼ばれていた。 リミックスとは人が作ったプロジェクトを複製し、編集して作り替えることである。ただし、リミックスはScratchのアカウントを持っている人にしかできないようになっている。リミックスしたプロジェクトには、オリジナルの作者名とオリジナルのプロジェクトへのリンクが添付される。 初心者向けの動画や入門者用プロジェクトを見ることができる。バージョン2.0では「ヒント」と呼ばれていた。 Scratchに関係あることについて質問や会話を行う場所である。システムにはDjangoBBを採用している。 フォーラムで投稿をした際、下部に自動的に追加される投稿のこと。プロジェクトの宣伝など、他人に伝えたいことを署名に表示させている。 Scratchをインターネットに接続しなくても使用ができるオフラインエディターとして、Electronで動作するScratchアプリがWindows、Mac、Android、ChromeOS用に用意されている。 3.16.1 以前まではScratch Desktopと呼ばれていたが、3.16.1で名称がScratch 3に変更された。 これらのキャラクターはScratchの商標であり、Scratch以外のサイトでは、Scratchteamの明示的な許可なく利用することはできない。 猫をモチーフにしたキャラクター。毛の色はオレンジ色で、二足で直立している。Scratchを起動した時に、開発環境画面のステージ（背景）に必ず表示される。新しくプロジェクトを作成したときに必ず表示されており、「Scratch」の象徴となっている。Scratch 2.0から見た目が変わり、鼻は茶色から黒になり目や口や足、頭の形も変わった。また、Scratchサイト内であれば、Gobo同様に絵文字として使用できる。 黄色の体で、頭がとがったキャラクター。2011年に、Scratchチームが、Scratchのプロジェクトの中で、「9番目に多く使われているスプライト」と発表した。また、2.0から、Scratch Cat同様絵文字としても使用できるようになった。 以下は、「Goboの友達」と言われている。 2.0から追加されたスプライト。名前の由来は、単位の接頭辞の「ピコ」より。体はオレンジ色で、丸い耳がある。 2.0から追加されたスプライト。名前の由来は、単位の接頭辞の「テラ」より。体は青く、羽毛がある。 2.0から追加されたスプライト。名前の由来は、単位の接頭辞の「ナノ」から。体が灰色で、ほかのキャラクターと比べると、背が低い。 2.0から追加されたスプライト。名前の由来は、単位の接頭辞の「ギガ」から。頭の色が濃い赤色である。 Scratchのいくつかの派生 はScratch Modificationsと呼ばれ、Scratchのバージョン1.4のソースコード を使って制作された。これらのプログラムは通常「ブロック」が追加されたり GUIが変更されたScratchのバリエーションである。 Build Your Own Blocks（英語版） (BYOB)のようにそのうちのいくつかはさらにコンピューティングへの基礎的アプローチへのシフトを導入しているがBYOBにのみユーザーを許容しないものの、Scratchの一部ではないファーストクラス手続き（ラムダ）、ファーストクラスリスト（リストのリストを含む）、プロトタイプ継承を備えたファーストクラス真オブジェクト指向スプライトがある。BYOBはイェンス・ムーニッヒが開発し、カリフォルニア大学バークレー校のブライアン・ハーベイがドキュメンテーションを提供し、計算機科学専攻ではない学生への計算機科学初級コースにおける「The Beauty and Joy of Computing」を教える時に使用された。 Pyonkeeは、Scratch 1.4と同等の環境をiPadで再現したもので、2014年に登場した。伊藤忠テクノソリューションズが児童向けに開催するプログラミング教室でも採用されている。 Smalrubyは、日本発祥のプログラミング言語であるRubyをScratchと同一の操作性でプログラムする為に、任意団体スモウルビーにより作られたもの。 ScratchJr(スクラッチジュニア)は、Scratchを使うのに必要な文字の読み書きや算数を使えないより小さい子供たちのためにMITメディアラボが、タフツ大学とThe Playful Inventor Companyと協力して開発した。 プロジェクトをJavaScriptにコンパイルして1FPSから250FPSまでの速度で実行できるようにする。Scratch、Scratchチーム、Scratch財団とは提携していない。他にも補完機能、ペンのHD化などがあり、「高度な設定」で細かな設定ができる。TurboWarpには、Scratchのプロジェクトをロードする機能があり2022年11月9日まで非共有プロジェクトの閲覧、編集が可能だった。2022年11月10日にScratch APIの仕様が変更された為、非共有プロジェクトは基本的に閲覧、編集共に不可能になった。しかし、ダウンロードしたプロジェクトを開くことや、共有されたプロジェクトについては、従来通り閲覧可能。 ScratchとTurboWarpをベースに作成されたビジュアルコーディングサイト。penguinmod独自の拡張機能41個に加え、TurboWarpの拡張機能13個も使用できる。 ScratchとTurbowarpとPenguinModをベースに作成されたビジュアルコーディングサイト。PenguinModとTurbowarpの拡張機能に加え、Snail IDE独自の拡張機能13個が使用できる。 Forkphorusは、Scratch 3.0のプロジェクトをHTML化して実行できるツールである。 Stretch3は、人工知能（AI）を使用することができる拡張機能や、QRコードを読み取ることができる拡張機能なども追加されている[要出典]。 Snap！は、Scratchのソースコードを見本にカノニカルが開発したプログラミング言語。ブロックなどはほぼScratchを元にしているが、こちらはブロックを追加できるのが特徴。また、プロジェクトをScratchと同様に公開機能がある。 2020年8月、中国政府がグレート・ファイアウォール（GFW）を使用して、ScratchのWebサイトおよびScratch wikiへのアクセスをブロックしたことが判明した。理由は、Scratchのアカウントを作成する時に選択する国のリストに 「香港」「マカオ」「台湾」が含まれていたこと。 当時中国ではScratchを使用していた人の5.7%にあたる、300万ユーザーが利用していた。現在中国本土ではオンラインでScratchは出来ず、オフラインエディターを使用している。検閲を担当している中国の機関は「Scratchに掲載されている情報は、中国本土に対して、屈辱的で中傷的、また虚偽のものである」と声明を出している。 ScratchにはPCブラウザ向けに開発された「Scratch Addons」がある。2024年現在、385,000人のユーザーがいる。対応ブラウザはGoogleChrome、MicrosoftEdge、FireFoxの3つである。Scratchユーザーの声を非公式の運営団体によって、多くの機能が実装されている(2024年10月現在、174個の機能がある)。また、運営団体にDiscord、Youtube、Twitter等で直接意見を送ることができる。 [脚注の使い方] ^ スプライト選択時のみブロックが表示され、背景選択時は動きブロックを扱うことはできない。 ^ 共有の機能は、メールアドレスを認証していないと使えない。 ^ Scratch内の再利用は一部制限されている。 ^ Scratchコミュニティーのガイドライン[1] ^ Scratchのバージョン1.4はSmalltalk処理系のひとつであるSqueak2.8から派生して作られたMIT Squeakを使用して記述されている。 ^ 出典URL: https://scratch.mit.edu/discuss/topic/326861/, 題名: Scratch 3.0 is here!, 閲覧日: 2019年1月2日 ^ “Scratch - Imagine, Program, Share”. scratch.mit.edu. 2023年11月3日閲覧。 ^ Scratch source-code download page http://info.scratch.mit.edu[リンク切れ] ^ “Scratch - For Parents”. scratch.mit.edu. 2023年6月17日閲覧。 ^ “Scratch - Imagine, Program, Share”. scratch.mit.edu. 2024年1月30日閲覧。 ^ Schorow, Stephanie (2007年5月14日). “Creating from Scratch”. MIT News Office. http://web.mit.edu/newsoffice/2007/resnick-scratch.html 2014年1月25日閲覧。  ^ “Scratch: imagine, program, share”. Massachusetts Institute of Technology. 2007年5月25日閲覧。 ^ Scratch website ^ Scratch: 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 2.0 オフラインエディター”. 2020年4月9日閲覧。 ^ “Scratch - FAQ”. scratch.mit.edu. 2024年5月12日閲覧。 ^ ceebee* (2023年6月5日). “Coming Soon: Color Contrast in Scratch!”. Scratch. 2023年8月3日閲覧。 ^ “Scratch Lab”. lab.scratch.mit.edu. 2023年2月17日閲覧。 ^ “Scratch - Imagine, Program, Share”. scratch.mit.edu. 2023年6月29日閲覧。 ^ “【5限目】拡張機能の使い方 | スクラッチ（SCRATCH）を使ったプログラミング教材・学習サイト| TechKidsACADEMY”. 2024年1月5日閲覧。 ^ Scratch Day at Science Museum of Minnesota ^ Scratch for budding computer scientists ^ Scratch for budding computer scientists ^ CTYOnline Scratch Programming Course ^ Monroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. ACM interactions 15, 2 (March 2008), 50-53 ^ 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) ^ “よくある質問と答え(FAQ)”. 2017年9月3日閲覧。 ^ http://kids.sapo.pt/scratch ^ http://scratch.uaeu.ac.ae/ ^ http://www.aec.at/prix_history_en.php?year=2008 ^ ScratchEd ^ a b “Scratch Day”. Japanese Scratch-Wiki. 2019年12月7日閲覧。 ^ “Scratch in Practice” (英語). sip.scratch.mit.edu. 2024年10月4日閲覧。 ^ “エイプリルフール”. Japanese Scratch-Wiki. 2022年2月23日閲覧。 ^ “エイプリルフール”. scratch-wiki. 2022年7月2日閲覧。 ^ TEDxBeaconStreet ^ ミッチェル・レズニック 「子供達にプログラミングを教えよう」 ted.com ^ “Let's teach kids to code 「子どもにプログラミングを教えよう」”. 日本放送協会 (2013年9月23日). 2017年7月10日時点のオリジナルよりアーカイブ。2023年11月26日閲覧。 ^ “Scratch - よくある質問”. scratch.mit.edu. 2023年12月19日閲覧。 ^ New Scratcher - Japanese Scratch-Wiki ^ “Scratcher”. Japanese Scratch-Wiki. 2022年7月29日閲覧。 ^ “Scratchプロジェクトのダウンロード時のファイル形式”. Japanese Scratch-Wiki. 2024年10月4日閲覧。 ^ “見る”. Japanese Scratch-Wiki. 2021年11月8日閲覧。 ^ “Scratch - Imagine, Program, Share”. scratch.mit.edu. 2024年10月4日閲覧。 ^ “署名”. Japanese Scratch-Wiki. 2022年6月19日閲覧。 ^ “Scratch - Scratch Offline Editor”. 2024年1月7日閲覧。 ^ “Scratch 3 (アプリ)”. Japanese Scratch-Wiki. 2022年9月23日閲覧。 ^ “Scratch FAQ”. scratch.mit.edu. 2024年9月25日閲覧。 ^ “Scratchキャット”. Japanese Scratch-Wiki. 2021年10月21日閲覧。 ^ “Top 10 images in Scratch” (2011年2月14日). 2011年2月22日時点のオリジナルよりアーカイブ。2022年2月9日閲覧。 ^ Scratch Modification - Scratch Wiki "http://wiki.scratch.mit.edu" ^ http://wiki.scratch.mit.edu ^ BYOB homepage http://byob.berkeley.edu ^ Jens Mönig user contributions page ^ Mönig's blog post announcing BYOB as bringing protypal inheritance to Scratch ^ Brian Harvey homepage ^ Brian Harvey user contributions page ^ The Beauty and Joy of Computing course homepage ^ “タブレット端末を活用したプログラミング教育（3） － プログラミング・オン・モバイル －” (PDF). 名古屋文理大学紀要 第15号. 名古屋文理大学 (2014年). 2017年8月21日時点のオリジナルよりアーカイブ。2023年11月26日閲覧。 ^ 子ども向けプログラミングワークショップ 「未来実現IT教室 Children's Technology Challenge」開催 ^ 『FujiSankei Business i.』2016年（平成28年）10月21日付14面。 ^ “TurboWarp - Japanese Scratch-Wiki”. Japanese Scratch-Wiki. 2023年12月19日閲覧。 ^ “60 FPS (Custom FPS) | TurboWarp Documentation” (英語). docs.turbowarp.org. 2022年2月19日閲覧。 ^ “Unshared projects are no longer visible | TurboWarp Documentation” (英語). docs.turbowarp.org. 2022年12月23日閲覧。 ^ “PenguinMod - Home” (英語). penguinmod.com. 2024年7月7日閲覧。 ^ “Forkphorus”. Japanese Scratch-Wiki. 2024年2月3日閲覧。 ^ “China bans Scratch, MIT’s programming language for kids” (英語). TechCrunch. 2022年5月4日閲覧。 ^ “China appears to be blocking access to children's programming language Scratch - Computer - News” (英語). World Today News (2020年9月7日). 2022年5月4日閲覧。 ^ “未来网评：开放的中国不“排外”，但必须要“排毒” _未来网”. view.k618.cn. 2022年9月21日閲覧。 ^ “La Chine bannit Scratch, le langage d'apprentissage à la programmation - Le Monde Informatique” (フランス語). LeMondeInformatique (2020年9月8日). 2023年7月11日閲覧。 ^ “Scratch Addons”. Scratch Addons. 2024年10月4日閲覧。 ^ “Scratch Addons”. Scratch Addons. 2024年10月4日閲覧。 ^ “アドオン”. Scratch Addons. 2024年10月4日閲覧。 ^ “フィードバックを送信”. Scratch Addons. 2024年10月4日閲覧。 Lego Mindstorms LOGO RoboMind（英語版） ピョンキー Scratch