エンジニアとしての価値観が変わった5ヶ月間【エンジニアインターン体験記】
はじめまして!僕は株式会社ミラティブのUnityチームにて、8月から12月までの5ヶ月間インターンをさせて頂いた、わだ@wdtkr_425です。愛知にある工業大学(←ほぼ大学名)の学部3年生です。
これまでは学校での授業に加え、友人とのゲーム開発等を行ってきましたが、企業での実務開発は、ミラティブのインターンを通して初めて経験をしました。この記事では、そんな中でやってきたこと、感じたこと、苦労したこと、など、一般大学生目線のリアルを赤裸々に書き連ねていきたいと思います。
そのため、この記事は “ミラティブのインターンに参加しようと思ってる人” は勿論、”ミラティブの社内での雰囲気に興味がある人”であったり、”ざっくりと、どこかのインターンに参加してみたいと考えている人”に向けた記事になっています。
インターンに参加するまでのあれこれ
インターン探しから応募まで
学部3年の5月後半から7月前半頃、いわゆるインターン繁忙期にインターンを探していました。しかし7月になっても1社も決まっておらず、周りの友達が受かっているのを見て焦りをとても感じていたのを覚えています。
7月の中旬に1社インターンが決まったのですが、そのインターンは、5日間のグループ学習形式のものでした。”インターンを通して、実際に仕事で必要な技術や経験は何なのか知りたい”と考えていた僕にとっては、少し物足りなく感じていました。
そんな中、ミラティブのインターンを見つけました。実施期間は1ヶ月以上、さらに 「実際の開発チームにジョインするため、チーム開発の実践経験が積める」と書いてありました。
これだ。
僕のしたい経験が全て詰まっている、と、募集ページを読めば読むほど、そう感じました。宣伝っぽく聞こえるかもしれませんが、本当にそう感じたんです。本当に。
しかし、魅力的に感じる反面、不安もとんでもなく感じていました。そもそも技術的についていけるか、実務で成果が出せるか、全社のMTGに参加していいのか、など・・・。
当時の僕は、個人やチームでの開発経験は複数あったものの、自分の技術力に自信がありませんでした。ほとんどのインターンに受からなかった理由も、技術力に起因していたと思います。そのため、ミラティブでのインターン選考に受からなかったら、夏休みは技術力を上げるために猛勉強をしよう、と決めていました。
面接からインターン参加まで
面接は特に対策をせずに臨みました。今までやってきたことだったり、やってみたいことだったりを、その場で考えて受け応えをしていました。
また、全体的にかしこまったような面接というより、カジュアルな雰囲気の面談で、人事の方とは「ジョジョの奇妙な冒険」の話など雑談もしたことを覚えています。こういった、素直に自分の言葉で話していたことも評価して頂き、インターンをすることになりました。
今後面接などを受けられる方に向けて、参考までに自分の面接スタイルを記載します。僕は、軸や考えを自分の言葉で話すために、以下のことはあらかじめ考えてまとめ、面接に臨んでいました。
ふんわりと今までにやってきたこと
どういう軸で企業を選んでいるか
今後どうなっていきたいか、何をやりたいか
具体的な対策などはせず、これらのまとめを軸に、受け応えをするようにしていました。実際、カンペを読みながら淡々と話す面接より、自分の気持ちを素直に言葉にして伝える面接の方が、印象は良いと思います。実際、某メガベンチャーの人事の方からも好印象とのフィードバックを頂けたこともあるので、かなり有効だと思います。
どきどきワクワク・インターン開始
GatherとSlackでオンライン勤務でも安心
期待と不安でいっぱいの初出勤日。初めての実務経験ということもあり、めちゃくちゃ緊張していました。オンライン勤務のため、なんだかよく分からなくなって置いていかれないか、という心配もしていました。
しかし、結論から言うと、全くそんな心配は必要ありませんでした。バーチャルオフィスとして使われているGatherやSlackといった連絡手段のおかげで、困ってもすぐに聞くことが出来たからです。
インターン初期の僕は、直接社員の方に話しかけることが仕事の邪魔にならないか、と心配になり、GatherやSlackを使ったコミュニケーションであっても、非常にハードルが高かったです。
入社2日目に環境構築に関して分からないことがありました。直接相談する事を躊躇していた僕は、Slackにある自分のtimesチャンネル(個人の分報チャンネル)でひっそりその状況を吐露しました。
そのtimes経由で状況を理解して頂いたのか、同じUnityエンジニアであり社員の森田さん(@adoring_onion)がGather上で、「大丈夫ですか?」と親身になって教えてくださったことをずっと覚えています。今でも本当に感謝しています。
社員の方に直接話しかけることにハードルを感じていたので、森田さんからGatherで話しかけてくださった時には、とても安心感を覚えました。また、もっと積極的にコミュニケーションを取るようにしよう、と心の内で決めました。
こういった経緯で、1人で置いてかれないか、という心配は全く必要ないということが分かったのです。
ミラティブの規模の大きさを実感・経験することで成長した
規模の大きさ故の戸惑いと、世界が変わったエディタとの出会い
ミラティブのUnityエンジニアになったら学べることがたくさんあります。全体像はこちらのテックブログにまとまっていますので、ぜひご覧ください。
実際僕が経験したこととしては、Mirrativ開発のライブゲーム、「エモモランあーるぴーじー」へのアウトプットです。最初は、比較的簡単な不具合の修正から手をつけ始めました。あくまでも”比較的”簡単な部類であるだけで、当時の僕は、
「なんだこのスクリプトの量は・・・」
「どこに何が書かれていて、どこで呼び出されているんだ!?」
と、そもそも不具合の原因を探す以前の問題で圧倒されていました。
それまでVisual Studio CodeでUnityのコードを書いたり追ったりしていたのですが、Unityエンジニアチームのマネージャーである菅谷さん(@tetsujp84)に、「Riderというエディタがオススメだよ」と教えて頂き使い方を軽く教えて頂き、使ってみました。
世界が変わりました。何このエディタ。補完機能、エラー表示はもちろんのこと、関数や変数が呼び出されている場所、更にはAssetまで簡単に確認出来ます。お察しの通り激重ですが、最強です。
VSCodeでコーディングをしている時は、拡張機能を入れ過ぎていたせいか、補完機能すらまともに動かず、毎回苦労していました。そんな僕からしたら、本当に世界が変わったエディタでした。
少し話は逸れるのですが、Riderには誰が書いたコードなのかを見ることが出来る機能があります。興味本位でその機能を使用してみたところ、僕は戦慄しました。なんと、「エモモランあーるぴーじー」に関するほとんどのコードが、菅谷さん1人によって書かれていたのです。
インターン中に経験したさまざまなタスク
こうしてRiderを使いながら、大きく分けて3つのタスクを行いました。
1つ目は、不具合修正です。莫大な量のC#スクリプトやVisualScriptingのコードを追いながら、不具合の特定に当たっていました。どこに何が書いてあるのか全体像を把握することや、コードのフローを追うことが、非常に大変でした。
2つ目は、新機能の追加です。UniRxとUniTaskを使ったゲーム内便利機能の追加、UIの追加などを行いました。この新機能追加を通して、UniRxとUniTaskについて深く知ることが出来、活用することが出来ました。
3つ目は、デバッグ用ツールの開発です。Unityのエディタ拡張を用いて、パラメータの変更や、ステージの調整が出来るツールの作成をしました。問題解決の方法や、ツールの実現方法から考え、ステージ作成者に実際に使ってもらいながらブラッシュアップを行いました。
このような様々なタスクを行ったり、勉強会にてUnity パフォーマンスチューニングバイブルを輪読したり、約半年に渡って色々な経験をさせて頂きました。デバッグ用のツールについては、簡易版として記事にまとめているので、詳しく知りたい方はこちらからぜひご覧ください。
丁寧なフィードバックで圧倒的な成長を遂げた
こういった全てのタスクにおいて、菅谷さんにレビューを頂いていました。そのレビューでは以下のようなことを教えていただきました。
このプロジェクトにはどういう設計、ルールがあり、何を心がけるべきか
冗長的にならず、もっと簡潔に書けるコードの例
エンジニアが見て、もっと分かりやすいコードの例
このようなコードレビューをいただく度に、自分の中で意識するべきことが定まり、不具合の原因を特定するスピードや、コードを書くスピードが速くなったと思います。
またUnityエンジニアチームでは、月に一度、目黒オフィスに出社する日があります。11月の出社の際には、丸1ヶ月ほどかけたデバッグ用ツールのプルリクエストに対するコードレビュー会を、1時間もかけて丁寧にやって頂きました。
もちろん日々の業務の中で細かいテクニックなども教えて頂き、成長を実感するタイミングが多かったです。そもそも、プロにみっちりコードレビューしてもらえるという貴重な経験をさせていただきました。
ミラティブはプロフェッショナルが多い環境
Unityエンジニアチームは、このnoteや他のブログを見ても分かる通り、全員がプロフェッショナルです。もちろんこれはUnityエンジニアチームに限った話ではなく、ミラティブ全体がレベルの高い方たちの集まりだ、と、さまざまな会議に参加したり、お話をさせていただいたり、出来上がったものを見る度に感じます。
僕が疑問に思った時、実装に困った時、どう実装すれば良いか見当も付かない時、予期せぬ不具合が出た時、誰に頼っても必ず教えてくださいました。特に、予期せぬ不具合が出た時なんかには、Unityエンジニアの方々に何時間も付きっきりで対応して頂いた思い出があります(本当にありがとうございました)。
このように心理的安全性が非常に高く、自分が学ぶ姿勢であればあるほど、沢山の学びを得ることが出来るような環境です。
不具合を恐れる気持ちは、ミラティブで変わった
自分の行った改修や新機能の追加などが、リリースの前後で予期せぬ不具合を起こしてしまうことが何回かありました。その度に僕は、「やってしまった・・・またチームに迷惑かけてしまったな・・・」と、気負っていました。そんな悩みを持っている時に菅谷さんが言ってくださった言葉を今でも覚えています。
「不具合を出さない1番の方法は、新しいことを何もしないこと。新しく何かに挑戦する時には一定数の不具合は付きものだから、どうやってリリース前に不具合に気付くかとか、不具合を出した後にどうするか、を改善しよう」
この言葉の、不具合を出さない1番の方法は新しいことを何もしないこと、という逆説的な考えが非常に好きで、僕の中の価値観がガラッと変わりました。それからは、失敗や不具合を恐れず、積極的に新しいことや難しいことに挑戦が出来ています。
まとめ
長々と話してきましたが、読んでいただきありがとうございました!この5ヶ月間は、長いようでとてもあっという間でした。それは、ひとえに楽しみながらインターンが出来たからに違いありません。
Unityエンジニアチームは暖かく、成長できるとても良い環境です。今回書ききれなかった会社全体の雰囲気や文化や、もっと具体的なコーディングの内容などは、ぜひミラティブにジョインして体験して欲しいです!
謝辞
最後に、お忙しい中レビューをしてくださったり、対応をして下さったUnityエンジニアチームの皆様、「エモモランあーるぴーじー」で関わっていただいた皆様、クライアントチームの皆様、その他さまざまなクラブ活動を通して関わっていただいた皆様、ミラティブの皆様、5ヶ月間本当にありがとうございました!!!
We are hiring!
ミラティブでは新卒およびインターンを募集しています!興味を持った方は、ぜひ気軽にエントリーお待ちしています。
▼採用候補者さまへの手紙
▼テックブログ
▼採用サイト
▼Mirrativ Engineering 〜ミラティブのエンジニア情報を伝えるポータルサイト〜
この記事が気に入ったらサポートをしてみませんか?