この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: Androidアプリケーション
SEOタイトル: Android アプリ開発完全ガイド — Kotlin/Compose/Jetpack/Room/Retrofit

この記事の要点
  • 開発環境: Android Studio (IntelliJ ベース、公式 IDE) + Android SDK + Emulator
  • 言語: Kotlin が公式推奨 (Google が 2017 年に第一級サポート宣言)。Java も引き続き利用可能
  • UI: 旧来は Layout XML + View、新規開発は Jetpack Compose (宣言的 UI) が推奨
  • 主要コンポーネント: Activity / Fragment / Service / BroadcastReceiver / ContentProviderLifecycle の理解が必須
  • Jetpack ライブラリ: Room (DB)、Retrofit (HTTP)、Hilt (DI)、ViewModel / LiveData / Flow (状態管理)

Android アプリケーションとは

Android アプリは、Google が提供する Android OS 上で動作するモバイルアプリケーションです。世界のスマートフォン OS シェアの約 70% を占め、Play Store を通じて配信されます。

アプリの正体は .apk / .aab (Android App Bundle) というパッケージファイルで、内部に Dalvik bytecode (Android 5.0 以降は ART に変換) と各種リソース (画像 / レイアウト XML / 文字列) が含まれます。

開発環境

項目内容
IDEAndroid Studio (IntelliJ IDEA ベース、無料・公式)
SDKAndroid SDK (Android Studio に同梱)。API レベル別に切替可能
ビルドツールGradle (Kotlin DSL / Groovy DSL)
言語Kotlin (推奨) / Java
動作確認Android Emulator / 実機 (USB デバッグ ON)
デバッグADB (Android Debug Bridge)
配信Google Play Console (登録料 25 USD、買い切り)

主要コンポーネント

コンポーネント役割
Activity画面 1 枚を表す。最も基本的な UI 単位
FragmentActivity 内で再利用可能な UI 部品。タブ画面・大画面対応に
ServiceUI を持たないバックグラウンド処理 (再生・同期など)
BroadcastReceiverシステムイベント (起動、電源、通知) を受信
ContentProviderアプリ間データ共有 (連絡先、写真など)

典型的なアプリ構造 (Kotlin)

// MainActivity.kt
package com.example.myapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.foundation.layout.*
import androidx.compose.ui.unit.dp

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MaterialTheme {
                GreetingScreen()
            }
        }
    }
}

@Composable
fun GreetingScreen() {
    var name by remember { mutableStateOf("") }
    Column(Modifier.padding(16.dp)) {
        TextField(value = name, onValueChange = { name = it }, label = { Text("名前") })
        Spacer(Modifier.height(16.dp))
        Text("こんにちは、$name さん!")
    }
}

AndroidManifest.xml

アプリのメタ情報・宣言ファイル。Activity の登録、権限、最低 API レベルなどを指定します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 権限宣言 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:label="MyApp"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/Theme.MyApp">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>
</manifest>

build.gradle (Module レベル)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.example.myapp'
    compileSdk 34

    defaultConfig {
        applicationId "com.example.myapp"
        minSdk 24                   // Android 7.0 以上
        targetSdk 34                // Android 14
        versionCode 1
        versionName "1.0"
    }

    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion "1.5.4"
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
    implementation 'androidx.activity:activity-compose:1.8.2'
    implementation platform('androidx.compose:compose-bom:2024.02.00')
    implementation 'androidx.compose.material3:material3'

    // Room (ローカル DB)
    implementation 'androidx.room:room-runtime:2.6.1'
    implementation 'androidx.room:room-ktx:2.6.1'
    kapt 'androidx.room:room-compiler:2.6.1'

    // Retrofit (HTTP)
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'

    // Hilt (DI)
    implementation 'com.google.dagger:hilt-android:2.50'
    kapt 'com.google.dagger:hilt-compiler:2.50'
}

API レベルと Android バージョン

AndroidAPI レベルリリース年
7.0 Nougat242016
8.0 Oreo262017
9 Pie282018
10292019
11302020
12 / 12L31 / 322021
13 Tiramisu332022
14 UpsideDownCake342023

Play Store に出すアプリは毎年 targetSdk を最新付近に保つ義務があります (例: 2024 年から targetSdk 34 以上が必須)。

Lifecycle (Activity)

onCreate ─→ onStart ─→ onResume ─→ [実行中] ─→ onPause ─→ onStop ─→ onDestroy
                                       ↑           ↓
                                  onResume ←── onPause (戻ってきた場合)

- onCreate     : 1 回だけ。View 構築・データ取得初期化
- onStart      : 画面が見えるようになった
- onResume     : フォアグラウンドに来た (操作可能)
- onPause      : 別画面が手前に来た (まだ見える)
- onStop       : 完全に裏に行った
- onDestroy    : 破棄される直前 (回転や finish() で発生)

Jetpack ライブラリ群

ライブラリ用途
Jetpack Compose宣言的 UI ツールキット (React に近い感覚)
RoomSQLite ラッパー、コンパイル時チェック付き ORM
ViewModelUI 状態保持、画面回転で破棄されない
LiveData / Flow非同期データのリアクティブ伝搬
Navigation画面遷移の宣言的管理
WorkManagerバックグラウンド非同期ジョブ
HiltDagger ベースの DI フレームワーク
Paging 3無限スクロール/ページング
DataStoreSharedPreferences 後継、型安全

Retrofit による HTTP 呼び出し

data class User(val id: Int, val name: String, val email: String)

interface ApiService {
    @GET("users")
    suspend fun getUsers(): List<User>

    @GET("users/{id}")
    suspend fun getUser(@Path("id") id: Int): User

    @POST("users")
    suspend fun createUser(@Body user: User): User
}

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(MoshiConverterFactory.create())
    .build()

val api = retrofit.create(ApiService::class.java)

// 利用 (Coroutines)
lifecycleScope.launch {
    val users = api.getUsers()
    Log.d("API", users.toString())
}

Play Store 配信フロー

  1. 署名鍵生成: keytool で keystore 作成
  2. リリースビルド: Android Studio → Build → Generate Signed Bundle/APK.aab 出力
  3. Play Console: 25 USD のデベロッパー登録 (1 回のみ)
  4. アプリ作成: ストア掲載情報、スクリーンショット、説明文を準備
  5. 内部/クローズド/オープン/製品版のテスト段階を経て公開
  6. 審査: 通常数時間〜数日 (新規アカウントは長め)

FAQ

Q: Kotlin と Java、どちらで始めるべき?
A: Kotlin 一択です。Google 公式ドキュメント・サンプル・Jetpack ライブラリのすべてが Kotlin 前提で書かれており、コード量も Java の 30〜50% 減ります。

Q: Compose と XML レイアウト、どちらを学ぶべき?
A: 新規プロジェクトは Compose。ただし既存アプリ保守では XML + View もまだ多数現役なので、両方知っておくと有利です。

Q: iOS と同時開発したい (クロスプラットフォーム)
A: Kotlin Multiplatform Mobile (KMM) / Flutter (Dart) / React Native (JS) の 3 択。UI 共有度は Flutter > React Native > KMM、ネイティブ感は逆順です。