ブログ

勉強に役立つかもしれないゲームプログラミングPart0

uNc9Ok5xSvVmyLY1603368047_1603368232

皆さん初めまして。武田塾垂水校の講師Iです。
突然ですが皆さんゲームは好きですか?
まあ生徒さんに関しては好きな人は多いと思います。自分もゲーム好きな部類です。
ここで自分の好きなゲームを延々と語りたいところなのですが…それは今度語る機会があればその時に語ります。
因みに何故こんな問い掛けをしているのかというと自分自身がゲームクリエイターを目指しているからです。
そんな自分がゲームプログラミングから勉強に関することをいろいろ学べるんじゃないか?と思ったので今回思い切ってブログに書き込んでみました。
因みに今回は初回なのでプログラミングの書き方とかではなく、プログラミングとはどういったものなのかとかこの記事がどういった趣旨のものなのかという説明をしようかなと思っています。なのでそんなの興味ねーよ、って方は「これだけでも覚えていってほしい!プログラミングで大事なこと」ってとこだけでも見ていってください。
ですがゲームプログラミングに興味がある方や大学の情報科等を受ける方だけでなくいろんな生徒さんに聞かせたい内容なので是非最初から見ていっていただけたらなと思います。

そもそもプログラミングってなんぞや?

最近プログラミングってよお聞くけどけどそもそもプログラミングってなんやねん!って人も少なからずいると思います。
プログラミングっていうのは何か物事を行う際の行程(program)を事細かに作ることを指しています。
アナログで言うと運動会のプログラムとか料理のレシピを作ってる、と考えてもらったらいいと思います。
パソコンを使って何かをやるイメージが強いと思いますが、あれは自分で何かをしているのではなく自分でプログラムを作ってそれを機械に読み取ってもらって動かしてる、という訳ですね。
ん?別に言ってること同じじゃん?って思った人もいると思いますが自分でやるのと機械にやって貰うのとでは大きく違います。
例として「1+1」を挙げてみます。

例えばあなたのお友達(いなかったらごめんなさい)に「1+1は?」と問いかけてみます。コイツ何言ってんの?みたいな顔で「2」と答えてくれます。まあもしかしたら田とか王とか返してくるユニークな方もいるかもしれませんが大体即答で返ってきますよね?
でも機械はそう上手いこと返してくれません。なんでや!電卓で打ったらすぐ出て来るやろ!とか思うかもしれませんが、あれは電卓を開発した人たちが凄いのです。普通そう簡単にはいきません。
どんな感じのことをやるのかというと、

使用するライブラリ(ヘッダー)を書く
変数を定義してそこに1+1の答えを代入する
その変数を答えとして返して終了

まあざっとこんな感じです。これでもかなりまとめた方です。
こんな感じで細かいことをいちいち言わないと機械は動いてくれません。その「細かい行程」をあらかじめ書いてくれている人がいるから一瞬で動いてくれているように見えるだけです。
こういった「細かい行程」を書くことが「プログラミング」でこれをするのがプログラマーという職業です。

プログラミングと勉強って関係あるの?

さて、プログラミングについての説明を簡単に(?)書いてみましたが実際にはやってみて難しいと思う人が大半です。
自分も専門学校に通い始めて半年が経ちいろんな同級生を見てきていますがちゃんとしたプログラムを自力で書けている人はかなり少ないです。
なぜプログラミングがちゃんと書けないかというと(自分の仮説ですが)プログラミングに必要な考え方や知識がちゃんと身に付いていないからです。
そしてその必要な考え方や知識が学校でやる勉強なんです。
どういうことかと言いますとまずプログラミングで書くコードは全部英単語から来ています。
次にプログラミングの全体的な考え方や1つ1つの要素には数学の知識を使ってます。
最後に物理挙動に関するコードを理解するには物理の知識が必要です。(これはゲームプログラミングだけかもしれませんが)
この様に学校で勉強することを活用している部分が多くあります。そしてこのことは恐らく他の分野においても言えることかなと思います。
ですが学校の先生みたいに「学生のうちに勉強しておけ」とかそんなことを言うつもりは一切ないです。
でも何も目的が分かってない勉強をするよりかは目的に向かって勉強した方がやる気出ると思うんですよ。
なので中学高校の勉強と結び付けてプログラミングを教えてみようと思った次第です。

これだけでも覚えていってほしい!プログラミングで一番大事なこと

上に書いてることだけだととんちんかんなまま終わってしまう方もいると思うので一例を交えるついでにプログラミングで一番大事なことを教えていきたいと思います。
これに関しては恐らく全てのプログラミング言語に活用できる上にプログラミング以外でも役に立つことなので是非とも覚えてほしいです。
プログラミングにおいて一番大事なこととは物事を細分化できる(細かく分けられる)ことです。
巷で最近言われているらしい「プログラミング思考」とは主にこのことを指します。
一見当然のことを書いてるように感じられるかもしれませんがこれを活用できてない人は割といます。活用方法を例を交えて説明していきましょう。

その例というのが料理のレシピです。何の料理を作るのかは自由なので好きな料理のレシピでもググるなり想像するなりしてください。
まずレシピに書いているのは材料ですね。親切なものだと使う調理器具も書いているので材料と調理器具を用意します。
次に調理方法が書かれています。書かれている通りに調理をします。
すると出来上がりますよね?レシピというプログラムに沿って作ると猿でも作れる訳です。
さて、レシピからプログラミングに戻ってみましょう。特定の動作をパソコンに打ち込んで動かしたいです。ただ相手は人間より作業はめちゃくちゃ早いけどどうしようもないレベルでバカなコンピュータです。
そこで人間様が作業の内容を理解した上で事細かに説明しなくちゃいけない訳です。ここで物事の細分化が必要だということです。
このことは「プログラムは基本的に上から順番に処理されていく」と同じくらい重要なのに忘れられがちなので絶対に覚えておきましょう。今は重要さが分からなくても分かる時が(多分)来ます。

因みにこれが学校の授業の何処でやっているのかというと…そう、数学の証明問題ですね。
数学の証明問題は受験勉強においてはやらなくていいとされがち(まあ受験で受かるだけなら正直要らないと思う)ですが、あんな問題を何故やっているのかというと自分が使える限られた公式や法則を活用して命題が正しいことを証明する力を付けるためにやっているのです。
これはプログラミングを使いこなす上でも同じことが言えます。この動作を実装するにはどうすればいいかなんて応用的な部分を全部習うなんてことはどこの学校もしません。どうすればいいかを自分で考えて細かく書いていって実装出来て初めてプログラミングが出来ると胸を張って言えるようになるでしょう。

最後に

今回は導入としてこの記事を書くに至った経緯とプログラミングを勉強するにあたって一番重要なことを教えました。
書いてるうちに意外と長くなってしまったので次回があればプログラミングに必要なものやプログラミングソフトの紹介と導入方法等をまとめてみたいと思います。

垂水校では無料受験相談を実施中


勉強でお悩みの受験生の方に向け

無料受験相談を実施しております。

「勉強方法が分からない」

「志望校の決め方が分からない」

「志望校合格に必要な勉強時間が知りたい」

など、お気軽にご相談下さい。

 

無料受験相談

あなたに合った勉強法を教えます!

無料受験相談に行ってみる