#7】『フルスタックエンジニア』とは?シェアTweetこんにちは、技術戦略チームのTNです。BLOGをよろしくお願いいたします。ゲーム業界におけるフルスタックエンジニアとはどんなエンジニア?私の寄稿も2度目になりますが、今回は『フルスタックエンジニア』について。去年の末に、名古屋のトライデントコンピュータ専門学校にて登壇させていただいたのですが、その際に今後活躍が熱望されるエンジニアのモデル像のひとつとしてフルスタックエンジニアを挙げさせていただきました。(※登壇の様子はこちら)講義時間の都合もあり、フルスタックエンジニアがどういうエンジニアなのか、掘り下げが浅かったなと反省したこともあり、今一度ゲーム業界におけるフルスタックエンジニアとは、どういうスキルセットを備えたエンジニアなのか考えたいと思います。特定領域に特化したスキルをもつ『専門特化型』のイメージに対して、フルスタックエンジニアはクライアントとサーバーがこなせるというイメージがあるものの、漠然としている感があります。業態によっても求められるものが違ってくることもあり、ネットで検索をかけると多種多様な情報が溢れています。「イメージしづらいものは、小さく分解することで物事の形が見えてくる」ので、私なりの解釈でフルスタックエンジニアの最小の姿を定義していきます。フルスタックエンジニアの最小スキルまず、クライアントとサーバーができる、という定義に関してです。昨今、多くのゲームにおいてネットワークで繋がってるのは当然になっていますが、ソーシャルゲーム開発においてはサーバー・クライアントモデルが基本になっています。さまざまなゲームサービスやサポートを行うためにユーザーデータを中央管理しているのですが、マシンが一台ではなくAPI、データベース、CDNなど複数のサービスがクラウド上で動作し複合的に利用しております。ビジネス面でも課金処理だったり、Push通知を送ったり、ユーザー情報を分析にかけたりとさまざまな仕事をしております。これらを包括的にバックエンドと呼ぶこともあります。ソーシャルゲームではゲームロジックの大部分をサーバーサイドで処理し、スマフォやPCなどのクライアントサイドで行う処理は画面描画とユーザー入力、ネットワークアクセスだけというミニマムな構成も少なくありません。シリアライズドバイナリーなど)で要求されたデータを送信するとなります。Python,C#,Javaなど)のスキルが期待されます。・AWS、GCP等のクラウドインフラなどに関する最低限の知識も必要です。DB内に格納されるデータには、プレイヤーの振る舞いで変更されることがない固定的なデータ「マスターデータ」と、プレイヤーの行動や状態を記録する「トランザクションデータ」(ユーザーデータなどとも言う)があります。トランザクションデータはクライアントからAPIを介した入力データを加工してDBに格納されますが、マスターデータは事前に準備される(デプロイされる)データなので、データをDBに格納するためのシステムが必要となります。(入稿ツールなどと呼ぶ)サーバーサイドエンジニアのみならず、クライアントサイドでも入稿ツール実装はよく求められます。一般的にはExcelやGoogleAppのスプレッドシートに記載されたデータを変換して、DBへ格納するような入稿ツールが多いです。(Webアプリあるいはネイティブアプリ)入稿ツールでデータを作成しないと、機能実装のテストなどもできないので必須スキルと言えます。クライアントができる、というのもかなり曖昧です。上記でソーシャルゲームにおいて、クライアントは画面描画とユーザー入力とネットワークアクセスだけというミニマム構成なものもあると書きましたが、この3要素も内部を細かく分解してみると、それぞれが多くの処理を積み重ねていることがわかります。近年ではUnityなどのゲームエンジンの台頭により、ビルトインされた機能を組み合わせて使うことで、こういったクライアントサイドの実装ハードルがぐっと下がりました。ゲームロジックはクライアントで処理し、サーバーサイドはオンラインストレージぐらいの役割しか持たないゲームもあります。誤解を恐れずに書くと、広義ではフルスタックエンジニアがもつ最小のクライアントスキルはAPIコールしてレスポンスデータをクライアントで処理しやすいデータ構造に変換してメモリ上に配置すると言えます。「処理しやすいデータ構造に変換して」はjsonやXMLのパースであったり、シリアライズされたバイナリデータのデシリアライズだったりします。これだけではゲームが動いているとは言い難いですし、クライアント・サーバーで一気通貫で機能を実装できるというフルスタックエンジニアの利点を考えると、もう少しスキルが要求されそうです。・位置データが指定する座標にキャラクターを移動させる・アイテムデータをUIに一覧表示する・ダメージデータをクライアントキャラクターの見た目に反映させるなどなど、いろんなケースが考えられます。・クライアント<->サーバーでやりとりするデータ設計ができる・サーバーサイドでDBテーブル設計ができ、APIを実装することができる・入稿ツールを実装できる・クライアントサイドでネットワークから取得したデータをパースやデシリアライズしてメモリ上に配置することができる・クライアントサイドでネットワークから取得したデータを使って、画面表示そのものやキャラクターステータスの更新、アイテム取得や消費、などプレイヤー行動に影響を与える機能を実装できる・最低限のクラウドインフラ知識を持っているといったところでしょうか?ようやくフルスタックエンジニアの姿が少し見えてきました。Lv1とはいえけっこう多くのスキルが要求されますね。必然的にフルスタックエンジニアとしての成長には相当な経験値が必要になります。基本のスキルセットを習得し、そのうえで自分がなりたい目標に向けて日々勉強していくことがフルスタックエンジニアへの道かと思います。今はフルスタックエンジニアの需要がゲームも含めたIT業界全体で高まってる背景もあり、いろんなオンライン講座なんかも用意されています。ファンプレックスでも、所属しているエンジニアのさらなる成長のために、各種カリキュラムを策定したり、エンジニア全員がオンライン講座を利用できるような制度を整えています。ファンプレックス株式会社グリー株式会社の100%子会社で、ゲーム運営事業を行う。