Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

Akatsuki Hackers Labは株式会社アカツキが運営しています。

アカツキでのインターンを終えて 〜フルリモートでスマートフォンゲームの機能改修をしてきました〜

こんにちは、はじめまして。
daimond-arrowです。オタクをやっている大学院生です。
好きなアニメはグレンラガン、今季の一押しは球詠です。 

 

このたび、アカツキさん(以下、敬称略) で
フルリモート型の短期インターンシップ (以下、インターン)
に参加させていただきました。
せっかくの機会なので、インターンを終えての所感をここに残しておきたいと思います。

 

この記事が、

  • これからインターンに参加しようと考えている学生
  • アカツキのことを知りたいという方
  • スマートフォンゲーム開発をしている企業ってどんな感じなんだ?と気になっている方
  • そして、フルリモートのインターンシップってどうなんだ?と疑問に思っている方

にとって、参考になれば嬉しいです。

 

目次 

 

インターンに至るまで

さて、気になるインターンの中身の前に、少しインターンに至るまでの経緯を説明させていただければなと思います。
そんなことよりインターンで何をするかが気になる!、という方は飛ばしてこちらから読んでいただければと思います。

 

まずアカツキとの出会いは、昨年8月の就活イベントでした。
自分が個人・研究室でのUnity開発経験があったことから声をかけていただき、まずは会社見学からということでアカツキのことを知っていきました。
このとき、自分で何かを開発したことがあるという経験が、就活ではかなりアドバンテージになるんだなあと小学生並の感想で思いました。もとい、ゲーム開発をしている企業とマッチする、でしょうか。これから就活という方は一つ参考にしてください。

オフィスに遊びに行かせてもらった際には、その綺麗さにかなり驚きました。オフィスにバリスタがいるのは圧倒的にずるいですね......(私は無類のコーヒー好きなので)

 

 

あれやこれやで話が進んでいき、このインターンのことが決まったのは昨年(2019年)の12月頃でした。じゃあ3月末からインターンしましょうか!という話だったのですが、そこで今回のコロナウイルスでの外出自粛。
インターンもなくなってしまうかなあとすら思っていたのですが、自分がインターンには参加したいです!と主張をすると、アカツキは柔軟に対応してくださいました。
提案していただいたのは、フルリモートでのインターン受入。
こういったところに柔軟に対応してもらえたのはとても嬉しかったですし、そのキャパシティがあるいい会社だなと素直に思いました (後にも述べますが、フルリモートで全く問題なく、むしろ快適に楽しくインターンさせていただきました) 。

 

このようにして自分のインターン参加の日程が決まりました。
ではこれから、本格的にインターンで何をしたのか述べていきたいと思います。

インターンで参画したタイトル

今回インターンで関わらせていただいたのは、アカツキを代表する(と思う)スマホゲーム『八月のシンデレラナイン』━━ 女子高生が甲子園を目指すアツいゲームです(少なくとも私はそう感じています!)。アニメ化もしてます(寺で合宿する回が最高です)。

f:id:diamond-arrow:20200529130414p:plain

そしてこれは色眼鏡ではないのですが、かなり面白いゲームです。個人的にはやればやるほど面白い、やり込み要素のあるスルメゲームだと思っています。
自分がプレイを始めたのはインターン参加3ヶ月前からなのですが、かなりハマってしまいました。
参考程度に自分のプレイログを載せておきます、自分が色眼鏡で言っているわけではないというのがわかっていただけるかなと思います。

f:id:diamond-arrow:20200529131019p:plain

インターン中の業務

さて、タイトルは先に述べた通りですが、具体的にインターン中に何をしたんだという話になると思います。
自分はクライアントエンジニアとしてインターンに参加しました。

開発に使用したのは、主にUnity C#、たまにSQLを叩いたりしていました。

 

f:id:diamond-arrow:20200529131051p:plain

業務内容は、クライアントサイドの機能改修。
今ある機能を変えてゲームを快適にしましょう、というものです。

基本的にインターン生には、一人一人にメンターがついてくださり、チームでの開発にジョインします。質問があればチャットやオンライン通話でメンターやチームの皆さんにすぐに聞けたので、困った事は全くありませんでした。

以下、自分がインターン中に行ったことを3つに分けて紹介したいと思います。

自分のユーザーデータの可視化

自分はかねてより、スマホゲームのデータはサーバー上でどのように保存されているのだろうかと興味を持っておりました。
そこでメンターの方に、ログを見せてください!と頼んだところ、快く見せていただきました。

そしてせっかくログを見せてもらうのだからと、軽く自分のユーザーデータを可視化してみたものが、先ほどのプレイログのグラフです。
クライアントエンジニアとしてのインターン参加ということでしたが、領域外のこともチャレンジさせていただき、大変感謝しています。チームの方にも面白いねと言っていただき、アカツキはチャレンジに対してとても寛容な会社だとしみじみ実感しました。

 

 

戦術機能の改修:オペレーションコストに応じた停止機能の追加

クライアントエンジニアとしての最初の仕事は、戦術機能の改修でした。
少しだけ、前提の話をさせていただきましょう。

