本セッションの登壇者
セッション動画(YouTubeチャンネル登録もお願いします。)
有山圭二です。TechFeedではAndroidのエキスパートを担当しています。TechFeedとGithubのIDはどちらも@keijiです。よろしければフォローしてみてください。Twitterはやっていないのでよろしくお願いします。
セッションのコンセプトはAndroidの上級テクニックですが、Androidで上級テクニックというと非常に細分化されたものになります。今回はもう少しプリミティブな話題として、「Androidアプリ開発の移り変わりについて行く方法」と題してお話をします。
Androidの変遷-どうしてこんなに早いのか
僕は2007年の11月からAndroidアプリ開発を始めました。そのころの環境はご覧のとおりです。基本的にAndroidがアップデートするタイミングでAPIが変わる、APIレベルと連動したのどかな状況でした。

それが、今ではこうです。IDEもプログラミング言語も変わりました。さらに、Android Jetpackと呼ばれるライブラリ群が登場しています。

Androidアプリ開発のパラダイムシフトとして、Android Studioの標準ビルドシステムにGradleが採用されました。これによって、外部ライブラリの利用が非常に簡単になりました。

OkHttpを使う場合を考えてみましょう。Gradleの機能を使用しない場合、OkHttpの .jarファイルを手に入れて、libsディレクトリにコピーする必要があります。しかし、OkHttpはokioというライブラリに依存しています。OkHttpを使うには、okioの.jarファイルも取ってきて、libsディレクトリに入れる必要があります。これはまだ良いほうで、ライブラリによっては複数の別のライブラリに依存している、また、依存しているライブラリがまた別のライブラリに依存していることもあります。

この手順は、Gradleの機能を使うとこのように書けます。使いたいライブラリとバージョンを指定すれば、あとはGradleが必要な.jarファイルをダウンロードします。依存するライブラリを指定する必要はありません。ビルドシステムの標準化により、Androidはプラットフォームがバージョンアップしなくても、外部ライブラリで開発効率を高めたり、バージョン間の違いを埋めたりできるようになりました。また、外部ライブラリがあれば、不具合があってもプラットフォームの不具合と比べれば修正は比較的簡単です。

Android Jetpack - 公式ライブラリというには○○すぎる
Android Jetpackは公式の外部ライブラリ集です。もともとは、Androidのバージョン間の差分を埋めるためのものでしたが、今ではさまざまな役割に細分化されています。

さらに、細分化されたそれぞれのライブラリが個々にバージョンアップを続けています。このAndroid Jetpackが今ではAndroidアプリ開発の移り変わりを早める要因となっています。

Androidアプリ開発の移り変わりについていく方法 − 面でとらえて取捨選択を
それではいよいよ、Androidアプリ開発の移り変わりについて行くためのおすすめの方法です。
まずはじめに、すべてのライブラリの最新バージョンを追うことはあきらめてください。重要なのは、各ライブラリの領域を「面」としてとらえることです。各ライブラリの一部または全部の機能それぞれを、自分なりに分類してみましょう。この分類は、誰が見ても正しいというものである必要はありません。

自分が見て「筋が通っているな」と思えればよくて、さらに言えば、時間が経つにつれ、分類を変えることもあり得ます。
分類した後は、定期的にキャッチアップの時間を作ります。キャッチアップまでの期間は人によってさまざまです。2週間ごとであったり、1カ月ごとであったり、自分のペースに合った期間を探しましょう。普段のニュースでアップデートや新機能の情報を得ても、すぐに調べる必要はありません。Androidアプリ開発の移り変わりは早く、変化に即応しようとすると気力/体力がもちません。キャッチアップの間隔を定めることで、落ち着いて長くAndroidアプリ開発に取り組めるようになります。

キャッチアップのタイミングが来たら、キャッチアップしたい技術を選びます。選ぶのは1つか2つ。個人的には3つは多いと感じます。

次に、選んだ技術を使って既存のアプリを改修します。まったく新しいアプリを作ってもよいのですが、そのときはなるべく開発負荷の低いアプリを作るようにしてください。また、改修した既存のアプリをリリースすることは目標ではありません。選択した技術やライブラリが既存のアプリにフィットするか、フィットしないとしたらどのようにすればよいか、試行錯誤するのが目的です。

また、技術やライブラリを使った枝葉の部分に時間をとられないように意識するのも重要です。

さらに、ある程度試してみてうまくいかないようであれば、あきらめるということも選択肢に含めてください。

ご清聴ありがとうございました。