0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android開発30日間マスターシリーズ - Day2: Android Studioを使いこなす - 初心者が知るべき基本操作とプロジェクト作成

Last updated at Posted at 2025-09-01

Day2: Android Studioを使いこなす - プロジェクト作成からデバッグまでの完全ガイド

はじめに

前回の環境構築に続き、今回はAndroid Studioの基本操作をマスターしていきます。単なる操作説明にとどまらず、実際の開発で役立つテクニック効率的な作業方法も併せて解説します。

この記事を読み終える頃には、Android Studioを使って基本的なアプリを作成し、デバッグまでできるようになっているはずです。

対象読者

  • Android Studio初心者の方
  • IDEの使い方に不安がある方
  • 効率的な開発フローを学びたい方
  • チームメンバーにAndroid Studioを教える必要がある方

Step 1: Android Studioの起動とプロジェクト作成

Welcome画面の理解

Android Studioを起動すると、Welcome画面が表示されます。ここでは以下のオプションが利用できます:

  • New Project: 新規プロジェクト作成
  • Open: 既存プロジェクトを開く
  • Get from VCS: Git等からプロジェクトをクローン
  • Import: 他の形式からプロジェクトをインポート

プロジェクトテンプレートの選択

「New Project」をクリックすると、テンプレート選択画面が表示されます。

2025年推奨テンプレート

テンプレート 用途 推奨度 説明
Empty Activity 学習・プロトタイプ ⭐⭐⭐⭐⭐ 最小構成、カスタマイズしやすい
Empty Views Activity 従来のView系開発 ⭐⭐⭐ XML Layoutを使用
Basic Activity 実用アプリ ⭐⭐⭐⭐ AppBar、FAB付き
Bottom Navigation タブ形式アプリ ⭐⭐⭐⭐ Instagram型UI

初学者への推奨: 「Empty Activity」を選択してください。これにより、Jetpack Composeを使った最新のAndroid開発を学べます。

プロジェクト設定の詳細解説

必須設定項目

Name: MyFirstApp
Package name: com.yourname.myfirstapp
Save location: ~/AndroidStudioProjects/MyFirstApp
Language: Kotlin
Minimum SDK: API 24 (Android 7.0)
Build configuration language: Kotlin DSL (build.gradle.kts)

各項目の詳細説明

Package name(パッケージ名)

  • アプリの一意識別子(世界で唯一のID)
  • Google Playで公開時に変更不可
  • 逆ドメイン記法を推奨:com.会社名.アプリ名
  • 例:com.google.gmailcom.spotify.music

Minimum SDK の選択指針

API Level Android Version 市場シェア(2025年) 推奨用途
API 24 7.0 ~95% 一般的なアプリ
API 26 8.0 ~90% モダン機能重視
API 30 11.0 ~70% 最新機能活用

💡 プロTips: API 24を選択すると、幅広いユーザーにリーチできます。

Step 2: Android Studioインターフェースの完全理解

メイン画面の構成要素

1. プロジェクトツールウィンドウ(左側)

MyFirstApp/
├── app/
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/com/yourname/myfirstapp/
│   │   │   │   ├── MainActivity.kt
│   │   │   │   └── ui/theme/
│   │   │   │       ├── Color.kt
│   │   │   │       ├── Theme.kt
│   │   │   │       └── Type.kt
│   │   │   ├── res/
│   │   │   │   ├── values/
│   │   │   │   │   ├── strings.xml
│   │   │   │   │   └── themes.xml
│   │   │   │   └── mipmap-*/
│   │   │   │       └── ic_launcher*
│   │   │   └── AndroidManifest.xml
│   │   ├── test/
│   │   └── androidTest/
│   ├── build.gradle.kts
│   └── proguard-rules.pro
├── gradle/
└── build.gradle.kts (Project)

🔍 2025年現在の実際の構造

存在するファイル・フォルダ:

  • MainActivity.kt: メインのアクティビティ
  • ui/theme/: Jetpack Composeテーマ定義(Kotlinファイル)
  • res/values/strings.xml: 文字列リソース
  • res/values/themes.xml: 従来ビューシステム用テーマ
  • res/mipmap-*/: アプリアイコン

