量子プログラミング入門→量子コンピューティングサービス構築入門

量子コンピューター初心者の筆者が日々学びながら、量子コンピュータ上で量子プログラミングできるようなるまでの学習日記を記録していきます。 内容は量子コンピューター入門者向けで、専門家の方からするとおかしな内容があるかもしれません。その際はコメント等でお知らせください!

カテゴリ: 子供向けプログラミング

Scratcherとは


Scratcher_Invitation

こちらに解説がありますが、Scratchを始めてすぐは"New Scratcher"というユーザー権限が与えられいくつかの制限があります。New Scratcherができた背景は下記のようです。
New Scratcherができた目的として、スパムを防止することがあげられる。そのため、New Scratcherはスパム行為になりかねないことが制限されている。

晴れてScratcherに認められるといくつかの制限が解除されます。解除される制限は下記で中でもクラウド変数を使えるようになることが大きいのではないでしょうか。クラウド変数が使えるようになれば大戦ゲームなどを作成可能になります。

- クラウド変数を作れない・使えない
- フォーラムのトピックを閉じる機能が使えない
- フォーラムでの投稿後、再投稿までに120秒待つ必要がある
- フォーラムでの画像投稿ができない
- コメント後に30秒待たなければならない
- フォーラムで外部リンクができない
- フォーラムで編集のためのURLが出ない


こちらScratcher昇格の瞬間です。

変数のクローン時の動き

Scratchの変数に関して、共有範囲がよくわからなかったのでいろいろ試してみた結果を記載します。
本記事はこちらのコードをベースに書いています。(https://scratch.mit.edu/projects/384836271)


variables_create

変数を作るときに、"すべてのスプライト", "このスプライトのみ"の2種類を選択することができます。
すべてのスプライト向けなのかこのスプライト向けなのかはGlobal変数、Local変数といった感じで比較的わかりやすいですよね。
すべてのスプライト用にした場合は、すべてのストライプから参照、更新可能で、同じ値が全スプライトで共有されます。このスプライトのみにした場合は、そのスプライト内のみで利用可能な変数になります。

よくわからなかったのが、このスプライトのみにした場合で、さらにそのスプライトの中でクローンした場合、その変数はスプライト内で共有の変数なのか、クローン固有の変数なのかです。

結果から言うと、使い方によってはどちらにもなりえるので、使い方に注意する必要があります。
Youtubeでも動きを説明していますのでこちらも参照してください。




親で更新するとスプライト内で共有される

scratch_variable_index

このスクリプトで"index"という変数に着目してください。この変数はクローンされる前の親で変数の値を処理しています。この場合、この変数は親の変数となりスプライト内で共有されます。
つまり、誰かがindexを更新すると全クローンにその変更が反映されます。

クローン内でのみ更新・参照するとクローン固有の変数になる

scratch_variable_xspeed

このスクリプトの"xspeed"という変数の着目してください。
xspeedはクローンの中でのみ更新・参照されます。この場合この変数はクローン固有の変数になります。

コメントお願いします。

あくまで個人的な実験からの動作仕様予測ですので、もし誤り等あればご指摘お願いします。


Scratchの便利な操作

Scratchは一般的なプログラミング言語と違い、視覚的にブロックを組み合わせてプログラムを作成します。そのため、普段使いなれている操作でもどうすればできるのかわからない場合があります。
ここでは覚えておくと便利な操作を紹介していきます。

コピー&ペースト

画面下部にあるバックパックを開きます。ここにコピーしたいブロックをドラッグ&ドロップで追加します。別のプロジェクトや別のストライプを開いて、バックパックからコピーしたいブロックを取り出します。



backpack




全ブロックの一括削除

複数ブロックを一括で削除したいのに、右クリックして一括削除できる時とできないときがありイライラしますよね。

multi-delete1


全部選択できてるように見えるけど1つ削除しか出てこない。
全部を削除したいときは黄色の枠線を右クリックしましょう。そうすればすべて削除できます。

multi-delete2


選択したブロックの一括消去

上記の方法だとスプライト上のすべてのブロックが消えて今います。
選択したブロックだけを消すためには、選択したブロックをドラッグし左のパレットにドロップします。

https://youtu.be/YcE2jbBLCFw

ブロックの検索

他の人のサイトなどを参考にScratchプログラミングしていると、ブロックがどこにあるかわからない場合があります。ブロックをキーワードで検索できると便利なのですが、現在Scratchのブロックを検索する機能はないようです。今後の機能拡張に期待しましょう。



Scratchで簡単に作れるカメラを使ったゲーム

PCやタブレットについているビデオカメラを使って簡単なゲームを作成します。
カメラを使うと視覚的にも楽しく、体を使ったゲームになります。
パソコンにカメラが付いてないという方でもUSBカメラだと比較的安価にカメラ機能を追加することができます。

ボールを配置する

右下のストライプの追加ボタンをクリックしボールを選択します。デフォルトで入っているネコがいれば消しましょう。

ball



ボールに動きを加える

まずは単純にボールに動きを加えましょう。

simple_falling

1) 「旗が押されたとき」(イベント)を追加
2) 「y座標をxxにする」(動き)を追加し値を187にします。これで旗が押されたときにボールが画面の一番上に来ます。
3) 「ずっと」(制御)のループを追加します
4) 「y座標をxxずつ変える」(動き)を追加し値を-5にします。これでボールが上から落ちてくるようになります。この値を変えることでボールの落下速度を変えることができます。

