Hello Worldのコードに何が書いてあるのか?最小限のコードを解説【Androidアプリ開発】

Androidアプリ開発入門

プロジェクトの最小限のコード

Android Studioでプロジェクトを新規作成をすると最初からコードが入ってますよね。これがアプリを動かす最小限のコードなんですが、何が書いてあるのかを解説していきます。

下記が最初から入ってるコードになります。エミュレーターを起動すると『Hello World』が表示されます。

package com.example.samplemyapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

package宣言とアプリケーションID

まず1行目のpackage宣言の所から。これはアプリケーションIDと呼ばれるものでアプリのパッケージ名が入ります。

package com.example.samplemyapp

プロジェクトを新規作成した時にパッケージ名を入力するところがありますがそれが記述されています。(下図②の部分)

新規プロジェクトの作成 プロジェクトの構成

アプリケーションIDは全世界の他のアプリと被らない名前を付ける必要があってドメイン名を逆から読んだもの+アプリ名が入ります。例えば『abc.example.ne.jp』のドメインで、アプリ名が『MyApp』だった場合は『jp.ne.example.abc.myapp』となります。(実際にはドットは付けません)

ドメインはネット上で使われる一意の名前で同じアドレスは存在しないのでドメインを使うのが一般的です。Android Studioのデフォルトで入ってる『com.example』と言うのは本当は宜しくなくて公開する際はドメインを取得する必要があります。持っていない場合はブログサービスでドメインを提供してるので無料のサービスを使うのも手です。

これはアプリを公開してからは変更出来ないものなります。公開前であればAndroid StudioにRefactorという変更ツールがあるので変更可能です。因みに手動でこの部分だけを変更しても無意味です。他のファイルでも記述されてる部分があるのでそちらも全部修正が必要になります。

ドメインなら何でも良いのかというとそうでもありません。下記の様に命名規則があります。

  • 2つ以上のセグメント(1つ以上のドット)が必要
  • 各セグメントは文字で始まる必要がある
  • 使用できる文字は英数字とアンダースコアのみ(a~z、A~Z、0~9、_)
myappセグメントが1つしかないので×
com.example.1app数字から始まるセグメントがあるので×
com.a-example.myappハイフン記号が入ってるので×

import宣言

クラスを使うにはパッケージをインポートすると楽になります。[import パッケージ名.クラス名]の完全修飾名か[import androidx.*]で記述します。後者はAndroidXのクラスを全てインポートしてます。

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

この宣言は必須ではありません。宣言をしない場合はクラスとそのメソッドを呼び出す時に記述すれば良いですが、コードが見ずらくなったり、よく使うものはいちいち面倒なので最初に書いてしまった方が良いと思います。Android Studioでは自動でimportを入れてくれるAuto Import機能があります。手動でも補完機能があるのでリファレンスから調べてコピペなんて事はしなくて大丈夫です。import文の入力方法は下記の記事へどうぞ。

画面を実装するクラスの継承

下記のコードに何が書いてあるかはActivityとライフサイクルを理解する必要があります。これは別の記事で詳しく書いてるのでそれ以外の所を解説していきます。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

ActivityはボタンやテキストなどのUIを表示出来る画面を実装するクラスです。AppCompatActivity()はアクションバーを搭載した画面になります。アクションバーは下図の様なものになります。このバーにメニューなど付けるとそれっぽくなります。このアクションバーは下位互換が備わっています。アクションバーが要らない場合はActivityクラスやFragmentクラス(これも画面を形成するもの)を使います。

Androidアプリのアクションバー

何かしらの画面がないと始まらないと言うことでAppCompatActivityクラスを継承したサブクラスを宣言しています。クラスを使うにはサブクラスとして使う必要があります。継承したサブクラスは親クラスの機能を受け継いでるのでその機能を全て使う事ができます。

class MainActivity : AppCompatActivity() {
}
//class サブクラス名 : 親クラス(引数) の構文になります。

メソッドをオーバーライド

次にActivityクラスのonCreate()メソッドをオーバーライドしています。このメソッドはActivityクラスを使う為に必ず実装しなくてはいけないものになります。この部分は定型文だと思って下さい。

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

Kotlinはデフォルトではクラスとメソッドはオーバーライド出来ないようになってるのでoverrideの宣言が必要になります。そのあとのfunは関数定義になります。オーバーライドとは親クラスで定義されているメソッドをサブクラスで使用するときにパラメーターを再定義する事を指しますが、onCreate()はコールバックメソッドと呼ばれ、特定の動作があった時に呼ばれるメソッドなので特定の動作が起こった時に行いたい処理を書きます。これは画面が生成されるときに一度だけ呼ばれるコールバックメソッドです。

下記のコードは親クラスのメソッドを呼び出しています。superはサブクラスから親クラスの変数やメソッドを参照したい時に使います。この呼び出しは必ず定義する必要があります。

super.onCreate(savedInstanceState)

レイアウトファイルの読み込み

onCreate()は画面が生成される時に呼ばれるメソッドなので、レイアウトファイルもここで呼び出す様にします。レイアウトファイルはUIを定義するファイルで[res/layout/]にあるactivity_main.XMLです。setContentView()メソッドはレイアウトファイルをActivityにセットします。

setContentView(R.layout.activity_main)