プログラミング未経験で入社
就活が始まる直前にプログラマーになりたいと決心し、大学院での専攻と全く違いましたがIT系を受けてサイバーエージェントに入社しました。
それから独学で学んでいましたが、全然理解が進まず入社後の研修でプログラミングの基礎を学びました。
ここらへんの話は下記に詳細にまとめているので読んでみてください。
関連記事:プログラミング未経験から最速でエンジニアになる方法
なぜスマホゲームを選んだか
自分が入社した2013年前後はスマホゲームがちょうど盛り上がってきている時期で、2012年2月にリリースされたモンストがものすごい利益を出しているタイミングでした。
IT業界各社がスマホゲームの波に送れないようにどんどんゲームを作っていましたね。
サイバーエージェントも同様にスマホゲームを作るための子会社をたくさん作っていて、DeNA、Gree、mixiとの合弁会社があり最注力事業となっていました。
人材面でも社内のトップエンジニアがたくさんゲーム開発に関わっていて、いまエンジニアをやるならゲームだなと思い迷わずゲームを作ることを決めました!
1本目:ブラウザゲーム
入社したタイミングでアメーバプラットフォームでスマホゲームを強化するということでスマホブラウザで遊べるゲームを作りました。
今はブラウザで作るゲームはほとんどないと思いますが、その時期はブラウザゲームがかなり多かったですね。
やはり、アップルとグーグルに売上の3割を持っていかれるのはかなり痛いですしね。
あと、ブラウザゲームの開発期間が極端に短く、最短で10人程度で3ヶ月でリリースしてしまうゲームもありました。
たった数千万円でゲームを作って月に何億も売り上げるゲームってシンプルにすごいですよね。こんなものを自分も作れたら最高に楽しいだろうなとモチベーションが高まっていました。
使用技術
サーバサイドはそのとき流行りはじめたNode.jsが採用されました。サイバーエージェント全体でNode.jsでゲームを作っているところが結構多かったというのもあります。
あとは、多人数参加型のリアルタイムゲームが流行っていてこれをブラウザで実現するのにNode.jsとSocket.IOという技術がマッチしていました。
この時期はこういう多人数対多人数のバトルGvG(ギルド対ギルド)がはやってましたね〜
- Node.js
- Backbone.js
- Socket.IO
- MySQL
- Casandra
- Redis
- mecached
- Nginx
- インフラは全てオンプレ
開発期間
開発期間は約9ヶ月とブラウザゲームとしてはかなり長い方でした。自分は途中からの参加だったので実質、6ヶ月くらいでした。
初めての本格的な開発がゲームというのは今思うとかなりハードルが高く、難しかったですが、ゲーム以外の開発が簡単に思えるようになったのはすごく良かったです。
それほどゲーム開発の難易度が高いということなんですよね。WEB系企業で実力つけたい人はスマホゲームを作るところに入るのをおすすめします。
トラフィックはいろんなサービスの中でもトップレベルに多いですし、サービスの仕様もすごく複雑になるのでデータベースやサーバへの負荷軽減に関して高度なスキルを学べます。
運用期間
クローズまで含めて約1年運用しました。
ゲームは開発も大変ですが、運用となるとまた違った大変さがあります。売上が立たないとあっという間にクローズ判断がされてしまうのでリリース後すぐに結果を出さないといけません。
なので、ゲーム内では毎週イベントやキャンペーンが行われ、エンジニアはその開発に追われてます。エンジニアは売上を立てるだけの開発だけでなく、表にはみえずらい、リファクタリングや、インフラの整備なども並行して改修していく必要があります。
このような直接に売上に影響しない開発も経営陣とうまく交渉しながらやっていくというのは一つの醍醐味でもあります。
自分がいた組織は「納得してから開発しろ」という文化があり、頼まれた作業をただこなすだけのエンジニアは評価されづらかったです。このときの文化は自分の開発スタンスにいい影響を与えています。
2本目:2Dネイティブゲーム
新卒2年目が終わる頃に2本目の新規ゲーム開発をはじめました。これはホントのゼロから関わっていました。
企画、メンバー集め技術選定、インフラ構成全てゼロから考えて実行しましたね。一通り経験したのでもうなんでもできますね。
使用技術
クライアントはUnityを使った2Dゲームで、2作目も多人数でリアルタイムにバトルを行うものでした。なのでサーバはNode.jsとSocket.IOを使っています。
当時はリアルタイムだとNode.jsが使われることが多かったですが、今だとPhotonが使われることが多いですね。
インフラは全てAWSで構築しています。
- Node.js
- Socket.IO
- RDS
- Elasticache(Redis)
- S3、ELB、Cloud Front
- インフラはAWS
- Unity
開発期間
開発期間は長期間に及び、1年9ヶ月もかかりました。
ブラウザゲームからネイティブゲームに市場が移り、よりハイクオリティのものを作れるようになったことで開発期間も劇的に伸びてきました。
早くても2年弱、長いものだと4年くらい開発をつづけることがあります。開発機関の長期化により、資本のある企業しか参入できない状況となっていました。
開発メンバーは30人を超える大規模開発になり、チームマネジメントの難易度もあがりました。
これにより技術的な問題だけでなく人間関係の問題が顕著になる場合もありスマホゲームと言えども開発はかなり大変なものになってきてますね。
運用期間
長期開発を経てリリースしたゲームですがわずか9ヶ月ほどでクローズしました。
クローズが決定したのはリリースしてから5ヶ月後だったのであっという間の終了でしたね。この時スマホゲーム開発の難しさと継続の大変さを再認識しましたね。
2年近く開発しててもわずか数ヶ月で終了してしまうと自分の2年間が無駄になってしまった感があり、かなりの虚無感を感じたのが正直な感想です。
本当にゲームが好き、ゲーム作りが好き、何年間もゲーム作りに自分の時間を投入する覚悟がないとゲーム開発を続けることはできません。
自分はこの経験からスマホゲーム開発に携わるのをやめました。今後も仕事として関わることはないと思います。
ものすごく当たり前ですが、改めて自分の時間を何に使うかちゃんと考えないといけないですね。下記にその経験から技術ブログを描き始めた経緯を書いているのでぜひ読んでみてください。
関連記事:エンジニアはブログを書くべき
まとめ
スマホゲーム開発は楽しそうなイメージの反面、超長期開発、クローズ判断の早さなどなかなか語られることがないことも多いのでこの記事が少しでも参考になれば幸いです。
これからスマホゲームを作りたいと思っている学生やこの業界に転職しようとしてるエンジニアの方からの質問は大歓迎ですのでこの記事のコメント欄に気軽に書き込んでください。
最後にスマホゲーム業界で磨いたスキルはどこでも通用するものになると思うので興味ある人は下の記事も読んでみて下さい。
関連記事:スマホゲーム業界で学んだプログラミングスキルはどこでも通用する話
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す