喫煙管理アプリ Smoking Note のアップデートを行いました。
v1.3.3 アップデート内容
- 無効な記録の自動削除機能追加(スマホ端末の時刻設定で無効な記録が作成されたときのフェイルセーフ)
- 月のグラフについて、記録を開始した月および現在集計中の月の表示を適正化
アップデート内容の詳細について、以下に記します。
無効な記録の自動削除機能
無効な記録とは、現在の日付より先の日付や重複する過去の日付で登録された記録のことです。この日付は、日にちが変ってから一本目の喫煙をチェックするときに決定しますが、変更不可のため通常は無効な記録が作られることはありません。
しかし、スマホ本体の日付・時刻設定を手動で行った場合、日付を自由に設定できるため無効な記録が作られる可能性がでてきます。本アップデート前のv1.3.2では、無効な記録があっても記録自体は毎日登録されますが、集計処理が途中で終了してしまいグラフの表示がその前日で止まります。
そこで今回、記録の保存時に全記録の日付でソート・マージ、範囲外の記録の削除を行うことで無効な記録を削除するようにしました。
この問題に気づいたきっかけは、海外の方からグラフが更新されなくなったというメールを頂いたことです。スクリーンショットを送ってくれたり状況を詳しく教えて頂きとても感謝しています。ちなみに、最初メールを読んだときなぜスマホ本体の時間をいじったのか気になっていました。聞くに聞けないままメールのやり取りをしているうちに、おそらくサマータイムのせいだと気づきました(グラフが更新されなくなった日が11/3以降で、2019年のアメリカのサマータイム終了日は11/3)。おそらくですが、時刻を戻すことで日付が戻り、そこで記録を作成したため同じ日付の記録が作られたのだと推察しています。今回の対策で直ることを願っています。
月グラフの表示適正化
これまで月のグラフでは、単純に(一か月間の合計本数 / 一か月の日数)で一日の平均本数を算出し、月ごとに表示していました。
このため、記録を開始した月と現在の月では、分母となる(一か月の日数)が実際に経過した日数より多くなるせいで意味のある値になっていませんでした(現在の月の値は、現在の月が終わったときに正しい値となります)。
今回、月を以下の3パターンに場合分けすることで、月グラフの表示適正化を行いました。
- 記録を開始した月 … (一か月間の合計本数 / 開始日から月末までの日数)
- 集計を完了した月 … (一か月間の合計本数 / 一か月の日数)
- 現在集計中の月 … (一か月間の合計本数 / 現在の日付)
※ 記録を開始した月で現在も集計中の場合は「現在集計中の月」。
適正化前(11月:6.7本。11月の日数30で割っているので謎値。)
適正化後 (11月:14.3本。11月の経過日数15で割っているので正確。)
その他
内部的なことをメモ代わりに書いておきます。
- グラフ画面の表を角丸化
- グラフ画面からメイン画面に戻る時に一回だけポップオーバーを表示(広告が表示されることを告知)
- Cordova 7.1.0 —> 9.0.0
- Onsen UI v2.10.1 —> v2.10.10
- jQuery v2.0.3 —> v3.4.1(Google Play Consoleでアラートがでたため)
- Cordova Admob Pro —> Admob Freeプラグインへ変更
Smoking Note は Google Play ストアから無料ダウンロードできます。