| パラダイム | オブジェクト指向、教育、イベント駆動 |
|---|---|
| デザイン: | ブライアン・ハーヴェイとイェンス・メーニグ |
| 開発者 | イェンス・メーニグ |
| 初登場 | 2011年 |
| 安定版リリース | 9.2.17 / 2024年4月24日[1] |
| タイピングの規律 | 動的 |
| 実装言語 | Morphic.js [2] ( JavaScriptで記述)[注 1] |
| OS | クロスプラットフォーム |
| ライセンス | AGPL |
| ファイル名拡張子 | .xml (スナップ! ) |
| Webサイト | スナップ |
| 影響を受けた | |
| Scratch、Scheme、ロゴ、Smalltalk、APL | |
| 影響を受けた | |
| BeetleBlocks、NetsBlox、Dragme IDE、Turtlestitch | |
Snap ! (旧称 Build Your Own Blocks) は、ブロックベースの無料教育用グラフィカルプログラミング言語およびオンラインコミュニティです。Snap を使用すると、生徒は数学や計算のアイデアを学びながら、インタラクティブなアニメーション、ゲーム、ストーリーなどを探索、作成、リミックスできます。Scratch に触発されながら、Snap !には多くの高度な機能があります。Snap !エディターとその中で作成されたプログラムは、インストールを必要とせずにブラウザーで実行される Web アプリケーションです( Scratch 3など) 。 [注 2]これは、 Jens Mönig によって Snap! 自体と「裸の」JavaScript の間の「中間層」として書かれたMorphic GUIであるMorphic.js [2]上に構築されています。
ユーザーインターフェース
Snap !では、画面は 3 つのサイズ変更可能な列で構成され、5 つの領域が含まれています。ブロック グループ セレクター (左の列の上部)、ブロック パレット (左の列)、メイン領域 (中央の列)、ステージ領域 (右の列の上部) で、その下にスプライト サムネイルを表示するスプライト セレクター (スプライト コラールとも呼ばれます) があります。[注 3]
インタラクティブにサイズ変更可能なステージ領域には、スクリプト領域で実行されているスクリプトや、任意のパレットでインタラクティブにダブルクリックされた個々のブロックのグラフィカルな結果が表示されます。個々のブロックをパレットからスクリプト領域にドラッグして、選択したスプライトに関連付けることができます。

Snap !のブロックは、モーション、ルック、サウンド、ペン、コントロール、センシング、演算子、変数の 8 つのグループに分かれています。ブロック グループ セレクターでのこれらのグループのレイアウトは、次の表に示されています。
中央の領域には、選択したスプライトに関連付けられたスクリプト、衣装/背景、またはサウンドが表示されます。その領域に表示される内容は、選択したタブによって異なります。
特徴
Snap !にはあって Scratch にはない 最も重要な機能は次のとおりです。
- 灰色のリング内のブロックで表される匿名関数を使用する式。この式には、1 つ以上の空のスロット/引数があり、そのスロット/引数は「高階関数」(匿名関数を呼び出す関数) によって埋められます。(コンピューター サイエンスの理論的基礎は第一級関数であり、さらに抽象的で数学的な基礎としてラムダ計算があります)
- ファーストクラスのリスト(リスト/配列のリストを含む)
- ファーストクラスのスプライト(言い換えれば、プロトタイプベースのプログラミング)
- 「ハイパーブロック」: 自然なドメインがスカラー (テキストまたは数値) である関数。リストを入力として受け入れ、リストまたはサブリスト内のスカラーに基礎となる関数を適用するように拡張されています。
- ネスト可能なスプライト
- Snap !プログラムをPython、JavaScript、Cなどのテキスト言語にコード化します。
- メタプログラミング、リフレクション、マクロ
マスコット

