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

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

アカツキゲームスのクライアントサイドのサマーインターンに参加してきました

初めまして、2021年7月26日から2021年8月13日までの約3週間、株式会社アカツキゲームス(以後アカツキゲームス)でインターンをさせて頂いた叶と申します。この記事ではインターンで取り組んだ内容や感想について報告します。

自己紹介

情報系の修士1年生です。アカツキゲームスでのインターンは元々『八月のシンデレラナイン』(以後ハチナイ)を遊んでいた関係で興味があり、この度参加したいと思いました。そのためインターンでハチナイの開発に携わることができると聞いたときはとても嬉しかったです。ちなみにハチナイはアニメが放映されていたときにハマり、そこからのんびりと楽しませていただいています。

続きを読む

アカツキゲームスのサマーインターンシップ (Unity / C#) に参加しました

はじめまして。今回アカツキゲームスのサマーインターンシップに参加させていただきました、瀬戸と申します。Unityでゲームを作ったりしている大学3年生です。

 

期間は2021/9/6 (月)〜2021/9/30 (木)の約4週間、オンラインで参加しました。コースはUnity / C#で、普段から触っていて馴染みのある環境ではありましたが、実際のモバイルゲーム開発の現場に参加するのは初めての経験なので、初日は大層緊張していました。

 

取り組んだこと

今回私が参加したのは『八月のシンデレラナイン』(以下ハチナイ)プロジェクトで、新規機能開発やバグ修正を担当しました。それぞれのタスクについてご紹介したいと思います。

タイトルアニメーションのボイス再生機能

f:id:noboru_seto_aktsk:20210930155941p:plain

続きを読む

アカツキゲームスのインターンに参加して

はじめに

初めまして、アカツキゲームスのクライアントサイドのインターンに参加させていただいた斎藤と申します。

開発には2021/10/4~2021/10/27の期間、参加させていただいたきました。取り組んだことや感想などについて書いていこうと思います。

  • はじめに
  • 自己紹介
  • 行ったこと
    • 放送部の一括既読機能
    • 放送部の通知数と未読の数が異なっている件の対応
    • スカウトCMのテンポ改善
    • Extraボイス入手時に何を手に入れたかわからない問題の改善
      • 仕様決定ミーティング
  • 振り返り
    • 学び
      • 設計
      • 責任
      • コミュニケーション
      • 組織構造
      • 自分のやりたいこと
      • 足りないもの
  • まとめ

自己紹介

自分は、広島大学の修士1年で分散処理についての研究を行なっています。

趣味はゲーム&ゲーム制作です。サークル活動や個人などでUnityを使ってゲーム制作を行なっています。

趣味や研究での開発は行ったことはあるのですが、バイトなどの経験はなく業務での開発は今回が初体験でした。

行ったこと

自分は『八月のシンデレラナイン』(以下ハチナイ)の開発に参加しました。以下行ったタスクについて説明していきます。

放送部の一括既読機能

ハチナイには放送部というハチナイ関連のYouTubeのコンテンツや漫画などを紹介する機能があるのですが、そこに一括既読機能をつけたいというものでした。

放送部に類似した機能にお知らせという機能があり、そちらにはすでに一括既読機能がついているため、そちらの機能をこちらにも実装したいという需要です。

f:id:Aojilu08:20211027110941p:plain

f:id:Aojilu08:20211027110925p:plain

続きを読む

AWS上の fluentd から BigQuery への認証に Workload Identity を利用する

この記事では、AWS の EC2 や ECS 上で動作する fluentd から Workload Identity を利用してBigQueryにログを送る方法を紹介します。

背景

AWS から BigQuery にアクセスする際、従来はサービスアカウントキーを利用して認証を行なっていました。しかし、サービスアカウントキーは厳重な管理が必要です。これに対して、Workload Identity を利用すれば、管理が必要なキー自体をなくすことができ、運用の手間を軽減することができます。

先日 googleauth gem 1.5 がリリースされ、Ruby からも AWS からのWorkload Identity による認証をすることが可能になりました。
rubygems.org

早速これを利用して、AWS上のEC2やECSで動作する fluentd から BigQuery にデータ送信する際の認証方法を Workload Identity にしてみます。

続きを読む

アカツキゲームスのサーバーサイドインターンに参加しました。

こんにちは。この度、2021/8/23~2021/9/3の2週間、アカツキゲームスの就業型インターンに参加しました。

このインターンでは、『八月のシンデレラナイン』のサーバーサイドでの業務に携わりました。

自己紹介

地方国立大学の修士2年生です。

普段は文字列を研究しており、C++やRustと戯れています。

インターンで取り組んだこと

今回のインターンでは、サーバーサイドエンジニアとして、以下のタスクに取り組みました。

管理サイトの機能追加

不具合の調査対応でユーザの情報を閲覧したり編集したりする場合は、エンジニアが作業をする必要がありました。そこで、管理サイトでできるようにしました。これにより、エンジニアでなくても対応できるようになりました。

AWSのメンテナンス情報をSlackで通知

AWSでは、稀にメンテナンスにより、インスタンスの再起動などが起こります。このようなイベントは、以下の方法で連絡がきます。

  • メンテナンスが予定されたよ!と、イベントが発行される
  • メールによって通知される

しかし、メールでの通知は、必ず行われる保証はありません。

そこで、メンテナンスに関するイベントがきた場合にSlackで通知することで、メンテナンス情報を把握しやすくしました。

構造としては、EC2やRDSなどのリソースについて、CloudWatch Events でメンテナンス情報に関するイベントをキャッチし、LambdaからそれらのイベントをSlackへ通知するようにしました。

NewRelicの導入

NewRelicとは、サーバーやインフラのパフォーマンスを分析するためのツールです。以前は導入をしていたのですが、一時的に動作が止まっていたので、開発環境で動作するようにしました。NewRelicではAPIのレスポンスタイムや、CPUの使用率、メモリの使用量などパフォーマンスを分析するためのデータを確認することができます。これにより、どのAPIが遅いのかを調査することができました。

API 高速化

NewRelic導入により、レスポンスが遅いAPIが見つかりました。そこで、高速化できないか調査を進めていきました。NewRelicではtransaction毎に、どのようなリソースへのアクセスがあったのか、また、そのリソースからのレスポンスタイムなどの詳細を確認することができます。この中で、クライアントへ返すjsonのレンダリング処理を行なっている、jbuilderが遅いことが判明しました。

jbuilderでの処理を高速化することを大まかな方針とし、どの処理がボトルネックとなっているかを確認していきました。

partialの改善

jbuilderでは、jsonでのレンダリング処理を外部ファイルから呼び出すpartialという機能があります。本APIではこのpartialを利用していたのですが、こちらは、レコードが大規模である場合に低速になります。そこで、partialの利用を回避し、実装してみました。

結果として、効果がみられませんでした。

 

N+1の改善

NewRelicでさらに調査を進めていくと、レンダリング処理の中で、DBへのアクセスが頻繁に行われていることが判明しました。これは、N+1であるような挙動をしていたので、テーブルを直接参照している処理がないか調査をしました。

すると、preloadされたテーブルではなく、直接テーブルを参照している箇所を発見したので、この処理を改善しました。

しかし、この改善においても、全体のレスポンスタイムは大きな改善とはなりませんでした。

 

時間切れ

ここまで調査した段階で、インターン期間の終了が近づいてきました。そのため、このタスクについては、サーバエンジニアチームに引き継いで調査を続けていただくことにしました。情報の引き継ぎを円滑にするために、今まで調査した内容をまとめて、Issueとして残すことにしました。APIが遅い原因は、さまざまな要素が絡まり、一筋縄ではいかないことを改めて認識しました。

まとめ

今回のインターンでは、サーバーのタスクだけでなく、AWSでのインフラに関するタスクも行うことができました。また、実際に稼働しているゲームの開発に関わることができて、とても刺激的でした。

また、アカツキゲームスの文化として発言の心理的障壁がとても小さいことを実感しました。メンターの方々のサポートも手厚く、質問に対する答えも、その答えへの辿り着く方法を教えてくださるので、課題の解決方法として学んでいくことができました。

2週間という短い期間でしたが、濃厚な時間を過ごすことができました。ありがとうございました!