2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codexで社内のマジック・ザ・ギャザリング部のレーティングシステムを実装してみた

2
Last updated at Posted at 2025-12-09

はじめに

株式会社サイバーエージェントでCA Tech Lounge室長を担当しています宝田と申します。
この記事はCA Tech Lounge Advent Calendar 10日目の記事となっています。
他の記事も力作が揃っていますので、ぜひご覧ください。

昨日はka_ichiさんの記事でした。「RAもAIを活用する」ということで、大学院生のみなさんに是非一読いただきたい記事となっております。

なぜ作ったか

サイバーエージェントではCArcleと呼ばれる部活動制度があり、多くの社員がこの部活動制度を通じて交流を行っております。

自分はその中でマジック・ザ・ギャザリングというカードゲームの部活動を運営しているのですが、下記の課題を感じていました。

  • 勝利した際のうまみが薄い
  • 初心者~中級者まで幅広く在籍しており、実力が可視化されづらい

上記のような課題を解決するために、今回レーティングシステムを実装しました。
(裏目標として、技術人事である自分が技術に関してより深く理解するという目標を兼ね備えています)

どう作ったか

自分が新卒エンジニア採用を担当している部署にいる関係で、学生の方が直近よく使っているサービスの肌感覚を知ろうと思っていました。
そのため、直近のハッカソンで名前を聞くことが多かった下記のサービスを選定しています。
また、完全素人の自分が0からWebアプリを作ることにはハードルも高いと感じており、Coding Agentを活用してみようと考え、別件で使う予定のあったCodeXを採用しました。

▼技術スタック概要

  • Coding Agent:Codex
  • Frontend:React,Next
  • Backend:TypeScript
  • Hosting:Vercel
  • DB:Supabase(PostgreSQL)

何を作ったか

添付画像のようなWebアプリを作りました。

image.png

諸事情につきデモは公開出来ませんが、下記機能を盛り込んでおり初のWebアプリにしては満足の行くものになったかなと思います。

▼実装機能

  • ELOレーティングによるレーティング機能
  • 統率者戦実施時の4人登録機能
    • 人数増加時に、増加人数に応じて上昇レーティングを変動させる機能(一戦の重みを他フォーマットになるべく近づける)
  • 過去のログを画面から消去する機能
  • etc

つまづいた点

ローカルでの検証時にはうまく行っていたのですが、いざVercel・Supabaseにそれぞれデプロイを試みたところ、DBにうまくアクセス出来ない不具合を発見しました。
原因を究明したところ、Supabaseでデフォルトの「Direct Connection」を設定していましたが、これはIPv6での接続のみを受け付けるものであり、IPv4で接続を試みるVercelとの相性がよろしくなかったようです。
これを回避するために、Supabaseに実装されているTransaction Poolerという機能を使いました。

image.png

この箇所を選択することにより、IPv6接続のみが可能なSupabaseにおいてもVercelのIPv4リクエストを受け付けることが可能になりました。
余談ですが、IPv4は現在枯渇が懸念されており、この記事を読んだ皆様もIPアドレス枯渇問題に思いを馳せてみてはいかがでしょうか。

作ってみた感想

部活動部長として

レーティングシステムを導入したことにより、一戦の重みが以前にも増して感じられるようになった気がしています。
一方で、気軽に参加できる部活動として「ガチ感」の増加は必ずしもプラスとは言い切れず、今後もコミュニティ活動としてどのような形が最適か議論の余地があるように感じました。

技術人事として

これまで触ったことのないSupabase、Vercelなどローカルで完結しないシステムを導入したことにより、面談などで候補者の方から伺うお話の解像度が一段と高まったように思います。

今後の展望

部活動部長として

今後は初心者にも参加してもらいやすいよう、初心者と常連が同時に参加した際にこのレーティングを活用して初戦のマッチングが行える機能の実装を検討しています。
また、レーティングシステム自体にも時期による更新など部員から要望が上がっている機能もあり、適宜実装していきたいと思っています。

技術人事として

今回は生成AIの力を使いながら「自分でプロダクトを作ってデプロイしてみる」ということは達成できたため、今後は使ったものを活かして更なる改善に取り組んでみたいと感じました。
また、自社で主流となっている下記の技術も使ってみたいと思っており、今後どこかで活用してみたいと思っています。
▼今後使いたい技術群

  • Go
  • AWS/Google Cloudなどのパブリッククラウド
  • CI/CDツール

おわりに

部活動の部長として告知

CAマジック・ザ・ギャザリング部は活動を始めたばかりの社内サークルですが、もし交流会をしてもいいよという企業様がいらっしゃいましたらお気軽にお声掛けください。
フォーマットとしては統率者・リミテッドが主流です。別部活動で100名程度のイベント開催実績もあり、弊社オフィスで開催可能です。
宝田のXまでお気軽にお待ちしております!

技術人事として告知

こんな愉快な部活動がたくさんあるサイバーエージェントでは、現在エンジニアの新卒・Re:Career採用を大募集しております。
マジック・ザ・ギャザリングとジャンルが近いものだけでも

  • 麻雀部
  • ポーカー部(CyberAgent Poker Club)
  • ボードゲーム部

など、たくさんの部活が定期的に活動しています。
この記事をきっかけとしてサイバーエージェントに興味を持った方は、お気軽にご連絡お待ちしております!

CA Tech Lounge室長として告知

CA Tech Loungeでは現在3ヶ月に一度を目処に会員を募集しています。
次回の応募については弊社新卒採用Xアカウントより告知予定です。フォローして続報をお待ちください!

次回予告

明日のAdvent Calendarはruribouさんの「Railsのコールバックはつらいよ」です。お楽しみに!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?