見出し画像

【Unity】CAのハッカソンに参加してきました!

 どうも、ジュリアンです!
 先日、ゲームクライアントエンジニアを対象にしたサイバーエージェント主催の3daysハッカソン型インターン(年2回開催)に参加してきました!

 そこで、本稿では、本ハッカソンへの参加を検討している人を対象に主に選考内容や当日の詳細、僕の体験記について書いていこうと思います!

 とはいえ、以下の項目に当てはまる人にも参考になる話が多いと思いますので是非最後までお読みください!
・一般の選考内容が気になる人
・共同開発の経験を培いたい人
・エンジニア志望の学生の技術感を知りたい人
・Unity側でサーバーサイドの繋ぎこみを勉強したい人
・JOBに応募する前に社員さんに気になる点の質問やFBをもらいたい人


1.自己紹介

大学:非情報系の私文B4
技術:選考を受けた4ヶ月前からUnityを勉強し始めた
特技:ai、ps、xd等Adobe系チョットデキル
特徴:ハッカソン型インターンは今回が初めてのよわよわ学生エンジニア

画像1

2.本ハッカソンの概要

日程:2021年の3月12日から14日の3日間
形式:ゲームクライアント4名+サーバーサイド1名でチームを組んで7チーム対抗戦
お題:パズル or シューティング
必須項目:ユーザー登録とランキングの実装、インゲームの完成、デプロイ
事前課題(個人):mainブランチにpush
事前課題(全体):チーム名決め、ネットワーク課題、Unity環境構築

3.選考の詳細について

 選考ステップは、エントリシートの送付→面接→合格→適性検査(コンピテンシーへの質問)→簡単な事前課題→ハッカソン当日と単線系に進んでいきます。選考段階での体験記やプレスリリースがあまり出回っていないことを踏まえ、本節では、選考中の様子やボトムラインについて考えたことをまとめました。

3.1 ESの内容と面談で聞かれたこと

アセット 2

※ESと面談とで内容がかなり重複しているので一緒にまとめています。最後のエンジニア像に関する質問のみ面談で聞かれました

 僕はESを作成するにあたってSGEブログに寄稿されている原島さんの記事学生の僕がプロトスプリントリーグで圧倒的に成長できた話を参考にしました。というか、この記事をキッカケに参加したので自然と応募理由も先述したブログに収束する内容となりました。この他、共同開発の経験としてgit-flowやプルリクを日々使ってること、開発経験としてMVPアーキテクチャやシングルトンパターンを用いたリポジトリのurlを掲載しました。詳細な内容については若干の恥ずかしさがあるので共有はしませんが、需要があれば公開します。
 ただし、今回のハッカソンでは、後述するようにgit-flowの経験だったり、コーディング技術が高いことが必ずしも必要ではないことに留意してください。

3.2 技術力等が不安で選考を躊躇している人へ

 僕が所属したチームや懇親会で聞いた他チームの様子を聞くに必ずしも共同開発の経験がgitコマンドやSourceTreeなりでリポジトリ管理できることを意味していない印象を受けました。事実、僕の所属したチームのように初日にgit-flowのインプットをしたチームもいれば、役割分担を決めた後に皆ローカルで開発して最後にMainでガッチャンコしたチームもいたみたいです。したがって、技術力や共同開発の経験が不安で本ハッカソンへの検討を悩んでいる方は全くの杞憂ですので参加の方向で行動しましょう!合格後にgit-hubやgitコマンド、SourceTreeについての資料が参加者に共有されますので全く分からなくても大丈夫です!
※例年の母数や倍率の推移を知らずに述べています。当然ですが、出来る方がアピールにはなると思います!

4.参加して良かった点

 結論として、僕は以下の理由から今回のハッカソンに参加できて大変良かったと感じています。
・めっちゃ凄いエンジニアさんがメンターついてくれる点
・ざっくばらんに色んなことを質問できる点
・チーム開発におけるフォロー側の立場で物を考えることができた点
・UIアニメーションはじめアウトゲーム実装への課題を見つけることができた点
・ネットワークの繋ぎこみに関するスクリプトを精読する機会を得られた点
・メンターからのフィードバックがもらえる

 恐らく皆さんもハッカソンに参加して果たして何が得られるのか気になると思いますので上述した点について詳細に述べさせてください!なお、こういった内容は本人がどう主体的に関わったかで内容が多分に変わりうると思いますのであまり再現性はないかもしれません。

