Medoly Ver.3.4.0 – 3.5.2

面倒臭いので最近の更新の内容を色々ひっくるめて説明。

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だけの効果だけではないのですが、参考程度に)。

Java

Kotlin

サポートライブラリをAndroidXに置換え

Android開発を行う上で、通常サポートライブラリというものを使います。サポートという名前からイメージしにくいのですが、開発する上ではほぼ必須のライブラリです。これが最近になって、AndroidX (Android 10という意味ではない) という名前に変わって新しくなり、今後はこちらを使うよう勧告されています。旧サポートライブラリはサポート外になっていくので、遅かれ早かれAndroidXに置換える必要があったのですが、このタイミングで一気に置換えてしまいました。

DBの処理にRoomを使用するように変更

Androidの内部的なデータ管理にデータベースを使っているのですが、今までこの入出力にはかなり初期の頃の実装を用いていました。特に問題があったわけではないのですが、実装上のコード量も多く、メンテナンス性も低いので、アプリの拡大に伴って扱いにくくなっていました。現在は、GoogleがリリースするDB入出力ライブラリのRoomというものがあり、これを使うとDBがかなり扱いやすくなるので、このタイミングで置換えることにしました。
今回の変更に伴って、DB構造も見直しています。以前から構想のあったネットワーク再生等も視野に入れて再設計しています。

表面的な変更があまり無い割りに、全体的には大規模な更新なので、アップデートに伴うマイグレーション処理も割と気を遣って作ってたのですが、それでもやっぱり問題が発生する場合もあったようで、ユーザの方には御迷惑をおかけしました。
とりあえず土台は更新したので、これから機能の追加やユーザビリティの向上に向けて開発を進めていこうと思うので、よろしくお願いします。