アプリボット新卒2年目エンジニアの一年振り返り日記

どうも初めまして、2年目エンジニアのzawaです。

現在はリリースされているゲームのクライアントエンジニアのリーダーをさせてもらっています。
そこで今回は、新卒2年目のエンジニアがリーダーになるまでの歴史(というほど長くはないですが)をご紹介したいと思います。

内定~入社まで

まだ入社前の話になるのですが、内定者アルバイトとしてアプリボットで働いていました。

学校では主にJavaScriptやHTMLなどを使ったフロントエンドとサーバーサイドを扱っていたため、内定者アルバイトをやることになった際もWebサービス系の部署でやろうかなーとか考えてました。

しかし、もともとゲームを作ってみたいという思いがあり、ゲーム開発のフロント経験ゼロながらクライアントエンジニア(※1)としてアプリボットで働かせていただくことになりました。
2014年の8月半ばぐらいから週2日、5時間ほどで3月末まで細々とアルバイトしていて、下記のようなことをやっていました。

  • ゲーム開発の基礎/Cocos2d-xの基礎
  • 弊社漫画アプリの調査
  • Laravelを使った社内システムの開発
  • 弊社タイトルのスピンオフアプリの開発
  • etc…

最終的には一人でゼロからスピンオフアプリの開発まで任され、わからないことだらけでしたが大きく成長できたと感じました。
アルバイトを始める前の社長との面談で、

「うちは[内定者バイトだから]っていうふうには扱わないから。」

と言われましたがまさにその通りで、他の環境ではこういうことは任せてもらえなかったのでは無いかと思ってます。

ここで四苦八苦したことは、現在の開発に大きく役立っています。

※1 主にCocos2d-xやUnity、SwiftやAndroid(Java)を扱っているエンジニアのこと

入社~配属まで

CAグループでは、その年に新卒で入社した技術職全員を対象に「技術研修」があります。詳しくは割愛しますが、主に下記のような研修を行いました。

  • CやJavaなどいくつかの言語の座学/実践演習
  • エンジニアとデザイナー数名のチームで開発

配属後~7月

5月下旬、同期の向井とともにアプリボットへ配属となります。

僕は希望した運用プロジェクトへ配属され、配属後とりあえず開発環境を構築し、小さめの改善・バグ潰しをしつつプロジェクトのコードを読み進め理解を深めていきました。

初めて出したマージリクエストには大量のコメントが付いた記憶もありますが、だんだんと逆にコメントをつけることも増え、少しずつですが戦力として数えられるようになっていきました。

自分が初めて開発した機能だったため、ついつい2chの反応を見たり「#グリモア」と検索したりしてました。あぁ懐かしくてなんだか涙が出そうです。
この開発では、自分の未熟さを思い知りました。コードを書くことにはある程度慣れていたものの、

  • 工数の出し方
  • 複数人で同じ画面を触る場合の考慮
  • 他のライン(サーバーサイド・デザイン・アニメーション・リソース)との連携
  • コード修正後の影響範囲

など、非常に多くの学びがありました。

※2 現状の機能などに大きく改修を加え、良くない状態を「打開」すること

7月~12月

7月下旬あたりからはひたすら開発を行いました。

新ガチャ

新しいガチャスキームで、アニメーションを多く取り入れたものを開発しました。
設計の時点からアニメーターさんとすりあわせし、どのように進めるかを決めることで開発をスムーズに進めることができました。

新カード

カードは改修による影響範囲が非常に大きく、「ここもか!」のようなことが多くありました。
しかし段々プロジェクトのコードにも慣れてきたので、行けてない部分のリファクタを行いつつ新カードの実装を行いました。

新イベ(1月)

それまで自分が担当してきたものより、明らかに大きな開発でした。今まで以上に初期の設計が大事になると思い、作業に入る前にかなり悩んだ記憶があります。
設計に時間を少し大きめに割いたためか結果的にいつもより早く開発できた気がします。

大型新機能

現プロジェクトの中では過去一番大きいといっても過言ではない機能をチーム全員で開発しました。
多人数で一つの画面を同時に開発しているので、開発中のコミュニケーションやタスク分担が非常に大事でした。