ハチナイには戦術機能というものがあります。ハチナイでは、キャラクターが選手として野球をし、相手チームと得点を競うのですが、この選手に指示が出せるのが戦術機能です。例えば、打席に立った選手に[送りバント]を指示したり、ピッチャーに[全力投球]を指示できます。
他方、ハチナイはこの試合をオートで進めることができます(周回が非常に楽!)。そしてそのオート機能にはオプションがあり、試合が[ピンチやチャンスのときのみ停止する]というものがあります。つまり、オートだけど試合に負けているときはプレイヤーとして介入して、戦術機能を使えるよう停止する設定にする、ということができるのです(便利!)。

そして以前まで指摘されていたのは、この停止がオペレーションコストがない場合でもピンチ・チャンスだったら停止する、という問題でした。
戦術を使いたいからオートを停止するのに、オペレーションコストがない場合でも止まってしまうのはユーザーにとって嬉しくありません。

f:id:diamond-arrow:20200529131219p:plain
 

 

そこで自分がクライアントサイドとして取り組んだのが、この機能改修でした。

ロジックとしては単純に、オペレーションコストが足りているかチェックする関数を、既存のロジックに入れ込むというだけで済みました。
さらに幸いなことに、既存のコードで応用できそうな部分があったので、すぐに改修できました。こういったところは、設計がしっかりしていたからかとも思っています。

そして嬉しいことに、インターン期間中にアップデートに盛り込んでもらえるという嬉しい体験をすることができました。この体験はとても嬉しく、ゲーム開発の一つの醍醐味を実感した瞬間でした。

 

 

サーバーサイドと連携しての機能改修:デレストオーダー編成選手の移籍

上記の改修に加え、もうひとつの改修にトライしました。
こちらは、デレストオーダーに編成中の選手を移籍できるようにする、という機能です。

デレストは、普通の試合とは別に用意された別種の育成要素です。こちらもある種試合のようになっており、選手をオーダー編成してチャレンジします。そしてこの編成は自動で保存されるようになっています。

他方、ハチナイでは、キャラクターの売却機能を[移籍]と呼んでいます。この移籍では、ある種のロック機能として[オーダーに編成中の選手は移籍できない]ようになっていました。

ここで問題になっていたのは、移籍させたい選手をデレスト編成から外すことが手間であった、ということです。

f:id:diamond-arrow:20200529131323p:plain


 

次に取り組んだのはこの課題でした。

そしてこの課題には、クライアントサイドだけでなく、サーバーサイドの改修も必要となっていました。移籍や編成についてはサーバー側の処理も入るからです。

そこで自分は、インターン同期のサーバーサイドエンジニアと協力し、二人でこの課題を解決しました。
毎日チャットや通話で、どちらがどこまで担当するのかを話し合い、お互いに問題がないか確かめ合う時間が続きました。

嬉しいことにこちらもお互い完成し、あとはリリースのみ、というところまでやりきってのインターン終了となりました。

この経験は、チーム開発の肝である密なコミュニケーションの重要性、そしてチーム開発の楽しさ(なぜか二人で開発するということがすごく楽しかった)を感じる良い機会になりました。また同時に、クライアントに閉じず、サーバーサイドにも触れてみようと思える非常に刺激的な機会であったと感じています。

 

インターンで得たもの

以上が自分がインターン中に行ったことの詳細になります。
上記の他にも、アカツキでのインターンは得るものが多いインターンでした。
特に良かったと思うのは以下の2点です。

リッチなコーディング経験

まず、非常に丁寧なコードレビューをいただきました。
自分のプルリクエストに対して、かなり綿密なコメントや改善案をいただき、自分のコーディングスキルの向上が実感できました。

さらに、チームの人が書いたコードをレビューするという機会もいただき、兢々としながらもレビューさせて貰ったのはいい経験でした。

他にも、そもそもの設計がどうなっているのかを知れたり、コーディング規約や実戦での書き方を知ることもでき、非常に糧になる経験でした。

上流からリリースまでの流れを実感

コーディングだけに留まらず、そもそも機能がどう決まるのか、リリースまでにどういう流れを取るのかということを知ることができました。

また、アカツキならではだなと感じたのは、自分が生意気にも「ここも改善してみたいんですけど、どうでしょうか!?」などと提案したことがスルッと受け入れてもらえたことでした。アカツキはエンジニアの意見が取り入れてもらいやすい環境のようです。
こうした提案が通りやすいということは、自分がこのゲームをよくしているんだ!というある種のやりがいが発生しやすいということで、確かにチームの皆さんの士気も高い水準であると感じました。

きっと今後も、このゲームはどんどんよくなっていくだろうなということが確信できることが知れたのも、1ユーザーとして嬉しかったです!

おわりに

アカツキでのインターンはとても楽しく充実したものでした!
メンターの方、チームの方、人事の方、お話しさせていただいた新卒の方、インターン同期、みなさまに感謝しています!ありがとうございました!

そして、この記事を読んでくださった方、ありがとうございました!
こんな記事ですが、アカツキの良さ、ゲーム開発のこと、フルリモートインターンのことなど、参考になれば幸いです!


参考:成果発表資料