存在しないフォルダ(理由も説明):

  • res/layout/: ❌ Jetpack Compose使用のため不要
  • res/drawable/: ❌ リソース未追加のため未作成
  • res/values/colors.xml: ❌ Composeテーマ(Color.kt)で管理
  • xml/: ❌ バックアップルール等未使用のため未作成

なぜ layout/ と drawable/ が存在しないのか?

1. Jetpack Compose への移行

// 従来のXMLレイアウト(res/layout/が必要)
setContentView(R.layout.activity_main)

// 現在のJetpack Compose(レイアウトファイル不要)
setContent {
    MyFirstAppTheme {
        MainScreen()
    }
}

2. 必要時に自動作成される

これらのフォルダは、実際にリソースを追加した時に自動的に作成されます:

# 画像を追加すると drawable/ が自動作成される
app/src/main/res/drawable/
├── ic_star.xml
└── background.jpg

# XMLレイアウトを追加すると layout/ が自動作成される
app/src/main/res/layout/
└── custom_layout.xml

2. エディタエリア(中央)

  • コードエディタ: Kotlin/Java コードの編集
  • デザインエディタ: Jetpack Compose プレビュー
  • レイアウトエディタ: XML レイアウトの視覚的編集

3. ツールウィンドウ(右側・下部)

主要なツールウィンドウ:

  • Logcat: ログ出力とデバッグ情報
  • Build: ビルド結果とエラー情報
  • Run: アプリ実行時の出力
  • Terminal: コマンドライン操作
  • TODO: コード内のTODOコメント一覧

効率的なウィンドウ管理

ショートカットキー(Mac)

操作 ショートカット 説明
プロジェクトビュー表示/非表示 ⌘ + 1 プロジェクト構造の確認
ビルド結果表示 ⌘ + 2 ビルドエラーの確認
実行結果表示 ⌘ + 4 アプリ実行ログの確認
Logcat表示 ⌘ + 6 デバッグログの確認
ターミナル表示 ⌘ + 12 コマンド実行

Step 3: 初めてのアプリ実行とデバッグ

エミュレータでの実行

1. AVDの確認と起動

# コマンドラインからの確認
emulator -list-avds

# 特定のエミュレータを起動
emulator -avd Pixel_4_API_33

2. Android Studio からの実行

  1. ツールバーのデバイス選択ドロップダウンをクリック
  2. 使用するエミュレータまたは実機を選択
  3. **Run ボタン(▶️)**をクリック、または ⌘ + R

実機での実行とデバッグ

実機接続の準備

# ADBデバイス認識確認
adb devices

# 期待される出力例
List of devices attached
RF8M802WD5G    device

USB デバッグが認識されない場合

Android 端末側での確認:

  1. 「開発者向けオプション」が有効か確認
  2. 「USBデバッグ」がオンか確認
  3. 「USB設定」を「ファイル転送/Android Auto」に変更

Mac側での確認:

# USB デバイスの認識確認
system_profiler SPUSBDataType | grep -i android

# ADB の再起動
adb kill-server
adb start-server

ビルドプロセスの理解

Gradle ビルドの仕組み

Android Studioでは、Gradleというビルドシステムが使用されます。

// app/build.gradle.kts の重要な設定
android {
    compileSdk = 34
    
    defaultConfig {
        applicationId = "com.yourname.myfirstapp"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
    }
}

ビルドバリアント

Android開発では、複数のビルド設定を管理できます:

  • debug: 開発用(デバッグ情報付き)
  • release: リリース用(最適化済み)
// カスタムビルドタイプの追加例
buildTypes {
    debug {
        isDebuggable = true
        applicationIdSuffix = ".debug"
    }
    release {
        isMinifyEnabled = false
        proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")
    }
}

Step 4: コードエディタの活用方法

自動補完とコード生成

Live Templates の活用

Android Studio には強力なコード生成機能があります:

ショートカット 生成されるコード 用途
fun + Tab Kotlin関数 関数定義
logd + Tab Log.d() デバッグログ
toast + Tab Toast表示 ユーザー通知

コード自動生成(⌘ + N)

  • Constructor: コンストラクタ生成
  • Getter and Setter: プロパティアクセサ生成
  • Override Methods: オーバーライドメソッド生成