機能が大きくなると、見積もりが外れたり、そのリカバリーのために遅くまで残ったりすることもあり、正直辛いことも多くありました。
しかし、それ以上に自分の作ったものが世に出て、多くのユーザーに触ってもらい、時には酷評もありましたが楽しくプレイしてくださっていることが何よりうれしかったです。

また、この時期に意識していたのが、プロジェクトで使うツールやデバッグ機能の開発についてです。

例えば今のプロジェクトでは

  • jenkinsでipaやapkを自動アップロードするジョブ
  • アプリのクラッシュ増加を感知しチャットワークに通知する機構
  • DBのDDLの自動生成ツール

など、開発や運用を手助けするツール・デバッグ機能があり、こういったツールが増えると、人的ミスの減少、開発スピード・デバッグスピードの向上といった効果が得られます。

これらのツールは、過去にプロジェクトのメンバーが作ったり、他プロジェクトのものを流用したりしているのですが、それを自分でも何か一つ作りたいと考えていました。
そこで一つ作ってみたのが、サーバーとクライアント間のAPI仕様書から、通信に必要なクラスのコードを吐き出すツールです。

これはまた別の機会に紹介できればと思いますが、それまでは社内wikiにあるAPI仕様書をクライアントエンジニアがコードに落としていく形で進めていました。
これをAPI仕様書をGoogleスプレッドシートに移行し、GoogleAppScriptを利用してWeb上のテンプレートに表示するといったものを開発しました。

少量の開発であれば、手作業で社内wikiから移す方法で問題ないし、むしろ細かい変更にはそっちの方がよかったりもします。
しかし新イベの開発で今までと全く違う大きな開発を行う際に、全てを手作業で行うのはしんどく感じたため、この際試してみようと思いました。

入社当時から機を伺っていたものなのですが、ちょうど新規プロジェクトで似たようなツールを制作していたため、それを参考にしつつ現プロジェクトで使いやすいように開発を行いました。
このツールを初めて使ったのは、2月から開発が始まった新たなイベントの開発でしたが、一定の効果を得ることができ、今後の開発にも採用していくこととなりました。

1月~現在

年が明けて初めの営業日から、現プロジェクトのクライアントエンジニアリーダーとなりました。

「少し実力が足りていないぐらいの人に任せるのが一番成長できる」

弊社の考えの中にこういったものもあり、リーダーを任せていただくこととなりました。今までとはまた違った視点から開発に携わることとなり、失敗も多々ありますが、とても良い経験をさせてもらっています。

リーダーとなっても今までどおり開発もしつつ、スケジュール調整を行ったり会議に出たりしており、やることが増えて初めはてんやわんやでしたが、チームメンバーや開発ディレクターに助けられながら日々開発しています。

1、2月辺りは、メンバーへのタスクの振り方が下手で自分にタスクが乗りすぎたり、新しくプロジェクトに入った方への配慮がかけていたりしました。
余裕がなく、「自分でなんとかしないと」みたいに考えていました。そのせいで多くの方にご迷惑も掛けしました。

それも3月あたりにはある程度うまく回せるようになり、少しはリーダーらしくなれたかなーと感じています。
今のプロジェクトに配属された時は自分がリーダーとして立つことになるとは思いもしませんでしたし、正直やりたいとも全く思っていませんでした。
しかし、前リーダーであったFさんやクライアントチームのメンバー、プロジェクトのメンバーに影響を受け、このプロジェクトのクライアントリーダーとしてやっていこうと思わされました。本当に良い環境だと感じています。

まとめ

この一年あっという間でしたが、社会人としてエンジニアとして多くのことを学ぶことができました。
内定者アルバイトにアプリを作らせてみたり、新卒にクライアントリーダーを任せたりと、アプリボットは本当に裁量を多く振ってもらえる環境だなーと感じています。

開発中、失敗したことも多々ありましたが、それをみんなでフォローできるような良いチームであり、ここで新卒としてのスタートをきれて本当によかったと思います。
4月に行われた会社の総会では、新人賞をいただくことができ、1年の最後もとてもいい形で締めくくることができました。

2年目は今まで以上に開発をこなし、リーダーとしてしっかり立ちつつ、次の世代がちゃんと育つような環境を作っていけたらと思います。
長々と書かせていただきましたが、最後まで読んでいただきありがとうございました。