Blog

ハッカソン合宿制作記② | 双方向通信の数字対戦ゲームを作成しました!

はじめに

こんにちは。新卒1年目の佐藤、緑川、keyliumです。

本記事では3日間の社内ハッカソンにて私たちのチームが開発したWebアプリケーションについて紹介していきます。

開発合宿の概要記事はこちらをご覧ください。

メンバー紹介

普段、私たちはOJTジョブローテの3期目で、それぞれ異なる部署で業務を行っています。

佐藤

  • 普段の業務:会員向けアプリ「マイニフティ」の開発
  • 今回の担当:バックエンド
  • ひとこと :普段触らない技術に悪戦苦闘した楽しい3日間でした!

緑川

  • 普段の業務:IPv6関係のプロジェクトのAWS移行
  • 今回の担当:フロントエンド
  • ひとこと :ギリギリまで粘って欲しい機能が実装できて安心しました!!!!

keylium

  • 普段の業務:社内ネットワーク運用
  • 今回の担当:ゲームロジック
  • ひとこと :作りたいものはシンプルでしたが、実際に作ると大変でした!

制作物紹介

概要

複数人で整数を投票し、最小で固有の数字を投票した人が優勝するゲームを遊べるWebアプリケーション

遊び方

  1. HOME画面にて、部屋を選択、ユーザー名を入力し、ENTRYを押します
  2. 投票画面へ遷移後、同じ部屋の他ユーザーと数字が重複しない最小の数値を予想して入力します
    • 投票画面では数字のスタンプなどが用意されており、駆け引きができます
  3. 同じ部屋に3人が集まり、3人全員が投票完了すると結果発表に自動遷移します
  4. 3人の中で重複なし かつ 最小の数値に投票した方が優勝となります

システム構成

今回は

  • フロントエンド:TypeScript + React
  • バックエンド :AWS

で開発を行いました。

バックエンドにはAWS Amplifyを採用しました。

フロントエンドはAWS Amplifyにホストし、4つのDynamoDBとのやりとりにはAWS AppSyncのGraphQLを使っています。

AWS Amplifyとは?

Webアプリケーションやモバイルアプリの開発を高速化してくれるサービスです。

使用することで以下のメリットが得られます。

  • 認証基盤やストレージ、データベースなど、開発に必要なリソースを自動で作成してくれる
  • GitHubのリポジトリと連携することでCI/CDのプロセスを自動化し、環境ごと(本番 / 開発 / ステージング / ローカルなど)・プルリクエストごとに専用のリソースを作成してくれる

今回は開発日数が3日間と短い時間だったので、AWS Amplifyを使うことで開発スピードを早めることを図りました。

AWS Amplifyのおかげで、設定ファイルで必要なリソースを定義するだけで手動で作成することなく、また、PRが来るごとに正しく動作しているのか、実際にアクセスして確認することができました。

一方、デメリットとして、

  • 自動でリソースを作ってくれるため、内部でどんな操作をしているのかが不明
  • Gen 2のバージョンの日本語記事が少なく、英語記事を読む or 手探りで開発をしていく必要がある

の2点が挙げられます。

特に2つ目について、3人ともAWS Amplifyを使うのが初めてだったこともあり、とても苦戦しました。

後ほど、AWS Amplifyについての記事を投稿する予定です。

公式ドキュメント(Gen2 React版)はこちら

工夫した点

  • AWS Amplifyを使うことでCI/CDやAWSリソース作成の自動化
  • AWS公式のAWS Amplify用のテンプレートamplify-vite-react-templateを使用し、仕様理解を促進
  • AWS AppSyncのPub/Subによってユーザーなどの状態をリアルタイムで監視

上記3つの技術詳細につきましては、後日投稿予定の記事にて記載いたします。

  • Notionを活用したスキーマ設計
  • UIコンポーネントライブラリ(Material UI)を使用することでデザインの統一
  • GitHubでカンバンを作り、それぞれが行う作業を可視化
  • アーキテクチャ図を早期に作って全メンバーで認識を共通化

学んだこと・成長したこと

  • 初めて触るAWS AmplifyやReactの理解
  • 公式ドキュメントを読み込むことの重要性
  • タスクの取捨選択の重要性
  • PRレビューへの積極的参加の重要性
  • 開発における体力・集中力アップ

まとめ

私たちが3日間で開発した制作物について紹介しました。

普段の業務の中でここまで集中して1つのものを開発できる機会はなかなかないと思うので、とても良い経験となりました。

十分なエラーハンドリングが無かったり、テストコードを書いていなかったりと、完璧ではありませんでしたが、3日間で動くものができた!ということを自信に、これからの業務に生かしていこうと思います!

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!