Androidアプリ開発を始める 2019年春版

そろそろ春ですね、ということで「今からAndroidアプリ開発をNativeな感じで始めるなら何を見ればいいのか」について、自分の知見の棚卸をかけてまとめてみます。

※書いてたら長くなったのでライブラリ紹介編を分けました

はじめに

本項の目的は下記2つです。

  1. サーバーサイド等の経験がある方が、Androidを始める際に参考となる資料をまとめる
  2. 2019年で当たり前とされる技術と、その1つ前に流行ったものの関連性を整理する

Androidの開発環境を整える

developer.android.com

最初のアプリ開発手順は公式ドキュメントを見ましょう。 AndroidStudioのインストールから始まり、アプリのエミュレータ実行、レイアウト変更まで体験できます。レイアウトがConstraintLayoutなのもポイント高い。

もちろん、周囲にAndroidエンジニアがいた場合にはセットアップを手伝ってもらった方が良いです(最新のSDKバージョンなどを設定してくれるので……)。 なんとなーく、Androidアプリを手元のPCで動かしてみたいなと思ったら、まずこのガイド通りに手を動かしてみることをオススメします。

Androidの基礎知識を押さえる

developer.android.com

Androidの基礎コンポーネントとして、下記の4つが(よく)挙げられます。

  1. Activity
  2. Service
  3. ContentProvider
  4. BroadcastReceiver

2019年現在であれば、Activityをまず抑えれば7〜8割の場面で十分ではないかな、というのが正直なところです。 次点でServiceが挙げられますが、Androidのバージョンに合わせた実装や、使い所の把握などにAndroidの深い知識が求められるので最初はスルーして良いと思っています。

developer.android.com

Activityについては必読。

developer.android.com

合わせて読みたい。

Androidのライフサイクル

Androidアプリを作る中で、避けて通れないのが各種ライフサイクルです。

多くの場合、下記3つを下記順番で触れることになるかと思います。

  1. Activityのライフサイクル
  2. Fragmentのライフサイクル
  3. Applicationのライフサイクル

Activityのライフサイクルはどんなアプリでも必須です。 かつ、画面遷移や切り替えの処理と1対1対応させることができるので、そこそこ理解しやすいかと思います。

Fragment/Applicationのライフサイクルは、本格的な開発を始めてから触るのが良いと思います。 FragmentはActivityだけで構成できないアプリや実開発に入ってから、ApplicationはSDKの導入や記憶領域を作るようになってから確認してください。

Android Developerの抑えどころ

次の3ページは抑えておいて損はないと思います。

  1. Tasks and the back stack  |  Android Developers
  2. Intents and intent filters  |  Android Developers

Androidの画面を作り込んでいるとなかなか意識しないのですが、Androidアプリは利用中に他のアプリを起動するケースを十二分に考慮する必要があります。 その際、必要となる仕組みが「スタック」です。そして各アクティビティ間をつなぐ概念が「インテント」です。 この辺りの仕組みについて、まず第一に押さえておくべきだと言えます。

  1. Input events overview  |  Android Developers

また、Androidを特徴付けていることの一つに(今となっては当たり前ですが)タッチスクリーンに対応していることがあります。 そのためタッチスクリーン上で行われるユーザー操作がAndroidの中ではどのように概念化されているか、このことを押さえておくとアプリの様々な処理のスタート地点が明確になるでしょう。

JavaとKotlin

2019年現在ではKotlinが使える環境であえてJavaを使うべき箇所はほとんどありません。 唯一あるとすれば、ライブラリの開発においてKotlinへの依存を生み出したくない時程度かな、と思います。 こちらは、一般の開発環境で益々Kotlinが採用されるようになれば、無視できる程度のケースになるでしょう。

Kotlinを採用したらば、ぜひ非同期処理にKotlin Coroutinesを検討してみてください。 後述のライブラリでサポートしているケースも増えているため、まず導入して必要な箇所だけ使ってみることをオススメします。

サンプルリポジトリ

多くの場合、Android Developerの各ページからリンクされているリポジトリを確認することをオススメします。 というのも、そのサンプルを見たほうがやりたいことに対して直接回答となる傾向があるためです。

一方で、一歩進んでAndroidアプリの設計などの学習をしたいケースもあると思います。 その際には、下記のリポジトリを確認することをオススメします。

開発設定

Androidアプリでは(iOSも同じですが)開発時にサポートする「最小のOSバージョン」を決める必要があります。 業務として取り組む際には、対象となるユーザー層とリリース時期を鑑みながら調整する必要がある、重要な項目です。

個人開発の場合には、深く考えずに「とりあえず手元にある端末で動く」状態であればなんでも良いと思います。 この時、可能であればAndroid OneやPixelシリーズ(技適の関係でPixel 3かPixel 3XL)を用意したいところです。

www.android.com

ライブラリ編

執筆中。。。 書きました。

dr1009.hatenablog.com