Snap !のマスコットである Alonzo は、ラムダで表される汎用関数が、さまざまな組み合わせでそれ自身を呼び出すことで任意の関数動作を作成できる計算モデルの発明者である Alonzo Church の名前を冠しています。このマスコットは、Scratch チームの許可を得て、Gobo from Scratch の修正版として作成されています。Alonzo Churchの研究はラムダ計算と呼ばれているため 、マスコットの髪はギリシャ文字のラムダの形をしています。
特殊用途ブロック(ライブラリ)
Snap !ライブラリには、たとえばライブラリの特殊ブロック (「stream」、「show stream」、「tail of stream」、および「map ( ) over stream 」ブロック) を使用して完全な無限フィボナッチ数列を作成できる「streams」ライブラリなどの拡張ブロック セットがあります。
その他の特殊な目的のために、「リスト ユーティリティ」ライブラリ、「単語、文」ライブラリ、「反復」ライブラリ、「アニメーション」ライブラリ、「頻度分布」ライブラリ、「オーディオ計算」ライブラリ、「棒グラフ」ライブラリ、「世界地図」ライブラリ、「色とクレヨン」ライブラリ、「文字列と複数行入力」ライブラリ、「並列化」ライブラリなど、他の多くのライブラリも利用できます。
制限事項
ソフトウェア自体にはほとんど制約はありませんが、いくつかの制限はあります。
これらには次のものが含まれます。
- ネイティブクラウド変数なし
- アップロードできるファイルサイズは10メガバイトです (Snap ! Cloud のみ)
- ユーザーはプロジェクトをロードするときに手動でJavascriptを有効にする必要があります
歴史
ウェブベースのSnap !と古いデスクトップベースのBYOBは、どちらもJens MönigによってWindows、OS X、Linux向けに開発され[3] 、カリフォルニア大学バークレー校のBrian Harvey [4]が設計アイデアとドキュメントを提供し、コンピュータサイエンス(CS)を専攻していない学生向けの入門コース「コンピューティングの美しさと喜び」を教える際に使用されました。 [5] JensはSnap!を作成する前はScratchチームのメンバーでした。[6] BYOBは現在でもダウンロード可能です。
ライセンス
Snap !のソースコードはGNU Affero General Public License (AGPL) ライセンスで提供されており、 GitHubでホストされています。[7]以前のデスクトップベースの 3.x バージョンのコードは、非商用目的のみで改変を許可するライセンスで提供されており、カリフォルニア大学バークレー校の Web サイト[8]またはCNETのdownload.comおよび TechTracker のダウンロード ページからダウンロードできます。[9] [10]
プラットフォーム
Snap! は、 Windows、iOS、MacOS、Linuxデバイス上の主要な Web ブラウザーで動作します。
サポートされているウェブブラウザ
- ファイアフォックス
- Chrome (およびほとんどの Chromium ベースのブラウザ)
- オペラGX
- マイクロソフトエッジ
- サファリ
実装
Snap ! は、Morphic GUIであるMorphic.js [2]の上に構築されており、Snap! 自体と「裸の」JavaScript の間の「中間層」として機能します。HTML5 Canvasアプリケーション プログラミング インターフェイス(API)を使用します。
Snap !に表示されるものはすべてモーフです。つまり、すべてのボタン、スライダー、ダイアログ ボックス、メニュー、入力フィールド、テキスト レンダリング、点滅カーソルなどは、HTML DOM 要素ではなく morphic.js で作成されます。Snap!はスプライトの形状をキャッシュするため、マウスが境界ボックス上を移動するたびにスプライトを新しい Canvas 要素に再描画する必要はありません。ただし、ブロックはキャッシュされません。代わりに、モーフィック「ホール」メカニズムを通じて C 字型のブロックの内部を管理します。
すべてのユーザー インタラクションはイベントによってトリガーされ、イベントはルート要素「ワールド」からそのサブモーフに渡されます。モーフをドロップすると、新しい「所有者」(「親」) モーフに埋め込まれます。Morphic でアニメーションを実行する推奨方法は、アニメーションをワールドのアニメーション キューに追加してワールドに登録することです。ワールドは、Morphic のステップ メカニズムとは関係なく、登録された各アニメーションをディスプレイ サイクルごとに 1 回ずつ実行します。
認識
Snap ! は、 Logo Foundation に認められ、[11]プログラマー向けのオンライン マガジンでレビューされました。[12] 2014 年 12 月現在、ニューヨーク市の 100 の高校が、Snap ! を使用して、カリフォルニア大学バークレー校の「コンピューティングの美しさと喜び」を新しい AP コンピューター サイエンス プリンシプル コースとして導入しました。[13] Jens と Brian は、Snap ! に一部基づいた生涯功績により、National Technology Leadership Summit (NTLS) 2020 Educational Leadership Award を受賞しました。
注記
- ^ BYOB は Squeakで書かれました。
- ^ Snap !の前身である BYOB は Scratch の改良版であり、プロジェクトをWindows 実行ファイルとしてエクスポートできました。
- ^ 2.0 以前の Scratch バージョンの画面の構成方法。
参考文献
- ^ “jmoenig/Snap”. GitHub . 2024年5月17日閲覧。
- ^ abc Mönig, Jens. 「morphic.js」。GitHub 。 2023年6月7日閲覧。
- ^ 「Scratch - Imagine, Program, Share」. scrap.mit.edu . 2017年5月21日閲覧。
- ^ 「Brian Harvey (bh@cs.Berkeley.EDU) のホームページ」。people.eecs.berkeley.edu /~bh /。 2019年1月19日閲覧。
- ^ 「UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011」. inst.eecs.berkeley.edu . 2017年5月21日閲覧。
- ^ 「Scratchチームとの関係 - 政治 - Snap!フォーラム」。forum.snap.berkeley.edu 。 2020年1月2日時点のオリジナルよりアーカイブ。
- ^ "jmoenig/Snap". GitHub . 2017年5月21日閲覧。
- ^ 「Snap! (Build Your Own Blocks) 4.0」. snap.berkeley.edu . 2017年5月21日閲覧。
- ^ CNET Download.com および CNET TechTracker の BYOB for Windows ダウンロード ページ
- ^ CNET の Download.com と TechTracker BYOB for Mac ダウンロード ページ
- ^ 「ロゴの歴史」。el.media.mit.edu 。 2017年5月21日閲覧。
- ^ Gee, Sue. 「Visual Language Snap! バージョン 4.0 リリース」。i -programmer.info。2017年5 月 21 日閲覧。
- ^ 「ファクトシート:コンピュータサイエンス教育を支援するための新たな取り組み」。obamawhitehouse.archives.gov 。 2014年12月8日。 2019年1月20日閲覧。
外部リンク
- 公式サイト