めっちゃ凄いエンジニアさんがメンターついてくれる点
 ハッカソンでは、1チームに3名メンターさんがついてくれるのですが、その方々がめっちゃ凄い人ばっかりで驚きました!決して侮る訳ではないですが、ハッカソンに参加する前は全く知らない人がメインで企画に携わるんだろうなぁなんて思ってました。だがしかしbut、ハッカソン当日はUnity歴が浅い僕でも書籍やLT、プレスリリースとかで知ってる方がメンターとして三日間フィードバックしていただく運びとなりました。
※最近SGEが刊行した『ステップアップ Unity』の編著者の何人かがメンターとして関わっていました。ハッカソン当日までに読了しておけば、もっと面白い話をお聞きできたんじゃないかと後悔してます。

・ざっくばらんに色んなことを質問できる点
 毎日メンターさん3人と1on1する機会があるので、そこで色んなことを自由に話すことができました。僕は初日に開発体制について軽く聞き、二日目以降はJOBやなりたいエンジニア像の解像度を高めるためのフィードバックについてお伺いしました。コードの精読機会やUniRx/UniTaskの経験が乏しいことを理由に僕はJOBのエントリーを迷っていましたが、この1on1で「迷ったら行動!」とメンターさんに促してもらいました。

・共同開発におけるフォロー側の立場で物を考えることができた点
 今まで自分よりも技術力がある人としか共同開発をしてこなかったので共同開発は専ら主従における従の関わり方しかしてきませんでした。しかし、今回git-flowやmiroの導入、共同開発の設計、最初の環境構築、カンバンの導入、リファクタリングのインプット、適宜状況を見て全体mtgを開くなど、初めて主従における主の関わり方をすることができたように思います。

スクリーンショット 2021-03-17 17.22.13

※こんな感じ。タスクはissue管理せずにmiroでやりました。miro好評だったようで嬉しい...
 この他、話し合いでゲームの言語化を進めるのが難しいと判断した時にXDでモックアップ/プロトタイプを作成し、デザイン主導でワイヤーフレームや機能分解を行ってスムーズに開発に移行させることができたのは、今後の共同開発でも生かしていきたいと思います。

スクリーンショット 2021-03-19 4.20.51

※深夜にこういったデザインのチュートリアルを山ほど見ました。Photoshopと友達になれた気がする。

・UIアニメーションはじめアウトゲーム実装への課題を見つけることができた点
 この三日間アウトゲームを担当して考えたことの一つにアウトゲーム実装を現行のソシャゲレベルに押し上げたいというのがあります。というのも僕はAI・PSで雑誌やモックを作ったり、アウトゲーム部分が好きなくせにUIアニメーションの実装や情報量の多いUI実装についてはあまりに無頓着だったと自分の実装部分をみて気づかされました。今後はMVRP実装やサーバーサイドとの繋ぎこみの勉強しつつ、シェーダーで情報量の多いUIを作る方法について学ぼうと考えています。

・ネットワークの繋ぎこみに関するスクリプトを精読する機会を得られた点
 本ハッカソンではUnityでサーバーサイドとの繋ぎこみをマストで行います!今回、僕はユーザー登録やランキング表示などサーバーサイドとの繋ぎこみを行う担当じゃなかったのですが、チームでの役割分業がそうだっただけで自分もできるようにならないのは勿体無いなと感じています。そこで、社員さんが解説したスライドを参照したり、ハッカソンで用いた実際のコードを精読したり、担当したチームメイトの友人に色々聞く形で僕もネットワークの繋ぎこみをできるようになりたいと思います。

・メンターからフィードバックがもらえる
 毎日ハッカソン終わりに日報を書く決まりになっているのですが、この時にもメンターさんから軽くフィードバックをいただけます。自分の強み/弱みを知るきっかけになると思います!これらのフィードバックを受けて、僕は「エンジニアリングにこだわりすぎず、他の職種とのコミュニケーションを大事にできること」をなりたいエンジニア像に置くようになりました。

スクリーンショット 2021-03-19 5.31.56

※過去のリプライを遡れないので一部のみ抜粋


