おはこんばんにちは、sasaです。 この夏、ドリコムでインターン(サマージョブ)にサーバーサイドエンジニアとして2週間参加しましたので、その記録を残します。

自己紹介

現在、芝浦工業大学の電子工学科という所で回路について学んでいます。プログラミングは大学に入ってから始めて、今はバックエンドをメインにWebエンジニアとして働くべく日々独学してます。 今回のインターン参加にあたり3つの目標を立てて臨みました。
  • スマホゲームの裏側に触れる
  • 実務を通して自分のweb技術や仕事のスキルを身につける
  • ゲーム開発に携わっている色々な人と話す

やったこと

スマホアプリ開発のサーバーサイドエンジニアとして、Railsを用いたゲームの新機能の実装 をさせて頂きました。チームではgitlabを用いたコード管理をしており 仕様作成→タスクだし・コスト計算→実装→マージリクエストFB(コードレビュー)→マージリクエストのマージまでの一通りの経験 ができました。 また、スクラムでの開発を初めて経験できたので、大変勉強になりました。

1日目

あの台風が直撃した日からスタート。朝から電車が止まってたり、混雑していたりで少し遅れての初出社でした。目黒駅前がすごかった。。。 入社前の説明や、環境構築をして初日は終了。 デイリースクラムというのが毎朝あるのですが、台風の影響で午後に始まることに。
デイリースクラムでは、その日やることのタスクを発表し、進捗を共有していきます。オフィスにはホワイトボードが沢山あり、そこには付箋(タスク)がびっしりと貼られていました!
以前に2社ほどサマーインターンでお世話になったのですが、どこも初日はやはり環境構築で終わってしまいますね。 会社それぞれ環境構築の方法が違うので、詰んだ所があったらすぐ聞いて解決するのが得策だと思いました。(教訓)
ランチはサーバーサイドチームの方々と行きました。明日からランチは色々な社内の人と食べることになります。それぞれのランチ写真を置いておきます。

2日目

環境構築が終わり、仕様作成から始めることに。APIの仕様をどうするか、クライアントを担当している方とミーティングを行い、json_schemaに沿ってスキーマ定義を書き起こし、ドキュメントに仕様をまとめていきました。 ここのあたりでgitを使う機会があったのですが、私は今まで最低限のgitの機能しか使ってませんでした。 別ブランチのコミット履歴を持ってきたり、複数のコミット履歴をまとめたり、といった事を初めてやったのですが、チンプンカンプンになってしまいメンターのKさんに色々と助けてもらいました。大変感謝です🙇🙏
ランチでは、新卒1年目・2年目でフロントエンドの開発をしている方たちと沖縄料理を食べに行きました。

3日目

仕様が大体決まり、本格的に実装がスタートしました。 ここから実際に動いているコードを読んでいきました。スマホゲームの裏側を支えているシステムは大きく、コード量も膨大なので、自分のタスクに関係あるコードだけを読んでいきました。 それだけでもそこそこ量があるので「どんな動きをしているか?」を理解するのに少し時間が掛かりました。 実際にデータを打ち込んだりして動きを確認しながら進捗を進めていきました。
ランチでは、今回お世話になった人事の方と、別プロジェクトでサーバーサイドで開発している方とカレーを食べに行きました。

4日目~7日目

開発のメイン期間。APIまわりではActiveModel::Serializersを使って実装していきました。私はいままでjbuilderをつかってAPIを実装していましたが、それよりも簡単に使えるのですごい便利でした。これから使っていこう。 テストでは、Rspecを使いました。少し知ってたぐらいでほとんど書いたことがありませんでしたが、仕組みが分かりやすかったので割とすんなり書けました。(途中、詰みポイントがあってかなり苦しめられました。。) テストが全て通った時の達成感はやはり良いですね! ランチでは、プロデューサー&プランナーをしている方、フロント・サーバー・インフラまで幅広くやってる方、フロントエンドのマネージャーをしている方とそれぞれランチを食べました。 色々な仕事をしてる方達とお話出来たことはとても楽しくて、自分の今回の目標の一つだった「ゲーム開発に携わる色々な分野の人達と話したい」が達成出来ました。
金曜日には、ピザ会がありました!プロジェクトに携わっている人達とピザを食べてSwitchで遊びました(1-2-Switch、スマブラ8人大乱闘とか)。めっちゃ楽しかった!

8日目

一通りの機能ができて、テストも書き終えたあと、マージリクエスト(GitHubでいうプルリク)を出してコードレビューをしてもらいました。 コードレビューではじっくりコードを見られ、結構指摘(ここをこうすると良い感じになるよ的な)されました。ここで、よりスマートな書き方を身に付けることができました。
ランチでは、ドリコム社内のインフラのドン的存在の方とご飯を一緒に食べました。 社内のインフラ事情についてだったり、少し前に起きたAWSの大規模障害についてどんな対応をしたかなど、私がインフラにも興味が強い事もあり、すごく盛り上がりました笑 (余談ですが、前のインターン先で丁度AWS障害が起きて、その対応時の張り詰めた空気感を味わうことが出来ました。なかなか無い事なので貴重な経験(?)ができました。)
また、ちょうどこの日にプランナーのインターンの発表会があり、見学させて頂くことができました。大きいホワイトボードにブレストで使った付箋が大量に貼られてあり、アイデアを練りに練った汗と涙の結晶だろうなと感じました。 どの人が発表したゲームも面白そうで、「是非カタチにして遊びたい!」と思ってしまうようなゲームばかりでした!

9日目

最終日。引き続きコードレビューの対応と、報告会のプレゼン資料作成をしていきました。 最後は無事にマージする事ができ、今回行うタスクの完遂ができました! マージできた時の達成感もなかなか良いものです。やり切ったぞ!となりました。 報告会では、インターンの間にやった事や、得られたことについて発表しました。👇に資料を載せておきます。 また、毎週金曜日にはKPT会というのがあります。一週間の中でKeep(達成できたこと、良かったこと、これからも続けたいこと) Problem(達成できなかったこと、反省点) Try(反省点を踏まえて改善したいこと)をみんなで出し合って意識共有していく感じのことをしていきます。 私のKPTはこんな感じでした

まとめ

今回のインターンの目標として、
  • スマホゲームの裏側に触れる
  • 実務を通して自分のweb技術や仕事のスキルを身につける
  • ゲーム開発に携わっている色々な人と話す
の3つがありましたが、結果はすべて達成できました。技術面では、ゲームのサーバーサイドということでAPIの実装スキルが身につきました。仕事面では、スクラム開発の経験や、そのメリットを実感することができました。
特に、「色々な人と話す」については、普段生活してて今回ほど様々な分野で活躍している人と話す機会なんて滅多にありません。 以上を踏まえて、今回のインターンは令和で一番充実した2週間でした!
また、社内技術ブログDiitaといった社内コンテンツも覗くことができて、学べる事がたくさんありました。
将来エンジニアを目指している学生さん、特にフロント・バック・インフラ問わずスマホアプリやゲーム作りに携わりたい人に、ぜひおススメしたいインターンです!

おまけ

インターン終了後、技術書典7に参加して、無事ドリコム本をGETできました。面白い内容なので機会があったら是非見てみてね!(宣伝)