takanakahiko’s blog

多分三日坊主で辞めます。

短期インターンシップでAkatsuki Inc.に行った

この度,Akatsuki Inc.(以下アカツキ)で短期インターンシップをさせて頂いた. 得た経験を忘れないように,そしてインターンシップに興味のある若者へ少しでも参考になるように,記録を残しておこうと思う.

なりゆき

2018年4月某日,私はGoogleの社食でLTをしていた. なぜ私は,女児アニメの話を200人の前で話しているのだろう. 時は少し遡る.

...

私は六本木ヒルズ森タワーにいた. そう,「Tokyo GAS on GCPUG 2018 Spring」に参加していたのだ. 学生枠でギリギリ滑り込みの参加であったが,とても有意義な情報を得られて満足していた.

その会場で一本のアナウンスが入る.

「BeerTalkの枠が一つ増えました.飛び入りで話したい人は手を上げてください」

私の右手は天井を指していた.

...

そのときに発表した資料がこちらである

https://speakerdeck.com/takanakahiko/tokyo-gas-bt5

我ながらひどい,ひどすぎる.

言い訳をさせてほしい

  • その場で名乗り出たため,スライドを急いで作った
  • クオリティの高い発表が多かったため,お茶を濁す感じのスライドにしたかった

と,ここが本題ではなく,スライドの最後のページを確認されたい.

「夏のインターン探しています,よろしくおねがいします」

(注:こういう場で就活をするのはイベントのポリシーに反する場合があり,本来は止めたほうがいいです)

...

その後,私のTwitterFacebookに対して合計8件のお誘いを頂いた.

その中の一つがアカツキだった. 私の受け入れを担当していただいた坂尾さんとのファーストコンタクトは,TwitterのDMだった.

(坂尾さんは,基盤開発チームで横断的に会社にコミットするサーバーサイドの専門家である)

面談,そして...

後日,私はアカツキに来ていた. カジュアル面談ということで,遊びに行く感覚だった.

アカツキに来る前,(本当に失礼だが) 「よく知らない会社に声をかけてもらった」 というのが本音だった. 正確には八月のシンデレラナインのユーザーであったため(茜ちゃんが好きです)知ってはいたが,顧客という立場でしか認識しておらず,いまいちTech企業という認識ではなかった.

そこで,以下のように提案していただいた

  • すきな技術領域を触ってほしい
  • 期間は自由に決めていい

他の会社は

だったのと比べると,アカツキは少し 毛色 が違った. 私自身に魅力を感じて呼んでいただいているように感じられた.

私は,ここでインターンシップをすることに決めた.

インターンシップの内容

ゲーム開発基盤の開発

私のインターンシップの内容は「ゲーム開発基盤のbugfix及び機能開発」だった. ゲーム開発基盤の開発部隊としてチームA(略)に所属し,そのうちの一つに携わることになった.

ゲーム開発基盤とは,様々なゲームを開発していくにあたり,

  • 共通となる機能
  • ゲーム開発を促進する仕組み

を会社の共有資産として作り上げていくことで他社と差をつけていこうといったものである.(合ってますよね?)

与えられた課題は非常に明快で, 「2つのIssuesを10日間で潰す」 というシンプルなものだった.

  • Flaskを用いたアプリケーションであり,すでに知見があった
  • ドキュメントが充実していた
  • APIが非常にシンプルだった
  • 私の受け入れ担当である坂尾さんと,CTOの田中さんが手厚くサポートしてくれた

