インフィニットループ 広報ブログ

2022年03月17日 (木)

著者 : pr

web系開発を渡り歩き辿りついたILで、ゲームの裏側を知るバックエンド開発が面白い。

K君Profile

入社2020年 中途入社
プログラマ歴それまでは業務系のプログラムを書いたり、
WebサービスのバックエンドをPHPとかJavaScriptで書いたりしていました
現在の職種サーバープログラマ(PHP)、合わせてAWSも
職場仙台・ときどきリモート
出身宮城県塩竈市

聞き手

仙台支社長 澤田周

IT系の会社を転々としながら経験してきたこと

ここまでの経緯や経歴をさらっと教えてください

高校出てIT入って基本的にIT系を転々としていました。
一時期アルバイト生活を1年半ぐらい、仙台駅にあった、喫茶店と居酒屋みたいなところでホールもキッチンもやっていました。

ITやったあと飲食やってまたITに?

そうですね。紆余曲折があり。

インフィニットループは何社目?

飲食やバイト除いて4社目ですね。

今までやってた業界的にはweb?

そうですね、あ、最初だけ業務系のWindowsのアプリ開発をdelphiで、特定業界向けの管理ソフトを作っていました。パッケージの中身にAS/400とかあったりして、自分はいじってないですけど。あとはWindowsとSQL Serverみたいな構成ですね。

じゃあもう本当にずっと帳票を出してきたりSQL書いたり?

そこはそうですね、帳票、文字ばかりよりはちょっとグラフィカルな感じでしたけど。業務システムはそこだけですね。

そのほかはweb?

そうですね、web系。ホームページとか、webアプリ、サービスという感じでした。特定業界向けのコミュニティサービスの開発とシステムの運用を依頼を受けてやっていた感じですね。掲示板とかニュースとか。

会社の規模はどれぐらいでした?

業務系の時は凄く少ないです、今(IL仙台)の事務所より少ない、10-20人ですね。で、2つ前は70-80人ぐらい、営業からデザインから全職種がいる会社でした。前職は10人前後ぐらいですね。

いろんな環境を渡り歩いてきた感じですね。今まで触ってきた言語、という切り口だとどのような感じ?

言語で言うと、delphi, PHP,あとちょっとアプリも触ってたので Objctive-C はちょっとした改修ぐらいならできる感じ。そんなもんですかね、業務で触ったのは。

-Javascript…

ああそうですね、Javascript, HTML/CSS

-RubyとかPythonとかは?

いやーないですね、Rubyは…ないか。Pythonはなんかたまに必要に応じて。まぁあとnode?うんまぁJavascriptか。

-あと何だろう使うとしたら。makeとかは使ってた?その辺は全部パッケージでやってた?

パッケージですね。個人レベルでちょいちょいはありましたけど。

-Linuxは触ってた?

まぁ、ほぼ必須知識ぐらいの感じで。
前々職のときは、サーバが dedicated server(専用サーバ) だったので、あの、〇〇(大手事業者)の。ただ、後々○○(大手クラウド)にお引越ししたのでだいぶ手は離れましたけど。

-監視とかは?

なんだっけな、Zabbixは入れていましたさすがに。通知はメールでした、まだチャットにAPIで通知という時代ではなかったので。

-DBはどんな感じ?

えっと、基本的にRDBしかないですね。最初がSQL Server、で、あとはしばらくもうMySQLばっかりですね。

-あまり限界パフォーマンスを叩き出したりしない感じ?

いやぁ全然ないですね。はい。まぁちょっと必要に応じてチューニングしたりして、ふーん、みたいな。

-あまりBIみたいなことはしていない?

ないですね。

-エンタメみたいな仕事はやっていた?

うーん、エンタメのレベルによりますが。ゲームって言うと無いんですが、例えばブラウザ上で遊ぶミニゲームみたいなもののバックエンドのいじり、ぐらいなら。

ゲーム開発をしているILに転職した理由

転職のきっかけみたいなのって。ぶっちゃけて話すのは難しいかな?

