あなたがこれまでJavaでサーバーサイドや業務アプリケーションを開発してきたのであれば、「Androidアプリ開発」は新しい領域に感じられるかもしれません。ただ、実際には多くの共通点があり、理解しやすい部分も少なくありません。
Androidアプリも、Java(またはKotlin)で記述されたクラスがメモリ上で動作し、ユーザーからの入力に応じて処理を行うという意味では、基本的な構造はこれまでと変わりません。ただし、大きな違いがいくつかあります。それらの特徴を知っておくことで、学習のハードルが大きく下がります。
Androidアプリ開発の主な特徴
- イベント駆動型である
- Androidアプリは、ユーザーのタップやスワイプ、OSからの通知などの「イベント」によって動きます。
main()
メソッドは存在せず、Activityなどの「画面単位のクラス」がエントリポイントになります。
- OSとの連携が強く求められる
- 画面のライフサイクル(生成→停止→再開→破棄など)をOSが管理しており、アプリ側はそのイベントに応じて正しく動作しなければなりません。
- メモリ管理、バッテリー使用、バックグラウンド実行の制限など、モバイル特有の制約があります。
- UIはXMLで定義され、Javaコードと連携する
- ボタンやテキスト表示などのUI要素は、基本的にXMLファイルで定義され、それをJavaコード側で制御します。
- WebアプリのHTML+JSに近い感覚とも言えます。
- アプリは”アクティビティ”や”フラグメント”を組み合わせて構築される
- アクティビティ(
Activity
)は、1画面を表すクラスです。 - より柔軟な画面構成が必要な場合は、フラグメント(
Fragment
)を使ってActivity内に複数の画面要素を埋め込むこともあります。
- アクティビティ(
- アプリはリソース指向である
- 画像、文字列、色、レイアウトといった各種リソースが明確に分離され、OSが自動で画面サイズや言語に応じて切り替えてくれます。
Androidアプリ開発の流れ(ざっくり)
- Android Studioで新規プロジェクトを作成
- 画面(Activity)のレイアウトをXMLで作る
- JavaコードでボタンなどのUIとロジックをつなげる
- アプリをビルドして、エミュレータや実機で動作確認
- 完成後、Google Playでリリース
これから学ぶこと
- 例えば、
Activity
やIntent
という仕組みは、Javaアプリには存在しなかった概念ですが、その仕組みさえ掴めば、ほかの処理はおおむね馴染みのあるコードで書けます。 - また、最近のAndroid開発では「Jetpack」と呼ばれる公式ライブラリ群が標準となっており、これを活用することでコードの品質や保守性が高まります。