2019年春に島根県で開催されたRuby合宿に参加してきました。
学ぶことが多かったので、この記事を読んでもっと参加する人が増えたら良いなと思ってブログを書きました。
結論から言うと、行って良かったです! メンターの方々から色々Rubyを学べる贅沢な機会でした。
具体的な記事の内容は以下の通り。
- Ruby合宿とは
- メインの開発は具体的にどんなことをするの?
- Ruby合宿中のスケジュール
- Ruby合宿に行って良かった・学べたこと
- Ruby合宿に行くべき人
- Ruby合宿に行く前にやっておくべきこと
それでは中身に入っていきましょう。
目次
Ruby合宿とは
まずはRuby合宿について簡単に説明すると以下のような感じとなります。
- 学生or25際未満が参加出来るRubyを学べる合宿
- 30人程度でグループに分かれて、Rubyでゲーム開発
- 島根県の青少年の家にて4泊5日を過ごす
- RubyのパパであるMatzの生講演アリ!
- 島根の企業・経営者と話す機会がある
Ruby合宿に参加している人の平均年齢は19~20歳くらいだったと思います。
ただ最年少にはすごく強い小学6年生がいたので、びっくりしました(笑)
4泊5日の合宿の中で、Matzや島根の企業の方々に会いながら、優秀なメンターに囲まれて、チームでゲームを開発していきます。濃密!!
食費も宿代も全部込みで、費用は7000円です。
めちゃくちゃ安いですよね。島根県さまさまです。
参加方法などについては、公式サイトの情報を参考にしてみてください。
開発は具体的にどんなことするの?
今回のテーマは2D物理エンジンを使ったゲームをRubyで開発しよう、というものでした。
(毎回テーマは交代して変わっていく感じ)
RubyにはDXRubyというゲームを作るためのライブラリがあります。そして、これに合わせて物理的な挙動をゲーム内で正しく反映させるためのライブラリとして、chipmunkがあります。
これらのライブラリを使って、Rubyでゲームを作っていくんですね。
1つ難点があるのが、OSがWindowsに限られるということです。Macユーザーが多いこの業界で、結構なダメージだと思いますが、ちゃんとWindowsPCの貸出もあるので大丈夫です。
RubyというとRailsというのが多くの人tのイメージだと思います。実際ぼくも、合宿の存在を知った時は、Railsかなーと思っていました。このRuby合宿の最初の回ではRailsでサービス開発がテーマだったらしいのですが、多くの課題があったとのことです。
ということで、ライブラリを使ってWindows上でチームでゲーム開発をしていくのがこのRuby合宿。
チーム開発なので、現場でも使われているGitHubの使用もすすめられていて、僕らのチームでも使いました。
そんな感じでゲーム開発を4泊5日で進めていきます。
Ruby合宿中のスケジュール
ここからは、Ruby合宿の具体的な日程・やったことなどを書いていきます。
こちらが公式サイトにあるスケジュール。
(Ruby合宿公式サイトより引用)
基本的にはこれに沿って活動していきます。画像のものは2019年春のものなので、以降に開催される合宿のスケジュールは、変わるかもしれません。(が、そんなに変わらないはず)
1日目
初日の午後2時に、松江駅からすぐ近い松江オープンソースラボに集合します。
そこでは合宿の説明とまつもとゆきひろさんの講演が行われました。
Ruby勉強している人だとまつもとさんのことを知らないひとは多分いないですよね。
講演は毎回テーマが異なるのですが、今回は「プログラマーの敵」という題でした。
内容はもりだくさんで、ここでは紹介が難しいのですが、ざっとメモから抜粋すると以下のような感じ。
- 敵は思い込み。バグの原因も95%は思い込み。
- Don’t work hard , work smart
- 社会のお利口な一員であることをやめる
- 目的を明確化する
- win-winを目指す
- ニッチに飛び込んで、横展開する
実際にまつもとさんの存在を確認するだけで、モチベーションが上がるので、これだけでも行って良かった。
社会で埋もれない方法を知ることが出来たので、ちゃんと実践していきたいと思います。
講演の後はバスで40分くらいかけて、宿泊施設である青少年の家(サン・レイク)へ行きます。
近くに宍道湖(シンジ湖)があり、食堂から眺めることが出来ます。
「宍道湖ってあのシンジ湖??」ってなりました。(ダイパを思い出す)
サン・レイクの中の人の説明や軽いレクリエーション、自己紹介、環境構築などをやって1日目は終わり。
今回は人数が少なかったみたいで、20人程度しかいませんでしたが、その分講師の方に聞ける時間が増えると考えると良かったですね。
大学生になって青少年の家で、あの中学高校とかでやった(布団畳む)ようなのをやるのは、面白かったです(笑)
2日目
本格的な開発はこの2日目から始まります。
1日目の夕方にチームが発表されるので、その夜に部屋でどんなゲームにするか話していました。ちょっと悩みはしたものの、意外と早めにどんなゲームを作るかが決まってきて、開発を早めにスタート出来ました。
グループの中で僕が唯一、Git, GitHubを知っている人だったので、「まぁこれは使ったほうが良いでしょ」ということで使っていくことに。
他3人のメンバーはGit未経験で、結構Gitに時間を取られたのは事実ですが、この短い期間で大分使いこなせるようになってて羨ましかったですね。
オブジェクトごとに切り分けて担当を割り振って、開発を進めていく準備が出来ました。
実際にここから開発スタートで、ひたすら作っていきます。
2日目の夜には島根県のソフトウェア企業に勤める人達とお話できる機会があったんですよね。さすが島根という感じで、Rubyを使っている企業がかなり多め。
他の地方を見渡すと多分、圧倒的PHPだと思う(予想)ので、Rubyやりたくて地方が良い人にとって島根は有力候補になるんじゃないかなと思いました。
PS: 2日目の朝に近く(遠い)コンビニに買い物をしに行きました。宍道湖近くで見れるのでオススメ。
3日目
3日目もどんどん開発を進めていきます。
2日目の夕方くらいから、「やりたいことが何故か上手く出来ないけどエラーが出てない」みたいな状況が続いていて結構焦ってたんですよね(笑)。
講師の方に聞いて何とか解決出来ましたが、ここでGitHubでのコードレビューの大切さを身にしみて感じました…。
適当にマージするのは本当よくない。
ちゃんとレビューしようと、心に刻みましたね。
で、昼になるとここでもう合宿の折り返し地点です。早い!
ゲームの開発中は積極的にRubyのオブジェクト指向に触れていったので、そこが結構勉強できてよかったです。
普段Rails触ってると、どうしてもRubyのコードよりもRailsのコード書くので、Rubyがおろそかになりがち。
それを払拭してる感を、3日目頃から感じました。
この夜は、島根県の経営者や支部長(?)の方々との交流会がありました。
高校生の参加者も何人かいたので、こういうの結構ありがたいですよね。
4日目
この日で開発は最後です。
着々とゲームが完成に近づいていました。
僕らの班は、講師に頼るのが結構上手かったので、だいぶ助けてもらいました。
ちょっと考えて分からなかったら聞くのが早いんですよね。
もちろん何も考えずにエラー出たから聞くとかはダメですが(成長しない)、優秀なメンターさんに好きなだけ質問できるなんて贅沢な機会、あんま無いですから活用したもん勝ちです。
午前の開発が終わって昼ごはんを食べます。
そして食べ終わり、作業部屋に戻って、メンバー同士で1つのことが浮かび上がります。
「このゲーム、あんま面白くなくね…?」
最初考えていたゲームの内容が、ある程度形になってあんま面白くないことに気づきました。
急な仕様変更。開発最終日の午後です(笑)
講師の方々と「面白くするには?」っていう感じの質問をしながら、実装するべきところを洗い出して、実装していきました。
それと同時にスライドも作らなければいけなかったので、分担して効率よく。
12時は回っていましたが、一応完成出来たので良かったです。
この夜は、他のグループの人達と色々話したりしました。
5日目(最終日)
最終日はこの合宿で開発したゲームのプレゼンをします。
スライドは僕が担当していたのですが、焦りが生まれず、割と完成がギリギリになりました(笑)
他のグループ、こんなの作ってたんだみたいな感じで色々見ることが出来て楽しかったです。
発表会場には、2日目や3日目にお話した企業・経営者の方々が来られて、質問などをしてくれました。
全てのグループの発表の後には、懇親会が開かれて、立食で食べながら話して、みたいな感じ。
懇親会が終わった後は、島根県の企業を2社訪問しました。()いい天気で良かった)
大学に入ってから色んな会社を見てきましたが、訪問させていただいたモンスター・ラボさんの出雲ビルのオフィスは良いなーと思いました。
外から見ると、歴史ある感じのビル(古い)ですが、中に入るとモダンな開発環境が整ってて、本棚も充実してて(Ruby推し)羨ましかったです。
訪問が終わったら、松江駅の近くで解散。
4泊5日マジであっという間でした。色んな人がいて、色んなこと学べたので参加して本当良かった。
Ruby合宿に行って良かった・学べたこと
Ruby合宿に行って良かったことと学べたことを5つ書きました。
Matzに会える
実際にまつもとさんを見たことありますか?
無かったらRuby合宿はチャンス!
「この人が、Ruby作ったんだ、、」ってなります(笑)
プログラミング言語作るってスゴイですよね。それをベースに数多の産業が作られていく感じ、めちゃ大きいプラットフォームですよね。
講演でも、これからの生き方で参考に出来るお話が多くあるので、エンジニアのキャリアとかに迷ってる人だと、良い指針が手に入るはずです。
チーム開発が出来る
プログラミングを独学で学んでいる方にとって、チーム開発をする機会ってなかなか無いですよね。
Ruby合宿ではチーム開発がメインなので、いい経験が出来ます。
個人で開発するのとチームで開発するのでは、全然話が違うので学生の内に経験しておきたいですよね。
そのチーム開発の過程で、現場でも必須スキルであるGitについて学べます。
Git (GitHub)について学ぶことが出来る
Ruby合宿に行って学べることの1つにGit(GitHub)があります。
僕は合宿以前からGitは個人的に勉強して、基礎的なコマンド、プルリク、マージ、ブランチ切って作業、とかはやってました。
しかしですね、この合宿に参加してから「独学でGitをコツコツ学んでいたときよりも、こっちの方が大分効率が良い」ことに気づいたんですよね。
例えば、「git add .」 とかするじゃないですか。addしてるんだけど、「インデックスに追加してる」っていうイメージが独りじゃ掴みづらいんですよね。
これが、講師の方にかかれば一発なんですよ。
僕が数時間数カ月学んでいたことが、数十分になる(笑)
加えて、チーム開発で必要な「ブランチを切っての作業」や「プルリクエスト」「コンフリクトの解消」などなどを一気に学べるのがこのRuby合宿です。
僕も、コンフリクトの解消とか、マージする時の感じとかはあんまり経験してなかったのでとても学びが多かったです。
※2日目夜ごろ悩まされたエラーも自分のコードレビューのせいだったので特に…(笑)
とは言っても、全くゼロの状態からよりも多少の前提知識があった方が開発効率が良いのは間違いないので、事前にある程度は勉強していくのをおすすめします。
下の方の「Ruby合宿に行く前にやっておくべきこと」に書きました。
Rubyのオブジェクト指向についての知見が深まる
Rubyを学び始めるモチベーションの多くはRailsでのWebサービス開発ですよね。
ただ、Railsチュートリアルとか、普通に自分でサービス開発とかをやってみても、僕が感じて思うのは「Rubyのオブジェクト指向を学べない」ということ。
そもそものRailsの前提として、「オブジェクト指向(class, module)とか分かってて使ってるよな?」という感じだと思うんですよね。
けど、分からずに使っている初学者は僕を含めてめちゃくちゃいると思うんです。
で、僕自身も独りでゲーム開発とかやったことなかったですし、CLIのツールとかもあんまり作ったことが無い。
「オブジェクト指向実践ガイド とか読んだけど、お前、実はなんにも理解してないんじゃあないか?」と頭の中の僕が僕に囁くわけです。
この状況を打破してくれる1つの策に、Rubyでのゲーム開発があるんですよね。ゲームプログラミングも、名前空間とか変数のスコープとか諸々をちゃんと理解して書かないと動きません。
実際にRailsを学ぶわけではないですが、Railsの前提知識を改めてちゃんと掴む機会になります。
講師の方々にたくさん質問出来る
Ruby合宿に行ってよかったと思える理由の中でかなり大きいのが、この講師の方々にたくさん質問出来るという点です。
来られていたメンターの方を紹介。
- Naclの野坂さん
- Naclの吉岡さん
- アカツキ福岡の本多さん
- フリーランスの五十嵐さん
全員ガチのエンジニアで、五十嵐さんにいたっては「ゼロからわかる Ruby超入門」の著者。
野坂さんと吉岡さんの勤めるNaclは、応用ネットワーク通信研究所という、まつもとゆきひろさんも所属している会社です。Rubyコミッターがいる会社、羨ましい…
本多さんのアカツキは、ゲーム業界のスタートアップで知っている人も多いと思います。
福岡のオフィス、めちゃくちゃお洒落なのでいつかお邪魔してみたい…(笑)
以上の超優秀で教えるのが上手いメンターさんに囲まれて開発を進められます
普通に考えてみると、エンジニアの時給ってかなり高めですよね。
それを4泊5日の中での3日間の開発中、頼りに出来るわけです。
Rubyらしいコード、もっと良いコードを書くためにどうすれば良いかなど、聞けるいいチャンスです。
贅沢にも僕はちょっと余裕が出来た時に、汚かったコードを一緒にリファクタしてもらいました。
こういうチャンスまた欲しいと心から思います。
こんな人はRuby合宿に行くべきです
ここまで、Ruby合宿の日程や、行ってよかったこと・学んだことについて書きました。
それを踏まえて、Ruby合宿に行くべき人をサッと以下にまとめてみます。
- Rubyでの開発をやってみたい人
- Railsを使ってるけどオブジェクト指向とか分かってない人
- Git, GitHubを使ったチーム開発をやってみたい人
- 技術に興味のある友達が欲しい人
- 2Dのゲーム開発がどんなものなのか知りたい人
- まつもとゆきひろ(Matz)さんに会いたい人
- Rubyでのコーディングスキルを伸ばしたい人
- 優秀なエンジニアの方々と話したい人
こんな感じですね。
僕はRubyのオブジェクト指向とかの理解が深まれば良いなと思ってたのですが、前よりも意識できるようになったので良かったです。
また、メンターさんといろいろ話せたのも行ってよかったなと思う点です。
Rubyについて詳しくないけど参加してみたいという人でも全然OKだと思います。
Ruby合宿行ってよかったです
4泊5日ってちょうど良いなと思いました。
もう少しあったらあの機能追加出来たのにーっていうのはもちろんありますが、開発の時間とかもちょうど良い感じがしたんですよね。
色んな人が参加してて、モチベーションが上がりました。
同時にGit(GitHub)とか、Rubyのコードの書き方まだまだ学ぶことが多いし、自分の課題が見つかってよかったです。
チーム開発の難しさに気づけたのも良かったです。班を見渡しても上手く出来てたところとそうじゃなかったところがありました。どうコミュニケーションを取りながら、開発を進めていくかなど、ちゃんと考えられなければそれはマズイ事態を引き起こします。
4泊5日という限られた期間の中で上手く開発を進める過程で、開発以外にも学ぶことはあると思いました。
Ruby合宿は毎年春と夏に開催されるので、おそらく今年の夏にもまたあると思います。
初心者の方も多く参加していたので、気軽に応募してぜひ参加してほしいです!
他の参加者の方々もブログを書いてたりすると思うので、参考にしてみてください。
Ruby合宿に行く前にやっておくべきこと
最後にRuby合宿に行く前にやっておくべきことを紹介しておきます。
Ruby合宿には先程も述べたように、超優秀なメンターさんがいます。
上で初心者でもOKとは書きましたが、全くのRuby初心者だと、メンターさんのフルの知識を生かせないのでもったいなさすぎる!
ということで、基礎知識は固めてから参加した方が良いと思います。
それに、「Ruby全く触ったことない人」と「Rubyちょっと書いたことある」では結構違いますし、後者にとっては後者の方が増えた方が嬉しいと思います。
そのほうが、より楽しい開発が出来るからです。
Ruby
Ruby合宿ではもちろんRubyを使います。
なので、Rubyがどんな言語なのかある程度把握しておきたい。
そこで参考になる教材は以下の通りです。
書籍
Web
- Progate(Ruby)
- ドットインストール(Ruby入門)
- Udemy
Udemyでおすすめなのは以下の講座です。これらを見ながらコードを書くことで、ある程度Rubyの基礎知識が身につきます。
よくわかるRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
Ruby on Rails入門とタイトルにありますが、講座の中でRubyそのものの基礎的なプログラミングについてちゃんと触れます。
なので、Ruby合宿で必要なRubyの基礎知識は簡単に網羅できますね
Rubyを学ぶそもそもの目的はおそらく「RailsでのWebアプリ開発」だと思うので、この講座はオススメ出来ます。
Udemyの他の講座は下のリンク先の記事でも紹介しているので、読んでみて下さい。
>> 【Udemy厳選】Webプログラミングのおすすめ講座6選
Git, GitHub
Ruby合宿では多くのグループがGitを使って開発すると思います。
というか、Git無しでどうやってチーム開発するのかあんまり想像できません(したくもない…)
エンジニアであればおそらく誰もが使う技術なので、早めに学んでおくことをおすすめしておきます。
書籍
Web
- Progate(Git)
- ドットインストール(git入門)
- Udemy
Git, GitHubに関しては、以下のUdemyの講座が教えたくないくらいオススメ。
丁寧で分かりやすい図解スライドで、Gitの仕組みからチーム開発で必要な知識にも触れるのでかなり分かりやすかったんですよね。
>> もう怖くないGit!チーム開発で必要なGitを完全マスター
ここらへん知識がちゃんと身に付いていれば、Ruby合宿でGitに苦労する時間も減りますね。そもそもGitは基礎知識みたいな感じで確立されていると思うので、なるべく早く身に付けた方が良い技術。
上に述べた学習教材を参考に勉強を進めて行けば、「Ruby合宿で何も出来なかった」とかは無いので安心してOKです。
これを読むあなたが合宿に参加する予定であれば、楽しんできてください!