リファクタリング機能

安全なコード変更

操作 ショートカット 説明
名前変更 ⇧ + F6 変数・クラス名の一括変更
メソッド抽出 ⌥ + ⌘ + M 選択コードを関数化
変数抽出 ⌥ + ⌘ + V 式を変数に置換
// リファクタリング前
button.setOnClickListener {
    val intent = Intent(this, SecondActivity::class.java)
    intent.putExtra("message", "Hello")
    startActivity(intent)
}

// メソッド抽出後
button.setOnClickListener { 
    navigateToSecondActivity("Hello") 
}

private fun navigateToSecondActivity(message: String) {
    val intent = Intent(this, SecondActivity::class.java)
    intent.putExtra("message", message)
    startActivity(intent)
}

Step 5: デバッグとログ機能の活用

Logcat の効果的な使用方法

ログレベルの理解

import android.util.Log

class MainActivity : AppCompatActivity() {
    companion object {
        private const val TAG = "MainActivity"
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // ログレベル別の使い分け
        Log.v(TAG, "Verbose: 詳細な情報")
        Log.d(TAG, "Debug: デバッグ情報")
        Log.i(TAG, "Info: 一般的な情報")
        Log.w(TAG, "Warning: 警告")
        Log.e(TAG, "Error: エラー情報")
    }
}

Logcat フィルターの活用

タグによるフィルタリング:

tag:MainActivity

ログレベルによるフィルタリング:

  • Error以上: エラーとクラッシュのみ表示
  • Warn以上: 警告以上を表示
  • Info以上: 重要な情報以上を表示

正規表現フィルター:

.*MainActivity.*onCreate.*

ブレークポイントとステップ実行

ブレークポイントの設定

  1. コードの行番号左側をクリック
  2. 赤い点が表示されれば設定完了
  3. デバッグ実行(🐛ボタン)でブレークポイントで停止

ステップ実行の種類

操作 ショートカット 説明
Step Over F8 次の行へ(関数内に入らない)
Step Into F7 関数内に入る
Step Out ⇧ + F8 現在の関数から出る
Resume ⌘ + ⌥ + R 実行再開

実践的なデバッグ例

class MainActivity : AppCompatActivity() {
    private var counter = 0
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyFirstAppTheme {
                CounterScreen()
            }
        }
    }
    
    @Composable
    fun CounterScreen() {
        var count by remember { mutableStateOf(0) }
        
        Column(
            modifier = Modifier.fillMaxSize(),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Text(
                text = "カウント: $count",
                style = MaterialTheme.typography.headlineMedium
            )
            
            Spacer(modifier = Modifier.height(16.dp))
            
            Button(
                onClick = { 
                    count++ 
                    Log.d("CounterScreen", "カウントが更新されました: $count")
                }
            ) {
                Text("カウントアップ")
            }
        }
    }
}

Step 6: プロジェクト構造の深い理解

app/src/main/ 以下の重要ファイル

AndroidManifest.xml

アプリの設定ファイルです。以下の重要な設定が含まれます:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 権限の宣言 -->
    <uses-permission android:name="android.permission.INTERNET" />
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyFirstApp">
        
        <!-- メインアクティビティの宣言 -->
        <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.kts (app level)

アプリレベルのビルド設定:

