Average21/100 Point

そんな感じです。

ゲーム業界を目指したけれどゲームが好きではなかったかもしれない

就職活動周辺での所感の話です。

Q1.あなたが好きなゲームタイトルを教えてください

コンシューマ系が強い会社の面接でよく聞かれました。

ESでも質問欄に大体あります。

ソシャゲやってるベンチャーでも稀に飛んでくる傾向にあった。

 

この質問が飛んでくると凄く困った。

 

 猛烈に好きだと言える作品がない。

 

ファイアーエムブレムシリーズが好きだし、TitanFall、CoDやBFシリーズも好き。PC配信のゲームならそこそこやっているし音ゲーとかアーケード縦シューも定期的にゲーセンでプレイしに行く程度には好きだしインディーズで感動したゲームも何作かあるけれど。

とにかく咄嗟に出なかった。

 

直近でやってたゲーム、各種メーカーのアケゲ(そのメーカー作の音ゲとか諸々)とかで回答したけど内心必死に推しポイントを考えて整理しながら話したと思う。

Q2.では、あなたはそのゲームのどんな部分に関わってみたいですか

好きなゲームは好きなゲームですよね!?

好きなゲームと仕事として関わっていきたい物は海よりも深くて山よりも高い断絶があると考えてるんですよ私。

そんな事聞かれても答えるのは難しいしパッと回答が出てこない。

 

「いやいや、自分が一番おもしろいと思う箇所とそれを活かす為にどう関わって行きたいかを質問してるんでしょう」

 

今までの質問でこんな勉強をしてましたーこんなスキルを活かしたいですーとか話してるんですよ!?

それと矛盾する話をできるか、それは面接官が納得できる回答か、会社として求めている方向性の話になってるのか、とかが頭の中でグルグルする。

 

結局無い知恵絞ってしどろもどろになって答えた。

最終面接でこの質問飛んできてチグハグな回答して落ちたのでかなりトラウマ。

あの、内心「何いってんだこいつ」みたいな人事部長の表情は今でも思い出して胃がキリキリする。

ゲームは人並み以上に好きです。

ゲーム業界を目指した周りの人を見れば病的に(褒めてます)ポケモンが好きな人、メタルギアシリーズが好きでゲーム開発を始めた人、FFやKHが猛烈に好きな人がいた。

彼ら彼女らに比べて自分は人生を左右するような軸になるゲーム体験がない。

 

自分のプログラミングを始めた出発点はゲームが作りたいから、だったけど続ける原動力になったのはそれ以外の中高の部活動にまつわる部分が大きかった。

同人ゲーム制作を始めてからは「面白いゲームを作りたい」という気持ちが原動力でやっていた。(でもそれを実現出来たとは言い難い部分が沢山あったけれども)

 

仕事としてゲーム開発に携わる方向を選んだ理由は、ゲームが好きで好きで堪らないという訳ではなかった。この会社のこのタイトルに絶対に関わりたい、なんて願望もない。

エンジニアとして実現したい展望やプロダクト像はあれど、趣味と仕事は別なのだ。

 

好きなゲームは好きなゲームで、就職と絡めて話をするにはレイヤーが違いすぎていた。

好きな事はやりたい事なのか

就活で前述の質問を受けてから、「じゃあなんでゲーム業界受けてんだお前」とか「本当にゲームが好きなのか?そう思い込みたいだけで本当は別の所に気持ちがあるんじゃないか」「ゲームを仕事にする事が目的になってるんじゃないか?」という風に考える機会が増えました。

 

 でも、そもそも何故ゲーム系を志望したかと言えば、自分のアピールポイントや経験、自分のやりたい事、実現したい事を勘案して志望した側面が強くて、「本当にゲームが好きで志望しました」という気持ちが先立つ感じではない。

 

出発点がそれならもうそういうもんか。

表面的な受け答えは出来る限り対策するけど、心の有り様まで変えようとするのは難しい。というかそこまで自己分析するとお前何やりたいねんという話になる。

 

内心がどうあれ、そうありたいと望むものがあればそれで良いと思いました。

5年後、10年後には目標やら内心も変わってる可能性すらあるので、これからやっていきたい目標と将来性、それに現実味が一定担保できる(と思われる)選択肢を選べれば良いと。

 

内定の方は色々なご縁があってソーシャルゲームの開発運営も手がけてるベンチャーの方に内定頂きました。

ソーシャルゲーム界隈の雰囲気は自分がやりたい方向に近かったと思うし、ここでなら働きたいという気持ちを持てる会社でした。

 

いい方向に物事が進む事を祈りつつ 

 

補遺

