「DroidKaigi 2016」 と 「関モバ #11」 で発表しました
「DroidKaigi 2016」 にて 『5 年続く 「はてなブックマーク」 アプリを継続開発する技術』 というタイトルで、また 「関モバ #11」 で 『ComponentsRecyclerAdapter — RecyclerView で複数の view type や複雑なデータ構造を扱う』 というタイトルで、それぞれ発表しました。
DroidKaigi 2016
5 年前に最初のリリースが行われたアプリを継続的に開発しており、そのための取り組みを共有しました。
要点をまとめると以下のようになります。
- テストは Testing Support Library に頼っている。
- CI については、社内の Jenkins サーバー上でテストの実行やリリースパッケージ作成の自動化を行っている。
- 各種タスクを Gradle タスクとして定義し、タスクの実行をシェルスクリプトで記述。
- 最近は Jenkins Workflow plugin への移行を進めている。 (Groovy での DSL が書きやすいとか、リリースパッケージのアップロード処理の前に人の確認を挟みやすいなどの利点のため。)
- Preview 版 (production flavor の
preview
) を定義して、開発中の機能を preview 版で有効に。- 長い期間の開発でも他ブランチとのコンフリクトをしづらく & チーム内配布で確認しやすく。
- Annotations Support Library を活用。
- 必要に応じてライブラリ的なものを作る。
- 例えば 「関モバ #11」 で発表した
ComponentsRecyclerAdapter
など。
- 例えば 「関モバ #11」 で発表した
Preview 版について補足
開発中の機能を Preview 版 (product flavor の preview
) でのみ有効にする、という話がスライド中に出てきます。 これについて、具体的な方法がわからないということで質問いただきました。 (src/preview/java
下に preview
版専用のソースコードを書くとすると面倒くさすぎるのでは? という。)
具体的には、ソースコードは全て src/main/java
下に置いて、
build.gradle
ファイル内でbuildConfigField
を使って preview 版専用の機能を有効にするかどうかの値を持ったフィールドをBuildConfig
に生成し、- Java のコード中で
BuildConfig
のフィールドを見てif
で条件分岐して機能を有効にしたり無効にしたりする
という感じです。
関西モバイルアプリ研究会 #11
ComponentsRecyclerAdapter を用いて複数の view type や複雑なデータ構造を扱う
複数の item view や複数のデータセットによる複雑なデータ構造を扱いやすくする RecyclerView.Adapter
のサブクラス ComponentsRecyclerAdapter
の紹介です。