いや、まぁ、そうでもないですよ。
なんかもうちょっといろいろやりたいなーと思って。
スケールの大きいというか、もうちょっと規模の大きなサービスをやってみたいなと思っていろいろと転職活動をしていた中で、ゲーム系なら比較的どころかとんでもなく規模が大きいだろう、ぐらいの気持ちで入った感じです。

-サービスとしてゲームを捉える、っていうことについてもう少し詳しく伺いたいです!

ゲームを遊んだりすると「裏側どうなっているのか?」なんて考えるんですよ。メンテナンス入ったら、ああメンテナンス大変だなー、とか。なんだろう、そうですね、裏側を大体考えるので、何においても。この思考は多分ゲームに限った話じゃないんですよね。

-ゲームはどんなのやってたの?

いろいろやってましたね、若かりし頃は。FPSもストラテジーもRTSもレーシングもアクションもやりますね。

ILに来るきっかけ、バックエンド面白そうだなぁって考えるに至ったきっかけになったタイトルってある?

スマホの台頭がすごい大きかったですね。コンシューマー(編注:家庭用ゲーム機)だと通信の経路も多分違うはずで、HTTPじゃなくTCPでよしなに使う、だと思うので。なんかこう全体像が掴みづらかったんですけど。

ところがスマホになると、自分がスマホアプリを書いていたってのもあるんですけど、そんなにリアルタイムとかでなければ、まぁ。印象で言うと最初の方の〇〇(他社様有名タイトル)とか、リアルタイム性がそんなに無いので、結局HTTPで通信で、なんか身近だったんですよね。そこで興味を持った感じです。

ILに入ってから、バックエンドのエンジニアとして

さあそれで、実際にやってみて。今まさに負荷試験で苦労していると思いますが、どうですか。

いやぁ、大変です(笑)。すごい煮詰めている感じがします。フォンドボー以上、デミグラスソース以上に煮詰めているぐらいの感じ。まぁでも、煮詰めたら煮詰めただけ美味しいものが出来るはずなので。

-やりたかったことはやれた?

ああ、やりたいことはほぼほぼやれてますね。そもそもの、最初の転職の目的にも戻るんですけど、なるべくなら自社でサービスをやっているところがいいなっていうのがあったので。と思ったのが、なるべくこう、自分で1から100までのフローを経験したいって思ったんですよ。開発のフェイズが真ん中ぐらいで、その前段に設計フェイズが頭のほうにあって、運用フェイズが100以上のところにあって、って考えると、自分がやれていなかったフェイズって大体後半の、運用手前とかなんですよ。

これまでで言うと、モノを出して「はい終わり」だったり、最初の運用していた案件以外だと、納品して、バグ対応して、ハイ終わり、傍から見たらちゃんと動いてるねわーい、で終わりだったんです今まで。なんか、今まで自分が経験してこなかった部分のパズルのピースがここ半年で一気に埋まっていっている感じです。

-入ってもう2年ぐらいになるっけ?最初は運用しているプロジェクトの開発から入ったと思うんだけど、運用っていうところはどうだった?技術的には通用した?

来月で2年ですかね。うーん、もちろん自分がやれる範囲のことはやれていたと思います。でも周りの人のレベルがすごい高いですし、そもそも運用されているシステムのレベルも段違いで凄いので、そこに頑張ってついていく感じでした。

何かその案件で学びになったこととかはあった?

そうですね、一番学びでかかったのはやっぱり、超大規模のチームワーク開発かな。あらゆるレベルの人を巻き込んだチームワークの開発。

-20人だっけあのチーム

MAXでそれぐらいですね、新卒から超がつくベテランまで。今までそういうの無かったんですよ、会社の中で5人とかで、そんなに横の連携が多くなくて。(ILに)入ったら入ったで、なんかもう、いろんな人があらゆる、もう横串刺しぐらいの連携がされていて、すごい新鮮でした。
ああこうやってやっていくんだなっていうのが勉強になりましたね。開発手法も本だけだと机上の空論になっちゃうので、実体験作るのってすごい大事なんだなと思いました。

-シンプルに、まともにレビューする、とかってところなんかも新鮮なのかなって思うんだけどどう?

