GeoAlert — ジオフェンスで通知するロケーションリマインダー(Kotlin Multiplatform)
概要
GeoAlertは、地図上に指定したエリア(ジオフェンス)を登録し、そのエリアへの「入場/退出」を検出してアラートを送ることを主目的としたアプリケーションのリポジトリです。Kotlin Multiplatform(Compose Multiplatform)で作られており、共通のビジネスロジックやUIコンポーネントを複数プラットフォームで共有しつつ、位置情報取得・通知・バックグラウンド処理などプラットフォーム固有の実装は各ターゲットに分離する設計をとっています。シンプルなジオフェンス機能をベースに、リマインダーや近接通知など実用的なユースケースをサポートします。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 2
- ファイル数: 10
- メインの言語: Kotlin
主な特徴
- マップ上でジオフェンス(円形エリア)を簡単に作成・管理し、入退出で通知を送る。
- Kotlin Multiplatform(Compose)により、UIとビジネスロジックの共有を推進。
- プラットフォーム固有の位置情報・通知機能は分離して実装(Android / iOS)。
- 軽量で学習用/プロトタイプに向いた構成。
技術的なポイント
GeoAlertはKotlin Multiplatformを採用しており、composeApp/src/commonMain以下に共通コードを置くことで、ビジネスロジックやComposeベースのUIコンポーネントを複数ターゲットで再利用する構成です。このアプローチにより、画面フローや状態管理、ジオフェンスのモデル・永続化ロジック(例:ローカルDBやシリアライズ処理)は共通化でき、開発コストを削減します。
位置情報や通知、バックグラウンドでのイベント検出といった機能はOSごとに実装が異なるため、リポジトリはプラットフォーム固有のソースフォルダ(例:androidMain、iosMain)を用意している想定です。Android側ではFusedLocationProviderやGeofencing API、WorkManager/ForegroundServiceなどを使い、iOSではCoreLocationと地域モニタリング(startMonitoringForRegion)を用いる実装が自然です。KMPでは期待するAPIが共通化されないため、インターフェースをcommonMainに置き、具体実装を各プラットフォームに委譲するパターンが有効です。
Compose Multiplatformを使うことで、ボタンやリスト、マップ周りのUIの一部は共通で設計できます。ただし、マップ表示(Google Maps、Apple MapKit)はネイティブコンポーネント依存が強いので、マップ周りはプラットフォームごとにラップして共通APIで扱うブリッジ層を作るとよいでしょう。加えて、位置情報の権限管理(フォアグラウンド/バックグラウンド権限)、バッテリー最適化、OSの位置情報制限(特にiOSのバックグラウンド制限やAndroidのバッテリー最適化設定)を考慮して設計する必要があります。
ビルド周りはGradle Kotlin DSL(build.gradle.kts)を使用し、マルチプラットフォーム設定やComposeの依存管理を行います。CIやテスト戦略としては、commonMainのロジックに対するユニットテストを充実させ、プラットフォーム固有のコードはUI/integrationテストや実機での検証を行うのが現実的です。プライバシー面ではユーザーに対する明示的な説明(位置情報利用の目的)と最小限のデータ収集、必要に応じたローカル処理設計を推奨します。
拡張案としては、ジオフェンスに対する条件付きトリガー(滞在時間、時間帯フィルタ)、クラウド同期(ユーザーの複数デバイス間でジオフェンスを共有)、プッシュ通知連携、オフライン時のエッジ処理や省電力モード対応などが考えられます。総じて、GeoAlertはKMPでのモバイル位置ベースアプリの典型的な構成を示す良い出発点です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- README.md: file
- build.gradle.kts: file
- composeApp: dir
- gradle.properties: file
…他 5 ファイル
READMEの抜粋: This is a Kotlin Multiplatform project targeting Android, iOS.
- /composeApp is for code that will be shared across your Compose Multiplatform applications.
It contains several subfolders:
- commonMain is for code that’s common for all targets.
- Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name. For example, if you want to use Apple’s CoreCrypto for the iOS part of your …
まとめ
Kotlin MultiplatformとComposeを活用し、ジオフェンス通知の基本を学べるシンプルで実用的なリポジトリです。
リポジトリ情報:
- 名前: GeoAlert
- 説明: GeoAlert lets you set specific areas on a map and receive alerts when you enter or exit those zones. Get reminders for errands, notifications when near friends, or alerts for favorite spots. Stay connected to the places that matter with GeoAlert. Simple, intuitive, and efficient.
- スター数: 1
- 言語: Kotlin
- URL: https://github.com/Case-Code/GeoAlert
- オーナー: Case-Code
- アバター: https://avatars.githubusercontent.com/u/66840885?v=4