dependencies {
    implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
    implementation("androidx.activity:activity-compose:1.8.2")
    implementation("androidx.compose.ui:ui:1.5.8")
    implementation("androidx.compose.ui:ui-tooling-preview:1.5.8")
    implementation("androidx.compose.material3:material3:1.2.0")
    
    // テスト用ライブラリ
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

リソース管理の最適化

strings.xml での多言語対応準備

<!-- res/values/strings.xml -->
<resources>
    <string name="app_name">My First App</string>
    <string name="counter_label">カウント: %1$d</string>
    <string name="increment_button">カウントアップ</string>
</resources>

colors.xml でのデザインシステム構築

注意: Empty Activity テンプレートでは colors.xml は作成されません。Jetpack Composeでは、色の定義は ui/theme/Color.kt で行います:

// app/src/main/java/com/yourname/myfirstapp/ui/theme/Color.kt
package com.yourname.myfirstapp.ui.theme

import androidx.compose.ui.graphics.Color

val Purple80 = Color(0xFFD0BCFF)
val PurpleGrey80 = Color(0xFFCCC2DC)
val Pink80 = Color(0xFFEFB8C8)

val Purple40 = Color(0xFF6650a4)
val PurpleGrey40 = Color(0xFF625b71)
val Pink40 = Color(0xFF7D5260)

従来のXMLベースの色定義が必要な場合は、手動で作成します:

<!-- 手動作成: res/values/colors.xml -->
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#FF6200EE</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
</resources>

Step 7: 効率的な開発ワークフロー

ホットリロードとライブプレビュー

Jetpack Compose プレビュー

@Composable
fun CounterScreen() {
    // ... コンポーネントの実装
}

@Preview(showBackground = true)
@Composable
fun CounterScreenPreview() {
    MyFirstAppTheme {
        CounterScreen()
    }
}

プレビューの活用方法

  1. @Preview アノテーションを追加
  2. エディタ右側の「Split」モードを選択
  3. リアルタイムでUIの変更を確認

ビルド時間の最適化

gradle.properties の最適化設定

# 並列実行の有効化
org.gradle.parallel=true
org.gradle.configureondemand=true

# メモリ設定
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m

# Kotlin インクリメンタルコンパイル
kotlin.incremental=true
kotlin.incremental.useClasspathSnapshot=true

# Android Gradle Plugin キャッシュ
android.enableR8.fullMode=true
android.useAndroidX=true

Step 8: よくある問題とトラブルシューティング

🚨 ビルドエラーの解決方法

Gradle Sync エラー

エラー例: "Failed to resolve: androidx.core:core-ktx:1.9.0"

解決手順:

# 1. キャッシュクリア
./gradlew clean

# 2. Gradle Wrapper 更新
./gradlew wrapper --gradle-version=8.2

# 3. Android Studio側でのクリア
# File → Invalidate Caches → Invalidate and Restart

メモリ不足エラー

エラー例: "Out of memory error"

解決方法:

// gradle.properties に追加
org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m

🚨 エミュレータの問題

起動が遅い場合

# コールドブート無効化(高速化)
emulator -avd Pixel_4_API_33 -no-boot-anim -no-audio

# GPU加速の確認
emulator -avd Pixel_4_API_33 -gpu host

Apple Silicon での x86 エミュレータ問題

問題: Intel用エミュレータが異常に遅い
解決: ARM64 システムイメージの使用

  1. SDK Manager → System Images
  2. 「arm64-v8a」イメージを選択
  3. 新しいAVDを作成

Step 9: プロダクティビティ向上のTips

便利なショートカット

コード編集

操作 ショートカット 説明
行の複製 ⌘ + D 現在行をコピー
行の削除 ⌘ + ⌫ 現在行を削除
コメント化 ⌘ + / 行コメントの切り替え
自動インポート ⌥ + ⏎ import文の自動追加
クイックフィックス ⌥ + ⏎ エラー修正候補表示

ナビゲーション

操作 ショートカット 説明
クラス検索 ⌘ + O クラス名で検索
ファイル検索 ⌘ + ⇧ + O ファイル名で検索
全体検索 ⌘ + ⇧ + F プロジェクト全体を検索
定義にジャンプ ⌘ + B 関数・変数の定義場所へ
戻る ⌘ + ⌥ + ← 前の場所に戻る

プラグインの活用

推奨プラグイン

  1. Kotlin Multiplatform Mobile: KMM開発
  2. Rainbow Brackets: ブラケットの色分け
  3. GitToolBox: Git操作の強化
  4. Key Promoter X: ショートカット学習支援

プラグインのインストール方法

  1. 「Preferences」→「Plugins」
  2. 「Marketplace」タブで検索
  3. 「Install」をクリック

Step 10: 実践プロジェクト - Todo アプリの作成

理解を深めるため、簡単なTodoアプリを作成してみましょう。

UI の実装

@Composable
fun TodoScreen() {
    var todoText by remember { mutableStateOf("") }
    var todoList by remember { mutableStateOf(listOf<String>()) }
    
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp)
    ) {
        OutlinedTextField(
            value = todoText,
            onValueChange = { todoText = it },
            label = { Text("新しいタスク") },
            modifier = Modifier.fillMaxWidth()
        )
        
        Spacer(modifier = Modifier.height(8.dp))
        
        Button(
            onClick = {
                if (todoText.isNotBlank()) {
                    todoList = todoList + todoText
                    todoText = ""
                    Log.d("TodoApp", "新しいタスクが追加されました: ${todoList.last()}")
                }
            },
            modifier = Modifier.fillMaxWidth()
        ) {
            Text("追加")
        }
        
        Spacer(modifier = Modifier.height(16.dp))
        
        LazyColumn {
            items(todoList) { todo ->
                TodoItem(
                    text = todo,
                    onDelete = { 
                        todoList = todoList - todo
                        Log.d("TodoApp", "タスクが削除されました: $todo")
                    }
                )
            }
        }
    }
}

