INTERVIEWエンジニアが使うサービスを開発するエンジニア


技術基盤チーム エンジニア
坂尾 拓優
九州大学卒業。2016年株式会社アカツキへ新卒入社し、複数ゲームの新規開発・運用に携わる。近年は技術基盤チームに所属し、全プロジェクトに向けたサービスやライブラリの開発や、新卒エンジニア採用企画を手がけている。
九州大学卒業。2016年株式会社アカツキへ新卒入社し、複数ゲームの新規開発・運用に携わる。近年は技術基盤チームに所属し、全プロジェクトに向けたサービスやライブラリの開発や、新卒エンジニア採用企画を手がけている。
アカツキ応援団 エンジニアリング・アドバイザー
能登 信晴
ソフトウェア・エンジニアリングと人事・組織デザインの境界領域を専門とし、2012 年よりアカツキのエンジニアリングをサポートしている。
ソフトウェア・エンジニアリングと人事・組織デザインの境界領域を専門とし、2012 年よりアカツキのエンジニアリングをサポートしている。

「ゲーム開発」と聞くと、ユーザー向けのプロダクト開発が想像されやすいですが、その裏で各プロダクトの技術を支えるチームが存在しています。そのチームの仕事を、アカツキの応援団鼓手長兼エンジニアリング・アドバイザーである能登 信晴さんによるインタビューでお届けします。

「優秀なエンジニアは面倒くさがりである」楽をするために努力する

新卒2期生として、インターン時代からアカツキで活躍してきた坂尾さん。僕も研修や組織周りで関わることが多かったですね。ゲームの事業部にいながらも、少し特殊な立ち位置にいる、坂尾さんの仕事を紹介させてください。
今どんなチームでどんな仕事をしていますか。
社内の各プロダクトで使われるサービスやライブラリを開発しています。今は課金基盤サービスをマイクロサービスとして開発しています。これは、Apple の App StoreやGoogle Playなどの各プラットフォームのレシートを検証して、ゲーム内の仮想通貨を管理するサービスです。
クライアント側では、デバイス情報を取得するようなUnityライブラリや、アセットを管理するライブラリなど、複数のライブラリが既に存在しているのですが、サーバサイド側だと今回の課金基盤サービスが初めてでした。
技術基盤チームが開発する領域ってどういうものですか?
認証やアセット管理、お知らせなど、ゲーム開発に必ず必要なものを中心に開発しています。今まで開発してきたプロダクトで共通化できそうなところを一覧化して、それぞれについて、切り出し可能な度合いを「サービス」、「ライブラリ」、「ガイドライン」の 3 段階でレベル分けして、優先順位の高いものから取り掛かっています。
おお、なんだかすっきりと整理されていて、アカツキらしいですね(笑)
はい、CTOの田中さんを中心にがんばっています。
課金基盤サービスは、技術的にはGoogle App Engine (GAE) と Go 言語を使って開発しているんですよね。GAE の選定理由を紹介してもらえますか。
課金基盤サービスは複数のゲームから使用される想定でしたので、無停止でサービスを提供できることが必要でした。また、ゲームの急増減するトラフィックに対しても対応できるように柔軟にスケールさせる必要がありました。
GAEではGoogleが推奨しているアーキテクチャでアプリケーションを開発すれば、簡単にスケールします。今実際に運用してみているのですが、とても安定していて手がかからないです。良い意味で暇になる。
Googleが運用のことをちゃんと考えているなと感じていますね。例えばトラフィックスプリットというGAEの機能がありまして、複数のバージョンにトラフィックを分ける、ということができるのですが、これによって新しいバージョンをデプロイしたときに少ないトラフィックで試すことができたりします。
また、他の製品だとオートスケールの設定を細かくつくりこまなければならないところを、GAEなら完全にGoogle任せにできるというのも特徴的です。インスタンスがどれぐらい必要なのかなど、ほとんど気にせずに運用できます。
途中で言ってくれた「良い意味で暇になる」がキーワードなのかもしれないですね。「優秀なエンジニアは面倒くさがりである」ということは、CTOの田中さんもよく話していますしね。
そうですね。ただ、GAEでも微妙な設計をすると不具合が起きてしまうことはあるようなので、楽をするためにちゃんと設計をすることは必要だと思います。
Goの気に入っているところはありますか?
Goはシンプルなところが良いです。Elixirとか関数型言語文脈の言語は、モダンでかっこいいコードが書けるので面白いのですが、そうすると僕は「クールなロジックを書きたい」にモチベーションが働いてしまいがちで(笑)。Goは言語仕様がシンプル
なので、愚直に書けるからこそ、本当に解決したい「コト」に向かえている気がします。
また、シンプルなメリットがもう1つあります。今、静的解析にチャレンジしているのですが、すごく解析しやすい。簡単に静的解析のツールを開発することができる仕組みが公式で用意されていて、安全なコードを書くことができるツールを自分で作れるというのも気に入っています。

