見出し画像

第一回 Scratch(スクラッチ)講座

Scratch(スクラッチ)とは、MITメディアラボが開発したプログラミング言語学習環境です! 子ども向けに開発されたらしいですが、やって見ると奥が深く面白い!極めればいろいろなプログラムがかけます。

プログラム初めてでも、自分のアイディアを形にできます!
プログラム的な思考も、鍛えることができます!
想像力も鍛えることができます!

この講座を書いた人

私です!プログラマー歴17年!

この講座を始めるための事前準備

Scratchで会員登録!
     https://scratch.mit.edu/
    (メールアドレスが必要です!)

この記事の対象者はこんな人!

講座は、こんな人向けに書きました!
-  無料で学びたい中学生ぐらいまでの子ども!

子どもが楽しくプログラムを学ぶのに最適!

パソコン一台あれば、無料でプログラミング的思考を身に着ける事ができます!

第一回目は、サイコロ!!

今回作るサイコロの要件定義

要件定義とは、プログラムを作る前にどんなプログラムを作ればいいのかということを、依頼者(プログラムを作って欲しい人)から聞くことです!
要件(要求)を定義(明確にする)ということです!

サイコロの要件定義
- 1から6までの数字の絵柄がランダム画面が表示することをルーレットとします!
- スペースを押したら、ルーレットが回り始めます!
- 再度スペースを押したら、ルーレットが止まり数字が表示されます!
- さらにスペースを押したら、ルーレットが再度回り始めます!

実はこの要件定義を作るということも技術の一つです!
通常、依頼者(プログラムを作って欲しい人)は、プログラミング的思考がない人が多いです。
そんな人から要件を聞いて、定義しないといけません!

今回作るサイコロのリンクをここに貼ります!

1時間以内で作れたら、プログラムセンスの塊!
さーみんなで作りましょう!

プログラムには、唯一の回答はありません。
要件定義を満たせていればどんなやり方でもOKです。

プログラム歴17年の私が作ったサイコロプログラムにもとにヒントを作りました!従わなくても作れます!あくまでも一つの例です!

ヒント1

- 「乱数」を使います!
- 「変数」を使います!
- スプライトは一つだけ使います!
- コスチュームを使います!
- メッセージを送るを使います!
- メッセージを受け取るを使います!
- 「ずっと」使います!
- 「もし」使います!

ヒント2

詳細設計を公開します!詳細設計とは、依頼者と要件を定義した後に、プログラミング的思考を使い、どんなプログラムを作るか事前に設計することです。詳細設計書は、いわば設計図です!

詳細設計書を作る目的
- プログラムを作った後に情報として残すため
- 他の人に自分の作ったプログラムを理解してもらうため
- 詳細設計書を納品(依頼者にお金の対価として渡す)として使うため

詳細設計を事前に書いてから、プログラミングが理想ですが、、、
プログラム書きながらじゃないと正直分からないことはあります。
そのため、実際は、最初に思いつくまま短い時間で書いてしまう。
そして、プログラムを書いて、詳細設計に追記して行くというスタイルが一般的だと思います。
よほどの天才か熟練者なら詳細設計をプログラムを書かずに完璧に書くことはできるかもしれませんが、、、私には無理ですね。

詳細設計書

変数
ルーレットステータス
- ルーレットがどういう状態か管理します
- ルーレットの状態は、「スタート」と「ストップ」という状態が存在します
- プログラム開始時は、ルーレットは始まってないので、「ストップ」の状態

メインコード
- スペースを押したらルーレットステータスを見て、「ストップ」の状態であれば、ルーレットステータスを「スタート」の状態にして、「ルーレット」というメッセージを送ります!
逆に、「スタート」の状態であれば、ルーレットステータスを「ストップ」の状態にします!
これだけ!

スプライト
スプライトを一つ持ちます!
そのスプライトは1から6の画像のコスチュームを持ちます!

