アプリはどうやって動いているのか

1. 起動エントリポイントから見る

Android アプリがどのように起動するかを理解するには、まず全体設定ファイルである AndroidManifest.xml から見る必要があります。

AndroidManifest.xml を開いて、以下のコードを探してください:

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>Code language: HTML, XML (xml)

このコードには3つの重要な意味があります:

  1. Activity の登録:MainActivity は AndroidManifest.xml に登録されていないと、システムに認識されず使用できません。
  2. メインエントリの宣言:<action android:name="android.intent.action.MAIN" /> は、これがアプリのメインアクティビティであることを示します。
  3. ランチャーエントリの宣言:<category android:name="android.intent.category.LAUNCHER" /> は、ホーム画面のアプリアイコンをタップしたときに最初に起動されるアクティビティであることを示します。

MAIN と LAUNCHER の両方を持つアクティビティだけが、アプリの起動エントリとして機能します。


2. Activity(アクティビティ)とは

Activity は Android アプリの顔です。画面に表示されているものはすべて、Activity の中で動いています。

app/java/ ディレクトリにある MainActivity.java を開くと、以下のようになっています:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}Code language: JavaScript (javascript)

順を追って解説します:

コード説明
extends AppCompatActivityAppCompatActivity を継承。Android 2.1 まで下位互換性のある Activity です
すべての Activity は Activity(またはそのサブクラス)を継承する必要がありますAndroid コンポーネントの必須要件です
onCreate()Activity が作成されたときに自動的に実行されるライフサイクルメソッド
setContentView(R.layout.activity_main)現在の Activity にレイアウトファイルを読み込んでバインドする

3. ロジックとビューの分離(MVC に類似)

Android はロジックとビューの分離という設計思想を採用しており、MVC パターンに似ています:

  • ロジック:java/ ディレクトリの Activity クラスに記述
  • ビュー:res/layout/ ディレクトリの XML レイアウトファイルに記述

setContentView(R.layout.activity_main) はロジックとビューをつなぐ架け橋です。activity_main.xml というレイアウトを MainActivity に「差し込んで」います。


4. レイアウトファイルの解説

レイアウトファイルは res/layout/activity_main.xml にあります。

Android Studio には2つの編集モードがあります:

モード説明
Designドラッグ&ドロップの視覚的編集画面(WYSIWYG)
TextXML コード編集画面

activity_main.xml を開くと、中身は以下のようになっています:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="こんにちはFoxdevelop" />Code language: HTML, XML (xml)
  • TextView は Android の基本ウィジェットで、テキストを表示するために使われます
  • android:text 属性でウィジェットに表示される文字列を指定します

画面上の「Hello World」(またはカスタムテキスト)は、Java コードではなくここで定義されています。


5. 起動フロー全体のまとめ

起動プロセス全体を順に追うと、以下のようになります:

ユーザーがホーム画面のアプリアイコンをタップ
        ↓
システムが AndroidManifest.xml を読み込む
        ↓
MAIN + LAUNCHER を持つ Activity(MainActivity)を見つける
        ↓
MainActivity のインスタンスを生成
        ↓
onCreate() ライフサイクルメソッドを実行
        ↓
setContentView() が activity_main.xml レイアウトを読み込む
        ↓
レイアウト内の TextView がテキストを表示
        ↓
画面に「Hello World」が表示されるCode language: CSS (css)

一言でまとめると:

設定ファイルがエントリを宣言 → メインアクティビティが生成 → onCreate が実行 → レイアウトファイルを読み込み → 画面に描画


6. 開発の小技

  • エミュレーターを毎回閉じる必要はありません:実行後、アプリを停止したい場合はツールバーの 🔴 Stop をクリックするだけです。電源を切ったりエミュレーターを終了したりする必要はありません。
  • コードを変更したら、▶ Run をクリックして再デプロイするだけで変更が反映されます。

7. まとめ

レイヤー対応ファイル役割
設定層AndroidManifest.xmlエントリアクティビティを宣言
ロジック層MainActivity.javaアクティビティの動作を制御
ビュー層activity_main.xml画面の内容を定義

設定ファイル → メインアクティビティ → onCreate() メソッド → ビューレイアウトを読み込み → 画面表示

アプリはどうやって動いているのか

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です