Ruby合宿2019春に行ってきたよ!
今回は、2019/3/5~3/8の4泊5日で行われたRuby合宿に行ってきたので、その体験記を書いていこうと思います。
Ruby合宿って??
詳細を知りたい人は、Ruby合宿公式サイトを見てください。
ここでは、簡単にRuby合宿について紹介します。
Ruby合宿は、島根県で毎年春と夏の2回開催されており、現役Rubyエンジニアにサポートしてもらいながら、数名のグループで(毎回異なる)テーマに沿ったプログラムを協力して作成します。
開発だけでなく、Rubyの父であるまつもとゆきひろ氏の講演、県内のIT企業・フリーランスの方々との意見交換(お話)の時間、県内のIT企業見学があります。
こんだけあって、しかも4泊5日でなんとお値段7,000円!
(ご飯や宿泊にはあまり期待せぬよう。。。)
ちなみに、2019年春の合宿スケジュールは↓です。(1)
どうせ強い人ばっかなんでしょ。。。?
そんなことないです!(僕の時は)
むしろ開発経験ない人が積極的に行くべきだと思っています。
簡単なことでもわからなければすぐにメンターさんに質問しましょう!
ということで皆さんの不安はなくなったと思うので、体験記を書いていきまーす!
NSDが勧める「Ruby合宿最高!」ポイント
僕が勧める「Ruby合宿のここがいい!」ポイントを挙げてみます!
- 事前講義
- まつもと氏講演会
- IT企業との交流会
- 開発
- 企業視察
???「てかこれ全部じゃん」
僕「全部よかったんですよ!!!!」
※媚びを売っているのではありません
事前講義
Ruby合宿では、実際に開発する前に事前講義がありました。(今回は2/16)(オンライン参加もok)
事前講義では、「Rubyの環境構築」「今回使うライブラリ(DXRuby, chipmunk)のインストール」「開発サンプルの配布と解説」を行いました。
youtubeで事前講義の内容は公開されているので、もし興味があれば見てください!
個人的に詰まった点としては、DXRubyのインストールです。 原因としては、C言語の環境構築をしていたためそのコンパイラのパスがchipmunkで使用するはずのパスと被ってしまったため、インストールしてもライブラリが使えなかったです。 解決方法としては、C言語のコンパイラ(gcc)のパスを一回削除して、chipmunkで用いるパスを通してやることでライブラリが使えるようになりました。
まつもと氏講演会
今回の講演会では、「プログラマーの敵」というタイトルで講演して下さりました。 自分事としてとても考えさせられる内容で、とても身に染みるお話でした。
IT企業との交流会
IT企業さんとの交流会では、合計で8箇所くらいの会社さんとお話をしました。
Rubyがどんなとこに使われているのかとか話しました。
Ruby On Rails使ってまーすって言ってるとこが大半でしたね汗
また、フリーランスの方とも話して、「フリーランス目指してる人は、若いうちは企業でスキルつけてある程度実力がついてからフリーランスんあった方がいいよ」的なアドバイスももらいました。
Ruby合宿で作ったもの
今回のテーマは、「2D物理エンジンを活用した(パズル)ゲーム」でした。
合宿2日目から、チームに分かれて開発を始めました。(うちのチームは4人でした)
ちなみに、チームメイトは授業以外でプログラミングしたことないかんじでした。(僕もRubyは授業でしか触ったことなかったです)
まず、アイデア出しを行いました。
実は1日目の夜で僕たちは軽くアイデア出しを行っていたためまあまあスムーズにアイデアがまとまりました。
アイデアとしては、「モンスターストライク(引っ張りアクション)+テトリス(積んで消す)」のようなものになりました。
そしてそのまとまったアイデアをもとにタスク決めを行い、4人で分担をしました。
分担としては、「ゲーム画面1(メイン処理)」「ゲーム画面2(障害物等)」「オプション画面」「画面遷移・デザイン」のようにして別れました。
僕は、ゲーム画面1(メイン処理)の部分を担当しました。
分担を行ったら、さっそく開発に移りました。
Sampleファイルをベースにして、実際にゲームを開発していきました。
バージョン管理はgitで行いました。
合宿2日目では、全体のUIの配置とかを決めて実装しました。
合宿3日目では、1つのボールを発射できる機能が完成し、ちょっとゲーム性がでてきました。
合宿4日目では、複数のボールを発射できる機能が完成しました。 この時点では、まだボールがそろったら消えるというテトリス部分の機能の実装ができていなかったので、少し焦っていました。
合宿5日目は、午後1時までが開発時間でした。
最終的な仕上げと、ボールが横にそろったら消える機能の実装を行いました。
なんとか、一通りの機能の実装を行うこともでき(プレゼン発表30分前)、形にすることができたかなあという感じです。
ボール同士の衝突判定にバグが残っている部分もあるけれど。。。
てな感じで、完成したゲームがこちらです!! (後でまたプレイ動画に置き換えます)
githubで全体のコードを公開しているので、よかったらみてみてください~。 github
苦労したとこ
特に苦労したとこは、複数のボールを発射するとこです。
一見簡単そうに見えますが、前のボールの当たり判定を維持させながら新しいのをどんどん追加しないといけなくて、正直めちゃくちゃメンターさんに聞きまくりました(笑)
まとめ
いままでいろいろ書いてきましたが、感想を一言でいうなら、
Rubyの開発経験全然なかったけど思い切って参加して開発経験積めてよかった!!!!
です。
ゲーム開発独特の難しさ(ループ内での処理, 画面遷移など)の一端を体験できてよかったです。
これで、ちょっとだけ物理演算使ったゲーム作れる状態になれたのでとても満足です。
もし参加を迷っている方などおられたら、とりあえず参加して開発体験を積んでスキルアップすることをお勧めします! (少なくとも、思ったのと違う。。なんてことにはならないと思います!)