なぜゲーム業界はJenkinsを選ぶのか?その理由と利点
こんにちは ゲームソリューション部の出村です。
みなさんはソフトウェア開発においてCI/CDツールは何を利用していますでしょうか?
これまでゲーム開発の現場を見てきましたが、ゲーム開発においてよく使われるCI/CDツールはやはりJenkinsです。このJenkins、一昔前ではWeb開発をはじめとしてさまざまなソフトウェア開発でよく利用されていました。ただ、ここ最近はGitHub Actionsなど他のツールに置き換えられているという印象があります。
しかし、ことゲーム開発においてはGitHub Actionsといった他のCI/CDツールではなく、Jenkinsが利用されている場面が圧倒的に多いです。これは、他のCI/CDツールを利用したくないという消極的な理由ではなく、Jenkinsを利用する明確な理由があるためだと考えています。
ゲーム業界はJenkinsが活用される理由
ここでは、ゲーム業界で未だにJenkinsがよく利用されている理由について解説してみます。ゲーム業界でJenkinsが利用されている理由としては以下の3つが挙げられます
- 高いカスタマイズ性と拡張性
- 広範なプラットフォームサポート
- 大規模プロジェクトへの対応
ではこれらの理由についてそれぞれ見ていきましょう。
高いカスタマイズ性と拡張性
Jenkinsはオープンソースであり、数千種類以上のプラグインが利用可能です。このため、ゲーム開発の複雑なニーズ、ワークフローに対して柔軟に対応することができます。例えば、特定のビルドツールやテストフレームワークと連携したり、自動化スクリプトを作成したりすることで、ビルドプロセスやデプロイフローを細かくカスタマイズできます。
ゲーム開発の場合、さまざまな企業が自分たちで開発用のソフトウェアを開発して利用する場面はよくあります。そういった意味では、100社あれば100通りのワークフローが存在していると考えてもよいでしょう。そのような多数のソフトウェアに対応したビルド環境を用意しようとすると、やはり柔軟性が高いJenkinsを選ぶことになるでしょう。
広範なプラットフォームサポート
ゲーム開発はPC、コンソール、モバイルなど、さまざまなプラットフォームへの対応が必要です。Jenkinsはこれらの多様なプラットフォームをサポートしており、Windows、macOS、Linuxといった主要なオペレーティングシステム上で動作します。
たとえばスマートフォン向けアプリを開発している現場であれば、Unityを利用している企業が多いことでしょう。そしてその企業では、iOSとAndroid、場合によってはWebGLに対応した実行ファイルをビルドする必要があります。
知っている方も多いでしょうが、iOS向けの実行ファイルはMacでビルドする必要があります。そして、AndroidやWebGL向けの実行ファイルは、WindowsでもMacでもビルドできます。それらを統合して考えると、Mac上にUnityをインストールし、iOS、Android、WebGLの実行ファイルをビルドするJenkins環境を構築するのが一番効率的といえるでしょう。
このような対応はJenkinsだと割と簡単に構築できますが、ほかのCI/CDツールだとUnityに対応していないため利用しづらいなど、さまざまな課題があるため、結局のところJenkinsを利用するのがもっとも楽に構築できる、という判断になることがあります。
大規模プロジェクトへの対応
ゲーム開発プロジェクトは大規模なプロジェクトも多く、複雑なビルドプロセスや大量のアセットを扱います。Jenkinsは並列ビルドや分散ビルドをサポートしており、大規模プロジェクトでも効率的にビルド作業を行うことが可能です。複数のビルドノードを利用することで、ビルド時間を短縮し、迅速なフィードバックを得ることができます。
ゲーム開発においては、実行ファイルを作成するだけでなく、アセット(ゲームで利用される画像や音声などの各種データ)もビルドを行います。アセットのビルドを行うことで、WindowsやPlayStationなどさまざまなハードウェアに対応したデータが生成されます。このような理由もあり、頻繁にビルドが行われています。
また、ビルドパイプラインを柔軟に設計できるため、開発チームは各ステージで適切なテストやデプロイを実行し、品質が確保できます。これは最初の項目である「高いカスタマイズ性と拡張性」にも通じる話ですが、そのような柔軟性があるおかげで大規模プロジェクトでもJenkinsが使いやすいという場面があります。
まとめ
これらの理由から、ゲーム業界では依然としてJenkinsが広く利用されています。特に、大規模で複雑なプロジェクトにおいて、そのカスタマイズ性、プラットフォームサポート、スケーラビリティが重要な要素となっています。今後もJenkinsはゲーム開発における主要なCI/CDツールとして活躍し続けることでしょう。