windyakinってなんて読む

うぃんぢゃきんではない

株式会社Aimingを退職しました

f:id:windyakin:20190727223236j:plain
最終出勤日、退職のあいさつ回りをしていたら虹が出た

2016年に新卒入社して以来、3年と少し在籍していた株式会社Aimingを退職することになりました。社員としての雇用は8月末までとなっていますが、先日最終出勤を終え、今は有給消化ということで今は小学生の夏休みみたいなスケジュールの長いお休みを取ることになりました。

ここでは他の方々がよくされている退職エントリーよろしく、僕が3年間でやっていたこと今回退職という選択をした理由を書き連ねようと思います。

Aimingでやっていたこと

Aimingは国内に東京本社と大阪スタジオの2拠点がありますが、私は大阪スタジオ勤務でした。またプロジェクトの配属歴は入社直後にアサインされたゲーム制作プロジェクトA(仮名)と、入社半年後に一度プロジェクトAの方針の見直しが入り、プロジェクトAの資産を活かす形で新たに立ち上げられたゲーム制作プロジェクトB(仮名)の2つになります。

入社してすぐにプロジェクトの立ち上げからリリースまで関わったことは本当に良い経験をさせてもらったと思っていますし、その期待に答えられるように一生懸命やってきたので、本当に思い入れが強いプロジェクトでした。

またゲーム制作プロジェクト以外のこともする機会も何度か頂いていて、いろんなことを学ぶいい経験になりました。

Ruby on Railsによるバックエンドシステムの開発

f:id:windyakin:20190727223518j:plain
僕のデスク。これだけのものを持って帰るのが大変だった。

ゲーム制作のプロジェクトでやっていたメインの仕事はRuby on Railsを使ってのゲームバックエンド開発でした。Railsは学生時代にアルバイトで少しだけ触っていましたが、正直いって雰囲気ぐらいでしかわかっていなかったような状態でした。しかし日々様々な実装の中からよりよいコードの考え方などを学ぶことができ、我ながら成長した実感のある3年間でした。

業務内容については守秘義務と契約の都合であまり詳細をかけないのが残念ですが、言える範囲の話題でやり遂げたといえる仕事は、2年目の年末にした「データベースの水平分割」の実装です。

水平分割の導入自体には、activerecord-shard_forというGemを使用するに至りましたが、実際に導入するにあたっては乗り越えなくてはならない課題がいくつもあり、その課題を解決するために必要であればActiveRecordの実装を直接読みにいくことや、Rubyらしいメタプログラミングといった、それまでなんとなく避けてしまっていたことに真剣に向き合うきっかけなりました。当時は何をやるべきなのかもわからず、とにかくがむしゃらに精一杯実装をするしかない状態だったのですが、いま振り返ってみるとやはりあのとき得られ経験が今の自分の一部を形作っているなとひしひしと感じています。

この水平分割を行うときにプロジェクトが違うにも関わらず実装で困ったときの相談役として親身に付き合ってくださった @wakaba260yen さん(activerecord-shard_forの作者でもある)には非常に感謝していて、最後まで一緒のプロジェクトになることは叶いませんでしたが、いつか一緒に仕事がしたいと思える尊敬できる先輩でした。ありがとうございました。

開発支援環境の構築

Jenkinsを用いたCI環境の整備や、細々とした日々の作業を手助けするようなツールやチャットボットとかを書いたりしていました。

  • 毎日前日にマージされたPull Requestの一覧をSlackに投稿するスクリプトとJenkinsジョブ
  • 開発環境に使っていたGCEインスタンスの起動状態をチェックするスクリプト
  • SlackのUser Groupsに登録できないMulti-Channel Guestに対し本当なら登録したいUser Groupへのメンション投稿があれば追加でメンションを飛ばすBot
  • 朝会・夕会の通知Bot(※営業日を考慮して祝日には通知しない)

特にSlack Botについてはゲーム会社なので、漫画NEW GAME!主人公の涼風青葉をモチーフにして「aoba-bot」という名前をつけて、最初は個人のおもちゃとして扱って居たのですが、いつの間にやら色々機能が追加されてプロジェクト運用に必要不可欠な存在になっていったという経緯があります。

また業務の中で習得したJenkinsの内容については開発者ブログにも書いたりしていて、今でも開発者ブログの中ではそれなりにアクセスがあるそうです(へぇ)。

HAL大阪「スマホオンラインゲーム開発」外部講師

f:id:windyakin:20190727223849j:plain
授業の様子

会社の産学協力(?)の一環として専門学校のHAL大阪で「専科」と呼ばれる選択授業の枠を持っています。この専科にエンジニアの講師役として出向し、オンラインゲームの基礎的技術概要の話や、実際にUnityを用いて簡単なオンライン通信を行うゲームを作るといった実習を約半年間、20名程度の学生さんと行いました。

教える内容や教材自体は長年受け継がれていたものを使用していましたが、スライドのブラッシュアップや授業日数の変更に伴う内容の変更など、学生の時にはわからなかった教える側になったときの苦労をたくさん体験できました。

採用面接

新卒応募の一次面接の面接官をやっていました。どの会社もだいたい似たようなものだと思いますが、一次面接は現場レベルのエンジニアによって行われていて、その中でもウェブ分野(RubyPHPなど)などに明るい学生さんの面接をすることが多かったです。自分自身数年前まで面接される側でしかなかったのでまさか面接する側になれるとは思っていませんでした。それだけ信頼をしていただいていたのだと思っています。