スプライトコード
「ルーレット」というメッセージを受け取ると、1から6までの乱数を作り乱数に合わせたコスチュームに着替えます!着替え終わったら、また1から6までの乱数を作りコスチュームに着替えます!これを無限に繰り返します!
この繰り返しの中で、もしルーレットステータスが「ストップ」であれば、ルーレットを止めます!

みなさん、できましたか?????

テスト

テストとは、プログラムの実装(コードを書くこと)が終わった後に、実施て、そのプログラムが正しく動作していることを確認することです!
多くの会社では、エクセルやGoogleスプレッドシートでテストを管理しています。今回のプログラムでは、テストケースは3つです。
条件が多くなればなるほど、テストケースは増えていきます。
テストケースで上手くいかなければ、コードの書き直しです。
そして、再度影響範囲のテストケースをやり直し、、、
会社によっては、全テストケースをやり直すなんてこともあります!
理由とては、影響範囲を想定するのは難しいし、影響範囲からもれると「障害」になります。
テストをクリアーして、世の中に公開することを、「リリース」と呼びます。リリース後に、発生する問題を「障害」と呼びます。
プログラマーは、この「障害」がストレスです。なぜなら、「リリース」作業というのは、時間やコストがかかります。
インストール型のプログラムなら、インストールソフトを顧客に渡す必要があります。送付すると郵便代がかかります。
ウェブ系のプログラムなら、「配備」というサーバーマシンにプログラムを置く作業があります。「配備」するときは運用を止めないといけません。
よくある「サーバーメンテンス中」ですと表示されるあれです。
致命的な「障害」の場合は、「ユーザの使いたい」を優先するため、障害がなくなるまで、徹夜する時もあります。(私は優秀なのでありませんが、)
ただし、

開発スピードが早い現代において、「障害」がないプログラムはありません!

「ユーザの使いたい」を止めないことが重要です!止まらないのであれば、
「障害」を許容することをあり得ます。問題があっても運用を止めない別の方法を提案することを「回避策の提案」といいます!

長くなりましたが、今回のプログラムのテストケースはこちらです!

テストケース1 )

どんな状態で?
プログラムを起動した直後

何をする?
スペースを押す。

どうなる?
ランダムな数字が表示される

テストケース2)

どんな状態で?
テストケース1の直後
数字ルーレットがランダムで表示されている状態

何をする?
スペースを押す。

どうなる?
一つの数字が画面に表示される。

テストケース3)

どんな状態で?
テストケース2の直後
一つの数字が画面に表示される状態

何をする?
スペースを押す。

どうなる?
ランダムな数字が表示される

回答

回答は、下記のプロジェクトに行き、「中を見る」をクリックしてください!

https://scratch.mit.edu/projects/384100311

最後に

テストは無事全て問題ありませんでしたか?

世の中には、いろいろなプログラム言語がありますが、、、
実はプログラム的思考を獲得することが非常に大事です。
プログラム的思考は技術です。プログラム言語は知識です。
優れたプログラマーは、技術も知識も持ち合わせます!

知識は、時代が進んでいくと陳腐化していきます。
しかし、技術は、時代に左右されず常に重要です!

Scratchは、このプログラム的思考を学ぶことができます!
プログラム的思考は、どんなプログラムでも普遍的かつ汎用的です。

Scratchで、プログラム的思考を学べば、その後どんなプログラム言語でもすぐ応用することができます!

プログラムを学ぼうとするときに、知識から学ぶのは楽しくないし、技術がないのに知識があっても何も役に立ちません!

技術を鍛えて、その上で知識を得る!

これが重要!

この記事に、いいねが10個ついたら、模範回答のyoutubeを作ります!
この記事に、いいねが20個ついたら、第二回を作ります!






この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
マレーシア在住ベトナムで仕事中 世界を股にかけるプログラマー上がりのブリッジSE 登録者8000人以上カットモデルマッチングサイト http://beauty.libary.tvの開発兼管理者