
インドネシアは災害脆弱性において世界第2位であり、スコアは43.5%ですが、政府の生災害データと実用的な個人向け警告との間には深刻なギャップがあります。災害が発生しやすい地域に住むほとんどの人々は、洪水、地滑り、地震がいつ近づいているかを知る信頼できるパーソナライズされた方法を持っておらず、インターネット接続が切断された場合はなおさらです。
課題は、このギャップを埋める完全なAndroidアプリケーションをゼロから構築することでした。BMKG、BNPB、USGS、PetaBencanaからリアルタイムデータを集約し、その上でML予測モデルを実行し、イベント発生前にプッシュアラートを配信し、オフライン時でも完全な機能を維持することでした。
唯一のAndroid開発者として、私はJetpack Composeと最新のAndroidアーキテクチャを使用して、モバイルアプリケーション全体をエンドツーエンドで設計し、構築しました。
コアアプリとアーキテクチャ
- Jetpack Compose、Material 3、依存性注入のためのHilt、画面ルーティングのためのNavigation Composeを使用して、完全なAndroidアプリケーションを構築しました
- UI、ドメイン、データ層が明確に分離されたクリーンなMVVMアーキテクチャを中心にアプリを構築しました
ダッシュボードとリアルタイムデータ
- FusedLocationProviderClientを介したGPSベースの位置検出を実装しました
- FastAPIバックエンドからのAIリスクスコアを消費する、洪水、地滑り、地震をカバーする色分けされたリスクダッシュボードを構築しました
- 5分ごとの自動更新、プルツーリフレッシュ、シマーローディング状態、Roomを介したオフラインキャッシュフォールバックを追加しました
オフラインファーストマップ
- MapLibre Android SDKとオフラインMBTilesサポートを統合し、インターネットなしで避難経路と避難所マーカーが機能するようにしました
- レイヤートグル(Banjir / Longsor / Gempa / Laporan)、ボトムシートマーカー詳細、オフラインバナー検出を備えた全画面マップを構築しました
コミュニティレポート
- 危険タイプセレクター、NLP検証済みバッジ表示、匿名デバイスID(UUID)、レートリミットカウントダウンUXを備えたコミュニティレポート提出フローを構築しました
- 3フラグ自動非表示ロジックによるレポートフラグ機能を統合しました
プッシュ通知とバックグラウンドジョブ
- 災害イベント発生前のプッシュアラートのためにFirebase Cloud Messaging(FCM)を設定しました
- WorkManagerを設定し、15分ごとにサイレントバックグラウンドリスクとアラートチェックを実行し、RECEIVE_BOOT_COMPLETEDを介してデバイスの再起動後も機能するようにしました
アラート履歴とページネーション
- Paging 3 + Composeを使用して、カーソルベースのページネーションされたアラート履歴を構築し、色分けされた深刻度インジケーターとともに日付ごとにグループ化しました
設定と環境設定
- DataStoreに永続化される危険ごとの通知トグルを実装しました WorkManagerとFCMトークンライフサイクル管理を介してオフラインマップダウンロードトリガーを追加しました
技術スタック: Kotlin, Jetpack Compose, Material 3, Hilt, Retrofit, Room, MapLibre, WorkManager, Firebase Cloud Messaging, Paging 3, DataStore, Coil, Python, FastAPI, Neon PostgreSQL
実際のFastAPIバックエンドとML予測モデルを備えた完全に統合されたマルチ災害Androidアプリを提供しました。このアプリは、リアルタイムのリスクデータ、オフラインマップアクセス、NLP検証によるコミュニティのクラウドソーシング、およびFCMプッシュアラートを処理します。