髙妻智一スマホゲーム業界で学んだプログラミングスキルはどこでも通用する話ツイートシェアはてブLINEPocketスマホゲーム業界まずスマホゲーム業界の話ですが、2012年くらいからiPhoneとAndroidが急激に普及しはじめ、それまでガラケーだったゲーム開発が急激にスマホにシフトしてきました。僕がサイバーエージェントに入社した2013年は全社をあげてスマホに注力するというタイミングでした。いろんな部署でスマホに特化したゲーム、コミュニティサービス、メディアが凄まじい勢いで作られてましたね。それだけ新規事業を作っていたので新卒も中途社員も業務委託の人もいっぱい入ってきた印象があります。スマホゲーム開発について初めはスマホのブラウザゲームがほとんどでした。自分も一番最初に携わったプロジェクトはブラウザゲームでした。それから2年弱ほどブラウザゲーム開発をしてからiOS、Androidのネイティブゲーム開発に携わりました。難易度としてブラウザよりもネイティブゲームの方が格段に難しいですね。その理由は技術面と組織面の2つです。技術面としては、ブラウザゲーム開発ではサーバサイドエンジニアとフロントエンジニアが居れば開発できましたが、ネイティブゲームの場合はそうは行きません。ネイティブゲームではフロントエンドエンジニアではなく、UnityまたはCocosを扱えるエンジニアが必要なのと、3Dを扱う場合はモデリングのエンジニアも必要になります。Unityを扱える人も、3Dを扱える人も市場に全然いなく、単価もものすごく高かったので簡単に採用することができないという問題があります。ネイティブゲーム開発の知見も溜まっていないので、最初は手探りでの開発となるため、スピードが出ません。組織面は技術面で書いたことにも繋がるのですが、ネイティブゲームを開発するにはプロジェクトメンバーが30人以上になることがほとんどです。ブラウザゲームの開発だと10人くらいでもできちゃいますし、期間も長くて半年くらいで作れます。ネイティブゲームはブラウザゲームよりも表現の幅が広がることでよりリッチなアニメーションやモデル、複雑なゲーム仕様により開発期間が最低でも1年以上かかります。自分が携わったプロジェクトはリリースまでに1年9ヶ月もかかりました。開発の長期化は資金の増加、メンバーのモチベーション維持、人間関係のトラブルなど開発以外での問題が多くなってきます。人間関係の問題は組織をまとめるリーダーの責任であることが多く、リーダー自身にもかなりのストレスがかかるのでプロジェクトをまとめるのは組織面としてはものすごく大変になります。エンジニアとして面白い点と大変さスマホゲームの機能と複雑さスマホゲームの機能はものすごく多く、それぞれが密接に関わっているので複雑になることがほとんどです。データベースのテーブル数は100を超えるし、仕様が変更されればこれらの多くのテーブルに変更が入り、最悪の場合作り直しになることも少なくないです。ソースコードも大規模になり、途中から参加したエンジニアにとってまず全体を把握するのも大変です。リリースまでたどり着けないゲームはたくさんあるし、そういうプロジェクトを間近で見てきました。スマホゲームのユーザー規模と求められるレイテンシスマホゲームのユーザー規模は数万人から数百万人と幅が広いです。ゲームでイベントを行うとこの規模のユーザが同じタイミングでアクセスしてくるのでその負荷をさばく技術、スキルが非常に重要になります。レイテンシも9割以上のリクエストを1秒以内に返すようにいろんなチューニングを行います。秒間でいうと数万リクエストを超えることなんて当たり前にあるし、普通のWEBサービスではデータベースに対して読み取りがほとんどですが、ゲームでは更新処理が多いのでこのようなサービス性質の中でレイテンシを低く抑えるのは難しいですね。レスポンスするデータ一つを見ても、極力必要なものは返さないようにするし、キャッシュできるものはして、クライアント側で保持しておけばいいものはサーバから返さないようにするなど考えることがめちゃくちゃ多くなります。メディアや一般的なサービスと違って、ゲームはリリースしたタイミングでいきなりこのレベルの負荷がくるので入念なテストと負荷試験を行います。開発期間と組織規模スマホゲームの開発期間は最低1年、長いと4年くらい開発しているものもあります。この期間にはPMが何回も変わったり、リーダー人も総取っ替えが行われたりとすんなり開発が進むことはほとんどないですね。自分の周りでも何人も鬱になって休職したり、退職する人が多かったです。外から見るとなんでそんなに過酷なのか想像つかないと思いますが、ゲーム開発の難易度がめちゃくちゃ高いということにつきますね。ゲームを作るとなったときに一番難しいのが、作ったものが面白いのかどうか実際にある程度作ってしまわないと分からないんですよね。ここで、ある程度面白いと思えるプロトタイプを作り切ってからメンバーを増やしていけばいいのですが、そうやっているところが当時は少なかったですね。大体はこんなゲームを作るぞとなったらとりあえずメンバーを増やしまくって、ある程度作り切ってみたら全然面白くないゲームができてしまって、そこから作り直すということがよくあります。会社としても経験が浅かったり、しっかりしたゲームを作れる人材が社内にいなかったというのもあります。あとブラウザゲーム開発経験者ばかりだったのでその延長で開発するとこんなことになります。今はだいぶそんなことをしているプロジェクトはなくなってきた感はありますが、それでも0ではないですね。ゲーム業界に転職するのであれば、入るプロジェクトのフェーズと規模は把握しておくことをオススメします。スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。Incにブロックチェーンエンジニアとして入社。コメントをキャンセルメールアドレスが公開されることはありません。*サイトOAuth2.0のClientIDとClientSecretについてプログラミング未経験者がプログラミングスクールを使うべきメリットRECOMMENDこちらの記事も人気です。