ごんれのラボ

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

Recap of WWDC19 に参加してきた

イベント詳細

https://mercaridev.connpass.com/event/132676/

セッション内容

Project Catalyst: UIKit on the Mac is finally here! by Tim Oliver

  • iPhoneはmacOSとほぼ同じOSで動くというところが最初にあった
    • 実際はほぼ同じだけど、UI周りが違っている
  • AppKit(1994)、UIKit(2005)
    • UIKitに慣れている人がAppKitに入門するとAPIの違いなどで厳しい
      • わかる
      • NSViewがまず厳しい
  • Marzipanが発表された
    • macOSとiOSが統合されると思われていた
    • Appleが一つのアプリをMarzipanで作成されて公開された。Sneak Peek
  • 2019年にCatalystが登場!
  • 自分でアプリを作って試したみた、のデモ
    • AutoLayoutが聞いてるからmacOSアプリとしてビルドしても、自由自在にウィンドウの大きさを変えられる
    • 画面サイズに縛られないというのも、なるほどという感じだ(自分で変えられるから)
    • フォントサイズも違うらしい
    • 結局iOSアプリをmacOSで動かしている感じなので、ダイアログなどがiOSのものなのでユーザーにわかってしまう
      • macOSのユーザビリティとは一致しないところが多そうだ
  • まとめ
    • 作るの簡単。macにチェックを入れてビルドするだけ
    • Viewの切り分けなどが大変だ
      • まあ、そりゃそうですね…
    • 良いアプリを作ろうね!
      • macOSアプリ作りやすくなる…というわけではない感じだ
      • でも手軽でいいのかも

MVVM with Combine by Akifumi Fukaya

  • 資料
  • combineとは
    • Appleが発表した新しいフレームワーク
    • Reactiveに関する公式なフレームワーク
    • iOS13、watchOS6以上
      • 使えるのは再来年ぐらいかなー
  • 機能
    • Generic
    • Type Safe
    • Comptision first
    • Request driven
  • 構成要素
    • Publishers
  • Publishers
  • Subscribers
    • Publishersから値を受けとることのできるプロトコル
  • Opereater
    • 値をうけたときの振る舞い
    • value type -> Struct
  • MVVMでどう使うか(MVVMが適切かどうかは別の話…)
  • メモとるの、むずい…
    • コード読んだほうが良さそう
  • Runloop.mainってschedulerをセットしているけど、現在schedulerが実装されていないので、サンプルコードのdebounceの部分は動かない
    • schedulerはほぼ実装されていないんだそうな
    • そのうち実装されるのかな
      • じゃないとしんどそう
      • 次のリリースで実装されるっぽい

SwiftUIってこんなやつ Sato Takeshi

  • 資料
  • SwiftUIとは
    • UIKit, AppKitから切り離された新しいレンダリングシステム
    • Pure Swiftで書かれている
    • Previewでタップイベントも使える
  • Appleが公開しているチュートリアルがあるのでおすすめ
    • コードも確認できるよ
  • チュートリアルアプリをみてみよう
    • いままでとは違う書き方が使われている -> Swift5.1の新機能が多数使われている
  • Viewがプロトコルで定義されている
  • これもコードを追うタイプの話だからメモ取りづらい
  • Previewに修正が即座に反映されるの、すごくいいなぁ
    • 実装速度がすごくあがるなぁ、いいなぁ
  • Implicit returns from single-expression functions
  • Function Builder
    • View Bulder

WWDC19 Recap of ML by Akira Fukunaga

  • MLについて
  • Create ML
    • SwiftでML Modelを作れるフレームワーク
    • Xcode10上でGUIで触れた
    • Xcode11では分離したアプリケーションになった
      • Xcodeから遷移できる
    • 9つあるってセッションで言っていたけど、Seed1では2つしか選べない
    • デモ
      • カタリナにするとQuickTimeがスクリーンレコーディングすると落ちるらしい
  • Domain APIs
    • Appleがすでに学習済のモデルを提供してくれているので、それを使う
    • vision と natural language系にくわえて、たくさん追加された
    • Image Saliency
      • 写真の中でより重要、または判別しやすいものをSaliencyが高いというらしい
      • Appleが2つ用意している
        • Attention based
          • 人間が注目しやすそうなもの?
        • Objectness based
          • 前景、後景に関するもの
          • 前処理に使えそう
    • Sentiment analysis
      • ユーザーが入力した文字列を判定して感情を数値化する
      • 日本語はまだ対応していない…
  • Core ML
    • 端末で実行する機械学習
    • サーバと通信しないのでセキュア、という謳い文句
    • Model personalization
      • 端末でモデルをチューニング(微調整)できる
      • たとえば犬を判別するモデルがあったときに自分の犬だけを判別するようにチューニングできる

What's new in UICollectionView by Masaki Haga

  • SwiftUIなどの影でUITableViewとUICollectionViewに大きな変更が入っていた
  • 〜 iOS12 までのUICollectionView
    • perforemBatchUpdateを呼んでData不整合によりCrash
      • DatasourceKit使ったりすると良い
    • 親ViewControllerのSizeにあわせたCellのSize指定がめんどくさい
    • 縦CollectionViewの中に横スクロールのUICollectionViewを何個かいれたいが、Scroll位置の保存などがめんどくさい
  • 新しいUICollectionView
    • 2種類のセッションがあるけど、どっちも必見
      • 昨日TLでも同じ話を聞いたな
  • Data Source
    • [old] UICollectionViewDataSource
    • [NEW] UICollectionViewDiffableDataSourceを使うようになる
  • 新しいData Sourceの宣言
    • UICollectionViewDiffableDataSourceをUICollectionViewとCellProviderを引数に初期化する( Delegate型ではなくClosure型のCallback)
    • snapshotをapplyしてCollectionViewに反映
  • 注意
    • snapshotにわたすScctionの値とItemの値はHashable
    • snapshotはHashValueによって値の同一性を認識する
    • defaultの実装では違うものと認識される(?)
      • hasherにidentifierだけを渡して判定させる
        • たとえばタイトルがかわってもidentifierは変わらないので同一と認識させることができる
  • Layout
    • [old] UIColloctionViewFlowLayout + UIColloctionViewDelegateFlowLayout
    • [NEW] メモしそこなった
      • またNSプレフィックスがでてくるのか…
  • 新しいLayoutの宣言
    • UIColloctionViewCompositionLayout
      • initの引数としてNSCollectionLayoutSectionか、SectionProviderというClosureを渡す
  • Nested Collection View
    • 縦スクロールの中の横スクロールが簡単にかけるようになった
      • 最高じゃん
    • UIKit側で_UICollectionViewOr~的なScrollViewを勝手にいれてくれる
    • 画面外から戻ってきてもとのCollectionViewが保存されている

感想

メモがんばった。
SwiftUIが一番関心があるけど、Catalystも気になるなー。
簡単にmacOSアプリが作れるようになってくれ…。