5.次開催に参加予定の方に向けたアドバイス(もとい大反省点)

 僕がこの三日間のハッカソンに参加してみて次もう一回やるならココ改善したいなぁと思った反省点がいくつかあります。枚挙に遑がないものの、主要なものを挙げると(1)git-hubをあまり使いこなせてない人がいる想定で人に教えられる程理解しておくこと、(2)MVP(Minimum Viable Product)を意識して1日目の終わり、二日目の午前には少なくともインゲームをプレイして果たして面白いのかどうかチームで議論すること、(3)自己主張はちゃんとすること(調整コストを恐れない!)が挙げられます。

(1)git-flowやプルリク、コンフリクト解消、(SourceTree)を人にちゃんと教えられるよう準備しておくこと
 学生エンジニアの多くは共同開発をしたことがあるといっても、developブランチの作成やUnityの環境構築、リファクタリング系の仕様決め等については誰か一人自分よりチョットデキル人に一任しがちではないでしょうか。もちろん、自分と同レベル帯かそれ以上の人と組む分には問題ないですが、本インターンではSourceTreeやgitコマンドを使ったことがない人ともチームを組む可能性があるので自分がチョットデキル人の役割を担えるようになっておくと事前準備や初日で躓かないでしょう。自分はgit-flowの説明やプルリク、コンフリクトを起こさないようにする最初の環境構築等を流暢に回すことができていなかったのでチームに迷惑をかけたなぁと反省しています。次参加する機会があったら、レクチャー含めて技術でチームを引っ張れる人になりたいと強く思います。

(2)MVP(Minimum Viable Product)を意識する
 ゲームの完成を目指した作業とインゲームが面白いかどうかの検証作業は並行して実施すべき、というのが本節の結論です。今回僕たちのチームは二日目の昼、そして三日目の昼にインゲームの修正作業を行いましたが、二日目の昼の時点ではインゲームは完成していなかったので机上で仮説の検証を行いました。その結果、社員さんからの評価軸である、ゲームが面白いかどうかにちゃんと向き合えなかったなと反省しています。
 したがって、そのゲームをゲームたらしめる必要最低限の機能を完成させることを第一優先に置き、完成したらチーム全員でプレイしてみて面白いかどうか議論することで、なるべく面白かどうかという着眼点に近づけるよう回していくことが重要だと思います。実際にプレイしないで面白くするにはどうするか話し合うのは危険ですね。


(3)自己主張はちゃんとすること(調整コストを恐れない!)
 これについて説明する前に僕が共同開発経験の有無とチームを回す経験の有無は全くの別物だと考えていることを先に明記しておきます。例え共同開発の経験があったとしても顔が見えない相手へのリアクションであったり、皆が気持ちよく開発できるようにポジションを調整したり、ゴールを見据えてオーナーシップを発揮できるか否かは人によってかなりバラツキがあると思います。だからこそ、チームを回さなければいけないと問題意識を持てる人は重要なのですが、かといって最適化しようと努めるあまりに自分を置き去りにしてしまっては元の木阿弥です。自分のポジション表明もした上で調整する努力を怠ってはいけません。
 今回、僕はネットワークかインゲームどちらかのエンジニアリングに挑戦して技術的な課題点を発見することを理由に本インターンへの参加を決めたのですが、皆のやりたいことやチームとしてのパフォーマンス、帳尻を意識した結果、アウトゲームやインゲームのステージ、プロトタイプ、UIパーツ、スライド作成、発表担当になりました。これ自体はチーム全体のポテンシャルに見合った役割分業でしたが、その結果に至る過程で1回ちゃんと自己主張してみてその結果としてこの役割分業に落ち着くべきだったなと反省しています。
 余談ですが、僕の友達が今回のハッカソンで優勝したチームに所属していたのですが、その友達はチームを回すことも意識しつつ、他方で自分が挑戦してみたかったインゲームの要素もちゃんと担当することができていて後悔の念が一層増しました!皆さんも後悔しないように調整コストを恐れずにやりたいことは口にしましょう!

最後に

 今回のハッカソンは、エンジニアとして働いているプロの方々からのフィードバックや同世代の学生エンジニアを鏡に自身がキャッチアップできていること、あるいは技術的に不足していることを自覚できるまたとない機会となりました。加えて短い期間でチームメイトと根性でゲームを完成させるという共同開発の醍醐味も味わえますので、皆さんもぜひ参加を検討してみてください!

追記

同じ班の仲間の体験記も併せてお読みください!
本稿では、ハッカソン当日の記述をかなり省いています。もし気になる方がいれば以下の記事にこれらの内容をお譲りします!





この記事が気に入ったらサポートをしてみませんか?