GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

2024/09 サービス開発部業務アピール会 #GameWith #TechWith #PMBOK #埋め込み #運用改善

こんにちは!GameWithサービス開発部です。

サービス開発部では月に一度、全体会にて どのように業務課題を改善したか をアピールする会を行っています。

今回は3件の内容をご紹介します!

先月の発表内容はこちらです

tech.gamewith.co.jp

PMBOKの外部研修を受けた話

PMBOKを学ぶために外部研修を受けたという発表でした。

https://asana.com/ja/resources/pmbok より引用

PMBOK とは Project Management Body of Knowledge の頭文字を取って作られたビジネス用語で、プロジェクトマネジメントの知識体系のことを指します。PMBOK の読み方は「ピンボック」です。

プロジェクトを計画通りに遂行するには、適切な管理が必要不可欠となり、それを「プロジェクトマネジメント」と呼びますが、その知識をアメリカの非営利団体プロジェクトマネジメント協会 (PMI) が体系化し発行したのが、この「PMBOKガイド (A Guide to the Project Management Body of Knowledge)」です。従来の「プロジェクト管理」に関する知識やノウハウをまとめて体系化した意義は大きく、プロジェクトマネジメントの標準として世界中で認められています。

1987年にホワイトペーパーとして同協会が発表した PMBOK の歴史は古く、現在では第 7 版 (2021年) まで発行されています。

きっかけは「業界未経験で、非エンジニアが、エンジニアチームのリーダーを任された」ことで、何をすればチームをよりよくできるかを考えた結果、外部研修を受けることにしたとのことでした。選定する上で注意した点は「PMBOKに準拠している」「グループワークが存在している」「プロジェクトマネージャ経験者向け」から、良さそうなものを選んだということです。

外部研修のため詳しい内容は書けないのですが、学べたこととしては大きく5つあり、

  • PMBOKの公式本はそれだけで読み解くのは難しい
    • 解説本が別に出るほどに公式本は読み辛く、本講習の大半もPMBOKをどう読み解くかの講座だった
  • PMの動き方に正解はなく。結果が全て
    • プロジェクトは1つとして同じものが無いので、全てを同じ型にはめこみ実行できると考えるのは無理がある
  • プロジェクトを一人で進行しない為にPMはいる
    • 周囲を巻き込む力や、コーディネートしていく力が、ある意味PMの能力と言える
  • 大事なのは原理原則(行動指針)である
    • 手法はあくまで手段であり、どういった手法をとるかを決める為にも、行動指針をまずしっかり固める事が大事
  • 多くの知識を学んでいくことも大事である
    • 行動指針を踏まえて目的をより良く達成する為に、少しでも適切な手段を講じれるよう学び続ける事

今回、改めて体系化して学べたことで、今後の行動の改善指針が見つかったということです。

今回のケースは非エンジニアだったため外部研修という形になりましたが、GameWithのサービス開発部では、カンファレンスや勉強会への参加費用補助制度も設けており、エンジニアの成長を積極的に後押ししています!

類似度検索システムを構築した話

類似度を使った検索システムの構築に関する発表でした。類似度検索は全文検索では捉えづらいユーザーの多様な意図をより正確に捉えることができます。

OpenSearchを用いたシステム構築

今回は検索システムの基盤としてOpenSearchを採用しました。専用のベクトル検索エンジンと違い全文検索システムも含めたハイブリッドな検索システムとして設計されており、多角的な検索アプローチを実現できることが主な理由です。また、GameWithではAWSを中心にインフラを構築しているので、そのネットワークの恩恵を預かることも可能です。

Embeddingモデルの選定と検証

類似度検索の核となるEmbeddingを生成するモデルについて、既存のモデルの中から最適なものを選定するための検証を行いました。JMTEBなどの汎用的な評価データセットの結果を軸に、ゲーム内単語に対して省略形や固有名詞を含む特徴的な内容で検索性能を評価しました。

最終的にゲーム系の単語に強かったのでOpenAIの「text-embedding-3」モデルを採用しました。ただし、将来的に性能が低下した場合に備え、別のモデルへの差し替えを視野に入れて、後からのリランキングやインデックスの再生成を出来る形で実装しました。

ナレッジグラフの活用

また、類似度検索においては正確な検索がしづらくなる部分もあるため、検索システムの性能向上のため、ナレッジグラフの構築も行いました。例えば、キャラクター検索において「キャラクター → 属性 → キャラ名」というグラフ構造を採用することで、キャラクターの属性からも効率的に検索できるようになる、とのことでした。

特殊な単語が多いため汎用モデルだとうまく検索結果が出ないことも多かったです。今後はGameWith専用のモデルとか作ってみても良いかもしれないですね!

GameWithのパネル要素を改善した話

各種プラットフォームのTOP上部には、最新記事やおすすめゲームの情報を配置するパネル要素があります。

パネルの管理画面は過去に作成された機能を継ぎ足しで運用していたのですが、更新頻度に対して効率が悪くリプレイスすることになりました。

運用コストの軽減パネルの効果最大化を目的にデータドリブンでシステマチックな運用に移行することを目標としました。

運用コストの軽減

リプレイス前は全てのページの各要素を手動で更新する運用を行っていました。 昨今マルチプラットフォームのゲームが多く存在することもあり、同じ内容で各プラットフォームに設定することも多かったのですが、各パネルにクリエイティブを紐付ける形での運用にすることで運用コストを落とす事ができました。

しかし、指定した時間にどのような状態かを確認するのが難しくなる課題が発生します。 そのため現在時刻から4日分を1時間毎にシミュレーションした結果をSlackに通知するようにして解決したとのこと。 設定に問題があればその旨もSlackに通知されるので、おかしな設定や抜けが発生したとしても気付けるようになっています。

パネルの効果最大化

今までは表示される順番も手動で調整して運用していたのですが、リプレイス後はIMPやCTRを元に自動的に並べ替えや切り替えを行うような仕組みを導入しました。 これは効果最大化を狙える形になる上に、運用コストの削減にも繋がりました。

効率化によって、品質に時間を割くことができるようになるのは大きな改善ですね!

最後に

今回もGameWithサービス開発部の裏側をお伝えしました。新たな発見に繋がっていれば幸いです。

こんなGameWithではエンジニアを絶賛募集中です!

サーバーエンジニアやフロントエンジニアの方、AIに興味がある方や、Unityでの開発に興味がある方もお気軽にカジュアル面談をお申し込みください!

github.com