ここまで書いてから気付いたんですけど、会社に合わせてその辺言える程度に割り切ってればまあ幸せだった気がするんですよね。

というかね、一次面接の心に残った作品や好きな作品みたいな質問、どの程度考えてプロダクトに触れてるかとかどんくらいゲームをやってるかを見る質問だったと思うのでそこまで考える必要はなかったですよね。

今までプレイした中で一番受けが狙えて伝えやすい作品を選んで話すみたいな感じで。

 

ゲーム愛みたいなのはどうだろ、ちゃんとアピールできたか言われると厳しい。感情や情熱を論理立てて表現するのが不得意で。

 

自分はこういう事ができますやれますみたいなアピールも新卒の身分ではあんまり効果的ではなかった気がします。求められるものは別の軸にあったと思うので。

 

結局質問の回答が出てこなかった、みたいな所を考えすぎて思い悩んだ感じなので如何とも。

面接対策はしっかりやろう

Ruby on Rails 5と C++(Boost.Asio)で通信

はじめに

題名通りです。
「サーバとクライアントとの通信」の第一歩としてやりました。



開発環境

  OS:Windows 10 Pro
  Visual Studio 2017

サーバ側

  Docker for Windows   17.09.1
  Ruby  2.3.5 
  Ruby on Rails 5.1.2
 Win上で完結したかったので仮想環境でRailsアプリを動かします。


 

やったこと

  • Rails製のAPIサーバを動かす
  • Railsアプリは、特定のパスに対するアクセスに対して特定のJSONを返す
  • C++アプリ(クライアント)でHTTP通信を行う
  • クライアントはAPIサーバから特定のJSONデータを貰って画面に表示する

 



技術

APIサーバ

 クライアント-サーバ間で情報のやり取りを行う場合、サーバはAPIを提供する機能をつける(みたいです)
qiita.com

Boost.Asio

 素のC++は通信関係が弱いみたいなのでBoostライブラリ内の通信系の機能郡、Boost.Asioで実装します。
qiita.com

 



実装する

 偉大なる先駆者の皆様のコードを参考にしました。
ほぼコピペみたいなもので心苦しい
nekko1119.hatenablog.com
qiita.com
boostjp.github.io

RoR(サーバ)側の実装

\config\routes.rb

Rails.application.routes.draw do
  namespace :api, {format: 'json'} do
    namespace :v1 do
      namespace :tests do
        get "/" , :action => "index"
      end
    end
  end  
end

\app\controllers\api\v1\tests_controller.rb

class Api::V1::TestsController < ApplicationController
    def index
        render json: {
            "comment": "Herrlich!"
        }
    end
end

C++(クライアント)側のの実装

#include "stdafx.h"
#include <boost/asio.hpp>
#include <iostream>


using namespace std;
namespace asio	= boost::asio;
namespace ip	= asio::ip;


int main() {
	try
	{
		asio::io_service io;
		ip::tcp::socket api_socket(io);
		boost::system::error_code error;
		api_socket.connect(ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"), 3011), error);

		asio::streambuf request;
		ostream request_ostream(&request);
		request_ostream << "GET /api/v1/tests HTTP/1.0\r\n\r\n";
		asio::write(api_socket, request);

		asio::streambuf buffer;
		asio::read(api_socket, buffer, asio::transfer_all(), error);
		if (error && error != asio::error::eof)
		{
			cout << "receive failed: " << error.message() << endl;
		}
		else
		{
			cout << &buffer;
		}
	}
	catch (exception& e)
	{
		cout << e.what();
	}
	return 0;
}



実行結果

クライアント側
f:id:ryo_hara:20180108034543p:plain
サーバ側
f:id:ryo_hara:20180108034549p:plain
表示上の時間はズレてますがクライアントではデータの取得に成功、サーバ側のログではリクエストがあったことを示しています。



簡単な解説

 サーバは、 以下のアドレスに対してのアクセスにJSONを返します。

http://localhost:3011/api/v1/tests
or
http://127.0.0.1:3011/api/v1/tests 

 サーバのコードを見てみると、以下のURIに対してのリクエストにindexメソッドの処理を実行するように記述されています。

/api/v1/tests

 tests_controler内のindexメソッドを見てみるとrenderでjsonを返してますね。
 クライアント側を見てみると、IP127.0.0.1の3011番ポートからの通信を受けるRailsアプリに対してリクエストを送っています。



おわりに

基礎の基礎ですね。

この段階なら、例えばバージョンを返すcontrollerを用意して「クライアントの起動時にバージョンチェックを走らせる」みたいな事が出来ると思います、
ゆくゆくはスコアデータのやり取りくらいはやりたい。