そして採用面接をすることの難しさを本当に痛感しました。1時間きりの面接で本人のもっているポテンシャルを最大限聞き出すのは本当に大変で、面接を何度もやって感じたこととか僕らの視点から応募してもらえる学生さんにぜひやっておいてほしいこととかなんかは母校の卒業生講演のなかで話をさせていただいてます。

退職した理由

今回の退職は5月にAimingのIRで発表されていた早期退職制度とは関係なく(そもそもエンジニアは募集の対象外)、環境の変化と僕個人の私情によるものです。

学ぶ機会がチーム内になくなってきていた

入社してからの3年間、途中でプロジェクトが変わることがなく、同じチームで働いてきました。入社当時はまだリリースされておらずプロジェクト黎明期とも呼べる時代にはいろんな尊敬できる先輩方が居て、技術的なところはもちろん仕事の進め方などでも日々学んでいるという実感がある良い環境でした。

しかしゲームのリリースと同時に人の入れ替わりが激しくなった時期があり、気づけばチームの所属歴、さらには社会人歴的にも上から数えたほうが早い状態になっていました。特にRubyをメインで書いているウェブエンジニアになると僕が一番上になっていて、個人的にはまだまだいろんな教えを請いたいのに、それがプロジェクト内ではできていない状態でした。

チーム内で責任を伴う立場になっていた

前項にも書いたとおりチームの所属歴が長く、ウェブエンジニアでは長となっていたので、自然と設計やコードレビューを任されることが多くなってきていました。一時期はチーム内のウェブエンジニアをまとめる立場になるという話もあったほどです。人の入れ替えが激しかった時期に少しだけマネジメントを担ったことがありますが、マネジメントのやり方もよくわからない上に自分はまだ人の上に立てるほどではないというのを痛感するばかりでした。なによりまだ25歳という年齢もありますし、マネジメントよりは実装を通していろんなことを学んでいきたいお年頃ですし、上長とも相談してマネジメントに関してはなるべく仕事が回らないように配慮してもらっていました。

ただマネジメント以外でも、実装仕様の策定会議などでの責任や発言力が増しているのは確かで、自分がウェブ実装における仕様の矛盾などを指摘したり、実装が難しい場合は代案を提示したりといったことを担わなければいけなくなっていて、のシステムの全体像やウェブ部分の設計方針を理解している人間が自分しか居ない状態の中、自分が気づけなかったことによって一歩間違うと余計な作業の手戻りが発生しかねないという状況での会議は緊張がすごかったです。

またフロントエンド開発をやってみたくなった

社会人になってからはほぼRubyしかさわっておらず、JavaScriptも趣味でNode.js (ES2017)をお遊びで触る程度で、ほぼバックエンド専任のイメージを持っている人も多かったと思いますが、もともと学生時代はフロントエンドも触っていました。その成果の一つが Honoka なわけですが、ではなんでバックエンドをやっているかというと、理由の1つに僕が就職した2015〜2016年はフロントエンドに関する技術は非常に不安定な時期でだったことがあります。

medium.com

今フロントエンドに行って明日枯れるかもしれない技術を学ぶよりも、それまで不得意としていたバックエンドのほうに専念できる環境をと思い、ソーシャルゲーム業界の門戸を叩きました。

それから3年以上が経ち、ようやくフロントエンド界隈も落ち着きを見せてきており、ここ1年ほどはフロントエンドを学びたい欲が非常に高まってきていたことがあります。しかし社内でメインで開発されているのはもちろんゲームなので、学んだり実践したりできる環境がなく、転職という選択を取る事になりました。

よかったこと

立ち上げからリリースまでを実際に体験することができた

実際に1つのプロジェクトが立ち上げられてからリリースされるまでに参加してすることができました。入社時期がたまたま良かっただけではありますが、この経験を新卒入社した会社でできたことは何事にも代えがたいなと思いました。

新技術に挑戦的でエンジニアリングレベルが高い

どちらかというとソーシャルゲームの会社はエンジニアリングレベルが低いという印象がありがちだったりしますが、Aiming全体として結構挑戦的に新しいものを導入するのに寛容という社風があったように思います(これはすべて手放しに褒められるものではないのですが)。

僕が居たプロジェクトも当時まだ出てきたばかりだったDockerをつかってサーバーは全てコンテナ化されていますし、本番環境ではKubernetesでコンテナオーケストレーションをして運用しています。こういったインフラ関連の知識もインフラ部門の専任事項ではなく、現場の開発エンジニアも交えて開発を行っているので、そこに混じれたことでこういったことが学ぶことができたことは大きかったなと思います。

今後について

すでに次の会社は決まっていて、9月から東京の会社で働くことになります。なんで有給消化期間は1ヶ月ぐらいあるんですが、現在大阪に住んでいるため引っ越す必要があり、東京の物件を契約したら初期費用だけで50万吹っ飛んだので「東京の家賃たけえ!」という文句を垂れ流しながら荷造りをはじめようとしているところです。

次の会社についてはまた働き始めたら書こうと思ってますのでお楽しみに。

最後に

ちゃんと欲しい物リストも貼っておきますのでお待ちしております。(8月19日以降の着は引っ越しがあるので受け取れない可能性があります!急げ!)

www.amazon.jp

所属プロジェクト内外問わずお世話になった方々、仲良くしてくださったみなさん本当にありがとうございました。またどこかでお会いできたらいいなと思っています。

僕もこれからさらに頑張っていきますので、引き続きご声援のほどよろしくお願いします!