はじめに
EXNOAに24新卒として入社いたしました朴と申します。EXNOAはDMM GAMESという大規模なプラットフォームを運営しており、私はその基幹システムを開発するプラットフォーム基幹システム開発部に所属しています。 本記事では、私の日常的な業務フローや、担当している具体的な業務内容についてご紹介いたします。また、現場でどのような技術を学び、活用しているかについても詳しくお伝えできればと思います。 この記事を通じて、私の職場での一日がどのように過ぎていくのか、そしてそこで使用される技術や業務内容について、少しでも興味を持っていただけると幸いです。
1日の流れ
10:00~11:00 出勤
まず、午前10時ごろに六本木のオフィスへ出勤します。到着後、まずはタスクの整理をします。終わったタスクやその日にやるべきタスクなどをチケットとして管理し、進捗やスケジュールを把握します。この整理が終わった後、実際の作業に取り掛かります。タスクの整理は、効率的に仕事を進めるために非常に重要なプロセスです。
11:00~12:00 作業
午前11時からは、引き続きタスクチケットに従い業務を進めていきます。タスクに集中し、予定された時間内に完了できるよう努めます。
12:00~13:00 MTG・作業
お昼前の12時には、チーム内で共有会を行います。共有会では、各自が持っているタスクの進捗状況を確認し、障害当番の確認、その他の情報共有などを行います。この時間は、チーム全体が情報を共有し、現在の状況について理解を深める貴重な機会となっています。
13:00~14:00 ランチ
お昼の13時にはランチタイムです。この時間はリフレッシュのためにしっかり休憩を取り、午後の業務に向けてエネルギーを補給します。
14:00~19:00 MTG・作業
そして、14時から19時までは、曜日によって異なりますが、MTGへ参加したり、持っているタスクを進めたりします。私が所属するチームはスクラム開発を採用しており、一週間のスプリント単位で開発を進めています。スクラムとは、短期間の作業期間(スプリント)を設け、その期間内に持っているタスクを集中して完了させることを目標とする開発手法です。
また、スプリント内では、タスクの処理だけではなく、プランニングやレトロスペクティブといったスクラムイベントを行います。次のスプリントに各自が何をやるかを決めたり(スプリントプランニング・レビュー)、そのスプリントで感じたことや反省点を話し合います(レトロスペクティブ)。スクラムイベントは、チームの改善を図り、あらかじめ計画された作業を効率的に進めるための重要な場となります。
19:00~ 退勤
午後の作業を進めながら、19時ごろになると退勤します。退勤前には、次の日のタスクの整理や準備など、翌日も効率的に作業を進められるように準備して一日を終えます。このようにして一日を終え、充実した時間を過ごしています。スクラム開発の実践を通じて、チーム全体で目指す目標に向かって成果を上げるための工夫を重ねています。
技術について
EXNOAの新卒はDMM.comの新卒と一緒にDMM.comの研修を受けることができ、研修の中では、AWS・Google Cloudなどのクラウド技術や、iOS・Androidなどのモバイル開発、フロントエンド開発などの様々な技術を習得できました。 実際の業務で使う技術としては、私のチームはプラットフォーム基盤のバックエンドを開発をするチームであるため、バックエンド寄りが多いです。その技術の中で特に皆さんに紹介したい下記技術についてお話しできればと思います。
Go:ゲームプラットフォームのバックエンド開発にはGo言語が使用されています。Go言語は軽量でパフォーマンスにも優れた、最近広く使われているモダンな言語と言えます。EXNOAをはじめ、DMM全体でこのGo言語を採用する動きが盛んで、DMM.goという社内勉強会や、Goに関する知識を共有するSlackのチャンネルも設けられています。モダンなプログラミング言語を使って開発したいと考える方にとっては、非常に良い環境と言えるのではないでしょうか。
Kubernetes:EXNOAのゲームプラットフォームは膨大なだけあって複数のサービスで構成されており、各サービスの独立性を維持しながら、まとめて管理するためにKubernetesを導入しています。特に、複数のサービスをいかにうまく連携させるかが品質の高いプラットフォームサービスの提供には必須であり、そのような複数のサービスの制御・管理することはとても重要です。研修でもコンテナー技術を学ぶ機会はあったのですが、Kubernetesについては実際にそういう複数のサービスを触ることになる現場じゃないとなかなか習得しづらい技術かと思います。業務では、サービスの管理だけでなくCI・CDにもKubernetesを利用していて、業務において欠かせない技術になっています。
Pub/Sub:Pub/Subとは、メッセージを送信する側と受信する側の処理を分離する仕組みです。さまざまな用途がありますが、私の所属するチームでは、ユーザーデータのキャッシュを作成する際に利用しています。 ユーザーがDMM GAMESプラットフォームを利用する際、サーバー側にさまざまなAPIリクエストを送ることになります。例えば、ゲームからのお知らせの通知設定もユーザーデータとして保存されます。しかし、毎回データベースに保存し、取得する処理を行うと効率が悪いため、ユーザーデータの中で頻繁に使用されるデータはキャッシュとして保持しています。 このキャッシュの生成にはPub/Sub技術を使用しています。具体的には、「キャッシュを生成してください」というメッセージを送る部分と、「実際にキャッシュを生成する」部分を分離しています。これにより、システム間の依存度を低くでき、大量の通信が発生するプラットフォーム環境でも、スケーラビリティを確保できます。
業務について
私が所属しているチームでは、上記の技術を活用しながら、以下のような多岐にわたる業務を主に行なっています。
ユーザーデータに関するAPIの開発:ユーザー情報の登録や更新、ユーザーがどのようなゲームをプレイしたかを返すAPIなど、様々なAPIを開発・運用しています。
ゲームデータに関するAPIの開発:ゲームのジャンルや利用可能なデバイス、使用したタグなど、ゲームプラットフォームに必要なデータを提供するAPIを開発・運用しています。
認証認可システムの運用:プラットフォームを利用するユーザーに対して、セキュリティ対策を含めた認証・認可と、その保守・運用を担当しています。また、既存システムの改善も継続的に行っています。
プラットフォームのコアな部分を扱う業務がメインになるため、重大な責任を感じる一方で、とてもやりがいを感じながら仕事をしています。このような業務を通じて、より良いプラットフォームを作るために、日々努力を続けています。
締め
私の日常業務や技術の活用方法についてざっとお話させていただきましたが、いかがでしたでしょうか。EXNOAでの職務はやりがいに満ち、日々新しい発見や学びがあります。DMM GAMESの基幹システム開発に貢献することは責任重大ですが、その分成長を実感できる場でもあります。この記事を通じて、私たちの仕事について少しでも興味を持っていただけたなら幸いです。これからも日々の業務を通じて成長し、更なる貢献を目指して頑張ります。