あと、標準ライブラリでやりたいと思ったことがほぼできるのも素晴らしいです。どうやったら標準ライブラリのみで解決できるのかを考えるのも楽しいですね。先日、レイトレーサーをプログラミングしたのですが、それも全部標準ライブラリでできちゃいましたね。

RubyやPerlはGemやモジュールがあり、組み合わせていろいろなことができるのが良いよね、と言われていたのに、それの対極にいるような感じですね。
そうですね。Ruby on Railsは生産性が高い代わりに、ブラックボックス化や複雑化が進んでしまって、把握に時間がかかってしまうなと感じています。それに比べてGoは、プロダクトにとって必要なコードだけで動かすことができるというのは、問題を自分の手で扱ってるんだという感覚で気持ちいいですし、とても勉強になります。ライブラリの中身を読み込むよりは、「自分で作ってしまえ」っていう感じですね。
予め用意されたたくさんの機能から不要なものを削っていくというやり方が好きな人もいると思いますし、ボトムアップで必要なものだけ開発していくのが好きな人もいる。Goは後者の人に向いている言語だと思います。
Rails、Gemが活用できて便利で良いと活用してきたアカツキが、並行して、今それと対極にあたる「手のひらでイチから作る」Go言語を両方扱っているのが面白いですね。
坂尾さんは、技術基盤チームの前はゲームの開発現場でRuby on Railsを扱っていて、今はGoなわけですが、どちらのほうが好きとかありますか?
今はGo ですね。また、型のある言語が好きになりました。コンパイラが叱ってくれて間違いに気づくことも多々ありますし、構造体のフィールドやメソッドをエディタで補完できるのが良いと思っています。
あと、Railsは非常に便利なのですが暗黙的な了解が多くて、覚えることが多いので難しいなと思っています。

エンジニア向けのサービスだからこそ、プレッシャーも感じる

ゲームの開発チームから技術基盤チームに異動になって、顧客がユーザーから社内のエンジニアに変わったと思います。そこで変化したことってありますか?
より責任感や慎重さが増したと思います。もし自分の開発したサービスが落ちたら、全部のプロダクトが落ちることになりますので、1タイトルを扱っていたときからはプレッシャーが違いますね。
また、互換性も強く考えるようになりました。1タイトルのゲーム開発のときは、クライアントのエンジニアとやりとりすればいくらでもインターフェースを変更してよかったのですが、今は複数のプロダクトに影響が出るため、インターフェースを変えずに運用していくにはどうすればいいかを考えないといけなくなりました。
また全エンジニアが触るものになるので、より深くAPIの設計を考えるようになりました。
エンジニア向けのライブラリや開発ツールって、自分がユーザーにかなり近い立場なので、開発もしやすいのかなと思っていたのですが、思ったより楽じゃなさそうですね。
そうですね。楽しい側面もあるのですが、同じエンジニアから見られるものなので、「かっこよく作らなくちゃな」というプレッシャーが大きいです(笑)
変なものつくると、強いエンジニアにすぐつっこまれますしね(笑)

「自分だったら」という自然な感覚で、会社や仕組みに関わる

