UI刷新、内部処理の近代化、そして数々の難敵(バグ)の修正

 いつもご利用いただきありがとうございます。 今回は、ボトムナビゲーションの導入という大きなUI変更から、通信・DB・スレッドの全面リファクタリング、そして特定の条件下で発生していたシビアなクラッシュや動作低下の修正まで、いろいろアップデートを行いました。

変更点が多いため、いくつかカテゴリに分けて記録を残しておきます。

1. 重要な不具合修正(クラッシュ・動作低下の解決)

ユーザーの皆様の快適な利用に直結する、いくつかの重要なバグを退治しました。

  • スワイプ時のメモリ・動作低下の修正: 記事表示時にスワイプを繰り返すと、時間の経過とともにアプリが徐々に重くなり、最終的に強制終了してしまう問題を修正しました。

  • 特定端末での初期化タイミングの修正: 一部の端末で、バックグラウンドスレッド側の初期化処理が想定外のタイミングで先走ってしまい、挙動が不安定になる問題に対処しました。

  • 特定画面でのクラッシュ修正: 「設定画面に移動する際」および「About(このアプリについて)画面を選択した際」に、稀にアプリが落ちる問題をそれぞれ修正しました。

2. UI・操作性の刷新

  • ボトムナビゲーションの導入: 画面下部にナビゲーションバーを設置し、片手での操作性を大幅に向上させました。これに伴い、上部のトップアプリバーまわりもスッキリと整理しています。

3. 内部構造・非同期処理の近代化(開発裏話)

今後のメンテナンス性とアプリの頑丈さを高めるため、足回りのライブラリとスレッド処理を全面的にリプレースしました。

  • IOスレッドの適正化 & Strict対応: これまで Default で動いていたファイル・データ系処理を、適切な IO スレッドへ割り当て直しました。また、厳格モード(Strict対応)を入れ、メインスレッドをブロックしない仕組みを強化しています。

レッド処理の最適化と、設定画面のクラッシュ修正

前回の通信・DB周りのリファクタリングに続き、今回はスレッドの割り当て見直しや、特定画面でのクラッシュ対応、内部ライブラリのメンテナンスを行いました。

1. 【バグ修正】設定画面への遷移時のクラッシュ対応

特定の条件下で、設定画面を開こうとした際にアプリが強制終了してしまう問題が発生していました。遷移時の処理を見直し、安全に画面が切り替わるよう修正しました。

2. スレッド割り当ての最適化(パフォーマンス改善)

非同期処理の効率を最大化するため、スレッドプールの使い方を厳格に見直しました。

  • IO系スレッドの適正化: これまで Default スレッドで動作していたファイルやデータ系の処理を、本来の用途である IO スレッドへと変更しました。これにより、CPUに負荷がかかる処理とI/O待ちの処理が適切に分離され、アプリ全体のレスポンスが向上しています。

  • 厳格モード(Strict)への対応: スレッドの挙動をより厳密にチェック・管理する対応を入れ、意図しないメインスレッドのブロックや、リソースの無駄遣いを未然に防ぐ仕組みを強化しました。

3. 内部処理

  • ライブラリの最新化と非推奨コードの廃止: 依存している各外部ライブラリを最新バージョンにアップデートしました。これに伴い、古くなった非推奨(Deprecated)メソッドを新しい推奨コードへ書き換え、将来のOSアップデートにも耐えられるようコードをクリーンに保っています。


内部通信・DB処理の近代化とリファクタリング

今回のアップデートでは、アプリの心臓部といえる通信・DB周りのリファクタリングを敢行しました。また、一部機能で先祖返りが発生していた箇所の再修正も行っています。

1. 記事一覧のスクロール位置保持

以前修正したはずの「記事から一覧に戻ると一番上に戻ってしまう」問題が、一部の処理変更に伴い再発(デグレ)していました。 修正コードを整理する過程で誤って先祖返りさせてしまっていたようです……。今回改めて、スクロール位置が正しく保持されるよう修正いたしました。

2. ネットワーク・DBアクセスの近代化

アプリの安定性と今後の拡張性を高めるため、ライブラリ構成と非同期処理を刷新しました。

  • Ktorへの移行: これまで生の OkHttp で運用していた箇所を Ktor にリプレース。合わせて HttpClient の Agent 設定なども最新の状態に更新しています。

  • 完全 suspend 化: DBアクセスを全面的に suspend 関数へ移行。非同期処理の管理を Kotlin Coroutines に一任することで、スレッドセーフで安全なデータ操作を徹底しました。

3. パフォーマンスの追求

「より軽く、より速く」を目指し、リソースの使い道を見直しました。

  • メインスレッドの解放: キャッシュ取得処理を見直し、メインスレッドを占有する時間をさらに短縮。

UI刷新と内部処理の大幅アップデート

 今回は、アプリの使い勝手に直結するUIの変更と、長らく課題だったパフォーマンス面の改善、および細かな不具合の修正を行いました。

1. UI・操作性の刷新

  • ボトムナビゲーションの導入 画面下部にナビゲーションバーを設置しました。片手での操作性を高めるとともに、主要機能へのアクセスをスムーズにしています。これに伴い、上部のトップアプリバーも整理し、画面全体をスッキリとさせました。

  • シェアボタンの動作変更 シェアボタンをタップした際の挙動を、OS標準の動作一覧が表示される方式に変更しました。

2. パフォーマンスと安定性の向上

目に見えにくい部分ですが、快適に利用いただけるよう内部処理を大幅に見直しています。

  • スクロールの高速化 記事リスト表示時のメインスレッド負荷を軽減し、バックグラウンド処理へ移行することで、スクロール時のカクつきを改善しました。

  • 起動・バックグラウンド処理の最適化

3. 修正した不具合

特定の条件下でアプリが終了してしまう問題について、以下の対応を行いました。

  • 「このアプリについて(About)」画面選択時のクラッシュを修正。

  • 起動時およびスクロール時に、特定のデータが原因で発生していたクラッシュを修正。

UI刷新、内部処理の近代化、そして数々の難敵(バグ)の修正

 いつもご利用いただきありがとうございます。 今回は、ボトムナビゲーションの導入という大きなUI変更から、通信・DB・スレッドの全面リファクタリング、そして特定の条件下で発生していたシビアなクラッシュや動作低下の修正まで、いろいろアップデートを行いました。 変更点が多いため、いく...