MIS.W 53代プログラミング研究会のwびらき (@miswBeLucky)という者です。
MIS.W ってなに?? という方はこちらをどうぞ。
私は昨年このサークルに入って初めてプログラミングを学び、ゲーム制作や競技プログラミングなどを何となくやってきました。
今回は一年前の私と同じようなプログラミング初学者/初心者向けに、弊サークルプログラミング研究会での過ごし方を紹介していきたいと思います!
具体的には言語やツールの紹介、参加するといいイベントの紹介をしていきます。
プログラミングに少し興味があるけど、何をやっていいかわからない方の参考になれば幸いです。
また、CG研やMIDI研が気になっている方もちょっと覗いていただいて、弊サークルのプログラミング研究会(以下プロ研)の雰囲気を感じ取っていただけると嬉しいです。
~目次~
プログラミング研究会とは
まず弊サークルのプロ研が何をしているかと申しますと....ゲーム制作、アプリケーション制作、webサイト制作そして競技プログラミングやCTF(Capture the Flag:セキュリティ系のコンテスト)などです。最近はVRや人工知能などの話題の技術も扱っている人もいます。
活動ではサークル内の企画の進捗を生んでいたり、個人の趣味としてアプリケーションを作っていたりします。おのおのが興味のある技術を用いて好きなことをやっているという感じです。
みすでの過ごし方
本題です。プログラミングや上記のプロ研にちょっと興味があるなぁという方に向けて、いくつか役に立ちそうなことを順に紹介していきます!!
みすに入ろう
(いきなり宣伝ですが...)
四月、新入生歓迎の季節です。いろいろなサークルの新入生歓迎行事に顔を出してみましょう。弊サークルも新歓行事が行われているので是非いらしてください!
みすに入るメリットを一言でいうのなら「仲間」を得られることです。
プログラミングを学んで何かを作りたいと思っても0から一人で完成させるのはなかなか時間のかかるものです。
例えば何かゲームを作りたいと思っても、もちろん技術的な側面での問題に直面するだろうし、テーマにあったイラスト、キャラデザイン、UIデザイン、BGMやシナリオなどを一人では用意できないこともあるでしょう。何よりモチベーションが続かないことが多いです。
みすは自分の必要とした技術について話せる人がいて、必要な素材を提供してくれるという環境の一つです。
楽です。いろんな人から刺激を受けることで、もしかしたら一人でやるよりもやる気が湧くかもしれません。
数あるサークルの選択肢として弊サークルを選択肢の一つに入れていただけると嬉しいです。
なにか言語を触ってみよう
さてここからプログラミングらしいお話に戻ります。例えば弊サークルなどのプログラミングを扱うサークルなりに入ったとして、プログラミングを学ぶとなると、おそらくまず、学ぶ言語を決めることになると思います。
プログラムの基本的な考え方はどの言語を選んでも本質は変わらないと思うので、まずはやりたいことにあった言語でやりたいことをするのがいいかなーと思います。
やりたいことから言語を決めよう
例えば弊サークルでは、WebサイトをデザインしたいのならばHTML/CSS/JavaScript、ゲーム制作をするときはC言語/C++(DxLib/Siv3D/UnrealEngine)やC#(Unity)といった具合です。
ちなみにC++/C#/JavaScript辺りが弊サークルでよく使われている言語といえるでしょう。ほかに、アプリケーションを作る際はWebならJavascript(クライアント側,サーバー側),Go(サーバー側)など、androidならJAVA/Kotlinなど、iOSならSwiftなどといった感じになるでしょう。
やりたいことが強く決まっているならば、その目的を達成するのにふさわしい言語があるはずなので、その言語を学ぶとよいと思います。
勉強したい言語が決まったら、その言語ややりたいことに関する本や公式ドキュメントを読むのが確実です。
後述する弊サークルのnewcomers-lectureが役立つかもしれません。
サクッと言語を簡単に学びたいときはProgateなどのWebサービスやWebサイトも役に立ちます。
言語は学ぶことが目的ではありません。実際にそれを用いて何か作ってみるといいでしょう。後述する「ゲームジャム」、「研究発表会」や「企画」は、学んだことを活用できる貴重な機会なので活用するといいでしょう。
やりたいことが特に決まっていない人のために....
MIS.Wにはサークルの先輩方が熟成させてきた新入生歓迎資料が存在します!!
ザーっと眺めていくと現時点で C言語入門 、 C#入門 、Processing入門(JAVA) 、Unity入門(C#) 、 ブロック崩し(C++/DxLib)、Twitter、Lineのおしゃべりbot作成(Ruby) などがあります。
ほかにも興味深い記事があるので是非この中からやりやすいものをやってみてください!! 歴代の先輩たちが環境構築から優しく解説しています。
newcommers-lecture記事は今年度もどんどん更新されていく予定です!!
(あくまで)個人的にお勧めする初学者のための言語
「筆者が個人的にお勧めする、やっておけばあとあと役に立つかもしれない初学者のための言語」は「C言語」です。(あくまで筆者の意見です。)理由はいくつかあります。
まず、C言語は弊サークルでよく使われているC++/C#などの言語のもとになった言語です。特にC言語を学べばその構文でC++用のゲームライブラリでゲームが作れます。加えて、その他の言語もC言語に影響を受けていることが多いので学んだ考え方を他で使うことができます。
また、基幹理工学部やほかの一部の学科ではC言語の授業が必修科目となっているので、先に学んでおけばよい予習になります。
C言語を初修とするデメリットはほかの近代的な言語に比べて「優しくない」ことです(なぜおすすめしたんだろう...)。ポインタという概念は理解するのに少々時間がかかりますし、ほかの機能もユーザーフレンドリーではないところがあります...。
しかし、これを乗り越えることでほかの言語にとっつきやすくなるのは間違いありません。
筆者はまずC言語をこのサイトで学びました 9cguide.appspot.com (苦しんで~といいつつ、初心者に優しく説明しています。)
ちなみに私も初めて学んだ言語はC言語でした。後述する5月のゲームジャムで、ほぼC言語なC++でゲームを作ることになったことがきっかけで、いくらかC++勉強することになりました。
ゲームを作るときのツール
筆者はゲームを作る人なので、サークルでよく使われているゲームを作る際のツールについて紹介しておきます。
C++/C#などでゲームを作るときはゲームエンジンやゲームライブラリが必要です。サークル内でよく使われているのはC++のライブラリであるDxLibとC#を用いるゲームエンジンのUnityです。
最近はDxLibの代わりに同じくC++を使うフレームワークであるOpenSiv3Dを使おうかという動きもあります。
DxLibについて
DxLibはWindows用の日本製ゲーム制作用ライブラリです。2001年に初版がリリースされてから開発が続いています。
このライブラリを使う利点としては日本生まれのライブラリであるため、日本語のリファレンスやDxLibを用いたゲームの作り方を解説するWebサイトや書籍が充実していることと、C++のライブラリですがC言語の理解があれば十分に動かせるというところです。
デメリットとしてMacOSではなかなか開発できないという共同開発上大きな問題があります。
弊サークルではこれまでよく使われてきたゲームライブラリの一つです。自分ですべての機能を一つずつプログラミングで作っていきたいと思う方の一助となってくれるライブラリです。
こちらが公式のサイトです。
ゲームを作る際はこのようなwebサイトが参考になります 。
新・C言語 〜ゲームプログラミングの館〜 [DXライブラリ]
OpenSiv3Dについて
OpenSiv3DはWindows、MacOS用のゲーム制作などに使えるC++のフレームワークです。Windows専用のゲームフレームワークであるSiv3Dの後継フレームワークとなっています。2016年から開発が始まったかなり新しいフレームワークで、現在も開発が続いています。
このフレームワークのメリットとしては、DxLibよりも多くの機能(当たり判定、物理演算、Emojiの描画等)が実装されていて少ないコードで簡単に色々なことが実現できることと、WindowsとMacOSに対応するクロスプラットフォームであることです。
欠点として、現在開発中であるため、リファレンスの不足や3D機能等が現在未実装であることなどが挙げられます。
公式のリファレンスマニュアルはこちら
Unityについて
Unityは世界的に使われている大手ゲームエンジンです。C#でスクリプトを書き、それを画面上のゲームオブジェクトと呼ばれるものにアタッチしていくことでゲームを作ることができます。弊サークルで3DゲームやVRゲームを作るときはほとんどこれを使っています。
機能が多く覚えることは多いですが、公式ドキュメントやUnityを解説する書籍、Webサイトが充実しています。WindowsとMacの両方で開発でき、さらにiOS、android、webブラウザ(WebGL)も含めた環境に対してビルドすることができます。
個人的にDxLibやOpenSiv3Dはプログラミングで1からゴリゴリ作っていきたい人向け、Unityはゲーム制作をする際は使って間違いないと思っています。
もちろん、ほかにも様々なライブラリやゲームエンジンが世の中に存在しています。
みす内のイベントに参加しよう
ここからはプログラム初学者でもベテランの方でも是非参加してほしいみすのイベントについて紹介していきます!!
みすの一年についてはこちらから サークルについて | MIS.W
ゲームジャムに参加しよう
5月、みすに入ってから最初の大きなイベントとして「ゲームジャム」というものがあります。これはプロ研、CG研、MIDI研の人が集まった計5、6人くらいのチームで、3日間でテーマに沿ったゲームを完成させようという企画です。
ゲームジャムは先輩や同輩から技術を盗むめったにない機会となっています。先輩や同じ代の人と仲良くなれる大きなチャンスです。私がみすに定着したのもゲームジャムに参加したことが大きかったでしょう。
昨年の様子はこちらです。テーマは「愛」でした。
発表会に出よう
6月あたりに最初の各研究会の研究発表会があります。これは個人で制作したゲーム、アプリケーション、絵、楽曲などを発表する会です。
この会は自分が何をしているかを公式に発表できる機会、つまり自己紹介の機会です。自分がやってきたことを自慢するもよし、初学者として学んできたことの進捗を発表するもよしです。
プロ研に関して言うと、発表物は「Hello World」とコンソールに表示したものを出しても十分OKらしいので、進捗がなくても何か出して自己紹介するといいでしょう。
発表会に参加すれば何となく、みすのメンバーがそれぞれどんなことをやっているか認識できるのではないかなと思います。
どんどん企画に参加しよう
みすで何かしたいと思ったら絶対に企画に入りましょう!!!企画というのは毎年11月の早稲田祭での展示に向けて5月末ごろに始動するプロジェクト群です。
昨年はプロ研がかかわるものとして、VRシューティングゲーム企画、ストラテジーRPG企画、3Dカーレース企画などがありました。
プロ研的には企画は共同開発の手法を学べるとてもいい機会です。特に共同開発にはほぼ必須となっているバージョン管理ツールGitを使えるようになったら良いです。
夏以降のみすの活動のほとんどがこれら企画に関するものです。何かしらの企画に入っていないと活動が虚無になりがちです。企画を複数兼ねることもできるので、キャパシティが許す限り興味ある企画に入るとよいでしょう。
ちなみに自分が入っていたのは53代SUAN氏が企画長を務めるRPG企画です。企画内のプロからいろいろ教わることができました~
企画を立てよう
「企画、それぞれ楽しそうだけど、俺のやりたいことがねえよ...」と思ったら、企画を新しく立てましょう!!公式に企画員を募集する企画発表会があるので活用しましょう。
外部のイベントに参加しよう
毎週様々な企業や団体が技術系のイベントを開いています!自分でリサーチした情報や、先輩からの情報をもとに興味あるものにはどんどん行ってみることをお勧めします。
その道のプロにお話を聞く貴重な機会であるとともに、企業やほかのサークルが何をやっているかを知ることで、自らのモチベーションになるでしょう。エンジニアの主食にあやかることができるかも...
サークル内にもかなりの頻度で何かしらのイベントに行っている人がいるので、たまに付いていくと楽しいです。
興味があれば競プロ/CTFをやってみよう
競技プログラミング
せっかくプログラミングをやるなら、紳士淑女のたしなみ競技プログラミングに挑戦してみてください。プログラミングでやることに迷っている方や数学の問題を解くのが好きな方には特におすすめです。
最近サークル内の一部ではやっているのが日本競技プログラミング大手コンテストAtcoderです。
後々この新歓ブログリレーに競技プログラミングの解説をしてくれる人が現れるので、その人に任せたいと思います。
CTF
CTFはCapture The Flag の略でセキュリティ系のコンテストです。
セキュリティといってもさまざまな分野があって、例えば暗号理論に関する知識を問う問題、Webに関する問題、通信に関係する問題、実行ファイルの脆弱性に関する問題など様々です。
picoCTFやSECCON といったコンテストが年に数回開催されています。
まとめ
いろいろ紹介してきましたが、結局、初心者がプログラミングと親しくなるために必要なことは、サークルやイベントなどを通してプログラミングをしている仲間を集めることだと思います!!
少しでもお役に立てたら幸いです。是非みすのプロ研をよろしくお願いします~~
明日は52代"ΙΔΈΑ(いであ)"先輩による「私的ドット絵制作術」です。お楽しみに~~~