面倒臭いので最近の更新の内容を色々ひっくるめて説明。
ja:medoly:history [Medoly Manual]
2019-08-15 Ver. 3.4.0
- 一部のソースをKotlinに置換え
- サポートライブラリをAndroidXライブラリに置換え
- タグ読み込みライブラリをバージョンアップ
- いくつかのバグを修正
2019-08-20 Ver. 3.4.1
- 検索画面のバグを修正
- 一部のソースをKotlinに置換え
2019-09-06 Ver. 3.4.2
- 大きなアルバムアートがあると落ちるバグを修正
- いくつかのバグを修正
- 一部のソースをKotlinに置換え
2019-09-12 Ver. 3.4.3
- 一部設定が正しく動作しない問題を修正
- 一部のソースをKotlinに置換え
2019-09-22 Ver. 3.4.4
- Android 10に一部対応
- いくつかのバグを修正
- 一部のソースをKotlinに置換え
2019-11-23 Ver. 3.4.5
- 内部のデータ保存仕様を変更
- 設定インポート/エクスポートのデータ仕様変更
- 音量のデータ構造を変更
- サムネイルが読込まれない問題修正
- いくつかのバグを修正
- 一部のソースをKotlinに置換え
2019-11-26 Ver. 3.4.6
- クラッシュする問題を修正
- パラメータが正常に適用されない問題修正
- 旧設定取り込み時に音量が下がる問題を一部修正
2019-12-21 Ver. 3.5.0
- Kotlinへのコード変換完了
- 内部のデータ保存仕様を変更
- 再生キューのレイアウト調整
- サムネイルが半端に読込まれる問題修正
- エラー画面で再起動に失敗する問題修正
2019-12-23 Ver. 3.5.1
- 再生キューの追加でエラーとなる場合がある問題を修正
- 通知でエラーが発生する問題を修正
2019-12-26 Ver. 3.5.2
- 歌詞やアルバムアートが読み込みに失敗する問題修正
- メディア読込みエラー時の状態管理修正
- Bluetoothがエラーとなる問題修正
概要
この辺りの改造で今まで何をやっていたのかと言うと、主に以下の変更になります。
- コードをJavaからKotlinへの置換え
- サポートライブラリをAndroidXに置換え
- DBの処理にRoomを使用するように変更
基本的には、内部的なコードの置換えと、それに伴って発生・顕在化したバグの修正になります。アプリの保守性を高めることと、今後のバージョンアップを継続的に行っていくための置換えになりますので、機能の追加などはあまり行っていません。
この辺の変更の理由は以下の通りになります。
コードをJavaからKotlinへの置換え
KotlinはAndroid開発で使用される新しいプログラム言語です。従来のコードと互換性があるので、ファイルを段階的にKotlinに置換えながら継続的に更新を行っていました。これによって何が良くなるかと言うと、ざっくり言うと全体的にコードの量が削減されること、プログラムのバグが起きにくくなること、などの効果があります。Kotlinを使った方が開発する上で何かと楽になります。以下は参考情報ですが、今回の更新でコードが44412行から37189行に削減されています(これは単純にJava → Kotlinだけの効果だけではないのですが、参考程度に)。
サポートライブラリをAndroidXに置換え
Android開発を行う上で、通常サポートライブラリというものを使います。サポートという名前からイメージしにくいのですが、開発する上ではほぼ必須のライブラリです。これが最近になって、AndroidX (Android 10という意味ではない) という名前に変わって新しくなり、今後はこちらを使うよう勧告されています。旧サポートライブラリはサポート外になっていくので、遅かれ早かれAndroidXに置換える必要があったのですが、このタイミングで一気に置換えてしまいました。
DBの処理にRoomを使用するように変更
Androidの内部的なデータ管理にデータベースを使っているのですが、今までこの入出力にはかなり初期の頃の実装を用いていました。特に問題があったわけではないのですが、実装上のコード量も多く、メンテナンス性も低いので、アプリの拡大に伴って扱いにくくなっていました。現在は、GoogleがリリースするDB入出力ライブラリのRoomというものがあり、これを使うとDBがかなり扱いやすくなるので、このタイミングで置換えることにしました。
今回の変更に伴って、DB構造も見直しています。以前から構想のあったネットワーク再生等も視野に入れて再設計しています。
表面的な変更があまり無い割りに、全体的には大規模な更新なので、アップデートに伴うマイグレーション処理も割と気を遣って作ってたのですが、それでもやっぱり問題が発生する場合もあったようで、ユーザの方には御迷惑をおかけしました。
とりあえず土台は更新したので、これから機能の追加やユーザビリティの向上に向けて開発を進めていこうと思うので、よろしくお願いします。