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

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

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

Avatar for Sato Takeshi

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 テスト結果