ああそれありますね、レビューもそうか。レビューっていう文化も無かったので。レビューが難しいんですよね、結局フロントエンドとかだと、コードはいいけどブラウザに出したら、とか。

うん、そうですね。レビューの文化と、どうレビューするのかなんかも学べてよかったですね、コツというか

ILの案件の期間が、年単位になる件について

今までwebでやってたら、案件の期間って長くて半年とか、大抵は1か月とか3か月スパンとかじゃない?

いやもうそれだけあったらいい方ですよ。2週間でやって、戻してプラス1週間、みたいなのが多かったかな。

-だよね、わかる。だけど、(ILは)年じゃん?

年ですね。年どころか終了日、ハイフンって書いてあって。

-長い案件だと10年やってるものがあるぐらいだから(笑)。この辺がwebとは違うかなと思うんだけど、どうでした?

いい面で言うと知見が散らばらなくていいなぁと。ずっと溜まっていくものが積み重なって良くなっていって、っていう循環ができるのでいいなあって思います、長く続けば続くほど。
短いと結局、作って終わり。昔なんか似たの作ったけどなんだっけ?っていう風に若干非効率になっちゃうんで、歴史と文化が積みあがるのが体験できるのはいいなぁと。

-一長一短はあると思うんだけど、ドメインの知識を深めながらコミットしていける、動きゃいいやっていう書き捨てみたいなのが基本的に無い、のは短いスパンでやっているところとウチみたいなところとで結構違うところかなぁと思うんだよね

そうですね、全然違いますね。
レビューとチームですごい良いなと思ったのが、そのチームの全員の考え方として、マージされたコードは全員の責任っていうのがあって、それすごい良いなと思っていて。例えばそれで何かあっても、全員呼び出せば全員が助けてくれるので、大人数なのに動きやすいチームだったなと思います。

愛用のキーボードは大昔に買ったメカニカル(青軸)、マウスはMX Master3

そういった開発を経て今は負荷試験をやっていると思うんだけど、負荷試験の魅力とは

伸びない数字を伸ばした時とヒマラヤ山脈みたいなグラフをつぶした時が一番楽しいですね(笑)。

-どんな仕事か外の人向けに簡単に説明してもらっても?

サービス開けただけだと当然のごとく、見覚えがある方も多いかと思うんですが、重くて繋がりません、みたいなのが山のようにあって。下手したら翌日からメンテナンス、みたいな事態になるので、そういうのを防ぐために、ある程度ユーザ数とかを見積もっておいて、耐えられるのか?っていうのを試験するっていうのが負荷試験の目的ですね。

負荷的な面での問題を発生させられたら、インフラ寄りのアプローチとしては、クラウドのマシンのスペックを変更します。インフラコストとのバランスを見ながら最適なところを探っていく形ですね。ただそれも最終手段に近いので、基本的にはもう一つの方法であるアプリケーションのチューニングをやっていく形になります。

なので、ロジックの調整だとか、SQLの調整、インデックスの調整、必要に応じてクエリキャッシュなどの調整をプログラマ陣にやってもらう、または自分でやる、という形ですね。

-技術的には実は前職以前に勉強したものが適用できている?

そうですね、中身的には。アプリの改善はそもそも、インデックスやクエリの改善は必須の技術でしたし、アプリのロジックの改善もメモリを食いつぶさないようにとか考えながら作っていたので必須でしたし。まぁインフラ側もそうですね、自分でやっていたりもしたので、全般的に今まで経験してきた技術は生きていると思います。

-高負荷チューニングっていうと特殊技能みたいなところあるんだけど、実は当たり前のことを当たり前にやるだけっていう。

そうですね。まぁでもさすがにあれですね、どこを調整したらいいかはわかるけど、どのパラメタが最適なのか、はわかっていないところがあったので、そこはすごい勉強になっています。

-周りからフォローしてもらいながらって形だね

そうですね、今までの知見をベースにしつつ、必要なところをフォローしてもらってという形です。

ベンチマーク好きには最高に楽しい?負荷試験で具体的にやってることについてもう少し掘り下げ

-ちなみに今負荷試験でクラウドは何台ぐらい回してるの?一時間にいくらぐらい?

