watnow / 代表
FastAPI/Pythonを用いたチーム開発
概要: イベントの遅刻者をリアルタイムでランキングするアプリ「遅刻リンピック」のチーム開発を行った.アプリ概要は,イベントページで参加者を確定し,開催地とiOSのGeoLocationで取得した位置をリアルタイムで取得し,誰が一番遅刻をしているかをライブで確認できるアプリとなっている.背景は,私が運営するプログラミングサークル内では,エンジニア集団ということもあり,朝起きれなく遅刻癖のある部員がほぼであり,企画したイベントのスタートが遅れるという事が毎回起こる.そこで,この事態をむしろ面白おかしくネタにしたいと思い開発に至った. 技術詳細: この開発において,私はバックエンド全般の開発を担当した.本開発では軽量で高速なマイクロフレームワークのFastAPI/Pythonを使用した.遅刻順位が入れ替わるリアルタイム性の実現として,FastAPIに搭載されているWebsocketを使って実装した.DBはユーザーやイベントの管理と,各ユーザーの到着予定時刻を比較するセグメントとして,Supabaseを採用した.また,リアルタイムで通知を飛ばすためにFCMを利用し,プッシュ通知の実装も行った. 意識したこと: チーム開発時点で設計共有をNotionで行っていたことである.企画で要件定義が完了した後,バックエンドとクライアントでそれぞれ設計資料を作成して,設計共有を都度行うようにした.自分はバックエンドを担当していたので,API設計のアーキテクチャ図と,データベースのER図,機能要件/非機能要件を定義して,クライアントサイドのメンバーからレビューをもらって開発を進めるようにした. 反省点: 浅い理解でクリーンアーキテクチャを適応させて開発を進めたため,責務分担の境界が曖昧になってしまった.それによって新しい機能を実装するとなった時にどのディレクトリにどのロジックを書くのかわからなくなってしまった.