Real GeoGuessr
2024年1月 - 2024年2月
リアルタイムで複数人で遊べるGeoGuessr風のゲームを開発しました。バックエンドはPythonとFastAPIを使用してクリーンアーキテクチャで実装し、domain(エンティティ)とinfrastructure(ルーター、リポジトリ)の層に分離しています。リポジトリパターンを使用してメモリ内でルーム・チーム・ユーザー・ゲームの状態を管理し、リアルタイムでゲームの進行を制御します。フロントエンドはFlutterで実装し、Riverpodを使用して状態管理を行っています。Google Maps FlutterとFlutter Google Street Viewを統合し、位置情報の表示とStreet Viewの表示を実現しています。地理情報処理にはgeopy、fastkml、numpy、shapelyを使用し、位置情報の計算やKMLファイルの処理を行っています。
バックエンドはFastAPIを使用してRESTful APIを実装し、クリーンアーキテクチャの原則に従ってdomain(エンティティ)とinfrastructure(ルーター、リポジトリ)の層に分離しています。リポジトリパターンを使用してメモリ内でルーム・チーム・ユーザー・ゲームの状態を管理し、ルームの作成・参加・ゲームの進行・結果の管理を行います。フロントエンドはFlutterで実装し、Riverpodを使用して状態管理を行っています。Google Maps FlutterとFlutter Google Street Viewを統合し、位置情報の表示とStreet Viewの表示を実現しています。HTTP通信にはhttpパッケージを使用し、位置情報の取得にはlocationパッケージを使用しています。
- クリーンアーキテクチャの設計と実装 → domain(エンティティ)とinfrastructure(ルーター、リポジトリ)の層を適切に分離し、依存関係の方向を制御
- リアルタイムでのゲーム状態管理 → メモリ内でルーム・チーム・ユーザー・ゲームの状態を管理し、複数のユーザーが同時にゲームを進行できるように設計
- FlutterとGoogle Mapsの統合 → Google Maps FlutterとFlutter Google Street Viewを統合し、位置情報の表示とStreet Viewの表示を実現
- 地理情報処理の実装 → geopy、fastkml、numpy、shapelyを使用して位置情報の計算やKMLファイルの処理を実装