(CTOの田中さんは,オールラウンダーに会社を支えるすごい方である. https://voice.aktsk.jp/category/shines/888/ )

これらの理由から,私はその2つのIssues(+追加の課題)を3日で終わらせてしまったのであった...

...

翌日,ミーティングを組んで頂き,余った日数で何に取り組むか検討することになった. そこで,以下の2つを提案していただいた.

  • Goによるゲーム開発基盤の開発(セキュリティ)
  • Elixirによるゲームサーバ開発(パフォーマンスチューニング)

2つとも,私が扱ったことのない技術領域で,とても興味が湧いた. 私は,あえて難しいと言われたElixirを選択した.

Elixirによるゲームサーバ開発

その日から,私はフロアを移動し,チームM(略)へと加わり作業をすることになった.

その場で駒井さんからアーキテクチャと開発フロー,その他ツールについてのレクチャーを受けた.駒井さんはAWS等のインフラにとても詳しいようで,そういった話を聞けるのは非常に良い経験になった.

(駒井さんが書いたこの記事が面白い https://hackerslab.aktsk.jp/other/team-building-with-curry/ )

ここからは大変だった. なにせElixir0日目であったため,プロダクトのコーディングルールや慣習を飲み込みつつチュートリアルを同時に行った.(私としては,既存のコードを読むことが一番の勉強になるのでとても助かった)

1日でElixirの基本文法や理念をできるだけ叩き込み,次の日からゲームサーバのパフォーマンスチューニングに取り掛かった.

...

Elixirのコードに関しては,島崎さんに丁寧なレビューをしていただいた. 処理として正しいコードに関しても,私が更にレベルアップできるようなアドバイスと共にレビューをしていただき,Elixirに対する理解を高速に進めることができた.

(島崎さんはJapan Elixir Association 代表理事の方であり,大きなゲーム愛を持つ素晴らしい方である)

結果として,5件のPRを送り,

  • 複数のエンドポイントのパフォーマンスチューニング
  • ドキュメントの修正

を行うことができた.

...

以上で,私のインターンシップは幕を閉じた. とても濃い10日間であり,あっという間に過ぎてしまった.

学びを得たこと

ゲーム基盤開発の重要性・魅力

ゲーム会社としての力を基盤開発が支えているということが理解できた. 様々な会社がゲームを作っていく中で,いかに開発のサイクルを早く回すか,デベロッパーがUI/UXに注力できるかが他社との差をつける要因になる.

それらを支援するものとして,会社で継続的に使用可能な財産としてのゲーム開発基盤はとても魅力的なものであると感じられた.

また,それに携わるためには,広い技術力を駆使して問題を解決する必要があるということがわかった. チームAでは田中さんが,社内の様々な問題に対してオールラウンドに活躍していてとてもかっこよかった. オールラウンドに会社に貢献できるようなポジションが会社にとって重要な存在となることがわかった.

チームによる文化の違い

アカツキは特に,チーム内でDevOpsが完結しやすい(or意図的にそうなるようにしている)会社であると感じられた. そういう前提もあり,GitHub等の運用ルールはチームによって差異があると感じられた. 自分の中で至高であると思うルールを持つことも大事だが,チームにそれぞれ存在する文化に素早く馴染むことも大切であると実感した.

チームのやり方を更に良くしようと言うことはとても大事なのだけれども,例えばツールそのものに嫌悪をせず,そのツールの代替案に必要なコストを考えた上で最良の提案をできるように気をつけるべきであると思った.

チームで開発すること

主に行ったのが,もとから書かれているソースコードをFixしていく作業だったので,なるべく本来のルールを壊さないように意識した. 後半のサーバ開発は,命名とかに気を遣うことでチーム開発が非常に進めやすいことを身をもって実感した. レビューの際に指摘していただいたことが非常に参考になった.

お互いに気を配ることで,効率的な開発ができると感じた. 「自分がどのような箇所を実装するのか事前共有しよう」といったアナウンスがされていた. かく言う私は,それを怠り(自己解決したとはいえ)コンフリクトを起こす等,様々な点で迷惑をかけてしまった. 効率的に開発するために,チームに気を使うことの意義を感じることができた.

良かったこと

Elixirをアカツキで学べたこと

Elixirは高速かつデータの流れが意識しやすい(IOが明確),とても強力な言語であることが,ゲーム開発という場で特に身を持って感じることができた. また,Elixirは一つの問題に対して(少なくとも私がよく使うPythonよりかは)色々なアプローチで解決が可能である言語だと感じた. つまり,書き方次第ではとても読みづらい実装をしてしまうといった側面も.

そういった中で

  • 読みやすいコード
  • きれいなコード

を意識した実装ができたのは,

のおかげであると考えられる. Elixirを初めて触る場がアカツキで本当に良かった.

就活に対する考え方を明確にできた

坂尾さん島崎さんにランチに連れて行ってもらったときに,就活に対する相談をした.

  • ゲーム会社で働くことの意義
  • 業界トップ企業に入るか否か
  • 会社の文化や自浄能力
  • 裁量労働について

様々な観点から色々なことを教えていただいた. 私が就活をしていく中で,どのように会社を見ていくべきか,とても参考になった.

私は,好きなものを作っていきたい. 私がプログラミングを始めたきっかけは,「表現」だった.

好きなものを生み出すといった強力なモチベーションを武器に,その業界を引っ張っていけるような能力を身につける. それに適した環境を提供してもらえるような会社を選べるように努力する.

もちろん給与も大事であると感じた. 自分のスキルやポテンシャルを評価してもらえる会社でこそ,自分の真価が発揮できる. その評価尺度の一つが給与でもある.なんてことを考えていた.

アカツキという会社を知ることができたこと

このセクションは,「いい話」を書きたいから用意したのではなく,本当にそう感じているので書くものである.忖度や気遣いでない,素直な気持ちを記す.

上記にもあるが,アカツキに来る前,(本当に失礼だが)「よく知らない会社に声をかけてもらった」というのが本音だった. ゲーム会社というとUXを優先して,Techを疎かにしてしまうような印象を勝手に持っていた.

しかし,その考えは実際にインターンシップに来てみることで変わった. エンジニアには大きな裁量が与えられ,より良いUXを求めるために技術力を追求している姿がそこにあった. プロダクトに愛を持ち,それを作っていくために日々研磨しようとする社員の方々に惚れ込み,このような働き方をしていきたいと素直に思った. インターンに来なければこのような経験ができなかったと思う. 私をインターンシップとして採用するにあたって動いてくれたすべての方に本当に感謝したい.

追伸

就活はじめました.

私のできることや経歴はこちらにまとめました.

https://github.com/takanakahiko/curriculum-vitae

今年中はたくさんの会社の方とお話してみたいと考えています. そのため,カジュアルな面談の機会を増やしたいと考えています.

もし私とお話してくださる会社の方がいらっしゃいましたら

までお気軽にご連絡いただけると嬉しいです.

以上です,読んでいただきありがとうございました.