2019年度プログラミング講座をしています

こんにちは、Boltzです。
長らく更新できてませんでしたが、新歓や新入生向けの講座がやや落ち着きを見せてきたのでブログの更新をやっていこうと思います!!!

 

記事を書こうと思った動機

今回の内容は「マルチメディア研究会のプログラム講座の進め方」についての情報共有です。
大学のゲーム制作サークルとして、ゲーム制作の入門段階で後輩にどのような講座をしているか共有しておくのは大切だと思うので、この内容でブログの更新をしてみます。

「大学でゲーム制作を始めたい!けど独学でやるしかない…」という環境にある人が比較的頼りにできる情報の一つに大学のゲーム制作サークルの講座資料が含まれていると考えられますし、
個人的に、1年前独学でUnityのゲーム制作やプログラミングを学び始めた時にKMC(京大マイコンクラブ)さんの講座資料には初心者の時点で何度も助けられた経験があります。
そのため講座情報の共有は積極的に行っていきたいと考えています。

少し長くなりますが、ゲームプログラミング(Unity C#)を学んでいく道筋について興味がある方はお付き合いください。少しでも参考になればと思います。

また、この方法が正解だとは考えていません。(高校は文系で、大学でもえこのみくすをやっており、一般的なプログラミング教育を受けたことのない人間が無免許でやっていることですので…)
これより良い方法はまだありそうだな〜と考えているので、ご意見などありましたら、私のTwitterアカウントである @far_dawn までいただきたいところです!!

 

言いたいこと

だいたい今回の記事で言いたいことはこんなところです。
・マルチメディア研究会では、プログラミングの入門はC言語からはじめてもらっています。
・Unity講座は写経を防ぐためC#文法事項の学習から始めています。
・新入生には積極的に手を動かしてもらい、プログラミングを習得してもらいましょう。

 

2019年度ゲームプログラム教室

まず、ポインタや構造体(具体的には苦しんで覚えるC言語の16章)までC言語を学ぶ、C#をオブジェクト指向と共に学ぶ、Unityの操作方法を覚えるといった流れをとりました。

なぜこのような流れをとったかというと、2つの根拠に基づきます。
1つは最初C言語を学んでもらった方がプログラミング全般に対して理解が進むと考えたためです。
個人的な経験から、PHP, JavaScript, Arduino, C#などを学習する際にCの知識が生きたと思っています。
また、C言語を学ぶことはC#への接続を容易にすると考えられます。
今後ゲーム制作をするにあたって多くの部員がUnityを触り始めると思われます。その時Cの初歩を理解しておくことで、C#の値渡しと参照渡しの違いや、構造体とクラスの違いといった部分に(もちろん適切な説明を与える必要はありますが)比較的抵抗なく入っていけるのではないかと考えられます。
これらの理由から、マルチメディア研究会のプログラム教室では、まずC言語を5月末まで勉強してもらう→C#やUnityを7月中旬にかけて勉強してもらうという流れをとっています。

(ちなみに現在はUnityの勉強途中で、Unity入門書で取り上げられるくらいの基本的なC#の文法を伝えて「はじめてのUnity」チュートリアルをしている…という段階であるため、講座が完全に終了しているわけではありません)

C言語について具体的にどのように講座を進めたかというと、5人程度のグループを組み、その中で輪読会をするという形をとり、毎週担当者が「苦しんで覚えるC言語」の担当箇所についてプレゼンをする形式をとりました。
片淵キャンパスの経済学部生に関しては、キャンパスが隔離されていることもあり、文教の人とは別でプログラム教室を行う必要がありました。片淵側では輪読会をする人数が集まらなかったこともあり、上回生が文法事項を教える、いわゆる講義形式で行なっています。

C#についての講座の形式も輪読会ではなく上回生による講義形式です。
最初にC言語とC#の差異(配列の宣言方法やオブジェクト指向入門)について説明を加えた後、課題として簡単なプログラムを作成してもらうことにしました。
その後、スクリプト部分が写経にならないように注意しながら「はじめてのUnity」を完成させてもらい、「2Dシューティング」に移行してもらう予定です。
講座の終了時には「はじめてのUnity」「2Dシューティング」どちらかのアレンジゲームを作成してもらえればと考えています。

 

ゲームプログラム教室のその後

まず、7/13, 14に参加させていただくQGJ(Qpic Game Jam)にて簡単なミニゲームを作ることで、新入生自身がゲームに必要な動作を考え、プログラミングしていくという経験を積んでもらおうと考えています。
次に長大祭(11月上旬に行われる)で発表できるゲームの制作に移っていければと考えてます。(その前に1回、1週間ゲームジャムか何かでミニゲームを作ってもらうイベントをするのもアリかもと考えていたり…)

 

講座を通して

講座を通して、プログラミングを学習する際には実際に手を動かす過程がとても大切になると感じました。独学でやるなら自然と手を動かすことになりますが、座学や輪読会となるとテキストを読むことが中心になりがちで、実際にプログラミングしない方向に流れてしまう可能性もあります。
今回の場合、前半のC言語講座が特に手を動かさない形の講座になってしまいました。そのためC#に移行した際、C言語の文法事項などがうろ覚えな様子の新入生がみられました。
よって、プログラム教室では実際に手を動かして学んでもらわなければと考えました。C#講座の前半では AtCoder ABC の「入力された値を四則演算して出力する」程度の簡単なA問題などを使って実際に演習してもらいました。
今後も実際に手を動かす機会を十分にとり、講座を進めていきたいところです。
ちなみにAtCoderはC言語、C++、C#など多くの言語の提出に対応しているため、来年のC言語講座の際にはプログラミングの演習として積極的に活用してければと思います。

…今、来年は講座を担当しないことを思い出しました。
今年講座を受けた方は、今年の私の反省を活かして来年の講座をつくっていただけるとありがたいです!!

 

まとめ

・マルチメディア研究会では、プログラミングの入門はC言語からはじめてもらっています。
・Unity講座は写経を防ぐためC#文法事項の学習から始めています。
・新入生には積極的に手を動かしてもらい、プログラミングを習得してもらいましょう。

 

付録

現在、Unity C#講座で使用しているスライドを載せています。