SwiftUIに着目して iOSDC Japan 2022 を振り返る
iOSDC Japan 2022に参加しました!🙌🏻
今年も去年に引き続き、セッションタイトルに「SwiftUI」と入っているものを中心に見たので、感想をまとめようと思います。
去年のまとめはこちらです。
※タイトルに入っていなくてもSwiftUI扱っている場合もあると思います。今回はそちらは含まれていません。。ごめんなさい。。
SwiftUI関連セッション
・ウーニャ、しってる。みんなふんいきでSwiftUIをつかってる。 | uhooiさん
SwiftUIで実装する時のViewの分割と命名について、解説してくださりました。
これで良いのかなあと悩んでいた分割方法がよかったっぽい!とわかってとてもよかったです。
モディファイアの分割なのですが、ViewModifierにするのは良いけど、extensionでラップするのが手間だなあと思っていました。ViewModifierじゃなくてViewのextensionで拡張するというのはなぜか思いついていなかったので、勉強になりました。今度からそうしよう。
Viewの分割場所は、他で使わないViewなら同一ファイル内のprivate extensionに書いてるなあと思いました。全部privateだからまとめたいだけかもしれん。。🤔こんな感じで↓
内容と関係ないですが、スライドがポップで可愛いです。✨
あとTwitterを使って双方向に進行するセッションも新鮮でした。みんなの意見がリアルで見れてお互いに嬉しいですね
・SwiftUI Navigationのすべて | アイカワさん
Navigation 周りのAPIにはこんなものがあるというのを俯瞰できたり、APIの変遷を見ることができました。
NavigationViewがNavigationStackになったタイミングから、あまりよく知らないので、その解説をしてくださったのはありがたかったです。
pathを引数に持ってRootViewから2つ先の画面に遷移する方法などはとても勉強になりました。
swiftui-navigation 知らなかった。APIをオーバーロードして使いやすいAPIを自分で作るのはただただすごいなあ、と尊敬です。。
・UIKitベースの大規模なプロジェクトへのSwiftUI導入 | 久利さん
タクシーアプリ「GO」におけるSwiftUIの導入事例の解説でした。
RIBsアーキテクチャを使用してSwiftUIを導入したそうです。Viewに依存しないライフサイクルなんてあるのですね、、知らなかった。。
何かあった時にSwiftUIからUIKitに戻しやすくするために、SwiftUIの依存がPresenterのみになるようにしているというところはなるほど!という感じでした。
お試しでSwiftUIで実装してみて、それをベースにみんなで議論するのはとても参考になる導入の仕方ですね!👍🏻
OSバージョンによるSwiftUIの挙動の違いはあるあるですよねえ。マイナーバージョンによる違いはほんとなんとかしてほしいよな。。確かに調査大事だ。。
iOS13を切るまでは待つというのは確かになあ、と思いました。
・入門SwiftUI Alignment Guide | monoqloさん
Alignment、なんとなく使っていたのでとてもありがたかったです。
そもそもalignmentGuide(_:computeValue:)知らなかった。。offsetで困ったことが今のところなかった。
offsetモディファイアとはどう違うかな?と思ってたら解説してくれてた。🥺描画をずらすだけで中の位置はズレてないんですね。なるほどー。
AlignmentはCustomできるの知らなかった。。今のところCustomしたいケースにまだ出会ったことはないんですが、知っておくと便利そうですね!AlignmentIDっていうprotocolを使うんですね。ふむふむ。
・SwiftUIとUIKitを仲良くさせる | Apurin Mikhailさん
UIHostingController なるほど。SwiftUIからUIKitを使うのはやったことあるけど、逆はないのでありがたい解説・・・
iOS16からのUIHostingConfigurationも便利そうですね。CellのViewをSwiftUIで書ける!reuseされたときに状態が残るので、セル以外にデータを置くことが大事。ふむふむ。
UIViewRepresentableとUIViewControllerRepresentable周りのライフサイクルの図ありがたい。。!
レイアウトの話がちょっと難しくてわからなかった。。。
UIApplicationDelegate、UISceneDelegateとの併用はまだまだやりそうだなー。SwiftUI中心のプロジェクトでそれらを使う時の注意点も説明があってそちらもありがたい。。
ありがたいしか言ってないけど、見て良かったです!(雑)
・SwiftUIのハマりどころとその回避策 | 大塚さん
NavigationLinkが2つだとiOS14でバグがある。なるほど。
3つにすると起きないんだ笑。不思議。
if letでNavigationLinkを生成した後に遷移すると、アニメーションがなくなるのも不思議。。destinationの中でif letするのね。なるほど。
alertモディファイアの連続による不具合は、去年も出てましたね。。いやー前いたプロジェクトでハマりました。
でも確か今はもう解決してますよね?って思って調べたら、解決してるのはsheetの方だった。。alertはまだかー。早く対応してー。
fullScreenCoverはswitchで分けるんじゃなくて、backgroundモディファイアなんだな 👀
全画面系のカスタムUIをUIWindowを使って実装するというのは良さそう。
子Viewにしか全画面系のカスタムUIが適用されないのは以前とても困ってて、結局遷移元に書いちゃった。。カオスになったと思います。はい、ごめんなさい。
学びが多かった。iOS15はまだサポートするところも多そうだし、SwiftUIを使う時は注意ですね。
・SwiftUI in UIKitで開発する世界 | Hiromuさん
UIKit in SwiftUIしか経験ないからこちらもありがたい。。
noppeさんの以下の記事は私もとても響きました。。デザイナーの方も含めて開発者みんなで読んだ方が良いんじゃないかと思いました。意識できている人はできていそうですけども。。
UIKit→SwiftUIへの移行フェーズの図がとても参考になります。
ラクマはMVP + Clean Architectureなんですねー。SwiftUI側は、MVVMにしたとのこと。
「どのアーキテクチャがベストとかはない」っていうのはそういえば最近読んでる「ソフトウェアアーキテクチャの基礎」の本にも書いてたな。Googleに答えがあるわけではない的なこと書いてた気がする。確か。
Input、Output、Bindingでアクセス。なるほど。勉強になります。
後でここらへん読んでみよう。
UIHostingControllerを親画面として持って、遷移部分を実装する。なるほど。FlowController初めて知りました。
・SceneKit AND SwiftUI | Akkeyさん
SneneKitってなんですか状態だったんですけど、3Dコンテンツを作るためのフレームワークで、iOS16でもメソッドの追加があったフレームワークだとか。なるほど。
ライブコーディングをLTでやるのはすごい・・・しかも間に合っている。
コードコメントが面白い。
そして画面の右に表示されてる、Unityみたいなのはなんだろ、わからない。。
だいぶ語彙力のない感想になりました。おーってなってたら5分終了しました。😇
現時点で仕事で触ることはあまりなさそうなのですが、見てて楽しかったです。
(SpeakerDeckのスライドとか探したけどなさそう?あったら貼ります)
まとめ
今回、SwiftUI周りのセッションを聞いての個人的な感想はこんな感じでした。
・去年に引き続き、SwiftUIとUIKitを統合することに関してのセッションが多い
・SwiftUIの特定のAPIを深堀したセッションが増えた(NavigationやAlignmentなど)
・ただ依然SwiftUIだけで作るには要件を満たせないこともある(なのでアプリの要件を考慮しながら、少しずつSwiftUIを導入するのが良さそう)
去年はGraphQLとSwiftUIを絡めた話もちょこちょこありましたが、今年はなかったみたい?
SwiftUI好きなので、今年も幸せな気分でセッションを聞いていました。
導入する企業も増えてきて、知見が溜まっていくのはとてもいいですね 😄
私も仕事、プライベート共にSwiftUI書いていきたいぞ。がんばろ。
おわり。