今月のキョリ

最終更新日

  • 2023/10/01

概要

Apple Watchで記録した運動における、移動した距離の合算を期間ごとに表示するiOSアプリ

動画

モチベーション

  • 運動不足改善のため、運動種別問わず移動した距離の合算を可視化することで運動モチベーションの向上に寄与したい
  • 公式のフィットネスアプリで上記の機能が無い
    • 種目別の距離の合算は表示されるが、種目問わずの距離の合算は行っていない

対応OS

  • iOS 17.0以上

リリース

  • App Store: リリース予定無し
  • TestFlight: テスターとして配布可能

技術的なトピック

Xcode 15, iOS 17をターゲットにして開発を行い、以下の新しい機能を使った。

String Catalogs

ローカライゼーションの機能。今までは地道に置換対象と文字列のペアをひたすら列挙する仕組みを使っていた。

String Catalogsはビルド時にコード内の LocalizedStringKey 型の値を列挙して、リスト形式で表示してくれる。

String だと列挙されないので、既存のアプリで利用する場合は StringLocalizedStringKey に置き換える必要がありそう。

ビルド時に値を列挙してくれるので、使わなくなった値はStateの項目で教えてくれるため開発者に優しい。

Symbols for the Asset Catalog

ユーザー定義の色と画像をSwift上のシンボルに自動変換してくれる。

今までは Assets.xcassets などのxcassetsに色や画像を追加して、以下のように手動で定義したり、サードパーティのライブラリでコード生成を行っていた。

import SwiftUI

extension Color {
    static let customColor = Color("CustomColor")
}

利用者側が書くコード量が減ったり、コード生成のライブラリを使わなくて済むようになった。

Swift Chartsのスクロール系のメソッド

iOS 17で chartScrollPosition(x:) といったスクロール系のメソッドが追加されたため、Chartに対してスクロールを行い、スクロール量に応じた表示に関してはScrollViewとGeometryReaderで愚直に実装する必要がなくなった。