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

これからはじめるSwiftUI 〜iOSアプリ開発の新スタイル・新スタンダード〜

Tasuku Maeda
November 01, 2019

これからはじめるSwiftUI 〜iOSアプリ開発の新スタイル・新スタンダード〜

SwiftUIは今年のWWDC 2019で発表された全く新しいiOSアプリ開発のUIフレームワークです。従来のUIStoryboardを使った開発手法から大きく変わります。HTMLタグのようにUIを定義できるカスタムView、コードを書くとすぐにUIが更新されるプレビュー機能(GUIからコードを更新する逆パターンもあり)、データとUIが連動するデータバインディングといった特徴があります。これらの特徴により、React / Vue / Angular 世代のJavaScriptフレームワークに近い感覚でプログラミングができます。そんなiOSネイティブアプリ開発の新世代フレームワークのSwiftUIを、これから始めてみたい方に向けた初心者向けのセッションです。

Tasuku Maeda

November 01, 2019
Tweet

Other Decks in Programming

Transcript

  1. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 4 ⾃⼰紹介 前⽥ タスク CX事業本部所属(2019.1⽉⼊社) iOSアプリエンジニア ⼊社前)Flash

    -> Webフロントエンドの フリーランスで11年 Twitter @kinkuma_design 個⼈活動 きんくまデザイン
  2. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 5 ⾃⼰紹介 (宣伝)個⼈制作iOSアプリ フォルメモ フォルダの中にフォルダが 作れるメモ帳 (10万DL)

    ジッピー電卓 計算式が書けたり、履歴が⼿軽に再利⽤ できる電卓 (16万DL) Habit Keeper ⽇課・習慣記録(12万DL)※現在サポート切れ
  3. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 7 もくじ 1. SwiftUIとは︖ 2. はじめてのView 3.

    Data Flow 4. UIKitとの相互連携 時間的に厳しいので ふろくとして掲載
  4. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 9 SwiftUIとは︖ 1. WWDC 2019で発表 2. 宣⾔的にUIを書ける

    3. 再利⽤可能なViewコンポーネント 4. Swiftファイル1枚で済む 5. ライブプレビュー 6. データバインディング 7. UIKitとの相互利⽤OK 8.マルチOS対応
  5. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 12 注意点 iOS 13以降が必須 個⼈アプリや、ストアに出さない実験アプリ、 iOS 13以降だけを対応するアプリであれば、

    今からでも可能 参考)マネーフォーワード ICカードリーダーのiOSアプリをSwiftUIで開発しました https://moneyforward.com/engineers_blog/2019/09/20/ic-cardreader-swiftui/
  6. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 27 8. マルチOS対応 Learn once, apply anywhere

    1回勉強すれば、 知識が他のOSでも使える
  7. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 29 StructureとClass Structure: 値型。代⼊すると値がコピーされる struct Foo {

    var width = 0 func greet() {} } Class: 参照型。代⼊すると参照がセットされる class Foo { var width = 0 func greet() {} }
  8. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 31 Protocol Structureは継承できないが、Classは継承可能 protocol Bar { }

    class Foo { } // Fooを継承しつつ、Barプロトコルを適⽤ class Baz: Foo, Bar { }
  9. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 54 SceneDelegate - iOS 13以降に使⽤可能 - 1つのアプリを1画⾯に同時に複数⽴ち上げることが

    できる仕組み - iPadOSでは、1つのアプリを同時に ⽴ち上げることができる。 この1つ1つのインスタンスが SceneDelegateで管理される。 - アプリ全体はAppDelegateで管理する
  10. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 66 はじめてのView まとめ 基本的なView VStack, HStack, Text,

    Image, Button SF Symbols アイコンセット。iOS 13以降で使⽤可能 List ⾏のリスト。ForEachで各⾏をループ NavigationView NavigationLinkで画⾯遷移
  11. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 88 @ObservedObject struct SwiftUI class ObservableObject @ObservedObject

    var foo: Bar @Published var name: String バインディングしたい オブジェクト foo.name といった感じに使え る
  12. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 92 @ObservedObject MVVM View ViewModel データ バインディング

    Model Repository Service ※Modelの構成はプロジェクト ごとに違います APIなど Modelの ⼊り⼝。 まとめ役 SwiftUI Observab leObject
  13. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 98 @EnvironmentObject View View View View ⼦

    ⼦ ⼦ どこからでも 参照可能 EnvironmentObject
  14. DNEFWJP DNEFWJP* ʢ࠷ޙ͕ΞΠʣ 121 参考資料 SwiftUI Tutorials ̶ Tutorials |

    Apple Developer Documentation https://developer.apple.com/tutorials/swiftui/tutorials SwiftUI by Example https://www.hackingwithswift.com/quick-start/swiftui Using Combine https://heckj.github.io/swiftui-notes/