算数が苦手過ぎるプログラマの話
こんにちは「つけらっとゲームス」プログラム担当のとちです。
これまでも記事にしているのでご存知の方もいらっしゃると思いますが、
わたしはシステム系学科のある専門学校で、外部講師としてシステム設計を教えています。
んで、授業の資料作り中なんですけど、いま思ったことを忘れないうちに書き残して置こうとブラウザを起動し、うっかりyoutubeで作業用BGMを探しはじめて10分くらい経過、何を書くつもりだったか忘れて2分ほど考えて、思い出したお話をします。
勉強で苦しんでいる学生さん向けの話になりそうです。
ちなみに非常勤の外部講師としてのお話は以下のようなモノもあります。
ご興味がございましたらご覧くださいね。
わたしが担当しているのは3年制のシステム系学科の1年生です。
ですので、基本的な部分から勉強するための資料を作っていました。
自分で言うのもアレですが、結構真面目なので授業前は充実の資料作りをしているつもりです。
会社勤めしていた頃の後輩(A型)曰く「とちさん、やっぱB型ですわ」と言われたので本当にマメな人に比べると雑なのかもしれませんが、それは置いときましょう。
変数
元々興味があってPCをいじくりまわしている人や、高校で情報処理系の学科にいた学生はともかく、4月のこの時期にはじめてシステム系の勉強をする学生にとって、最初にして最大の壁が「変数」だと思います。
言い過ぎました。
いや言い過ぎではないよな、うーん大袈裟かも、とはいえ大事なことだし!
だって、この「壁」を超えないと、システム系学科に在籍している3年間の勉強は全体的に意味不明なんですよ。
じゃぁ説明しようと思ってもなかなか難しい。
講師としてではなく、会社員として後輩に教えるのも難しい。
システムエンジニアとしてお客さんに説明する機会があったとしても、このへんを説明するのは難しい。
他のゲームクリエイターの方とweb上で話した時に、そんな話で盛り上がったことを思い出しました。
ツール類によってスイッチとかフラグとか、呼び方は色々あるかもしれませんが、ゲーム作る時に使えないと厳しい変数。それを理解して貰うにはどうしたらいいのでしょう……
データを入れる箱
最も例え易い表現が「データを入れる箱」だと思います。少なくともわたしはそう思っています。そして、その箱にはラベルを付けるとより理解しやすくなります。
つまり変数にわかりやすい名前を付けましょう。って話です。
「生年月日」とか「性別」とか「住所」などなど、そのシステムで使用するデータ内容によって変数の名前も色々あるでしょう。
ただ、この箱っていう表現も伝わらないことがあるんですよね。
変数に「生まれた年」という名前を付けて、そこに「1998」と入れたとしましょう。変数を理解していれば「生まれた年」=「1998」です。
しかし、変数の名前が「1998」になってしまう人もいるんです。
次のデータを読みました。
次の人の「生まれた年」は「1991」だったとしましょう。
変数を理解していれば「生まれた年」=「1991」です。
しかし「1998」はどこに行ったのか、すごく気にする人もいます。
人間って面白いですね。
今の学生がそうなのか?
違います。わたしがそうだったんですよ。
中学生でゲーム作りをかじってたわたし、変数とかフラグとか理解できてましたが説明はできませんでした。その後、高校の情報処理の時間に大混乱しました。
感覚的に理解していたモノを言葉で理解しようとしたら逆に混乱しちゃったんですよね。
算数が苦手すぎる
わたしは算数がくっそ苦手です。数学になると投げ出します。
高校の数学のテストは赤点スレスレ、というか100点満点中3点という素敵な中間テストがありました。いやぁー怖かった。
小学生の頃からそうだったんですが、算数の時間に先生が丁寧に説明してくれるのを聞いていると、わかんなくなるんです。
最初の挫折は時計、12進法、60進法あたりで大混乱した記憶があります。
九九もクラスメイトの中では覚えるのが遅かったし、小数や分数の掛け算、割り算でも大苦戦しました。算数が苦手過ぎて吐きそう。
わたしの高校時代の恩師であり当時の担任に、親がこんなことを言われたそうです。
「とちくんはプログラムできるのに、なんで数学できないんだろう?」
不思議なことに簿記ならある程度できるんです。
商業高校だったから情報処理科とはいえ、ある程度の簿記は習うんですよ。
これが自分でも不思議なんです。簿記は理解できる。数学はわからん。
でも、あの頃から年齢を重ねて今になって、なんとなーく、これが原因かなぁって辿り着いた答えがあります。
「脳みそは人それぞれ!」
自分なりの理解をしよう
時計の計算、できるようになったのは多分自分の中で納得できる考え方が構築できた時です。
例えば「21時は午後何時?」という問題の場合。
21-12=9時です……当たり前ですけど、子どもの頃はこれが苦手だった。
21-10-2=9時はまぁまぁ、21-2-10=9時の方が好き。
何が違うのかと言われると困るんですが、
多分わたしの脳みそだと21-2-10=9時が一番脳みそにストレスかからないんだと思います。参考書には21-12=9時と書いてあるでしょうけどね。
んで、参考書通りに21-12=9時だけだと嫌なんです。
色々な勉強事について、自分の中で納得できる考え方が構築できると先に進めるのが自分で掴めてきました。
……じゃないと、ゲーム作れないよ。
そして今、わたしが丁寧に資料を作り、丁寧に「変数」を教えても、それはある程度の効果しかなくて、学生たちに自分なりの考え方がないと本当の意味で勉強したことにならないんだと思います。
1コマの中で自分の中に落とし込めた学生はそれでよし、
落とし込めなかったら、後で自分なりの考え方で落とし込んで行けばいいんです。
変数で大混乱からの復活劇
さて、高校生の頃のわたし、変数で大混乱したあの当時のわたしは、どうやって他のクラスメイトに追いついたのでしょうか…
高校1年の夏休みに授業中(4~7月)にやったプログラムコードを全部、自分で、自分なりのコーディングで書き直したら変数について改めて理解できました。
メチャクチャ遠回りしましたが自分の中に落とし込めたんですね。
あの当時はCOBOLで汎用機の勉強をしていたのでコンパイルしないとエラーすら判明しない時代でした。しかし、今ならPythonあたりでサクっと試せる方法があるし、ぶっちゃけExcelあたりでも理解できたと思います。
人に言われたことを、そのまま自分の中に落とせるならいいんですけど、試さないと納得できないことは試しちゃうのが正解だと思います。
おわりに
いかがでしょうか?
ゲーム作るしシステムの勉強を教えてるけど致命的に算数が苦手な人がいるよっていうお話でした。
数学できる方がいいんですけどね……
最初は苦労するかもですが自分の脳みその得意な方向性もあると思うので、いま勉強事で苦しんでいる方も、理解できる方法がないか、色々試してほしいですね。