世紀末の墓

世紀末の墓

IT系寄りの雑記

Akatsukiのインターンに行ってきた話

タイトル通り,Akatsukiのサマーインターンに参加してきました. その所感等を書いていき.

行った理由とかはこっちで

www.silmin.net

期間

2019/09/02-20
3週間 14営業日(途中祝日があったため)

選考フェーズ

下のページから応募できた(今はもう募集終了してるけど)

aktsk.jp

応募→コーディングテスト→人事面談→エンジニア面談
というフローだった気がする.

それなりにプログラミングできる人なら難なく突破できそうな感じだった.(詳細は覚えてない)

選考通過後,どんなことやりたいかなどのヒアリングを兼ねたエンジニアの方との面談があった.
そこでは僕は「なんでもやりたいです!」みたいなことを言った記憶がある.

その後,必要技術やオススメ書籍などがエンジニアの方から送られてきたのだが,
人事の方が「必要書籍があるなら送りますよ^^」っていって送ってくれたのありがたかった.

職種

ソーシャルゲームのクライアントエンジニア

開発環境

言語: C++11 ライブラリ: Cocos2d-x エディタ: Xcode

やったこと

現在運用中のゲームの新機能の一部の実装

初のC++で大規模開発

C++は今まで競技プログラミングと小さめツールを作るくらいでしか書いていなかったので新鮮だった.

結構長いプロダクトだったので,コード量がとても多くて最初のキャッチアップが死ぬほど大変だったし,
ソースコードとアセットをcloneしてくるだけで時間が溶けたり,Xcodeくんが無限にindexingしていたりと大変だった.

GitHubを用いた開発

普段は一人で利用していて,チームで使うことは全然なかった.

PRによって自分のコードがレビューされもっと良い感じになっていくのが楽しかったし,
自分の書いたコードが本番コードにmergeされると嬉しかった.

他職種や他エンジニアと話す

自分の実装箇所が他との接続部分かつ仕様がある場所だったので,プランナーの方に確認したりデザイナーさんのPRを参照したりと,
結構他と関わることが多かった.

僕は今までのインターンはエンジニアとしか話したことがなかったので新鮮だった.

得られたこと

既存のコードを疑うこと

元々あるコードや設計が正しいとは限らない

大きなプロダクトで多くの人が関与するようになると,同じようなことをやっているように見えるのに色々な方法が見受けられる. それらを模倣したら良い,ではなく自分の担当箇所に置き換えて考える必要がある.あくまで前のコードは参考程度で. それにコードや設計はどんどん陳腐化していくので,当時は最善だったかもしれないが,今ではより良い方法があるといったようなことは起こりうる.

大規模開発に関する知見

GitHub

コードの管理はGitHubでされていて,新機能を実装したらPRを出してレビューしてもらい取り込まれる. 自分の書いたコードがレビューにかけられて本番に取り込まれるのは良い経験になった.

ブランチ整理周りのTipsも得られてよかった.

チケットベース開発

なにかタスクが発生したらチケットを切って担当者をアサインする. PRもこのチケットに基づいて作り,実装が終わったら検証フェーズに移っていく.

Jenkins等でのビルド自動化

PRが出たときやデイリーでビルドが走っていて,常にやばくないかなどの検証がされている.

ロジックの簡潔さ(人間に優しいコード設計)

色々な人が関わるプロダクトなので,コードを誰がみてもわかりやすく書く必要がある. そのためには,綺麗にクラス構造を設計したり適切な関数切り出しが大切.

自分の特性に合わせた方法を模索すること

僕もこれを読んでるあなたもおそらく人間なので,欠点となりうる特性を持っているはず. 運動が苦手だったり人と話すのが苦手だったり.

ただ,集団で仕事をする以上,一人の時とは違った条件や制限がある.
その欠点をそのままにするのではなく,どうしたらそれを克服(カバー?)できるのかをみつけたい.

そのためにはトライ&エラーを繰り返し,自分に合った方法を常に模索し続ける必要がある.

僕は,このインターンで

  • 夜型なので朝に弱く,夕方ごろにエンジンがかかる
  • 思考のキャッシュが残り続ける

の2つが業務をする上で障壁になった.

そのままにするわけにも行かないので,

  • 夜型なので朝に弱く,夕方ごろにエンジンがかかる
    • 朝来た段階でその日のミニスケジュールみたいなものを立てて,それ通りに開発する
  • 思考のいらないキャッシュが残り続ける
    • 考えたことや知り得たこと等をメモに起こして,自分のキャッシュを疑うようにする

の2つを実践していた.

この2つは意外と自分に合っていて良かったため,今後個人の開発でも続けていきたいと思った.

C++の知見

C++を業務で使うのは初めてだったので,それなりに学べた気がする.
一人で書いているだけだと知らなかった仕様や書き方に触れられたのはよかった.

ただ,2週目くらいの頃に,自分のC++の仕様理解が曖昧だったせいでハマって泣けた.

感想

技術的には上記の通りなのでそれ以外について.

まずオフィス内が裸足!

これは僕にとって最高にマッチしている.最高.

それになんかたくさん設備がある!

本読むスペースとかラウンジとか休憩スペースとかソファがいっぱいあるところとか...挙げ句の果てにはバリスタが常駐している!?

なんてこった.....

結構みんなラフに話していて,雰囲気的に自分にあってそうだなーっていう感じがした.

基本毎日楽しくて,3週間がとても短く感じた.

交通費や宿泊の提供もあるし,お賃金もかなりもらえるし,おすすめやぞ(言わされているわけではない)

おわりに

この3週間は自分の中で結構濃い3週間になったと思う.

当初の目的だった「クライアントエンジニアの肌感を掴む」はそれなりに達成できたと思う.

僕はまだB2だが,好きな分野が多すぎるため今から全部体験しようと思ってインターンに行っている.
実際に3社いってみて共通点や違いが見えたり,体験してみないとわからなかったことは多くある.

これを読んで,「ちょっと行ってみようかな...」と思った人は,Akatsukiに限らずインターンに応募してみてはいかがだろうか.

まだ「B3以上〜」「n年卒限定」のような制約があるところも多いが,年齢問わずのところも増えてきているので,早いうちから経験しておくのは良いことだと思う.

東京の一人暮らしはお金が溶けるなぁ...(遠い目)