※ 当ページには【広告/PR】を含む場合があります。
2021/09/28
【Scratch入門】SVG画像のviewportの意味とviewBox属性の使い方
急に降って湧いたかのように始まるScratchの基礎講座の時間です。以前このブログ記事の中では、下のリンク記事の中で、Scratchの(グローバル)変数
とローカル変数
というものに触れました。【Scratchで簡単なゲーム作成編②】スコアボードの作成と得点の表示Scratchでスコアボードの作り方を中心に、ゲームとしての機能を盛り込んでいきます。
その記事ではこのグローバル変数とローカル変数の違いの大まかな概要だけを説明しました。Scratch言語の重要な概念ですので、今回はこの2つの変数の違いについてもう少し詳しく考えていきます。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
グローバル変数(通常の変数)
最初に通常の変数に関して考えてみましょう。Scratchに慣れている方は、今更な内容ですが念の為の復習です。まずはScratch(オンライン)でプロジェクトを新規作成します。左のブロックパレットから、[変数]
ボタンをクリックします。すると、最初の状態で、変数
という名前の変数が最初から一つ用意されています。この変数の横に⬜
(チェックボックス)があるので、これにチェックを入れてみると、プログラムキャンバスの左上に変数の表示することができます。これで変数は最初に0
が入っているのが分かります。この変数
はいわゆる普通の変数であり、Scratchアプリ内の全てのスクリプトで共有される特徴から、グローバル変数
(※)と呼ぶことにします。※注)Scratch言語の実体は、ブラウザで動作しているJavascriptですので、本当の意味のグローバル変数はdocument
やwindow
などの固有変数を指すのが正しいです。ただしここでは言葉じりの正しさはあまり考えても意味がないので省くことにします。ではこのグローバル変数
がScratchアプリ上でどのように働くのか見ていきます。スプライトを1つ追加します。右下のスプライトパレットから、[スプライトを選ぶ]
により、適当なスプライトをプロジェクトに追加しましょう。これでこのアプリにスプライトが2つになりました。ではまず1番目のスプライトで以下のブロックを組んで、このブロックをクリックしてみましょう。結果は、一番目のスプライト(ねこ)がグローバル変数!
と言っているようになります。では、次に2番目のスプライトに移動して、以下のブロックを実行してみるとどうなるでしょう。結果は2番目のスプライト(ペンギン)もグローバル変数!
と言いました。この結果はScratch言語ではお馴染みで当たり前の結果のように感じる方も多いでしょう。グローバル変数
の性質は、Scratchアプリの全てのスプライト・背景で「共有」される値を持っています。基本的に、グローバル変数はどのスプライトからでも値を書き換えたり、値を読み込んだりすることが可能です。これは、スプライト同士の動きや状態を同調・同期させるときに非常に役立つ仕組みです。Scratchを勉強していく上で、最初のうちはあまり難しいことを考えたくない人にとっては、すべてこのグローバル変数を使ってプログラミングをしていっても良いでしょう。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
ローカル変数
もう一つ変数であるローカル変数
というものについて考えていきましょう。先程も述べたように、このローカル変数を使わなくても、プログラミング全体をグローバル変数で作成することも可能です。ではこのローカル変数が何のためにあるのかと言えば、ということです。まずローカル変数
の作成方法とその性質を確認してみます。ローカル変数を作るために、先程の例で、1番目のスプライト(ねこ)に戻って、以下の手順で変数を新規作成します。上の図のように[変数を作る]
ボタンで、新しい変数
ダイアログが開きます。このダイアログの中で、すべてのスプライト用
を選択すると、新しく追加する変数は、先程のグローバル変数になります。このスプライトのみ
を選択することで、新規の変数が、ローカル変数
として追加されます。ここでは名前をローカル変数
として、[OK]
ボタンを押し、新規作成します。ローカル変数を追加した直後は、変数のブロックパレットにローカル変数
という名前で変数が追加されています。プログラムキャンバスの左上にはスプライト1:ローカル変数
という表示が付いているのも分かります。変数をローカル変数で追加した場合、グローバル変数とは違って、<スプライト名>:<変数名>
でそのローカル変数が利用されているスプライトを判別することができます。ではこのローカル変数を使ってみましょう。以下のブロックを組んで、クリックしてみます。当然結果は、スプライト1(猫のスプライト)では、このローカル変数を使って、ローカル変数!
と言うことができます。そこから2番目のスプライト(ペンギン)に移ってみましょう。注目すべきは、先程スプライト1で作成したローカル変数が、変数ブロックで消えてしまったことが分かります。つまり、2番目のスプライトからは、1番目に属するローカル変数であるローカル変数
は隠されて見えないことが分かります。他のスプライトとは共有されないのがこのローカル変数の特徴です。他とは共有されないので、同じ名前の変数もローカル変数で定義することができます。例えば、2番目のスプライト(ペンギン)で、ローカル変数
という名前のローカル変数を新規追加してみると、プログラムキャンバスにPenguin 2:ローカル変数
という名で新たなローカル変数が追加されたことになります。逆にグローバル変数では、同じ名前の変数をプロジェクトに追加することはできません。ローカル変数として定義すると、定義元のスプライトからしかその変数を操作することができなくなります。この仕組みを他のプログラミング言語では、「変数スコープ」という名前で呼ばれます。将来的に何かプログラミング言語を取得する際に、この知識が役立つときが来るかも知れません。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
まとめ
今回は、Scratchプログラミングの変数の扱い方の基本をまとめてみました。特に複雑なScratchアプリを作りたい場合、今回紹介したローカル変数を扱いは必須事項になるので、使い分けをよく理解しておくと良いでしょう。