はじめに
Android開発を始めるための環境構築から「Hello World」を画面に出力するまでのチュートリアル記事です。
弊社クリーブウェアでは、4月に入社した新入社員が研修期間を終えて部署に配属されたばかりです。同じように、夏頃に新人を受け入れるという企業さんも多いのではないででしょうか。
今回は、Androidアプリを開発することになった新入社員やその教育係の方に導入資料として使ってもらえるような想定で書いてみました。(実際に私も使います)
前提
検証環境は以下のとおりです。
- macOS Sequoia 15.5(Apple M4チップ)
- Android Studio Narwhal | 2025.1.1
基本的にAndroid開発ではJavaかKotlinというプログラミング言語を使用します。ここでは、Kotlinを使用する前提です。
1. Android Studioのインストール
まずは、Androidアプリ開発に必要な開発ツールをインストールして準備を整えましょう。
Android Studioは、Googleが公式に提供しているAndroidアプリ向けのIDE(統合開発環境)です。コードの編集・デバッグ・エミュレータによる動作確認などがすべて揃っています。
MacにAndroid Studioをインストールする方法は大きく2つあります。
- 方法1: 公式サイトからインストーラをダウンロードしてインストール
- 方法2: Homebrewを使ってインストール
どちらでも構いませんが、公式サイトに分かりやすいチュートリアルがありましたので、以下を参考に方法1でインストールしてみてください。(インストールに時間がかかると思いますが、手順自体は3分程度で読めます)
※ Android Studio のダウンロードページは、日本語ページだと古いバージョンが案内されている場合があるため、最新版が必要な場合は英語に切り替えてください
このような画面が立ち上がればこの章は完了です。
過去バージョンについて
プロジェクトによって特定バージョンを指定する必要がある場合、下記リンクのアーカイブページから過去バージョンのダウンロード可能です。(なぜか日本語ページからだと辿り着けません)
ページ下の方の「I agree to the terms」をクリックすると一覧を見ることができます。
小ネタ
Android Studio バージョン名はNarwhal
(イッカク)やMeerkat
(ミーアキャット)など動物の名前がリリースのコード名になっています。また、アルファベット順に命名されているので、次の動物が何になるか予想するのも面白そうですね。(ちなみに、基本は動物ですがなぜかたまにLadybug
(てんとう虫)のようにバグが紛れ込んでます。)
2. ADBコマンド設定
先ほどインストールしたAndroid Studioアプリが立ち上がっているかもしれませんが、ここでは一旦閉じて、ターミナルを使ってADBをセットアップしていきます。
ADB(Android Debug Bridge)とは、PCとAndroid端末をつないで、端末を操作したりデバッグするためのツールです。
Androidアプリ開発を進めていくと、端末との通信やログ確認、アプリのインストールなどを効率的に行うためにadb
コマンドを使う場面が出てきます。例えば、以下のような用途に使われます:
- 実機のログ出力(
logcat
) - APKのインストール・アンインストール
- 端末のシェルアクセス
- ファイルの送受信(push/pull)
パスを通す
Android Studioをインストールすると一緒に導入されますが、コマンドラインから使うにはパスの設定をする必要があります。
Android Studioに含まれるADBの確認
通常、以下のディレクトリに存在します。この中に adb
実行ファイルが入っています。
~/Library/Android/sdk/platform-tools
毎回このディレクトリに移動してから使うのは面倒なので、パスを通してどこからでも使えるようにします。
vi
コマンドで.zshrc
ファイル(macOS標準のシェル設定ファイル)を開きます。
vi ~/.zshrc
※ vi
はターミナルで使うテキストエディタで、Macでは通常vim
(Vi Improved)として動作しています。vi
の操作方法はここでは割愛するので、分からなければ代わりにopen -e ~/.zshrc
でMac標準のテキストエディタでも編集できます。
ファイルを開いたら、末尾に次の1行を追加します:
export PATH=$PATH:/Users/<ユーザー名>/Library/Android/sdk/platform-tools
保存したら、設定ファイルを再読み込みして反映させます:
source ~/.zshrc
これで adb
コマンドがどこでも使えるようになるはずです。試しに次のコマンドを実行してみてください。
adb version
正しく設定されていれば、次のようにバージョン情報が表示されます。
# 出力例
Android Debug Bridge version 1.0.41
Version 34.0.1-9680071
Installed as /Users/<ユーザー名>/Library/Android/sdk/platform-tools/adb
以上で環境構築は終了です。
3. プロジェクトを立ち上げてみよう
Android Studioを起動して、アプリを作っていきましょう。Android StudioのバージョンによってUIが異なりますが、手順は大体同じだと思います。
プロジェクトを立ち上げる手順:
- 最初に「Welcome to Android Studio」が表示される
- 「New Project」をクリックする
- アプリのテンプレート選択画面になったら、「Empty Activity」を選択する
- アプリの設定画面になったら、次の通りに設定する
- Name: アプリ名。何でもOKですが、ここでは例として
MyTutorial
- Package name: アプリ全体の一意な名前。(Nameを入力すると自動反映されるのでOK)
- Save location: プロジェクトの保存先。デフォルトでOK
- Minimum SDK: アプリが対応するAndroidの最小バージョン。ここでは
API 24
を選んでおけばOK(詳しくは後述) - Build configuration language: アプリのビルド設定に使うファイルの書き方。特に理由がなければ
Kotlin DSL
のままでOK
- Name: アプリ名。何でもOKですが、ここでは例として
「Finish」をクリックすると次のような画面になりMainActivity.kt
が開きます。
プロジェクトの立ち上げはこれで完了です。
Minimum SDKとは
Minimum SDKとは、アプリが動作するためのAndroidの最小バージョン(APIレベル)を指定するものです。
例えば「Android 7.0(API 24)以上の端末じゃないと、このアプリは動きませんよ」と宣言するようなイメージです。それより古い端末ではアプリをインストールすること自体ができません。
Minimum SDKを低く設定すると、古いAndroid端末でもアプリをインストールできるようになるため対応できるユーザーの幅が広がります。一方で、古い端末へ対応するサポートの手間が増えたり、新しい機能がそのまま使えないというデメリットもあります。そのため、プロジェクトでは慎重に決定する必要があります。
APIレベルについての参考:
4. エミュレータを使って確認する
プロジェクトができたら、次は実際にアプリを動かしてみましょう。Android Studioにはエミュレータ(仮想端末)が用意されており、スマホを接続しなくてもアプリを試すことができます。
エミュレータの作成方法
エミュレータがまだ無い場合は、以下の手順で作成します。
Android Studio の右上あたりにある「Device Manager」(もしくはメニューから Tools > Device Manager)を開く
「Create Virtual Device」をクリック
任意の端末(例:Pixel 5)を選択して「Next」
使用する Android バージョン(今回はAPI 31 "S" Android 12.0
)を選び「Finish」。(まだ入ってないバージョンだとここでダウンロードが始まります。)
これでAndroid Studioからエミュレータを利用できるようになりました。画面上部のツールバーから「▶︎(緑の再生ボタン)」をクリックします。Android Studio がアプリをビルドして、エミュレータ上で実行します。次のように「Hello Android!」と表示されればOKです。
ここまでできたら、少しコードを編集して「Hello World」と出力させてみてください。(他のコードの意味がよく分からなくてもできると思います)
書いた後に気づいたのですが、公式に分かりやすいチュートリアルがありました。一応リンクを貼っておきます。
5. Androidスマホと接続する
前章でエミュレータを使ってアプリを起動できましたので、次は実機で試してみましょう。AndroidスマホとUSBケーブルを準備してください。
実機と接続する方法
これまでに何度か出てきましたが、Android Developersには「Codelab」という非常に分かりやすいチュートリアルがいくつも用意されています。Android デバイスを接続の方法も分かりやすいものがありましたので、今回も公式を参考にしてください。(目安: 10分~15分程度)
※ 3章で設定したMinimum SDKレベルがAPI 24(Android 7.0)ですので、準備したAndroidスマホのバージョンには注意してください。端末が古い場合は、プロジェクトを再度作成して対応するMinimum SDKを設定してください。
ADBコマンドで操作する
スマホとPCの接続ができたら、2章で設定したADBを使って実機にアクセスして操作する方法を試してみましょう。
USBでAndroidデバイスを接続した状態で、以下のコマンドを実行します:
adb devices
うまく接続できていれば、次のような出力が表示されます:
List of devices attached
123456abcdef device
もし unauthorized
と表示された場合は、デバイス側で「USBデバッグを許可」するダイアログが出ていないか確認してください。
次に、端末の中に入ってフォルダやファイルを確認してみましょう。
adb shell
これで端末の中にログインしたような状態となり、Linuxのようにls
やcd
コマンドが使えます。試しに、端末の内部ストレージをls
で確認してみます。
ls -l /sdcard/
フォルダやファイルの一覧で表示されたらOKです。exit
と入力すればシェルを抜けられます。
次に、PCから端末にファイルを送ってみます。PCに適当なファイルtest.txt
を作って次のコマンド実行してください。
adb push test.txt /sdcard/Download/
これで/sdcard/Download/
にファイルがコピーされました。先ほどのadb shell
で端末の中に入り、test.txt
があることを確かめてみてください。
よく使うADBコマンド集
コマンド | 説明 |
---|---|
adb devices |
接続されている端末を一覧表示 |
adb logcat |
端末のログをリアルタイム表示 |
adb install |
APKファイルをインストール(例: adb install app.apk ) |
adb uninstall |
アプリをアンインストール(例: adb uninstall com.example.app ) |
adb shell |
端末内でシェル操作(Linuxのように操作) |
adb push |
PCから端末へファイルを送る(例: adb push test.txt /sdcard/Download/ ) |
adb pull |
端末からPCへファイルを取り出す(例: adb pull /sdcard/test.txt ./ ) |
アプリの仕組みを理解する
ここまでで、アプリを作って動かす流れをざっくり理解できたと思います。コードをガッツリ書いてアプリを開発していくには必要な知識がまだまだありますが、最初のステップとしてMainActivity
とアプリのライフサイクルについて最低限の知識をおさえておきましょう。
MainActivity.kt
- アプリが起動したとき最初に実行されるファイルです
-
onCreate()
関数がアプリのエントリポイントになります - Activity と呼ばれる「1つの画面単位」の処理をまとめたクラスです
ちなみに、Kotlinプログラムのエントリポイント(開始点)はmain()
関数です。Androidアプリではこの役割をonCreate()
関数が担っているということです。
fun main() {
println("Hello Kotlin!")
}
ライフサイクルとは
Androidアプリの「画面(Activity)」には、ライフサイクルという考え方があります。「画面がいつ作られ・表示され・終了するのか」のような一連の流れのことです。
-
onCreate()
:アプリが起動したとき -
onStart()
:画面が見え始めるとき -
onResume()
:画面が表示されて操作できるとき -
onPause()
:画面が一時的に隠れるとき -
onStop()
:画面が完全に見えなくなったとき -
onDestroy()
:アプリの画面が完全に終了するとき
これらの関数を使って、起動時や終了時など適切なタイミングで処理を実行します。MainActivity.kt
を次のように書き換えて、エミュレータもしくは実機にてアプリを起動したり一時停止したりしならがログの出力を確認してみてください。ライフサイクルの流れを確認することができます。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
println("onCreate")
}
override fun onStart() {
super.onStart()
println("onStart")
}
override fun onResume() {
super.onResume()
println("onResume")
}
override fun onPause() {
super.onPause()
println("onPause")
}
override fun onStop() {
super.onStop()
println("onStop")
}
override fun onDestroy() {
super.onDestroy()
println("onDestroy")
}
}
ログは猫アイコンの「Logcat」 から見ることができます。
ライフサイクルについての詳細は公式を参照:
最後に
これで開発環境の構築からアプリの起動までできるようになったと思います。ここから発展してもっと実用的なUIを作ってみたい場合は、次にJetpack Composeを学習するのがいいと思います。Jetpack Composeとは、Androidが推奨するUI構築のためのツールキットのことです。以下に公式チュートリアルのリンクを貼っておきます。
今回の記事は以上です。
また別の機会にもう少し発展系のAndroid開発について記事を書いてみようと思います。