以下の内容はhttps://developersblog.dmm.com/entry/2025/01/24/110000より取得しました。


プラットフォームを支えるエンジニアへ 〜新卒が取り組んだ業務と学び〜

サムネイル

こんにちは、EXNOAの2024年新卒の田中です。
EXNOAでは2019年以来4年ぶりの新卒エンジニアとして、私を含め3名が入社しました。 私はその中でゲームプラットフォームの決済システムの開発・運用保守を担当する決済チームに所属しています。
この記事では、EXNOAの新卒エンジニアが配属後どのような業務に取り組んでいるのかをご紹介しますので、興味を持っていただければ幸いです。

EXNOA入社の決め手

まずは、なぜEXNOAに入社を決めたのかをお話しします。

学生時代から、目立たないながらも責任感を持って取り組むことにやりがいを感じており、そのような仕事にエンジニアとして関わりたいと考えていました。就職活動を進める中で、DMM GAMESを運営しているEXNOAが大規模なプラットフォームのバックエンド開発という、まさに私が求めていた仕事に携われることを知り、強く惹かれました。

特に、多くの人々に楽しさを届けるゲームサービスを支えるプラットフォームの開発に携われることは、私にとって大きな魅力でした。ユーザーがゲームをプレイしたいと思ったときに、ストレスなくスムーズにプレイできる環境を構築し、快適なゲーム体験を提供したいという想いが強まり、最終的にEXNOAへの入社を決意しました。入社後は、2週間の全体研修とDMM.comとEXNOA合同で3ヶ月半にわたるエンジニア研修を経て、8月から決済チームに配属されました。

EXNOAの決済チーム

決済チームは、DMM GAMESの決済システムの開発を担当するチームです。DMM GAMESには、ブラウザ、Android、PC向けにそれぞれのプラットフォームがあります。我々が扱う「決済システム」は、DMM GAMES内の各プラットフォームが提供するゲームからゲーム内アイテムを購入するためのシステムで、DMMポイントを利用した購入やサブスクリプションを提供しています。

アイテムの購入には、プラットフォームごとに異なる仕組みが存在します。現在、ユーザーがDMMポイントを利用してアイテムを購入する際の流れは以下の通りです。

DMMポイントを利用してアイテムを購入するフロー

この3ステップを通して、ユーザーはDMMポイントを使ってスムーズにゲーム内アイテムを購入できます。DMM GAMESにおけるユーザーの決済体験を支えているのが、私たち決済チームなのです。

日々のミーティング

次に、開発やチーム運営に関わるミーティングについて紹介します。
開発やチーム運営に関わるミーティングが複数あります。ここでは、その中のいくつかをピックアップしてお話しします。

朝会

朝会では、1日の業務でやることや連絡事項、運用報告をチーム全体で共有します。朝にそれらを確認することで、全員がチームのやることを理解し、円滑に業務を進めることができます。 また、決済チームが担当するプロダクトのログを確認し、大きな問題につながるエラーがないかをチェックしています。

チーム定例ミーティング

チームの改善点や相談事を共有し解決する場です。この定例ミーティングの良いところは、ひとつの議題に対してメンバー全員で意見を交わしながら、議題のゴールに持っていくことができる点です。

チーム定例ミーティングでは、チーム内でシステムの理解につながる情報や、運用についての共有をしています。それらの議論をもとに運用問題の改善に取り組んでいます。

レビュー会

これはコーディングや設計に関する相談するミーティングです。正しい実装かどうかをメンバー全員で確認し合う場となっています。コードを通じて話し合うことで、設計やコーディングについての理解が深まります。

最近では、クリーンアーキテクチャの概念に基づいた設計について、議論しています。特に「関心の分離」をどのように実現するかの議論をしています。「関心の分離」とは、ソフトウェアをそれぞれ異なる役割や目的を持つものに役割分担をすることです。「関心の分離」を実現することで、コードの可読性があがり改修しやすくすることに繋がります。これらの議論を通じて、私は設計の重要性をあらためて認識し、自身の開発にも活かしたいと考えています。

現場のコードを題材に、チームメンバーと設計について議論できることは、私にとって大きな刺激となっています。

配属後に取り組んだこと