ビデオの拡張機能を追加

ただ単にボールが落ちてくるだけでは面白くないのでゲームの要素を加えていきましょう。
その前にビデオの拡張機能を追加していきます。
extension
画面左下の拡張機能メニューをクリックします。
video_extension
拡張機能リストが表示されるので「ビデオモーションセンサー」を選択します。
video_menu
ビデオモーションセンサーのブロックが追加されました。

ビデオの動きに合わせてボールを動かす

先ほど作った落ちるボールをカメラの動きに合わせて動かすようにしていきます。
virtical_otedama
1) 旗がクリックされたらビデオをオンにします (ビデオ)
2) ビデオの起動に時間がかかる場合があるので2秒待ちます。(制御)
3) ボールを「表示する」おまじないを入れておきます(見た目)
4) 「ずっと」のループの中に「もし~なら」(制御)、「値の比較」(演算)「スプライトのビデオのモーション」(ビデオ)の組み合わせを追加します。これで、「もしボールの上で動きがあったら」という条件になります。
5) 4)で追加した「もし」の中に「xx回繰り返す」(制御)を追加します。
6) 5)のループの中に「y座標をxxずつ変える」(動き)を追加します。
7) 「ずっと」のループの中に「もし~なら」(制御)、「値の比較」(演算)、「y座標」(動き)を追加し、y座標を比較する値を-186にし、「ボールが一番下にきたら」の条件を追加します。
8) 「ボールが一番下にきたら」の中に「xxと2秒言う」(見た目)を追加し、メッセージを「Game Over」にします。
9) 「ボールが一番下にきたら」の中に「ビデオを切る」(ビデオ)を追加します。
10) 「ボールが一番下にきたら」の中に「隠す」(見た目)を追加します。
11) 「ボールが一番下にきたら」の中に「すべてを止める」(制御)を追加します。

点数を数える

点数を数えることで競争できるようにします。
add_score_instruction
1) 左のメニューの変数をクリックし、「変数を作る」を使用し「score」という変数を追加します。
2) 変数の初期化のために「旗が押されたとき」の後に、「scoreを0にする」(変数)を追加
3) 「scoreを表示する」(変数)を追加し、画面上に「score」が表示されるようにします。
4) 「もし、スプライトのビデオのモーション~」のブロックの中に「scoreを1ずつ変える」を追加します。

これで点数が加算されるようになりました。
ここまでで子供と遊ぶゲームとしても十分楽しめると思います。

横の動きを加える

ここから少しずつ複雑になっていきます。
horizontal_move

1)ボールの横の初期値をランダムに設定します。y座標のみ設定していた部分を、「x座標とy座標の両方を設定する」(動き)ブロックに置き換えます。x座標の値を「乱数」(演算)にします。x座標の範囲は-187~187にします。
2) 左の変数メニューを選択し、「横の動き」という変数を作成します。
3) 「もし、スプライトのビデオのモーション~」のブロックの中に「横の動きを乱数にする」(変数)(演算)を追加します。

4) 「20回繰り返す」のループの中に、「x座標を横の動きずつ変える」を入れます。

これでボールに触れた際にランダムに横に動くようになります。

点数に応じてどんどん難しくなるようにする

さらに難しくするために点数が高くなれば高くなるほど、ボールの数が増えるようにします。

falling_ball







 

小学校でプログラミング教育必修化

