Androidアプリを開発してみたいけれど、「位置情報の取得って難しそう」と感じていませんか?
でも大丈夫です。この記事では、Jetpack Composeを使って、簡単な位置情報アプリを作る方法を、初心者でもわかるように丁寧に解説します。
🚩 この記事でわかること
- Jetpack Composeとは何か
 - Androidで位置情報を使うには何が必要か
 - パーミッションの設定方法
 - 実際に現在地を取得し、画面に表示する方法
 
🧱 まずはアプリの仕組みを理解しよう
アプリで現在地を表示するには、いくつかの手順が必要です。

この図のように、アプリは「ユーザーからの許可」を得てから、「GPSを使って現在地を取得」し、それを画面に表示します。
🛠 Jetpack Composeってなに?
Jetpack Composeは、Androidアプリの画面(UI)を作るための新しい方法です。
以前はXMLで画面を作っていましたが、ComposeではKotlinだけでシンプルにUIを書けます。
また、Jetpack Composeの基本的な使い方や概念については、以下の記事で詳しく解説しています。
本記事では位置情報機能にフォーカスしているため、Composeの基礎が不安な方は先にこちらをご参照ください。
👉 Jetpack Compose入門ガイド
初めての方は、まずそちらをご覧ください。
⚙️ 開発環境と準備
以下の環境で動作確認しています:
- Android Studio Giraffe以上
 - Kotlin 1.8以上
 - Jetpack Compose 1.5以上
 - Google Play Services
 
Gradleファイルに以下を追加します。
dependencies {
    implementation("androidx.compose.ui:ui:1.5.0")
    implementation("com.google.android.gms:play-services-location:21.0.1")
}
📄 パーミッションを設定しよう
Androidでは、位置情報を使うには「許可」が必要です。これはユーザーのプライバシーを守るためです。
まず、AndroidManifest.xml に次の2行を追加します:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
✅ パーミッションをコードで確認する方法
アプリが動き出したときに、位置情報の許可を持っているかを確認し、持っていなければリクエストする必要があります。
以下は、Composeでパーミッションを確認・リクエストする簡単な例です:
val locationPermissionState = rememberPermissionState(
    android.Manifest.permission.ACCESS_FINE_LOCATION
)
LaunchedEffect(Unit) {
    if (!locationPermissionState.status.isGranted) {
        locationPermissionState.launchPermissionRequest()
    }
}
🌍 現在地を取得して表示してみよう
実際に現在地を取得するには、Googleが提供している FusedLocationProviderClient を使います。
以下のコードは、現在地を取得し、それを画面に表示するシンプルな例です:
@Composable
fun LocationScreen() {
    val context = LocalContext.current
    val fusedLocationClient = remember {
        LocationServices.getFusedLocationProviderClient(context)
    }
    var locationText by remember { mutableStateOf("現在地を取得中...") }
    LaunchedEffect(Unit) {
        try {
            fusedLocationClient.lastLocation.addOnSuccessListener { loc ->
                if (loc != null) {
                    locationText = "緯度: ${loc.latitude}, 経度: ${loc.longitude}"
                } else {
                    locationText = "位置情報が取得できませんでした"
                }
            }
        } catch (e: SecurityException) {
            locationText = "位置情報の許可が必要です"
        }
    }
    Text(text = locationText, fontSize = 18.sp, modifier = Modifier.padding(16.dp))
}
⚠️ 注意すべきポイント
- 位置情報は端末の設定に依存します。GPSがオフだと取得できません。
 - 常に位置情報を更新するには 
requestLocationUpdates()を使います。 - プライバシーに配慮して、不要な位置情報取得は避けましょう。
 
🔁 さらに発展させるには?
以下のような拡張も可能です:
- Google Mapsと連携して地図上に現在地を表示する
 - ボタンを押したときに再取得するようにする
 - バックグラウンドで定期的に位置情報を更新する
 
✅ まとめ
Jetpack Composeを使えば、AndroidアプリのUIも、位置情報の取得も、すっきりとしたコードで書くことができます。
まずはサンプルコードをコピペして、動かしてみてください。手を動かすことで理解が深まります。
			
			
