2/22(月) ~ 3/8(月)の10日間、アカツキさん(以下敬称略)のサーバーサイドエンジニアとしてインターンに参加したBapliscaです。
はじめに
アカツキが開発しているゲームの中で、「八月のシンデレラナイン」(以下ハチナイ)のチームに配属されました。
インターンに参加する前からハチナイをプレイしていたので、現場でどのように開発しているか非常に興味がありました。
自己紹介
地方国立大学の修士1年生です。
大学のゲーム制作サークルでゲーム制作をしています。
制作したゲームの中で、最近だと大学3年〜4年にかけて制作した音声認識を使ったゲーム「ボイストラベラー」があります(宣伝)。
学生のゲーム制作はクライアント側で完結するような小規模なものであり、サーバーサイド開発をしてみたいと思いました。
縁あって、アカツキでインターンする機会をいただけました。
インターン前
人事の方とメンターの方とそれぞれお話ししました。
人事の方とは、インターンのランチ中に話したい人や、インターン前の悩みごとなどを聞いていただけました。
メンターの方とは、やる or やりたいタスクについて話しました。
また、サーバーサイドで用いるRuby on Railsの経験がなかったため、事前にRubyの基本文法とRailsの勉強をしていました。
タスク内容
「同じ期間限定キャラのシーンスカウトが近い間隔でスケジューリングされているのを事前に効率的に察知できる機能」について取り組みました。
このタスクの背景について説明させていただきます。
期間限定ガチャを実施した翌日に、同ガチャを復刻(再開)することは、一般消費者に表示された期間における取引の有利性を誤認させることになるため有利誤認表示にあたる場合があります。
これを防ぐためにハチナイの検証チームでは、チェックシートで対応していました。
そこで、自動化できないかというのが今回のタスクになります。
具体的には、マスターデータにスカウト情報を入れる際に検知する機能を作ります。
方針として、既存のデータベースのテーブルのアソシエーションを把握し、適切なテーブルから探索する策を取りました。
また今まで手動で行っていた検証をコードに落とすにあたりハチナイの企画・検証の方にヒアリングを行いました。
ヒアリングの結果、期間限定キャラと恒常キャラの管理が、マスタデータの処理的に扱いやすい形ではなかったので、他に手段を探しました。
具体的にはガチャ同士の集合を用いて、期間限定キャラの集合を取っています。
この手段でカラム追加を回避しました。
タスクについての難易度はそれほど高くないのですが、エンジニアだけでなく、企画・検証チームとの連携や提案をする必要があったため要件定義に時間を要しました。
要件定義についてのやりとりで、Slackのスレッドで50件を超える会話になりました。
また、実装した結果から再度要件定義する場合があったので、そこは柔軟で良かったと感じています。
要件定義の後は、コードを書きプルリクをする一般的な流れでした。
最後にRSpec を用いたテストコードを書きました。
インターンを通して感想
ランチ
インターンのランチでチームメンバー方や同時期のインターン生とお話しする機会がありました。
また、運良くチームディナーに招待いただき、業務外の交流ができたのは新鮮でした。特にamong usをプレイできて感動しております。
Slackのチャンネルにたくさん招待していただき、いくつもの会話が見える状態だったので、オンラインであっても閉塞感を覚えることはなく、リモートの制約はなかったかなと思います。
コミュニケーション
オンラインのため、文字ベースでの会話がメインになっています。
そのためSlackで作業ログを残すようにしていました。
また業務を通じて分からない際にはSlack or プルリクコメント or zoomの画面共有を通して、かつ詳しいことを聞く前に前提などをしっかり伝えるように心がけました。
上記を心がけた結果コミュニケーションは上手く取れたかなと思います。
おわりに
10日間という短い間でしたが、実務を通してこれまでの経験を生かせる点や、課題・不足点を感じ取ることができました。
学びが多い充実したインターンだったと感じています!
メンターを始めとした関係者の皆さま、大変お世話になりました。