$30 off During Our Annual Pro Sale. View Details »

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. Xcode 15, Swift 5.9で変わる
    開発体験
    2023 年 6 月 30 日
    Recap of WWDC23 Mercari

    View Slide

  2. Who am I
    ● Name
    ● 佐藤剛士(さとうたけし)
    ● Company
    ● Merpay, Inc.(2019/01 ~)
    ● Role
    ● Software Engineer (iOS)
    ● Account
    ● Twitter: @hatakenokakashi
    ● Facebook: 佐藤剛士
    ● GitHub: SatoTakeshiX

    View Slide

  3. WWDC 2023

    View Slide

  4. 開発体験が大きく変わる
    新機能が
    たくさん発表されました

    View Slide

  5. 個人的に注目新機能
    ● Observation
    ● Asset Catalogs
    ● String Catalogs
    ● Xcode 15 新機能
    ○ preview
    ○ UITest テスト結果

    View Slide

  6. Observation

    View Slide

  7. Observation
    ● 値変更を監視する新しい仕組み
    ● Swift macroで実現
    ● KVOやCombineの悪いところが払拭されている
    ● SwiftUIにもスムーズに導入できる
    ● デフォルト値が必要

    View Slide

  8. 既存の仕組み
    ● 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

    View Slide

  9. Observation

    View Slide

  10. SwiftUIで使える新しいproperty wrapper
    ● @State
    ● @Environment
    ● @Bindable

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. 使い分け

    View Slide

  15. 従来のデータ管理のフロー

    View Slide

  16. Observationの印象
    ● たくさんあったデータ管理のProperty Wrapperがすっきりした
    ● Combineの依存がなくなってよさそう
    ● Appleプラットフォーム以外にも利用する布石になりそう?
    ○ Server Side Swiftなど

    View Slide

  17. 参考資料
    ● 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/

    View Slide

  18. Asset Catalog

    View Slide

  19. Asset Catalogs
    ● Xcode 15からAssetにいれた画像は型安全でコードからアクセスできる
    ● SwiftGenいらなくなるかも

    View Slide

  20. View Slide

  21. String Catalogs

    View Slide

  22. Xcode 15で
    公式にローカライズ
    ツールが誕生

    View Slide

  23. String Catalogs
    ● StringsファイルStringsdictファイルString Catalogsファイルにまとまった
    ● BuildごとにXcodeがビルドターゲットのコードのLocalizable stringsを集めて
    String Catalogファイルに集約する
    ○ 文字列が追加されるとString Catalogsも自動で追加
    ○ 文字列が削除されるとString Catalogs上で削除された旨のバッチがつく
    ● 翻訳状況が一目でわかる
    ● Stringsdictできた複数形、単数形の場合分けができる
    ● 変数表示も簡単に表現可能
    ● デバイスごとの場合分けも可能。iPhoneとmac💻で出し分け可能

    View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. String Catalogs
    ● xliffファイルに出力、入力できる
    ○ 外部に翻訳依頼をするときに便利
    ● String CatalogsはJSON形式。変更差分が見やすい
    ● コンパイル時にはXcodeがString CatalogsファイルをStrings/Stringsdictファイル
    に変換
    ○ 古いOSでもString Catalogsファイルが利用できる
    ● SwiftPMでモジュール分けててもカタログ使える
    ○ defaultlocalizationに言語指定する
    ○ swift toolを5.9にする
    ○ パッケージにString Catalogsファイルを追加。localizedという名前にする

    View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. String Catalogsの印象
    ● ビルドごとにXcodeが文字列をリスト化してくれるところがよい
    ○ Stringsファイルの問題点、翻訳されているかがrun timeじゃないとわからない
    問題は解決された
    ● 翻訳状況が一覧で見れる。言語の追加や変数展開も簡単。よい
    ● 型安全にはならない
    ○ VideoではView指定のテキストは直接英語文章を文字列リテラルで渡していた
    ● SwiftGenを導入するかはチームしだい
    ○ 両立はできそう(SwiftGenが対応されれば)

    View Slide

  37. 参考資料
    ● Discover String Catalogs
    ○ https://developer.apple.com/videos/play/wwdc2023/10155/

    View Slide

  38. Xcode 15 新機能

    View Slide

  39. preview
    ● macroの力で、SwiftUI, UIKit, AppKitでもpreviewが出せるようになった
    ● Widgetのタイムラインも表示してくれる

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. Testのレポート画面が刷新
    ● カバレッジや失敗したテストの結果を一覧でみれるようになった
    ● UITestの結果がXcode上で確認でき、UITestの実行結果が動画で見れるように
    なった
    ○ テストのステップごとに動画で何が起こったか確認ができる

    View Slide

  44. View Slide

  45. View Slide

  46. 参考資料
    ● What's new in Xcode
    ○ https://developer.apple.com/videos/play/wwdc2022/110427/

    View Slide

  47. まとめ
    ● Observation
    ● Asset Catalogs
    ● String Catalogs
    ● Xcode 15 新機能
    ○ preview
    ○ UITest テスト結果

    View Slide