Contents
Android Studio(Flamingo)インストールと SDK 設定
Android アプリ開発を始めるには、まず 公式サイトから最新の Android Studio を取得し、SDK のバージョン管理を正しく行う ことが不可欠です。このセクションでは、Flamingo(2023.1 系)以降のインストール手順と、初心者でも迷わない SDK コンポーネントの選び方を解説します。
Android Studio のダウンロードとインストール
公式ページ( https://developer.android.com/studio )から OS に合わせたインストーラを取得し、ウィザードに従って標準設定でインストールしてください。インストール途中で 「Android SDK」および「Android Virtual Device」のチェックが入っていること を必ず確認します。
SDK Manager の起動と基本設定
Android Studio 起動後、Configure > SDK Manager から管理画面を開きます。この画面は API レベル・システムイメージ・ビルドツールの3つのタブ に分かれているので、順に設定していきましょう。
API レベルとシステムイメージの選択
- 対象 API の目安:Compose をフル活用したい場合は API 33(Android 13)以上 が推奨です。最低 SDK は
minSdkVersionで決めますが、実機テストを考慮すると API 21(Android 5.0) が安全です。 - システムイメージのポイント:AVD 作成時に使用する「Google APIs Intel x86 Atom_64 System Image」や「x86_64 Android 12 (S)」など、エミュレータが高速に動作する x86 系統 を選びます。
Show Package Detailsを展開し、必要なバージョンにチェックを入れましょう。
ビルドツールとその他コンポーネントのインストール
- Build‑Tools:現在安定版は 34.0.0(またはそれ以降) です。リリースノートで「34.0.x がまだベータ」などの情報がある場合は、
33.0.2といった最新版を選択してください。 - 必須ツール:Android Emulator、Jetpack Compose Compiler(最新バージョン)、Google Play services のデバッグ用ライブラリも忘れずにインストールします。
環境変数の取り扱い
Flamingo では JDK が内部にバンドルされているため、JAVA_HOME を手動で設定する必要はありません。特別な理由がない限り、デフォルトのままで問題ありません。
Kotlin プロジェクトの作成と基本構文
Kotlin と Jetpack Compose の組み合わせは、宣言的 UI をシンプルに記述できる点で初心者にも扱いやすいです。この章では「Empty Compose Activity」テンプレートを用いたプロジェクト生成手順と、代表的な Kotlin 文法(when 式・型推論)を実際のコードで確認します。
Empty Compose Activity からプロジェクトを作成
File > New > Project を選択し、テンプレート一覧から Empty Compose Activity をクリックします。以下の項目を設定してください。
- 言語:Kotlin(必ず選択)
- 最小 SDK:API 21 以上(Compose の最低要件は API 21)
- パッケージ名:
com.example.<projectName>の形で分かりやすく命名
生成されたディレクトリ構造の概要
プロジェクトが作成されると、主に次のファイルが自動配置されます。
|
1 2 3 4 5 |
app/ └─ src/main/ ├─ java/com/example/<project>/MainActivity.kt ← エントリポイント └─ kotlin/com/example/<project>/ui/theme/Theme.kt ← テーマ定義 |
MainActivity.kt には Compose 用の @Composable 関数がすでに用意されているので、ビルドしてエミュレータが起動すれば「Hello Android!」と表示されます。
Kotlin の基礎文法:when 式・型推論・val/var
Kotlin は 型推論 がデフォルトで働き、when は式として扱えるため戻り値を直接代入できます。以下は Compose 内で実際に利用できるサンプルです。
|
1 2 3 4 5 6 7 8 9 10 11 |
@Composable fun Greeting(name: String) { // 型推論により name の型は自動的に String と判定される val message = when (name.length) { 0 -> "名無しさん" in 1..3 -> "ニックネーム $name" else -> "ようこそ、$name さん" } Text(text = message) } |
valは再代入不可、varは可変です。whenの各ブロックは式として評価され、上記のように 直接変数へ代入 できる点が Java のswitchと大きく異なります。
Jetpack Compose で UI を実装する
Compose の最大の魅力は「コードを書きながら UI が即座にプレビューできる」ことです。この章では、状態管理とレイアウトを組み合わせたシンプルなカウンターアプリを作り、Live Preview の活用方法も併せて紹介します。
Composable 関数と Live Preview
@Composable アノテーションが付いた関数は UI 要素として扱われ、@Preview と組み合わせることで IDE 内に リアルタイムプレビュー が表示されます。
カウンター画面の実装例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
@Composable fun CounterScreen() { var count by remember { mutableStateOf(0) } Column( modifier = Modifier .fillMaxSize() .padding(16.dp), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "クリック数: $count", style = MaterialTheme.typography.headlineMedium) Spacer(modifier = Modifier.height(12.dp)) Button(onClick = { count++ }) { Text("カウントアップ") } } } @Preview(showBackground = true, name = "Counter Preview") @Composable fun CounterScreenPreview() { CounterScreen() } |
remember { mutableStateOf(...) }が ローカルステート を保持し、値が変わるたびに再コンポーズが走ります。Modifierのチェーンでサイズ・余白・配置を直感的に指定できます。
状態管理の基本(remember と mutableStateOf)
Compose では UI が 状態(state) に依存して自動的に再描画されます。remember はコンポジションが破棄されるまで値を保持し、mutableStateOf が変更通知を行う仕組みです。
トグルボタンのデモ
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@Composable fun ToggleButtonDemo() { var isOn by remember { mutableStateOf(false) } Button( onClick = { isOn = !isOn }, colors = ButtonDefaults.buttonColors( containerColor = if (isOn) Color.Green else Color.Gray ) ) { Text(text = if (isOn) "ON" else "OFF") } } |
- ボタンをタップすると
isOnが反転し、色とラベルが同時に更新されます。 - 小規模な UI では ViewModel を使わずともこのパターンだけで十分です。
デバッグ実行・Debug 用 APK の作成
開発中は エミュレータと実機の両方 で動作確認を行い、問題がないか検証します。また、Debug ビルドは署名や最適化が抑制されているため、クラッシュログ取得が容易です。
エミュレータと実機でのテスト手順
AVD(Android Virtual Device)と USB デバッグを有効にした実機の両方でアプリを起動すると、デバイス依存の不具合を早期に捕捉できます。
手順概要
- AVD の作成
Tools > AVD Manager→ 「Create Virtual Device」 → Pixel 5 など好きな端末を選択。-
システムイメージは API 30(Android 11)以上 を推奨し、
x86_64系を選ぶと起動が高速です。 -
実機の準備
- 端末の設定 > 開発者向けオプションで USB デバッグ を有効化。
-
PC と接続後、ターミナルで
adb devicesを実行し、デバイスが一覧に表示されることを確認します。 -
Run
Android Studio のツールバーから対象デバイス(エミュレータまたは実機)を選択し、Run > Run 'app'をクリックすればアプリが起動します。
Debug APK のビルドとインストール手順
Debug 用の APK は 署名キーが自動生成 され、最適化がオフになっているためテストに適しています。
ビルド方法
- Android Studio のメニューで
Build > Build Bundle(s) / APK(s) > Build APK(s)を選択。 - ビルド完了後に表示される「locate」ボタンをクリックすると、
app-debug.apkが保存されたフォルダが開きます。
adb によるインストール例
|
1 2 3 4 5 6 |
# 端末が接続されていることを確認 adb devices # デバッグ APK を上書きインストール adb install -r path/to/app-debug.apk |
-r オプションは既存アプリの上書きを許可します。インストール後に 設定 > アプリ でバージョン名に debug が付いていることを確認すれば完了です。
リリースビルド・AAB 作成・Google Play 公開
本番配布のためには、キーストアによる署名、バージョン管理、サイズ最適化が必須です。以下ではそれらの手順と Google Play Console へのアップロード手順を具体的に示します。
キーストアの生成と Gradle 設定
リリースビルドは 自前のキーストア で署名する必要があります。
|
1 2 3 4 5 6 7 |
# キーストア作成コマンド(例) keytool -genkeypair -v \ -keystore my-release-key.jks \ -alias releaseKey \ -keyalg RSA -keysize 2048 \ -validity 10000 |
生成した my-release-key.jks をプロジェクトの app/ ディレクトリに配置し、build.gradle.kts に次のように記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
android { signingConfigs { release { storeFile = file("my-release-key.jks") storePassword = "*****" // 本番環境では env 変数等で管理 keyAlias = "releaseKey" keyPassword = "*****" } } buildTypes { release { signingConfig = signingConfigs.release isMinifyEnabled = true // R8 によるコード圧縮を有効化 proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } } |
versionCode / versionName の管理
Google Play では 整数の versionCode と 文字列の versionName が必須です。手動でインクリメントしても問題ありませんが、CI 環境の場合は Git タグやブランチ名から自動生成するとミスが減ります。
|
1 2 3 4 5 6 7 8 9 10 |
android { defaultConfig { applicationId = "com.example.counterapp" minSdk = 21 targetSdk = 34 versionCode = 2 // 前回リリースより +1 versionName = "1.0.1" // 任意の文字列 } } |
AAB(Android App Bundle)の生成
AAB は Google Play が各端末に最適化された APK を配信できる形式です。以下のコマンドでリリースビルド用 AAB を作成します。
|
1 2 3 |
./gradlew bundleRelease # 出力先: app/build/outputs/bundle/release/app-release.aab |
bundleRelease タスクは buildTypes.release の設定(署名・R8)を自動的に適用します。生成された .aab ファイルが本番配布の 唯一のアーティファクト になります。
Play Console へのアップロード手順と必須項目
- 新規アプリ作成:Play Console にログインし「All applications」→「Create app」 → アプリ名・言語を入力。
- App Signing の設定:
Release > Setup > App integrityで先ほどのキーストア情報(アップロードキー証明書)を登録し、Google が管理する Play App Signing を有効化します。 - プライバシーポリシー URL:Web に掲載したプライバシーポリシーの URL を「Policy」タブに入力。ユーザーデータ取得がある場合は必須です。
- AAB のアップロード:
Release > Production→ 「Create new release」→ 生成したapp-release.aabをドラッグ&ドロップし、リリースノートを記入します。 - メタ情報の入力:対象年齢・コンテンツレーティング・カテゴリなどを設定し、最後に「Review and roll out」ボタンで審査提出します。
審査は通常 1〜3 日で完了しますが、ポリシー違反があると追加確認が入ります。すべての必須項目が揃っていれば スムーズに公開 が可能です。
ビルドサイズ最適化(R8 / ProGuard)
Release ビルドではデフォルトで R8 が有効になり、未使用クラスやリソースを自動的に除去します。必要に応じて proguard-rules.pro に以下のような例外設定を追加すると安全です。
|
1 2 3 |
# Compose 関連クラスはリフレクションで呼び出されることがあるため保持 -keep class androidx.compose.** { *; } |
テスト自動化の基本(JUnit と Compose UI Test)
CI 環境で ユニットテストと UI テスト を走らせることで、リリース前に機能が期待通り動作するかを検証できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// CounterViewModel の単体テスト例 class CounterViewModelTest { @Test fun increment_increasesCount() { val vm = CounterViewModel() vm.increment() assertEquals(1, vm.count) } } // Compose UI テスト例 @get:Rule val composeTestRule = createComposeRule() @Test fun counterScreen_showsInitialValue() { composeTestRule.setContent { CounterScreen() } composeTestRule.onNodeWithText("クリック数: 0").assertExists() } |
./gradlew testDebugUnitTest と ./gradlew connectedAndroidTest を実行すれば、ローカルでも CI でも同じ結果が得られます。
まとめと次のアクション
本稿では Android Studio Flamingo のインストール → SDK の正しい選択 → Kotlin/Compose プロジェクト作成 → UI 実装 → デバッグビルド → リリース用 AAB 作成・Google Play 公開 までのフローを実践的に解説しました。重要ポイントは次のとおりです。
- SDK Manager で API 33+ と Build‑Tools 34.0.0(または最新)を揃える
- 「Empty Compose Activity」テンプレートで Kotlin/Compose 環境を即構築
when式・型推論など Kotlin の便利機能を UI に組み込む@Composableとrememberだけでシンプルに状態管理し、Live Preview で即確認- エミュレータと実機の両方でデバッグし、Debug APK を
adb installでテスト - キーストアを作成し Gradle に署名設定、
bundleReleaseで AAB を生成 - Play Console の必須項目(App Signing・プライバシーポリシー等)をすべて入力してアップロード
- R8/ProGuard でサイズ最適化し、JUnit と Compose UI Test で品質保証
次のステップとして、この記事で作成したサンプルプロジェクトを GitHub に公開し、CI(例:GitHub Actions)で自動ビルド・テストパイプラインを構築 してみましょう。実際にコードを書き換えながら機能追加を行い、最終的に自分だけのアプリを Google Play にリリースすれば、開発者としての一連の流れが身につきます。
さあ、手元の環境でプロジェクトをクローンし、「Run → Run 'app'」 から実行してみてください。疑問点やエラーが出たら公式ドキュメントと本記事を照らし合わせれば解決への道筋が見えてくるはずです。開発の楽しさを体感しつつ、次世代 Android アプリ制作に挑戦しましょう!