@Composable
fun TodoItem(text: String, onDelete: () -> Unit) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .padding(vertical = 4.dp),
        elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
    ) {
        Row(
            modifier = Modifier.padding(16.dp),
            horizontalArrangement = Arrangement.SpaceBetween,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text(
                text = text,
                modifier = Modifier.weight(1f)
            )
            IconButton(onClick = onDelete) {
                Icon(
                    imageVector = Icons.Default.Delete,
                    contentDescription = "削除"
                )
            }
        }
    }
}

デバッグ実践

  1. ブレークポイント設定: todoList = todoList + todoText の行に設定
  2. 変数監視: todoTexttodoList の値を監視
  3. ログ確認: Logcat でログ出力を確認

パフォーマンス監視とプロファイリング

Android Studio Profiler の活用

CPU使用率の監視

  1. 「View」→「Tool Windows」→「Profiler」
  2. アプリを実行中の状態で接続
  3. CPUプロファイラーで処理の重い箇所を特定

メモリリークの検出

// メモリリークを防ぐ正しい書き方
class MainActivity : AppCompatActivity() {
    private var binding: ActivityMainBinding? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding?.root)
    }
    
    override fun onDestroy() {
        super.onDestroy()
        binding = null // メモリリークを防ぐ
    }
}

開発効率を上げる追加設定

エディタのカスタマイズ

コードスタイルの統一

  1. 「Preferences」→「Editor」→「Code Style」→「Kotlin」
  2. 「Set from...」→「Predefined Style」→「Kotlin style guide」

フォントとテーマの設定

推奨フォント: JetBrains Mono, Fira Code
推奨テーマ: Darcula, IntelliJ Light

Git 連携の設定

.gitignore の設定

# Android Studio
.gradle/
.idea/
*.iml
local.properties

# ビルド成果物
/build/
/app/build/

# 署名ファイル
*.jks
*.keystore

# OS固有
.DS_Store
Thumbs.db

まとめ

Android Studioの基本操作から実践的なデバッグ技術まで、幅広くカバーしました。重要なポイントを振り返ります:

プロジェクト作成: テンプレート選択とMinimum SDKの適切な設定
インターフェース理解: 各ツールウィンドウの役割と効率的な使い方
デバッグスキル: Logcat、ブレークポイント、プロファイラーの活用
効率的な開発: ショートカット、Live Templates、リファクタリング
実践経験: Todoアプリでの具体的な実装

これらのスキルを身につけることで、Android開発の生産性が大幅に向上します。次回は、Kotlinの基礎文法と、Android開発で特に重要な概念について詳しく解説していきます。

次回予告

Day3: Kotlin基礎からAndroid開発まで では、以下の内容を予定しています:

  • Kotlin文法の基礎(null安全、拡張関数、コルーチン)
  • Android開発でよく使用するKotlinパターン
  • Jetpack Composeでの状態管理
  • 実践的なアプリ開発演習

練習課題

今回学んだ内容を定着させるため、以下の課題に挑戦してみてください:

  1. 基本操作: 新しいプロジェクトを作成し、エミュレータで実行する
  2. UI実装: ボタンを押すとテキストが変わるアプリを作る
  3. デバッグ: ブレークポイントを設定してステップ実行を体験する
  4. ログ活用: 様々なログレベルでメッセージを出力し、Logcatで確認する

この記事が役に立ったらいいね👍やストックをお願いします。

参考リンク

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?