坂尾さんはインターン時代から戦力になっているぐらい技術的に尖っているイメージなのに、一方で、組織運営や採用、育成の方にも興味や視点があるのが不思議だなあと感じています。普段どんなことを考えているのですか?
難しいですね(笑)組織のことは僕より得意な人がいるかなとは思っているのですが、みんなあんまりやりたがらないので、じゃあやるぞというのが強いですかね。嫌いではないですし。新卒採用に関しては、後輩ができたりするのは純粋に嬉しいです。面倒見たり、一緒に開発したりするのは楽しいですしね。あと、学生さんたちと話すのも刺激的で楽しいです。
僕はアカツキの採用や組織に関わっていて、坂尾さんの「自分が学生/エンジニアとして、こういうのが好き、面白い」という自然な考えや価値観が、採用や企画に反映されているように感じていますが、どうですか?
それはそのとおりですね。新しいインターンやイベントの企画・提案を考えるときも、僕をペルソナにして、「僕だったらどういう会社に行きたいか」というのを判断軸にしています。人事だけだとエンジニア的な観点や感覚がどうしても不足してしまうので、エンジニアが協力すべきだと考えています。僕が「アカツキにあると自然だな」と思うことを作ったり盛り込んだりしていますし、そういう感覚を大事にしていますね。
「よしやるぞ!」という意気込んだ感じでもなく、必要なことに対して自然に関わっているという感じですね。
そうです。それでみんな喜んでくれるので、やりがいもありますよね。
アカツキのエンジニア組織をどんなものにしていきたいですか。
個人的にはそこそこ良い感じになってきたと思いますが、もっと良くできると思います。
個人的にこうだったらいいなと思っているのは、ギークハウスのような状態。いろんな技術を持ったエンジニアが、作っているものを見せ合ったりそれにフィードバックしたり、それで刺激を受けてまたものづくりが生まれたりする。面白い人達が集まっているので、その面白さがさらに発露されるといいですね。個々人の長所や個性を社内や社外に出してほしいと思っています。
理想があるからこそ、課題が見えている。そういう課題に対して、領域を区切らないで、自分が必要だと思うところに関わっていく。これもまた自然な形の関わりですね。
はい。それが私が社員である理由かもしれないですね。技術だけでいいならフリーランスという道もありますが、そういうところに目を向けられるのも社員の面白みだろうなと思っています。
そういうところも、アカツキをファーストキャリアとして選んだ理由になりますか?
そうですね。成長できそうな環境に身を置きたかったので。
最近はいろんな方面に関わることができているので、さらに楽しいなと感じています。
幅広い視点をもって幅広い領域に関われるからこそ、社員として居続けるし楽しいと感じている。
そうですね。もちろん複合的な要因があるとは思うのですが。
1つ気に入っているのが、いろんな変化があって面白いなということですね。子会社や投資ファンドの設立、esportsへの参入、ハリウッドの拠点立ち上げなど、予想の斜め上のことをやってくれるので、面白いなと思います。
後々はゲームじゃなくてそちらもやりたいなということはありますか?
僕はもともとゲームだけにこだわっていたわけではないですし、いろんな事業ドメインのエンジニアリングをやってみたいなという思いはあるので、機会があれば挑戦してみたいと思っています。とはいえ、今はゲームが技術的に盛り上がっているところもあるので、満足しているところもありますね。
どんな後輩が入ってきてくれたら嬉しいですか。
技術に対して真摯であってほしいですね。アプリケーションが動いたらそれでOK、ではなく、よりひとつ下のレイヤーに目を向けながら、自分を伸ばしていける人。原理に興味を持って、より深くもぐっていけるような人がいいですね。
あとは、後輩だからといっていわゆる上下のような関係ではないので、友達みたいに刺激しあえる、尊敬しあえる関係が築ける人と、一緒に働きたいですね。

RECRUITMENT JOBS

  • PRODUCER

    創造力と情熱をもち、
    最高のものづくりにチームで挑む
    説明選考会
    イベント_Akatsuki Career talk
    internship info インターンシップ一覧
  • ENGINEER

    仲間と共に、技術の力で想いを形にする
    info 高専生の方へ
    *エントリーは下記インターンシップ/2021年以降入社からとなります。
    *2020年入社の応募は締め切りました。
  • DESIGNER

    デザインの価値観を変えるクリエイティブ集団
    event info
    internship info インターンシップ一覧
    *2020年入社の応募は締め切りました。
  • GAME PLANNER

    世界を魅了するゲームを創る
    event info
    internship info インターンシップ一覧