Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Xcode 15, Swift 5.9で変わる開発体験

Xcode 15, Swift 5.9で変わる開発体験

Sato Takeshi

June 30, 2023
Tweet

More Decks by Sato Takeshi

Other Decks in Technology

Transcript

  1. Who am I • Name • 佐藤剛士(さとうたけし) • Company •

    Merpay, Inc.(2019/01 ~) • Role • Software Engineer (iOS) • Account • Twitter: @hatakenokakashi • Facebook: 佐藤剛士 • GitHub: SatoTakeshiX
  2. 個人的に注目新機能 • Observation • Asset Catalogs • String Catalogs •

    Xcode 15 新機能 ◦ preview ◦ UITest テスト結果
  3. 既存の仕組み • KVO ◦ 値オブジェクトもオブザーバーもNSObjectを継承しないといけない ◦ つまりObjective-Cのランタイムが必要 ◦ key pathがあるけどイベントは文字列で指定が必要

    • Combine: ObservableObject ◦ CombineはDarwinプラットフォームしか使えない。Linux環境利用不可 ◦ SwiftUI以外で使いにくい ◦ 監視するプロパティにはそれぞれ@Publishedを付ける必要あり。これは退屈な 作業 ◦ Computed propertyの監視は直接監視できない https://github.com/apple/swift-evolution/blob/main/proposals/0395-observability.md
  4. 参考資料 • Swift evolution: Observation  ◦ https://github.com/apple/swift-evolution/blob/main/proposals/0395-observabi lity.md • Discover

    Observation in SwiftUI ◦ https://developer.apple.com/videos/play/wwdc2023/10149/ • SwiftUIのデータ管理 Property Wrapper編 ◦ https://blog.personal-factory.com/2021/01/23/how-to-use-propertywrapper-in- swiftui/
  5. String Catalogs • StringsファイルStringsdictファイルString Catalogsファイルにまとまった • BuildごとにXcodeがビルドターゲットのコードのLocalizable stringsを集めて String Catalogファイルに集約する

    ◦ 文字列が追加されるとString Catalogsも自動で追加 ◦ 文字列が削除されるとString Catalogs上で削除された旨のバッチがつく • 翻訳状況が一目でわかる • Stringsdictできた複数形、単数形の場合分けができる • 変数表示も簡単に表現可能 • デバイスごとの場合分けも可能。iPhoneとmac💻で出し分け可能
  6. String Catalogs • xliffファイルに出力、入力できる ◦ 外部に翻訳依頼をするときに便利 • String CatalogsはJSON形式。変更差分が見やすい •

    コンパイル時にはXcodeがString CatalogsファイルをStrings/Stringsdictファイル に変換 ◦ 古いOSでもString Catalogsファイルが利用できる • SwiftPMでモジュール分けててもカタログ使える ◦ defaultlocalizationに言語指定する ◦ swift toolを5.9にする ◦ パッケージにString Catalogsファイルを追加。localizedという名前にする
  7. String Catalogsの印象 • ビルドごとにXcodeが文字列をリスト化してくれるところがよい ◦ Stringsファイルの問題点、翻訳されているかがrun timeじゃないとわからない 問題は解決された • 翻訳状況が一覧で見れる。言語の追加や変数展開も簡単。よい

    • 型安全にはならない ◦ VideoではView指定のテキストは直接英語文章を文字列リテラルで渡していた • SwiftGenを導入するかはチームしだい ◦ 両立はできそう(SwiftGenが対応されれば)
  8. まとめ • Observation • Asset Catalogs • String Catalogs •

    Xcode 15 新機能 ◦ preview ◦ UITest テスト結果