自己紹介
2025年9月〜10月の1ヶ月間、ミラティブのライブゲーム(Unity)開発のインターンに参加しました。名城大学3年の笠井啓吾です!
大学1年生の冬からUnityでゲーム開発を始め、最近はPhotonを使ったオンラインゲームの開発に挑戦しています。
今回、初めて長期インターンに参加しました。
この記事では、
・ミラティブでどんなふうに働いたのか
・何に取り組んだのか
・何をどういう過程で学んだか
をお伝えしたいと思います。
ミラティブのインターンに挑戦しようと考えている方や、現場で働くイメージを持ちたい方にぜひ読んでいただきたいです。
参加したきっかけ
インターンに応募した時点で、ゲーム開発を始めて約1年半が経っていました。これまでにチーム開発はもちろん、プロジェクト規模の大きいBitSummitGameJamへ参加したり、大学でUnity初心者向けの講義を開いたりと、それなりに技術力がついてきたと感じていました。
そこで、「企業のゲーム開発に携わることで、今の自分に足りないものを知り、社会に出るまでに何を学ぶべきか明確にしたい」と思い、インターンに応募しました。また、人の書いたコードを読むことへの苦手意識を克服するという目的もありました。
私の住んでいるエリアでは、Unity開発のインターンを募集している企業がほぼなかったため、フルリモートで参加できたのは非常に有り難かったです。
インターンの流れ
インターン期間の最初は簡易的なタスクを進めつつ、オフラインの懇親会でUnityエンジニアの方々と交流する機会がありました。たくさんお話できて楽しかったです!
フルリモートなので、リアルで交流する場は大事ですね。
その後、いよいよUnityの本格的なタスクをもらいます。タスクの内容を具体的に教えてもらった後は、関連するコードを特定しながら作業を進めました。疑問点はメンターに相談できる環境が整っており、またCodexがプロジェクトのコードを把握しているため、とても助かりました。
リモート中はGatherというバーチャルオフィスツールを使っており、すぐメンターや、同じUnityチームの方と集まって話すことができました。
他にも、朝会や週に1回ある1on1など、タスクについて相談する機会はたくさんありました。
事務手続きでの質問や、タスクに取り組んでいる最中の技術的な質問に色々な方が暖かく対応してくださり、ミラティブの行動理念である「わかりあおうとし続ける」を体感しました。
取り組んだこと
私は、「スラポンコロシアム」というライブゲームの開発に携わりました。インターン期間中、色々なタスクに取り組みましたが、最も達成感があったタスクは、新機能の実装です。
メンターから「不具合修正か、新機能開発のどちらをやりたいですか?」というお話をいただき、せっかくならユーザーに喜んでもらえる機能を実装したいと思い、自ら選択したタスクだったため、よりモチベーション高く取り組むことができました。
学んだこと
ミラティブのインターンへ参加し、学んだことは大きく5つあります。
1. プロジェクトのコードを全部読もうとしない
初めてプロジェクトのコードを見た時は、ドキュメントがあるとはいえ、この量のコードを読んで機能追加なんてできるのかという不安がありました。正直、人の書いたコードを読むことに苦手意識を持っていた自分にとっては、インターンが始まる前から懸念していた部分です。
それでもなんとか2つの簡易タスクを終わらせました。
メンターとの面談にて、「プロジェクト全体のコードを読みきれないし、読む力が足りていない」と悩みを打ち明けたところ、「プロジェクト全体のコードを把握しているのは僕(メンター)くらいしかいないよ。笑」と。そして、「規模が大きいプロジェクトのコードは、まずは自分のタスクに関係ありそうな部分を見つけて(予測する力をつける)、その部分を読めればいいよ。」と教えてくださいました。
プロジェクト全体のコードを把握しきれていない点にずっとモヤモヤしていたので、これを聞いてからは、タスクに向かう気持ちが軽くなりました!
今後もこの意識を大切にして、社会に出てからは大きなプロジェクトに対しても、要所を抑えてコードを読むことに慣れていきたいと思います。
2. タスクを細分化する
先ほどお話しした、最も達成感があったタスクに取り組み始める前も、最初何から手をつければいいのか分からず、焦っていました。そこで、まず何のデータを取得するべきか。そのデータを取得するために、どこのファイルが関係しそうか。というように、必要なものは何かを明確にすることで、タスクに取り組みやすくなりました。
自分のプロジェクトで機能を実装するときは、多くの方が無意識にやっていることだと思いますが、初めてのプロジェクトでは、この細分化を意識して進めることがとても大事だと感じました。
3. 定期的な進捗報告の大切さ
タスクに取り組んでいるときに「あるデータが欲しい」と思い、そのデータを取得するコードを書いたのですが、既に欲しいデータを取得しているクラス(設計図のようなもの)がありました。また、処理を書いたクラスに変数を足したかったのですが、影響範囲が大きすぎて別のファイルに処理を書き直すなど、一度書いたものがやり直しになることがありました。
これらのやり直しは、実装方針が決まったところでメンターに確認していたら起こらなかったことです。
人事の方からも、タスクをもらって100%やってから先輩に見てもらうと、相手の方針と自分の方針が違っていたりでやり直しになることがあるという話を聞きました。
そのため、実装方針が決まったときや、タスクを手順1, 手順2, 手順3…に細分化してその手順が終わるごとのタイミングで、先輩(今回はメンター)に見てもらうと、お互い解釈が食い違っていても早い段階で気づけますし、やり直しを防ぐことができると学びました。
4. ゴールの確認
チームミーティングで、2つの案についてどちらを採用するべきかの話し合いが行われました。私も学生間で異なる意見を持った経験がありますが、大体どちらかが納得してすぐ収束します。その際、「案は決まったけど、本当にいいんですか...?反論ないですか...?」みたいなことがあります(私だけ?)。だからこそ、この日のミーティングのような、メンバー同士がお互い本気で議論している姿がとても印象に残りました。
メンターはこのミーティングについて、「互いに実現したいこと、つまりゴールが同じだからこそ、そのゴールに適しているのはどちらかという議論ができている」と話してくれました。
改めて、議論の前にチームが目指すゴールを確認することが大事だと思いました。
5. 新しい技術との出会いについて
インターンを通じて様々な技術に触れましたが、特に使っていきたい!と思ったのがPureC#です。UnityのスクリプトはMonoBehaviourを継承することが多いです。
MonoBehaviourを継承する場合、ライフサイクル(Awake、Start、Destroy)の実行順やオブジェクトのアタッチ、SerializeFieldの設定を考慮する必要があります。スコアの計算やバトル中のダメージの計算のように、Unityの機能を使わないクラスを作成することもあるため、毎回Unityの事情を考慮して実装するのは手間がかかります。
ここで登場するのがPureC#です。PureC#とは、MonoBehaviourを継承しないスクリプトのことです。MonoBehaviourでは、publicまたはSerializeFieldで宣言された変数の中身をUnityEditor上で確認しないと、処理が追いづらいことがあります。UnityEditor上で確認するということは、そのスクリプトがアタッチされたオブジェクトを探し、変数の中身を確認し、コードエディターを見るという、UnityEditorとコードエディターの行き来が発生し、時間がかかります。それに比べ、PureC#ではスクリプト内で変数の値を定義するため、コードエディター内で全ての処理を追うことができます。また、使いたいクラスがアタッチされたオブジェクトをアサイン(ドラッグ&ドロップ)・GetComponentする必要がなくなります。
また、今回のプロジェクトを見て、PureC#だけでここまで処理が書けるんだと驚きました。さらに、スラコロはコードの一部をPureC#プロジェクトとして切り出しているため、ユニットテストの実行がUnity上で行うより速いです。
これらのメリットがあり、かつ実践しやすいため、PureC#は今後の開発でも取り入れていきたいです!これを機にC#の本を買うのもありだなと思っています。というか、買うべきですねこれは!
DIコンテナについても触れましたが、とても便利だと感じたので調べてみようと思います。
今C#の参考書の目次を見ましたが、見たことあるワードがいっぱいありました。ラムダ式、プロパティなどは、ゲーム開発で出会ったら調べて身につけていたのですが、C#の参考書にすべて載っていたんですね、Unity特有のものだと思っていた...(すいません、そんなことも知らずにUnity触ってたんかと思われるかもしれない)。
実際にC#が使用されている例:https://techcon.gree.jp/2025/session/TrackC-3
学んだことまとめ
- プロジェクトのコードは必要な部分を特定して読む!
- タスクは手順1, 手順2…に細分化して、その手順が終わるごとに先輩に確認してもらう!
- チーム全員でゴールの認識を一致させる!
- MonoBehaviourだけでなく、PureC#も使っていこう!
最後に
今回のインターンを通じて、学生同士の開発では得られない技術的な学びに加え、企業で働く自分の姿を具体的にイメージできるようになりました。
また、不具合修正・新機能を追加できるほどコードを読み書きしたので、インターン前より、他の人のコードを読むことに対する苦手意識がだいぶなくなりました!!これが個人的に一番嬉しいです。
タスク設計やサポートをしてくださったメンターさん、Unityチームの方々、スラポンコロシアムチームの方々、そして事務をサポートしてくださった方々、本当にありがとうございました。
この経験で得た学びを、今後の開発に活かしていきます。
ミラティブでは、現在インターン / 新卒を募集しています!
ぜひご応募お待ちしております!