Snap! (プログラミング言語)
Snap!のロゴ | |
パラダイム | object-oriented, educational, event-driven |
---|---|
登場時期 | 2011年 |
設計者 | Brian Harvey and Jens Mönig |
開発者 | Jens Mönig |
最新リリース | 8.0.0/ 2022年8月5日[1] |
型付け | dynamic |
影響を受けた言語 | Scratch, Scheme, Logo, Smalltalk, APL |
影響を与えた言語 | BeetleBlocks, Snapi, Dragme IDE |
プログラミング言語 | JavaScript (Snap!), previously Squeak (BYOB version) |
プラットフォーム | Cross-platform |
ライセンス | AGPL |
ウェブサイト | スクリプトエラー: モジュール「URL」はありません。 |
拡張子 | .xml (Snap!) |
Snap! (旧称:Build Your Own Blocks(BYOB))は、ブロックをベースにした無料の教育用グラフィカル・プログラミング言語であり、数学や計算のアイデアを学びながら、インタラクティブなアニメーション、ゲーム、ストーリーなどを探求、作成、リミックスすることを目的としたオンラインコミュニティです。Snap! は、Scratch を元にして一から構築されています。Web ブラウザ上の開発環境の中で各々の機能を持ったブロックを組み合わせてスクリプト(プロジェクト)を作成し、実行します。Scratch のようにクラウド上にプロジェクトを保存し、公開することができます。インストールを必要とせずにブラウザ上で動作するウェブアプリケーションですが、オフラインのブラウザ上で使用することもできます。操作方法や機能に違いはありますが、Scratch と同等のブロックを持っているので、Scratch のようにプログラミングをすることもできます。Scheme 言語や APL 言語の機能を取り入れ、独自のブロックが追加されています。
ユーザーインターフェイス[編集]
Snap! の画面には、ブロックグループセレクタ(左列上部)、ブロックパレット(左列)、メインエリア(中列)、ステージエリア(右列上部)、その下にはスプライトのサムネイルを表示するスプライトセレクタ(スプライトコラルともいう)の5つの領域があります。ブロックパレット、メインエリア、ステージエリアはサイズ変更可能になっています。ステージエリア(フルスクリーンも可能)には、スクリプトエリアにあるスクリプトの実行結果(アニメーションやグラフィックスなど)や、パレットにあるブロックがクリックされた時の実行結果が表示されます。選択されたスプライト用のスクリプトは、必要なブロックをパレットからスクリプトエリアにドラッグして組み立てていきます。
Snap! のブロックは、Motion(動き), Looks(見た目), Sound(音), Pen(ペン), Control(制御), Sensing(調べる), Operators(演算), Variables(変数) の8つのグループに分けられます。 ブロックグループセレクターでのこれらのグループのレイアウトを次の表に示します。
カテゴリー | 内容 | カテゴリー | 内容 | |||
---|---|---|---|---|---|---|
Motion 動き |
スプライトの移動や 向きの変更 |
Control 制御 |
条件分岐や繰り返し処理 イベント処理 | |||
Looks 見た目 |
スプライトの外見 コスチュームの変更や表示 |
Sensing 調べる |
スプライトの当たり判定や ユーザー入力 | |||
Sound 音 |
既存又は作成した 音を鳴らす |
Operators 演算 |
算術演算,文字列処理, 論理演算用のブロック | |||
Pen ペン |
ステージ上に軌跡を 表示する |
Variables 変数 |
変数やリスト 及び処理用ブロック |
特徴[編集]
・マウスでのブロックのドラッグ & ドロップだけでなく、キーボードを使用してスクリプトを作成することができます。ブロックが複雑になり長くなった場合には、自動的に折り畳まれます。同じパレットのブロックが重なった時は判別しやすいように色の濃淡が調整されます。
・変数には値をリポートするものならば何でも入れることができます。リストも変数に入れて使用します。リストが入っているリストを入れることもできます。リングで囲ったスクリプト、スプライト、作成したクローンを変数に入れて操作することもできます。スクリプト変数(ローカル変数)が使えます。
リストに対しての演算はリスト全要素に対して行われますし、リスト対リストの演算は対応する要素同士に対して行われます。リストの全要素に対して指定された操作をするブロックが用意されています。
・デバッグ機能 : プログラムを途中で止めたり続行させることができるポーズボタンがあります。Visible stepping ボタンで実行のスピードをコントロールしたり 1 ブロックずつのステップ実行もできます。スクリプト中に pause all ブロックを入れて一時停止させることができます。
・高機能なカスタムブロック : すべてのスプライトから使用できるカスタムブロックを作成可能(ローカルも可)。値をリポートするブロックや、分岐やループなどの制御ブロックも作成することができます。
引数としての入力スロットにはカスタムブロックやリングで囲ったスクリプトを入れることができ、また、カスタムブロックなどを戻り値としてリポートすることもできます(「高階関数」)。
カスタムブロック内でローカル変数にスクリプトを入れると、そのカスタムブロック内だけで使用できる局所定義ブロックにすることができます。
・1個または複数のブロックを call や run ブロックなどに入れて無名関数として実行することができます。 call や run 側で指定した引数を灰色のリング内、ブロック内の入力スロット側で参照することができます。
・ファーストクラスのスプライト。
Scratch のクローンと同じ機能のテンポラリクローンに加え、手動で作成する常駐的なパーマネントクローン(親のスクリプトを継承)が使えます。
ネスティング可能なスプライト(stick 機能)。例えば、胴体のスプライトに腕を、腕のスプライトに手を...と接続させることができます。各々のスプライトは接続時の位置関係を保ちながら自分自身のスクリプトを実行します。
・JavaScript のプログラムを call などで実行可能。(JavaScript 有効時)
マスコット[編集]
Snap! のマスコットは Alonzo です。ラムダ関数の計算モデルの発明者である Alonzo Church 氏の名前を由来としています。マスコットの髪の毛はギリシャ文字のラムダ(λ)の形をしています。
ライブラリー[編集]
libraries には Snap! の機能を拡張するためのさまざまなブロックが用意されています。例えば、'Iteration, composition' ライブラリーを import すると、for ブロックで増減値 step を指定できるものや while ブロックなどが使用できるようになります。
歴史[編集]
Webベースの Snap! と古いデスクトップベースのBYOBは、、カリフォルニア大学バークレー校の Brian Harvey[2]氏によって設計のアイデアとドキュメントが提供され、Microsoft Windows, OS X, Linux 用に Jens Mönig 氏によって開発されました[3]。Snap! は "The Beauty and Joy of Computing" を教えるために使用されています。これは、コンピュータサイエンスを専攻していない学生を対象としたコンピュータサイエンスの入門コースです[4]。 Jens 氏は Snap! を作成する前はスクラッチチームのメンバーでした[5]。 BYOBは引き続きダウンロードすることができます。Snap! の日本語化コードは阿部和広氏によって作成されています。
ライセンス[編集]
Snap! のソースコードはAffero General Public License (AGPL) ライセンスで、GitHubでホストされています。デスクトップベースの3.x以前のバージョンのコードは、非商用利用のみ修正を許可するライセンスで、UCバークレーのウェブサイト、CNETの Download.com および TechTracker のダウンロードページからダウンロードできます。
プラットホーム[編集]
Snap! は、HTML5 Canvasアプリケーションプログラミングインターフェース(API)を使用してJavaScriptで実装されているため、Windows、iOS、OS X、Linuxデバイスの主要な Web ブラウザで動作します。
出典[編集]
- ↑ “jmoenig/Snap”. GitHub. 2022年8月5日閲覧。
- ↑ “HomePage for Brian Harvey (bh@cs.Berkeley.EDU)”. people.eecs.berkeley.edu/~bh/. 2019年1月19日閲覧。
- ↑ “Scratch - Imagine, Program, Share”. scratch.mit.edu. 2017年5月21日閲覧。
- ↑ “UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011”. inst.eecs.berkeley.edu. 2017年5月21日閲覧。
- ↑ https://forum.snap.berkeley.edu/t/relationship-with-the-scratch-team/1277/2
関連項目[編集]
外部リンク[編集]
- Snap! オフィシャル Web サイト
- Snap! リファレンスマニュアル
- Forum オフィシャル Web サイト
- Snap! source code
This article "Snap! (プログラミング言語)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Snap! (プログラミング言語).