こんにちは。Nと申します。
この度、1/18 ~ 2/5までの15日間、就業型インターンに参加しました。
インターンの概要
私は、『八月のシンデレラナイン』(以下ハチナイ)のサーバーサイドエンジニアのチームに配属され、次のタスクに取り組みました。
管理画面でアイテムidを手作業で確認、入力していた部分をプルダウンにすることで対応
開発環境でアイテムを付与することがあります。これまでは、アイテムのidを資料から探してきてそれを手入力する必要がありました。
そこで、私は「手作業でアイテムのidを確認して入力する」こと自体が大変な作業だと考えたため、プルダウンに全てのアイテムを表示するように実装しました。しかしながらアイテムの数は膨大です。この実装はかえって逆効果でした。
そこで、次に個数が多いグループのアイテムをリストから削除する実装にしましたが、今度はそもそも選択できないアイテムが発生するのは良くないということになりました。
最終的な結論として落ち着いたのは、アイテムの所属するグループのプルダウンの値が変更されたタイミングをフックとして関連するアイテムだけを表示するという実装でした。ほぼ理想的な形が実現できたと共通認識が取れたので良かったです。
マスターデータのチェッカーの作成
ハチナイにはマスターデータが存在します。マスターデータを簡単に説明すると、ゲームが動いている間は固定値として扱うデータのことです。このデータ群は「正しいデータ」としてプログラムが設計されているので、正しいことが保証されていなければなりませんでした。そこで、今後改修されることで変更されうる値が正しいことを保証するプログラムを追加しました。
インターンを通して
フルリモートでの作業の難しさ
今回のインターンではフルリモートによるものでした。ZoomとSlack、GitHubのPRでのやりとりが多かったのですが、
- 複数人が同時に話すと声が重なってしまい対面でのコミュニケーションよりコストが高い
- 返信がすぐもらえるとは限らない
これらが特に難しそうだなと感じました。しかしながら、今回のインターン中では、比較的返信を早くいただけたのでスムーズに作業できました。
うまく伝えるにはどうするか
レビュワーの方からインターンを通して「何を伝えたいか」がよく伝わってありがたいという評価をいただきました。うまく伝えるに際して、
- 「何を伝えたい」かだけでは伝わらない
- 「自分が持っている情報」と「相手が持っている情報」の差異を意識する
を心がけていました。
その上で、「書き方」も意識するとより伝わりやすいことに気がつきました。具体的には、リスト化して視覚的に見やすくしたり、Markdownの「---」を使って区切りを使ったりすることが有効でした。
また、クライアントサイドエンジニアとサーバーサイドエンジニアでAPIのインターフェースについて議論する際実際にJSONの形式で提示している方がいて伝わりやすいと思いました。
意図を持ってコードを書く
きちんと理解した上で話すことを心がけていました。実装の仕様のすり合わせにおいても、「理解しきれなかったのでもう一度この部分の説明をお願いします」などとお願いして「自分が書くコードはこうなるはず」という自分の中での理解をするようにしました。
その結果、「実装方針をこのようにしてはどうか?」という提案をすることができました。それだけでなく、レビューの際、「ここは認識違う」との指摘をいただいても「自分はこう考えてた」と伝えることでどこで食い違いが起こっているのかを特定するのが簡単になりました。成果報告会で、レビュワーの方からも「言語やフレームワークによらないプログラム設計がしっかりしていてロジックレベルでは指摘するところがほとんどない」と褒めていただくことができました。
最後に
15日間最初から最後まで楽しく働くことができました。これはメンターの方をはじめとするたくさんの方のサポートに依るところが大きいです。
ゲーム開発は初めてだったので、「Webアプリケーションの開発とはこういうところが違う」など差異を感じることができて有意義なインターンになりました。特にマスターデータの運用を感じることができて良かったです。