コロプラ・ベアーズ 面白いものを作りたい仲間が集まるベアーズ

コロプラのエンジニアブログ Vol.1【ビルドエンジニアとは】
TEAM

コロプラのエンジニアブログ Vol.1【ビルドエンジニアとは】

松浦 章人

2015年、ゲームプログラマーとして中途入社。スマホゲームの運用に携わった後、全社的な開発環境の改善に取り組む。現在はビルドエンジニアとして、主にビルド環境の改善を行う。

ビルドエンジニアをしています、松浦と申します。ゲームプログラマーからビルドエンジニアにジョブチェンジして約3年。クイズRPG 魔法使いと黒猫のウィズ』や『白猫プロジェクト』を始め、 多くのプロジェクト(=ゲームタイトル)に携わってきました。

この「エンジニアブログ」は、コロプラ社内のエンジニアがリレー形式で登場し、ゲーム業界に限らず、エンジニアが知りたい情報をシェアしていく予定です。というわけで、初回は「コロプラにおけるビルドエンジニアの仕事」についてお話しさせていただこうと思います。

【コロプラのビルドエンジニアの仕事】

まずは、コロプラのビルドエンジニアの仕事を大きく3つのポイントに分けて、それぞれ見ていきましょう!

1 一番重要な仕事とは!?

『安定していて使いやすいビルド環境を提供すること』
これに尽きます!
コロプラのビルドエンジニアは、複数のプロジェクトのビルド環境を見ているため、どのプロジェクトでも手軽に使用できるビルド環境を開発しています。

ここでは安定していて使いやすいビルド環境を作るために不可欠なツールとビルドパイプラインの構築について、簡単にご紹介します。

Jenkinsの管理

コロプラでは、インテグレーションツールのJenkinsを使用しています。ビルド環境を安定させるためには、Jenkinsの管理は不可欠です。停止しないようにするのはもちろん、適切な権限設定や、異常な動作をしているジョブがないか監視することも重要なポイントです!
te_20191220_enginner_blog_nakagazou_1.jpg
もちろん、セキュリティにも気をつける必要があることは、言うまでもありません。Jenkinsのマスターやノードを安全に使用するために、脆弱性に対応しやすい環境を作ります。野良Jenkinsだと放置されがちなところですが、規模が大きくなるにつれて非常に重要となってきます。

ビルドパイプラインの構築

使いやすい環境を作るには、ビルドパイプラインの構築は欠かせません。まずは、バイナリ作成をするだけの簡単なビルドパイプラインを見ていきましょう。コロプラのモバイルゲームは主にUnityで作られているので、アプリをビルドするときは、Unityビルド → Nativeビルドとフローが決まっています。

簡単に描くと、次の図のようになります。
te_20191220_enginner_blog_nakagazou_2.jpg
これを自動化するだけでもビルドはできますが、使いやすいとは言えませんね。
では、どのような機能があると、使いやすくなると思いますか?

例えば次のような機能があると、どうでしょう。
◆ Debug/Releaseの切り替え機能
◆ 社内配布サーバへのバイナリのアップロード
◆ ビルド完了時の通知機能
など......これらの機能があると、使いやすくなってきたと思いませんか?
te_20191220_enginner_blog_nakagazou_3.jpg
この他にも、ゲーム開発が楽になる機能を複数入れて、ライブラリとしてプロジェクトに提供しています。開発にはプロジェクトチーム以外にも、インフラチーム基盤開発チームなど複数のチームが携わっているので、みんなが使いやすいビルドパイプラインを構築することが、ビルドエンジニアとして重要な仕事になります。

2 腕の見せ所は!?

全てのプロジェクトで動作する夢のようなビルドパイプラインがあるとうれしいですよね?
残念ながら、それは夢です。開発時期が違えば、作り方も違います。Unityのバージョンを揃えても、同じビルドパイプラインが使えるとは限りません。
それでも、Unityを使っているのであれば、共通化できることはあります!
ビルドパラメータの設定やコマンドラインオプションなど、共通化できるところは共通化し、プロジェクト独自の処理のみに注力できるように作ります。使いやすくなるかどうかは、ビルドエンジニアの腕次第です!

また、プロジェクトの運用とは別で、ビルド環境が必要となるときがあります。
例えば、『Unite Tokyo 2019』でも発表させていただいたUnity4からUnity2018.2へののアップデート対応の時は、運用で使用しているビルド環境は使用できず、アップデート専用の環境が必要でした。

長きにわたって運用しているようなゲームの場合、いわゆるレガシーな環境を使わざるを得ないということもあります。その場合は、なるべく使いやすくてなるべく工数が減らせるような環境にするため、あの手この手でより良い環境を作ります。
ちなみに専用のビルド環境が必要となる時は、非常に時間のかかる処理を行ったり、独特な処理をすることが多いです。急な対応であっても良い環境を提供するのは、ビルドエンジニア腕の見せ所です!
te_20191220_enginner_blog_nakagazou_4.png

3 このポジションだからこそ見えることとは!?

ビルドエンジニアは、ビルドパイプラインの構築だけやればいいでしょうか?
もちろん違います。
効率のいいビルドを行うためには、Jenkinsでの管理以外にもできることはあります。例えば、Jenkinsで使うツールに詳しくなると、開発現場で使えることもあります! 手動で行うとヒューマンエラーが起こることもありますが、少しの手間で効果が出るものなら、開発でもきっと役に立ちます。

また、複数のプロジェクトに携わっているので、良い機能はどんどん横展開していくことができます!
全てのプロジェクトで使える機能を取り込むはもちろんですが、プロジェクト間の橋渡しをして、開発環境を良くするお手伝いをすることもできます。

今あるシステムを変えるのは簡単ではありませんが、開発から動作確認までの間に繰り返し行われる作業を速くすることで、ユーザーさまにより良いゲームを届けることができるようになっていきます。
横断チームにいるからこそ見えることもあるので、プロジェクトに所属しているとわからなくなってしまうようなことを客観的に伝えるのも、大切な仕事と言えます!
te_20191220_enginner_blog_nakagazou_5.png

楽しいビルドエンジニアのお仕事

ビルドエンジニアとして仕事が面白いと感じるのは、やはりビルド環境が改善し、良い結果が出たときです。
ビルドエンジニアにとってのユーザーは、会社の同僚がメインです。「手作業でやっていたことが自動化されて、仕事がやりやすくなりました!」とか「待ち時間が短くなって、快適になりました!」などの言葉が聞けると、頑張ってよかったと思います。

また、コロプラのビルドエンジニアは現状の技術にこだわることはなく、新しい技術もどんどん試して、会社にとって良いと判断したものは積極的に取り入れていきます。
エンジニアとしては、いろいろな環境を試せるというのはワクワクしますね! みんなに喜ばれながらいろんな技術を試せるって、良い環境だと思いませんか?

まとめ

いかがでしたでしょうか。
コロプラのビルドエンジニアは多くのプロジェクトに携わることができ、より良いゲーム開発環境を作っています。
ビルドエンジニアは、まだまだマイナーな職種で、いない会社も多いと思います。それでも、専任だからこそできることも多く、縁の下の力持ちとして誇りの持てる仕事です。
今回は概要をお伝えするまでになりましたが、少しでもビルドエンジニアに興味を持っていただけたらありがたいです。