ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

SwiftUIゴリゴリキャッチアップ会に参加してきた

概要

自分のメモを参加ログとして公開

イベントページ

https://wwdc-gorilla.connpass.com/event/134116/

セッションメモ

over view

  • 見たほうがいいセッション
    • SwiftUI Essentials
    • Data Flow ~
    • Integrating SwiftUI
    • Builting Custom Views in SwiftUI
    • SwiftUI On All Devices
  • キャッチアップ先
    • hackingwithswift.com
    • designcode.io

Unidirectional Data Flow Through SwiftUI

  • 資料
  • SwiftUIはReact+MobXみたいな感じ
    • 単一方向にデータが流れるメリット
      • 疎結合にしやすい
      • テストが書きやすい
        • MVVMはVMをきれいに書けていないとテストがごちゃっとなりやすい
      • スケーラブル
        • 個人の学習コストを少なくアーキテクチャで強制する

SE-XXXX Function Builders を読み解く / Reading the spec of Function Builders

SwiftUI(beta 3)でどこまで書ける(書けない)?

  • beta3 の時点の話なので、将来的に変わる可能性がかなり高い
  • 現時点では結構厳しいところもあるけど、みんなで良くしていきたい
  • 特徴
    • Declarative
      • いい面もあり悪い面もあり
      • 複雑なものは難しいのでは
    • Struct
      • 小さいコンポーネントを組み合わせて構築していく
    • Single Source Of Truth
      • ビジュアルエディターで実装してもすべてコードとして残る
      • コードとして管理できるのがとても良い点
  • がんばって書くのか、頑張っても書けないのかの線引が難しい
    • UIKitで書いたほうがいいところ、SwiftUIで書いたほうがいいところの判断が必要
      • いまのところUIKitメインがいい
    • チュートリアルを全部やってみてできることを学ぶ
      • チュートリアルでできることがSwiftUIでできることの最大限ではないか(現時点かな?)
  • SwiftUI vs UIKit
    • iOS13でできることで比較することになる
    • UICollectionViewCompositionLayout
      • カスタムがしやすくなっている
      • 90%ぐらいはこれで書けるようになる
  • View vs Struct
    • Visual View Hierachy
      • 直接ビューを触ることができない
        • 実際のViewを触ることができない
        • 変換されて描画されるので成果物はさわれない
      • インタラクションをどうする?
        • 複雑なインタラクションがある場合は諦めたほうがいいかも
  • スクロールビューのスクロール量の取得ができないので、カルーセル的なものは厳しい
    • iOS13ならCollectionViewを使ったほうがいいだろう
    • スクロールの内部状態を取得できる口がほしい
  • 続きを読むを押したら文章がすべて表示されるようなものは、やればできる感じ
    • Viewを作り変えるとアニメーションがきれいじゃない
    • 高さを変えるならmodefierでやる
      • lengthにnilを渡せるっぽいぞ
  • エッジに沿うような画像の実装が難しい?
  • サインイン画面はできる
    • テキストフィールドのデリゲートは使いものにならないので、テキストをバインディングしてValidateする
  • Formっぽいものは得意
    • 設定画面とかかな
    • テキストフィールドがあるものは厳しい
      • キーボードでテキストフィールドが隠れてしまう
        • スクロール量を制御できないのでスクロールさせることすらできない
  • SwiftUIのテキストフィールドは日本語が入力できないバグがある
    • 中国語もだめ
  • 増減するフォーム
    • まあまあできる
  • キーボードを隠すこともやりにくい
    • 個別のViewにisEditingが送れない
    • やるならRootViewに対してisEditingに送る
  • Viewの途中の状態を操作することが難しい
    • Staticな画面を作ることにしか使えないのでは

まとめ

  • beta版だから今後に期待って感じかな
  • チュートリアルの完走とセッションの動画を観よう