2020年から小学校でプログラミング教育が必修化されます。 日本ではソフトウェア開発という職業は他の技術職と大きな差はないですが、GAFAに代表されるような米国の企業ではソフトウェア開発職は一つの確立された職種であり、優秀なソフトウェア開発者は給与でも優遇されています。

近年ではハードウェア開発もさることながら、ソフトウェア開発の重要性が増してきており、プログラミング技術の習得は非常に重要になってきてます。


子供向けプログラミング言語 Scratchとは

ScratchとはMITメディアラボが開発したプログラミング言語学習環境です。Scratchを使って、ゲームやインタラクティブな物語、アニメなどを作成することができます。Scratchは8歳から16歳をターゲットにして開発されており、子供が興味をしめしやすいゲームなどのコンテンツが充実しています。Scratchは海外の小学校でもすでに授業に取り入れられており、今後日本でも普及していく可能性が高いと思います。


Scratchは一般的なプログラミング言語のように文字をタイピングしてプログラムを作成するのではなく、あらかじめ定義されたブロックを組み合わせることで、プログラムを作成していきます。Scratchは実際のコーディングスキルを伸ばすというよりも、コーディングするための発想力、システマチックに考える能力、共同作業する能力を鍛えることを主眼としています。(Scratch helps young people learn to think creatively, reason systematically, and work collaboratively — essential skills for life in the 21st century.)

blocks

Scratchではこのようにカラフルなブロックをドラッグアンドドロップで組み合わせることでプログラムを組み立てていきます。

視覚的にわかりやすく、子供の興味の引きやすいコンテンツが多いScratchですが、お子様の年齢によっては1人では難しい場合もあります。子供に無理をさせないで楽しみながら学んでいくことが最善のやり方だと思いますので、親子で一緒にプログラミングを楽しみながら学習していくのが一番良いかと思います。

Scratchの動作環境

ScratchのFAQに動作環境の説明があり、「Scratchは最新のパソコンとタブレットのブラウザ上で動作します。」とのことですが、別に最新である必要はありません。Scratchはブラウザ上で動く簡単なプログラミング言語なので、最先端のパソコンである必要はなく多少古かったり、安価なPCでも問題なく特別なハードを用意したり、ソフトをインストールする必要もなく、誰でも簡単に始められるようになっており、例えばGoogleのChromebookの安価なモデルなどでも問題なく動作します。
ハードウェアのスペックに関して、しいて言うなら、ScratchにはPCのカメラを使用した拡張機能があるので、カメラがついている方ができることの幅は広がります。PCにカメラがついてない場合はUSBカメラなどの外付けでも安価に済ませることができます。

Scratchの始め方

Scratchを始めるのは簡単です。まずhttps://scratch.mit.edu/に行って、createをクリックすればScratchを始めることができます。作ったプログラムをオンラインで保存したりするためのユーザーアカウントを無料で作ることもできます。ユーザー名とパスワードを登録するだけで簡単に登録することができますのでScratchを利用される方はサインアップをすることをお勧めします。
あまりアカウントを増やしたくないという方は、ユーザーアカウントを作成しなくても作ったプログラムを自分のPCなどに保存することができるので、必ずしもユーザーアカウントを作成する必要はありません。


Scratch_Top


Scratchでプログラムを書いてみる

Createをクリックして作成画面を開きます。
最初に猫の絵が右下のストライプというエリアに表示されます。この猫に対して操作を記載していきます。

左側のブロック一覧から真ん中のキャンバスにドラッグアンドドロップでブロックを組み立てていきます。

Code Block


1) 左のカテゴリからイベントを選択し、"旗が押されたとき"をキャンバスに持っていきます
2) 制御のカテゴリから"ずっと"をドラッグし、先ほどの"旗が押されたとき"にくっつけます。
3) 動きのカテゴリから"マウスのポインターへ向ける"と"10歩動かす"をドラッグし、"ずっと"の中に入れます。

画面右上の緑の旗をクリックするとマウスの動きに合わせてネコが動き出します。
停めるには隣の赤いボタンを押してください。

プログラムをやったことのある人ならわかると思いますが、Clickのイベントをキャプチャしたり、無限ループでマウスの動きをキャプチャして、猫を動かす処理を視覚的に作成することができます。

以上、Scratchの基本的な使い方の説明でした。

次回、より踏み込んだ使い方を紹介していきたいと思います。

↑このページのトップヘ