えっと…xxxがxx台、それにアクセスするコンテナがxx台、DBがxx台…なんで…xxx台?
コンテナはそんなでもないはずです、xxxがいくらかな…。DBが高いですね。
なので、全部で一時間でxxxxx円ぐらいですかね。

(編注:機密保持契約の都合上、具体的な数字をお伝え出来ず残念です)

-なかなかですね!ベンチマーク好きだったら最高に楽しいのでは?

楽しいと思います。わからないんですよね、使ってみないと。
vCPU48/メモリ512GBのデータベースって言われても、何に使うんだこれ?ってなるんですけど、自分で叩くと あっこれ全然足りないな??ってなる(笑)
負荷試験でテストデータ作っただけでもデータ量が全然違ってて。

-そういう意味ではDBの真髄にようやく触れた、みたいな

そうですね、はぁ、なるほどなぁ、みたいな(笑)
なんか、100レコードぐらいでわちゃわちゃしてたのが懐かしいです。

-データベースの一貫性が超大事、とかよくわかるよね

そうですね、大変だなってw
まぁでも楽しんでやらせていただいています(笑)

-実際クラウド力は変わった?

全然上がりましたね。実戦環境に置かれたのが大きいですね、やっぱり。個人とか小規模で触ってると使い方がパッとしないのとかもいろいろあったので。ああこういう風に使ってるんだなー、こういう設定なんだなーってのが学べたので、すごい上がりました。

-今だとスマホゲーのバックエンドの解像度がだいぶ上がった?

そうですね、上がりましたね。触ったことない技術がどんどん出てくるので、こういう技術を使ってこういう通信が流行ってんだなーってのが、ぼーっと学べて、学びが常にある環境なので。がんばって追いついていきます。

改めて、今までの業務系やwebとウチとで同じところと違うところってどんなところ?

同じところはさっき出ていた通りで、基礎の必要とされる知識は何も変わっていないですね。DBのインデックス、そもそものクエリの書き方、いい感じのコードを書く力、とかそうですね、まぁ本当に基礎知識なんでLinuxのコマンド、、、あとDockerとかモダンな技術周りについての知識はどこにいても必要だしそれは変わらない。Linuxとかは必須レベルなので。

違うのはそうですね、なんだろう。関われるフェイズの広さは全然違います。納品して終わりじゃなくてその先もあるし、その前もあるし。規模感も全然違うし、関わるチームメンバーのロールの広さも全然桁違いですね。開発の人もいればサポートの人もいるし、マネージャレベルの人もいれば、リーダーも関わってくるし。そういうところが全然違うなあと感じています。

-ちなみに今まではどこのポジションでやってきていたの?

なんだろう…開発メンバー?

-お客さんとの折衝はやってこなかった?小さい会社だと全部ひとりでやってたりするかなと思うんだけど

ありますよ。なんか気付いたら自分が開発の中で一番上に立っていて、その上にリーダーとかはいましたけど。気付いたら仕様の打ち合わせしているなぁ、とか。

-ここに来るまでも要件定義ぐらいから納品まではやっていたのかな

そうですね

-それより前の営業フェイズとかはやっていない感じ?

ちょっとだけありましたけど。飛び込んで、とかは無かったですね。

-ILではどう?

お客さんと直接会話する機会はさすがに減りました。けど、お客さんの出てくるロールが全然変わりました。今までで言うと、自分がお客さんと話すってなると、企画の人とか、先方のリーダー的な人とか、なんか上の役割の人が多かったんですよね。小さい会社になればそれはなおさらで、何なら社長とか副社長みたいな人が出てきて、「毎度お世話になっています」みたいなメールを送ったりだとか、納品書をメールで送ったりしていたんですけど。

ILに入ると、開発者みたいな人と話す機会が多くなったんですよね。企画の人とかもいますが。先方はクライアント側で自分はサーバ側なので立場は違うんですが、そういう感じで、出てくるお客さんのロールが全然変わった感じですね。

-一つのプロジェクトで長くやっていく、という感じだもんね。書類仕事とかはやってないよね?

そうですね。いわゆる営業的な動き、であるとか、書類関係、請求業務、みたいなものは全く無いですね。

