Androidアプリ開発を行うようになってから半年以上経過しました。
最初の頃に比べてると習熟度は上がったと思うのですが、まだまだ知らないことが多くて毎日勉強の日々です。
自分がAndroidアプリ開発初心者といっても、まだ知らないことも多いので初心者だと思いますが、もう少し知っておけばスムーズに開発に入れたのになーと思うところを書いていきたいと思います。
これからAndroidアプリ開発を行う時に参考にしてもらえるとありがたいです。
Android Studio
Androidアプリの開発は通常であればAndroid Studioを使います。
Android StudioはJetBrainsのIntelliJ IDEAをベースにされていますので、IntelliJ IDEAを使っていた人は・・・もうそのまんまです。
IntelliJ IDEAは最初は使いにくいのですが、なれると手放せなくなります。
IntelliJ IDEAに興味がある方はこちらの記事も参考になるかもしれません。
もう3年早く読みたかったIntelliJ IDEAハンズオン
おすすめ動画
DroidKaigi 2018 - Android Studio30分集中超絶技巧100選
Kotlin
Googleが今後AndroidはKotlinファーストと宣言しているので、新規開発時はKotlinのほうがよいと思います。
おそらく現場でもKotlinで実装する機会が多いのではないかと思います。
習熟度はまだ全然低いのですが、わかりやすいところでいうとSealed Class、Smart Cast、拡張関数などを使っているとKotlinっていいなーって思いました。
リアクティブプログラミング
AndroidだとRxJavaが主流だと思います。
Androidではメインスレッドでネットワーク通信は行なえませんし、重たい処理は別スレッドで実行することが好ましいとされています。
そのための手段としてRxJavaが使われることがあると思います。
おそらくですが、この目的のためにRxを使うのはオーバースペックなような気がしますが、Rxが用途に合う場合が多いので比較的使われているように思えます。
ただ学習コストは相当なもので、自分もまだ学習中です。
使うかどうかはわからないにしても、触れておくとよいと思います。
Dependency Injection(DI)
これはAndroidアプリに限ったことではありませんが、プログラム間を疎結合にするためにDIを使うことがあると思います。
自分はサーバー開発を行っていた経験があるのでJavaだとSpringを使っておりました。
Androidでも同様にDIを使ってアプリケーションを作ることが多いとおもいます。
主流はDagger2だと思いますが、最初かなりとっつきにくい印象があります。
いきなりDagger2だと動かす前に疲れちゃいそうなのでDIを体験するだけならKoinのほうが学習コストは少ないかもしれません。
最初よくわからなかったこと
サンプルアプリを作ってみようと思ってAndroid Studioを立ち上げて作り始めたもののよくわからなかったことです。
サポートライブラリ
自分がAndroidアプリ開発を行う時に最初によくわからなかったものです。
今はなんとなくわかるのですが、それでもv7とかv13とか出てくると「う~」ってなります。
幅広いAndroidバージョンで色々なことを扱いやすくするためのライブラリだと思います。違っていたらすみません。
当然全てには当てはまらないのですが今からアプリを作る場合フレームワークの Activity
や Fragment
を継承することはなくて AppComaptActivity
やサポートライブラリのFragment
を継承することが多いと思います。
去年くらいにサポートライブラリがリネームされてJetPack(AndroidX)になりました。
今からアプリを作る場合はAndroidXになると思います。というかAndroidXにしてください。
ConstraintLayout
最初にActivity作るとレイアウト用のXMLが生成されて、このタグになってませんか?
そしてなんかよくわからない警告が出ていたりと、最初はすごい難しそうな印象がありました。
自分は特別なことがない限りConstraintLayoutを使っています。
もしよかったら、こちらも少し参考になるかもしれません。
Android ConstraintLayoutのお勉強
compileSdkVersion
アプリをコンパイルする時に使用するSDKのバージョンです。
これはコンパイル時に影響があります。
例えば、最近Android10(API Level29)がリリースされましたが、Android10で導入された機能を使いたい場合はcompileSdkVersionを29にする必要があります。
新しく作る場合はとりあえず最新でよいと思います。
targetSdkVersion
アプリをどのAPIレベルで動作させるか指定します。
アプリの挙動に影響があります。
compileSdkVersionを上げるより、慎重な動作確認が必要になります。
またGoogle Play Storeが最小targetSdkVersionを指定しているので、満たさない場合はアプリが公開・更新できなかったりします。
新しく作る場合はとりあえず最新でよいと思います。
minSdkVersion
アプリが動作する最低APIレベルです。
例えばminSdkVersionが21だとAndroid5以上にインストールすることができ、4.4以下では動作させることができません。
最近だと21を指定することが多くなってきているのではないかと思います。
Jake神
よくわからなかったことに調べ物をしていると、たまにJake神
という言葉が出てきました。
なんのことかよくわからなかったのですが、Jake Whartonさんという方です。
実際にAndroidアプリを作り始めるとわかるのですが、たしかに神と呼ばれるのがわかると思います。
それほど、この方が手掛けているライブラリがアプリの根幹を担う重要、かつ多岐に渡ります。
情報系
その他、Androidアプリを開発するにあたりフォローしておいたほうがよいブログや情報などです。
こちらは日本語限定ですが、英語も含めると相当あると思います。
ブログなど
実際にアプリを作る時に困ることの解決法が書いてあるので参考にさせていただいています。
- https://medium.com/@star_zeroとstsnブログ
- ライブラリの一歩踏み込んだ使い方など説明されている記事があります。
- Android Dagashi
- 一週間に一度更新されますが、ライブラリのアップデート情報から業界の情報まで知ることができます。
- dex.fm
- Android開発ポッドキャストです。今の所日本の方が多いので日本語で色々聞くことができます。
- Corutineを学ばれる方は#062がすごいわかりやすいです。
- takahirom
- 参考になる記事がたくさんあります。なおTwitterもおすすめです。
- DroidKaigi
- 1年に一度行われるAndroid開発者向けイベント
- DroidKaigiで作られるアプリもすごい参考になります
- 2019年版はマルチモジュール、Corutine、マルチプラットフォームとてんこ盛りなので、2018年版のほうが構成がシンプルだと思います。
- 個人的には2018, 2019の動画・スライドは見たほうがよいと思います
他にもたくさんあります。
Android開発もAndroidXなどのライブラリがかなり充実してきているので、安定したアプリが作りやすくなってきているのではないかと思っています。