btn_arrowcmn-facebookcmn-tiktokcmn-twittercmn-xcmn-youtubecorroborationengineerEngineerhamburgericon-angleicon-arrow-bottom-lineicon-arrow-diagonal-01icon-arrow-diagonal-02icon-arrow-next-01icon-arrow-next-02icon-arrow-strokeicon-arrowicon-close-btnicon-externalicon-facebookicon-fukidashi-01icon-fukidashi-02icon-fukidashi-03icon-fukidashi-04icon-fukidashi-05icon-fukidashi-06icon-fukidashi-07icon-fukidashi-08icon-fukidashi-09icon-fukidashi-10icon-fukidashi-11icon-fukidashi-12icon-fukidashi-13icon-fukidashi-14icon-fukidashi-15icon-fukidashi-16icon-fukidashi-17icon-fukidashi-18icon-fukidashi-19icon-hatebuicon-instagramicon-is-index-illust-01icon-is-index-illust-02icon-is-index-illust-03icon-lineicon-linked_inicon-pinteresticon-rank-dash-offseticon-rank-frameicon-rank-no-frameicon-rank-trophy-item-01icon-rank-trophy-item-02icon-rank-trophy-staricon-triangle-01icon-triangle-02icon-twittericon-xicon-youtubeis-bg-book-01is-bg-book-02is-bg-book-03is-bg-book-04is-bg-book-05is-bg-book-06is-bg-boxis-bg-cupis-bg-desktopis-bg-flagis-bg-glassis-bg-hatenais-bg-human-01is-bg-human-02is-bg-human-03is-bg-human-04is-bg-pcis-bg-plusis-bg-smartphoneis-feature-01-lineis-font-daiis-font-gokuis-font-jiis-font-senis-footer-illust-01is-footer-illust-02is-nav-arrowis-prologue-boxlicense-foreignlicenselogo-gree

【TECH BLOG #20】運用改善の取り組み紹介

はじめに

ファンプレックス株式会社 エンジニア のYTです。
弊社ではゲーム運営業務の一環として運用フローの改善を行っており、その内容も運営タイトルによって様々です。
担当タイトルの最近の取り組みとして、JenkinsからGitのマージ状況やアセットバンドルのビルド時間をSlackへ通知するチェックツールを作りました。
折角の機会ですので、ゲーム運営の仕事の一例としてご紹介したいと思います。

背景

チェックツールを作成することになった背景を説明します。
担当タイトルの施策最終チェックの際に、前回の施策リリースで追加したはずの画像が表示されないという問題が発生しました。原因は前回の施策リリース時点で追加された画像がマージされた後に、Unityのアセットバンドルビルドが行われていないためでした。運用フロー上は、施策リリース後にマージを行い、アセットバンドルビルドを行う事となっているにも関わらずです。

問題が起きた場合、ファンプレックスでは再発防止のためQAや運用フローの見直しを行います。
見直しの結果、前回の施策で確認した内容はQA工数の観点からQAには含まれておらず、現在の運用フローでは検知が難しい事が分かりました。そのため、QA工数を増やさずに検知可能な仕組みとしてチェックツールを作成する事にしました。

要件

今回開発したチェックツールの狙いは2点あります。

1つ目は、クライアント、サーバー、アセットといった各種リポジトリが適切にマージされている事を誰でも確認できることです。


図1 Gitのマージ状況通知

運営タイトルで使用しているGitリポジトリが複数存在する関係上、マージ状況を把握するのに複数のリポジトリを確認する必要があり、手間となっていました。また、施策を担当しているプランナーは、常に最新の状態で施策確認を行わなければなりません。
しかし、プランナー全員がGitに詳しい訳ではないため、都度エンジニアにマージ状況を確認する必要があります。そのため、一目見て全体のマージ状況が分かるようになれば、確認する手間やコミュニケーションコストを減らすことができると考えました。

2つ目は、再発防止の観点からマージされた後にアセットバンドルビルドが行われている事を確認できる事です。


図2 アセットバンドルのビルド時間通知

Gitのコミットログを見ればビルドが行われたのかを確認することは可能ですが、第三者の視点からは状況が不明瞭です。そのため、Slack上に証跡を残す運用フローに変更し、検知できるようにします。

Gitのマージ状況を通知する

担当タイトルでは、QAブランチという名のブランチで施策準備を行っています。
QAブランチの役割は下記の通りです。

QAブランチ
・ 統合ブランチから派生した施策用のブランチ
・リリース時の施策に必要なマスタ変更や機能が入っている
・名前の通りQAをこのブランチで行う
・リリース後、統合ブランチにマージされる

QAブランチは、ブランチ名にqa/21700といったリリースバージョンが割り当てられています。マイナーバージョンとして、21700_10など末尾に番号が付く事もあります。

肝心のマージ状況のチェック内容としては、各々のブランチに対して下記をチェックします。
・前回リリースの施策がマージされている事 (例: qa/21700からqa/21700_10にマージされている)

チェックツールの中身はシェルスクリプトとして記述し、Jenkinsジョブとして動かしています。
Jenkinsジョブにしている理由は以下3点です。
・cronのように定期実行が可能
・任意のタイミングでも実行可能
・権限さえあればエンジニア以外でも使用可能

チェックツールが実行されると、図1のようにSlackにマージ状況が通知されます。

アセットバンドルのビルド時間を通知する

アセットバンドルのビルド時間チェックもSlackに通知されるチェックツールです。
マージ状況チェックと同様に、Jenkinsジョブとして作成しています。

担当タイトルでは、アセットバンドルビルドはJenkinsのジョブを通じて実行でき、ビルド後の成果物はそのままアセット用リポジトリにコミットされる仕組みになっています。
そのため、マージ時点の時間とアセットバンドルビルド成果物がコミットされた時間を比較する事でチェックが可能です。どちらもgit logで得られる情報に含まれているため、git logの結果をawkで加工して時間を抽出しています。

チェックツールが実行されると、図2のようにSlackにマージ時間とビルド実行時の時間を教えてくれます。

結果

チェックツールを導入して以降、効率的にマージ状況やアセットバンドルのビルド状況を把握できるようになりました。

Slackに通知する事で見落としやすかった部分をしっかりと可視化できるようになったため、より安心して施策リリースを迎える事ができています。

最後に

ゲーム運営の仕事の一例として、チェックツールの開発をご紹介をさせていただきました。

運営の仕事をしていると少なからず不具合が発生しますが、些細な不具合であれユーザーやクライアントの信頼を失いかねません。

そのため、不具合を起こさない仕組み作りとして、人力に頼らなくて良いことは自動化する、自動化が難しい場合はチェックできる仕組みを作る事が大切だと思います。

※2021年7月1日よりファンプレックスはグリーエンターテインメントへ商号変更いたしました。
※2021年6月30日以前の記事においてファンプレックスという表記がある場合がございますが、ご了承ください。

information

グリーエンターテインメント株式会社 広報担当

東京都港区六本木6-10-1 六本木ヒルズ森タワー

E-mail:info-ent@ml.gree.net