続いて、配属後に取り組んだことについてお話しします。
DMM.comとEXNOAのエンジニアは、4月中旬から7月末まで技術研修を受けます。技術研修を終えると、それぞれのチームに配属されます。
私が決済チームに配属された後は、以下のようなことに取り組みました。

オンボーディング

オンボーディングとして、まず決済に関わるサービスの説明を受けました。その後、決済に関わるサービスのローカル開発環境の構築に取り組みました。決済チームが担当している決済システムは、基本的にはDockerベースのローカル開発環境が整備されています。決済システムは複数のマイクロサービスから構成されているため、それらをひとつひとつセットアップしていきました。

次に、アイテムが正常に購入できるかを確認するため、APIにリクエストを送信し、正しいレスポンスが返ってくるかをチェックしました。テスト可能なゲーム環境でゲームアイテムを購入し、レスポンスが返ってくることを確認することで、この決済部分に携わっているという実感が湧きました。

また、一部のサービスは歴史の古いものがあります。そのため、1からローカルで動かす環境を整えるには多くのものを必要とし、手間がかかります。こうした背景から、AWS上にまとめてサービスを構築できる個人開発環境が用意されています。

しかし、これまで触れたことのないサービスを使った環境構築であったことに加え、過去の変更がドキュメントに反映されていなかったため、なかなか思い通りに進みませんでした。それでも、先輩方が正常に動作しない原因が記載されたドキュメントを見つけてくださり、無事に開発環境を構築できました。実際にローカルでサービスを動かしてみて、ワクワクし、これからの仕事が楽しみになったことを覚えています。

新しいデバイスでゲームができるようにする改修

私はこのタスクにおいて、新しいデバイスでも問題なくアイテムを購入できるように分岐処理を追加しました。

実装自体は、すでに実装されている他のデバイス向けのコードを参考に進めたため、順調に進みました。しかし、動作検証には多くの時間を要しました。検証資料を作成して先輩方にレビューしてもらったところ、検証の漏れを指摘されました。特に、異常なリクエストに対して想定されたエラーを返すかどうかの検証が不足しているとの指摘を受けました。

先輩からは、想定されたエラーを返すことも検証で非常に重要だと教わりました。決済システムにミスがあると、DMM GAMESを通してアイテムを購入する処理すべてに影響が出ます。だからこそ、慎重な検証が必要だと感じました。配属されて2ヶ月でこのような慎重な検証の重要性を体験できたことは、とても良い経験となりました。

同期システムの開発

次に担当したタスクは、数千件のIDを変換して他システムと連携する処理の実装です。

決済システムでは、連携先システムに対して、既存システムの仕様に基づいてIDを変換し、データを連携する必要がありました。最初は、変換先のテーブルに対して1件ずつクエリを発行していました。

しかし、先輩から「1件ずつクエリを発行すると、変換対象の件数分だけクエリが発行されてしまい、アプリケーションのパフォーマンスに問題が生じる」と指摘を受けました。そこで、先輩の助言に従い、IN句を使用して数百件ごとにデータを一括取得する方法を採用しました。この方法で、パフォーマンス問題を解決できました。

私がこれまでの開発で考えていたのは「開発したものが動けば良い」と考えていました。しかし、このタスクを通じて大規模データを扱うデータ処理においては、パフォーマンスリスクを考慮し本当にその処理が最適かどうかを検討することの重要性を学びました。

まとめ

この記事では、EXNOA新卒エンジニアの田中が決済チームに配属されてから取り組んだことについて紹介しました。

決済チームの業務内容、日々の業務、そして配属後に携わったオンボーディング、新しいデバイス対応、パフォーマンス改善といった具体的な開発経験について説明しました。

エンジニアの実務では、単に動くだけでなく、運用や改修をしやすい設計・開発が重要であることを学びました。配属から5ヶ月が経ち、他のチームの開発にも影響を与えるような開発を任せてもらえるようになり、プラットフォームを支える一員としてやりがいを感じています。

もちろん、未熟な点も多いですが、今後もプラットフォームを支える一員として成長を続けていきたいです。

終わりに

EXNOAでは新しい仲間を募集しています。

EXNOAでの新卒採用につきましては下記募集ページをご覧ください。

dmm.snar.jp




以上の内容はhttps://developersblog.dmm.com/entry/2025/01/24/110000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14