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

マルチプラットフォームを見据えるiOSのTCA設計|Designing iOS Apps wi...

マルチプラットフォームを見据えるiOSのTCA設計|Designing iOS Apps with TCA for Multi-Platform Strategies

登壇者名:新山 響生
登壇:マルチプラットフォームを見据えるiOSのTCA設計(https://findy.connpass.com/event/315494/

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. 2 © 2024 Bitkey Inc. 自己紹介 新山 響生 (あらさん) Arayama

    Kyo (Twitter@arasan01_me) 2020.04 2022.09 2023.-- 合同会社DMM.comに新卒入社 電子書籍アプリの開発やオープンソース活動としてバ イナリ変換ツールdmm-com/Ranasaの開発をした。 株式会社ビットキーに入社 workhub Appの開発やSwiftイベントの企画・運営を 行う。 プライベートでSwift on Windowsを触り始める 個人開発としてTCAやGRDB.swiftのWindows対応、 Windows環境でのSwift利用の挑戦を始める。 2024.04 仕事ではworkhub AppにTCAを導入したり、プライ ベートではSwift on WindowsでVSTプラグイン開発や 物理エンジンを用いたツールの開発を行う。
  2. 5 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応
  3. 6 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応
  4. 7 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応 - Dependenciesの拡張ライブラリ開発
  5. 8 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応 - Dependenciesの拡張ライブラリ開発 - pointfreeco/swift-macro-testingを使ったSwift Macrosの開発の記事
  6. 9 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応 - Dependenciesの拡張ライブラリ開発 - pointfreeco/swift-macro-testingを使ったSwift Macrosの開発の記事 - Swiftイベント企画・運営
  7. 10 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応 - Dependenciesの拡張ライブラリ開発 - pointfreeco/swift-macro-testingを使ったSwift Macrosの開発の記事 - Swiftイベント企画・運営 - Swift ToolchainでWindowsのNVIDIA-PhysXのビルド
  8. 11 © 2024 Bitkey Inc. 1. 直近の活動紹介 直近の活動 - 自社開発アプリ

    workhub AppにTCAの導入 - GRDB.swiftのWindows対応 - TCA 1.8のWindows対応 - Dependenciesの拡張ライブラリ開発 - pointfreeco/swift-macro-testingを使ったSwift Macrosの開発の記事 - Swiftイベント企画・運営 - Swift ToolchainでWindowsのNVIDIA-PhysXのビルド - Swift on Windowsやってみたの発表 - Swift愛好会 Vol.80, 27:00~ https://www.youtube.com/live/Xyug-7djTXo?feature=shared&t=1623
  9. 14 © 2024 Bitkey Inc. 2. マルチプラットフォーム開発とは Swiftで考えるマルチプラットフォーム開発 Apple Platforms

    - iOS - iPadOS - macOS - tvOS - visionOS Non Apple Platforms - Windows - Linux - Android - Wasm etc...
  10. 15 © 2024 Bitkey Inc. 2. マルチプラットフォーム開発とは Swiftで考えるマルチプラットフォーム開発の違い Apple Platformsでしか使えないもの

    - UIKit - SwiftUI - SwiftData - CoreData - Combine Non Apple Platformsでも使えるもの - Swift Standard Library - Foundation - XCTest
  11. 16 © 2024 Bitkey Inc. 2. マルチプラットフォーム開発とは Swiftで考えるマルチプラットフォーム開発の違い Apple Platformsでしか使えないもの

    - import UIKitなどがあるもの - 特定のOSに依存したコードがあるもの Non Apple Platformsでも使えるもの - import UIKitなどがないもの - OS依存を適切に記述しているもの https://github.com/apple/swift/blob/5fce3f9d5b06f2f34226f07996bc250b 8cebff4a/stdlib/private/SwiftPrivateThreadExtras/ThreadBarriers.swift
  12. 18 © 2024 Bitkey Inc. 2. マルチプラットフォーム開発とは Swiftで考えるマルチプラットフォーム開発の違い TCAはこれらの依存に適切に対処することによりマルチプラットフォームで動く -

    Darwin以外ではOpenCombineへの依存に切り替え - #if canImport(SwiftUI)の徹底、不要なコードのexclude指定 - 純粋なSwiftへの依存のみに書き換える
  13. 22 © 2024 Bitkey Inc. 3. マルチプラットフォームを見据えるとは TCAをマルチプラットフォームに活用するとは - Platformが変わるとUIフレームワークは変わる。(SwiftUI,

    UIKit, WinUI, Adwaita, etc...) - マルチプラットフォームで作りたい本質の体験はUIフレームワークで変わる…? - No, 使いたい機能の形は変わらない。 - but Yes, 触り心地は各プラットフォームに合わせたい。 宣言的に体験を定義するにはちょうどいいTCA
  14. 23 © 2024 Bitkey Inc. 3. マルチプラットフォームを見据えるとは TCAをマルチプラットフォームに活用するとは - 好きなUIフレームワークに組み合わせられる

    - 提供したい機能の体験だけを定義できる https://github.com/arasan01/swift-windows-application/blob/main/GRDBDemoApp/Sources/Born/Reducers/ListFeature.swift Feature
  15. 26 © 2024 Bitkey Inc. 4. おわりに まとめ - マルチプラットフォームで利用するTCAもいいものだ

    - Swift on Linux, Swift on WindowsでTCAをやってみないか? - この時間では話しきれないトピックが、まだまだたくさんある - Swift Package Managerを利用したマルチプラットフォームの取り組み - OSに依存するコードはDependenciesを使って解決する - 特定のUIフレームワークに特化したReducerの切り出し方 - TCA自体の詳しいマルチプラットフォーム対応方法 - SPM or CMake, Swift Macroの取り扱い - etc...