![写真](https://www.sugawara.ac.jp/digital/wp/wp-content/themes/das240808/img/new-mv.png)
NEWS
お知らせ
- ゲームクリエイター科
- 授業の様子
しっかり確実に!プログラミングの授業の3つの鉄則
![コメント 2020-06-11 152840](https://www.sugawara.ac.jp/digital/wp/wp-content/uploads/9c3b9b30906a0c5b09a1d934714a7d00.png)
またお会いしました!ゲームクリエイター科の志村です、ご覧いただきありがとうございます、志村、とってもうれしいです。
今回も、オンライン授業の様子を観ていただきます!動画は一時間以上あります!
「いやそんなん観てられないし」ということだと思いますので、以下で解説していきます!
みなさんは自分の作りたいゲームがありますか?
当然、ありますよね!「いや、そうでもない」という人も居ると思いますが、現実で味わえない「何か」を体験できるのがゲームです。そう考えると、「ああんな世界に行ってみたい」とか、「こんなスポーツしてみたい」など、あんな夢を叶えたい、を与えることが出来るのがゲームです。
デジタルゲームを作るにはプログラミングが必要
で、多くの人が考える「ゲーム」とは、スマートフォンやゲーム機で遊べるデジタルゲームだと思います、それらはエンターテインメントに向けたソフトウエアで、ゲームはプログラムで出来ています。そういうわけで、ゲームクリエイター科でも、プログラミングをしっかりやっていきます!
色々な人が入学してくるので、経験のある人とない人、それぞれが巧く成長できるように学習を進めています。本校の今年の入学者の現状は、入学前にプログラミングをしていた人は3割くらいです。その中には願書を出してからプレスクールとして一緒に入学前から勉強してきた人も居ます。
じっくりしっかり!プログラミング
一見ゲームに見えないプログラミングの授業ですが、これの積みかさねでゲームが出来上がっていきます。こんかいやってる授業をちょっと紹介します。
お題は「九九」
この演習は少し前に実施したものです。九九を画面に出力するお題です。
C#というプログラム言語の実習です。近代的な言語のひとつで、多方面で採用され、ゲームやアプリの制作現場で使われています。勿論、他の言語も在りますが、一つを深く習熟した方が他の言語は理解できるので、問題ないです。「一つの言語しかできない、他の言語の理解が出来ない」というプログラマは、プログラミングを理解していないと言えますね。
身近な分かるお題だからプログラミングに集中できる
九九はだれでも小学校で学んでいますから、何が正解かを知っています。そのため、以下の利点が在ります。
- 動かした結果、正常かどうかが自分で確認できる
- 頭の中の思考を振り返りやすいのでプログラミングに集中できる
このお題の他、BMIを算出、鶴亀算をプログラミングしたり、と、やはり「小学生でも分かる」ものを題材にしています。鶴亀算はこちらです。この動画も長いです。
ゲームとは違うお題ですが、自分で考えてひらめき、プログラミングが簡単に出来るようになることが目標です。
先ずは穴埋めで考える
完全に何もない状態からやっても良いのですが、この問題では数を入れて範囲のチェックするところだけ、予めプログラムコードを用意しています。これを利用してやらなくても好いので、それで考えてる人も居ます。この辺はここまでの課題でやっているので、そこを追求する必要が無いからです。恐らく、慣れてくると前の課題の答えからコピーするはずで、それが理解できることも考えています。プログラミングはいかに手抜きをするかが大切です。ひとのやる作業を代行してくれるのがプログラムで、無駄な労力をかけないことが目的です。
ここからは少し込み入った話ですが、「こうやって進めている」というのをご覧ください。
今までやってきた方法で出来ることによってまず作る
先ず最初に、そのまんま、「正解が出る風」のものを創ります。本当は入力した段の九九を表示するのですが、4の段しか出ません。
そこから他の段も出せるようにします、次に5の段を追加します。
これを他の段も作っていきます。それでも正解です。じつはそれが一番、動作速度が速いです。プログラミングの面白いところなのですが、色々な演算を組み合わせないで、予め答えを用意したものを出す方が処理は速くなります。料理しないでレトルトで温めて出せばいいのと同じです。ただその場合はレトルトをあらかじめ作る工程と保存する倉庫が要ります、プログラムでは倉庫がメモリになるので、無駄には出来ない事情もありますね。
で、これを「全部の段、コピペして編集を繰り返して作ろう」というのを学生に説明するわけですが、「いや、もっと他の方法、あるだろう?」と、面倒になるので考えます、ここがポイントです!
めんどくさいものはプログラミングで解決!を体感
九九の全部を作るとすれば、あと8回、コピペして答えを入れ直さねばなりません。そこで、この「コピペして書き換える」のが何処かに着目すると、それが簡単にプログラミングで実現します。
今やってるのは、何の段かは変数nに保存されています、つまり、「nの段を出す」と変数に置き換えられればいいわけですね。
とりあえず、「n*1=4」、「n*2=8」という形に出るようにします。この時点で分かる学生は、「九九の答えが4の段じゃおかしいから変えよう」とお、追うはずです。というか、ほとんどの人は気づきますね。そこが重要です。「なんか、上手い方法を思いついたぞ!」と実感してもらいます、それがプログラミングの意義です。
これが第2段階の完成です。このままでも何ら問題なく、動きます。実はここまでは復習で、ここからが本題です。
プログラムから見ると、同じことを繰り返していることが判ります。書ける数は1~9で、そこをまとめられないか、と発想するわけです。
繰り返すアルゴリズムを習得する
プログラミング言語では「分岐」と「繰り返し」で大概、色々なものを単純化して片付けます。そのためのものをここで使います。C#で使う「for文」を改めて説明しています。
これはこの課題の前から実はやっていて、それの応用です。ここに至る前に、気付いている人は既に手を動かしてプログラミングしていたと思います。「お、気付いたぞ、自分でもできるぞ!」という、「成長と達成」を味わうことが大切です。これが実はゲームのシステムそのものでもあります。
というわけで完成です。ここまで約2時間くらいです(動画は多少、編集しています)。
楽しいければあっという間の2時間
2時間は長いと言えば長いですが、みなさん、映画の2時間は耐えられますよね。「お、次はこう来るのか、やっぱりな!」とか考えならだと、意外と時間が速く流れるものです。この授業も、無駄かと思うほど、途中をワザと飛ばさないでやっています、そのことで学生は次を考え、プログラミングを打ち込んでおいてこちらが見せるプログラムコードを予想して答え合わせを繰り返すことで。「飽きない授業」になります。この「飽きさせないこと」もゲームシステムに重要なことです。「なぜ、自分は飽きなかったか」を知ることがゲーム開発に繋がります。
基礎から一歩ずつ予習しながら進めてます
この解説をしている時期には、既にその先の課題を5つくらい、公開して説明しています。学生は、その先の課題が何かを心得えており、予習をどんどん進められる環境にしています。また、お互いを採点するシステムを取り入れて、互いのコードを観ることで、「答えが一つではない」ことを知ります。プログラムは何を優先するかでその時の最適解は変わります。速度なのか、メモリ消費量なのか、改造のしやすさなのか、です。それぞれは相反します。そうしたことをかんがえながら会得していきます。
始まってるはず(?)のプログラミング的思考も役立ちます
現在、小中高などでもプログラミングに関する教育が、コロナ禍の影響もあると思いますがやる予定だと思います。その時に学ぶことは確実に役立ちます。また、ここまでで記した通り、プログラミングに答えが複数あることをよくご理解していただいたうえで、ご指導していただけると我々、高卒以上の学校では助かります。
プログラミングの授業の3つの鉄則
というわけで、まとめてみましょう。
1.正常に動いたかがわかる
九九など以外でも、例えば、鶴亀算や植木算のような小学校の算数でやるものや、直方体の体積やお小遣い帳、誕生日までの日数を求めたり、利息の計算、単語帳など、色々なものがプログラミング可能です。そうしたものでやると学習が進めやすいです。ゲームの場合は、これが「面白い」という抽象的なものを追求するので、そこが面白くもあり大変なところでも在ります。
2.自分で気付いて能動的にコードが組める
「こうすれば簡単に出来る!」「これを変数にすればいいんだ!」など、自分で気付くことが大切です。答えを教えてもらうことでは全くプログラミングが出来るようにはなりません。色々な課題に対応できませんし、既に答えがあるものをプログラミングする価値もないからです。
3.答えが一つではない
料理の手順と一緒で、何かを作るときにどこから手を付けるかが変わったりしても同じ成果をもたらすものがプログラムです。その中で、「あ、こっちの方が面倒なことをしていなくていいな」などと気付いて、それを自分のものにできるととても伸びます。お互いに見せあうことも大切です。
(おまけ4成長を達成を実感する)
これは学習全てですが、学生本人が成長と達成を実感し、納得して学習を進めることが必要で、プログラミングに限ったことではありません。
作りたいゲームを形にするために
納得が全てを優先します
作りたいゲームを実現するために、こうした地道な学習を積み重ねます。皆さんも是非、入学して一緒に、「作りたかったゲーム」を作りましょう!それで人を楽しませましょう!
ゲームのように楽しく学習してゲーム作りへ!
また、小中高でプログラミング教育でお悩みの方がいらっしゃればお気軽にお声がけください。