-この辺はどっちがいいとかある?

今だとラリーの回数が少ないんですよね。仕様が来て「これこんなじゃないですか」「あ、なるほどね」ってなるんですけど。webだと「こうしてください」と言われて、揉んで、なるべくわかりやすく、お客さんに伝わるように考慮して投げて、返ってきて、「こうこうで難しいです」と答えたりして、了解をもらったりして。時間と労力が果てしなかったんですよね、コミュニケーションコストがとにかく高かったです。

-同じ言葉が使えるっていうのはあるよね

そうですね、それはありますね。

-もちろんその代わり、いろんなロールの人と話が出来るってのが小さいところのメリットとしてはあって、どっちがいいと単純には言い切れないところはあるよね

前にロールが違う人との会話を経験したから、今の会話できる、会話しやすさの有難さ、やりやすさがあるのかなと思います。

-まぁILもセクションによってはお客さんとコミュニケーションが必要なところもあるしね。
モニター上のぬいぐるみと、スヌーピーのマグカップがお気に入りです

ILでのお客さんや同僚とのコミュニケーションについて

-ILで無理難題とかあった?

ないですね。何か振られても裁量が比較的あるので、これぐらいですねーって自分で調整して、というのが全然できるので、タスク量に関しては。なので、これ無茶だなぁ、みたいなのは全然ないです。

-まともに筋通せばちゃんと通るよね

そうですね、ちゃんと理由付けができていれば通るものばっかり。急に発生したりしたのとかはしょうがないので片付けたりしますけど。普段の業務に関してはないですね。この期間のフレキシブルさっていうのは、プロジェクトが長いからだと思います。次のバージョンに間に合わせたいとかは当然あるので、そういったことを考慮してスケジューリングできます。

web系だと、再来週出したいんでお願いします、って言われたらそれで終わりなんです。それまでに出せるか出せないかで受注できるかできないかが決まるので。

-現場的に無理な受注、みたいなのは無いよね

そうですね。「これは自分が何とかするしかないのか…」みたいなのは無いですね。

-それはないよね、ウチ。これ書いて大丈夫かな?

やめましょう、良くないです(笑)

-同僚関係は?

あー。最高じゃないですか?
なんか、インターネットに毒された人が多くて、波長が合う人が多いんでいいなーと思います。

-ラク?

楽ですね。あんまり気負わなくていいというか。しょうもない話するとすぐレスが返ってくるので。この人休みなんだけどなぁ、どうしてチャットに居るんだ、ヒマなんやろな?みたいなのまである。

-これだけ書くとほんとにダメな会社みたいだな。いやだけどね、まじめにやるときは真面目にやるしね

うん。スイッチの切り替えをちゃんとできる人が多くて。メリハリ、バランスですね。

転職を考えている人にメッセージがあれば

技術力だとどこにも負けないと思ってます。なので、技術力に自信がある人はぜひ飛び込んできてもらえるといいんじゃないかなと思います、というのと、そう言うと、技術力が無い人は「えー」と思っちゃうと思うんですけど、全然そういうことも無くて。

いい人たちばかりですし、ゼロから育てる環境も整ってきているので。あまり怖がらず飛び込んできてもらえると。僕も技術経験者とはいえゲーム自体は未経験で大規模も未経験の状態からいろいろやらせてもらっているので。興味あるひとは問答無用で来てもらえるといいんじゃないかなと思います。

一日の仕事の流れ例

09:55出社
10:10作業
作業の合間にコードレビュー
13:00ランチ
14:00作業 再びブラウザやエディタとにらめっこ
合間に休憩 出社してれば社内の人と他愛もない話をする
16:00プロジェクトの定例に参加 お客さまと報告連絡相談
16:30チーム内夕会 連絡事項の確認
19:00その日の振り返りや明日の作業確認
19:15退社

お気に入りポイント

お菓子置き場
集中すると小腹が空くことが多く、外に買いに行かずに済むのでとても助かります。うまい棒は無料、それ以外は驚安です。
光のページェント
会場が事務所から見られるので、ある意味特等席です。試験点灯とかも見られますし、イベント中は外に出ればすぐ色んな光景が見られます。