iOSDC 2023 1日目
開発Swift
iOSDC 2023 1日目!
各セッションについてのメモ。
freee は業務としてカンファレンスに参加できるが、iOSDC は例年ブースを出しているのでその運営も兼ねて iOSDC に参加した。
モーダルの遷移を理解する
2023/09/01 16:40〜
Track B
レギュラートーク(20分)
https://fortee.jp/iosdc-japan-2023/proposal/229fc10b-6d26-4688-b658-3b925ce25123
問題のサンプルコード: https://github.com/objective-audio/ModalProblem
解決するサンプルコード: https://github.com/objective-audio/ModalArchitecture
確実に動作させるのが難しいモーダル
SwiftUI に絞って話す
用語整理
モーダル =
- Sheet や Alert のこと
データソース =
- @State や ObservableObject とか
- View とデータソースに分けて話す
Menu
Menu を開いている時は他のモーダルを表示できないという意味で、Menu もモーダルと言える
なるほど。この発想はなかった。
問題
iOS15 だと複数階層のモーダルを同時に閉じることができない
iOS16からは1階層目のモーダルを閉じるとその上の階層のモーダルも閉じることができる
モーダルの不整合が起きないようにするために
とにかく中途半端なタイミングでモーダルを操作すると問題が起きる。
前提
iOS15 まではモーダルを閉じれないことがあるので、一旦保留
作ったもののデモ
Popover 表示中に Alert を開くボタンをタップした時に、Alert がちゃんと表示されるようにしていた。それ自体は実装の検証として興味深いが、モーダルが絡むときのユーザー体験がどうあるべきかが難しいなと思った。
Enum でモーダルが開く状態を制御するコード
enum Modal<Content: ModalContent> {
case sheet(Content.ChildContent)
case fullScreenCover(Content.ChildContent)
case popover(Content.ChildContent)
case alert(DialogContent<Content>)
case confirmationDialog(DialogContent<Content>)
}
おもろい。enum ってこういう使い方もあるよなー。Swift に慣れている人にとっては普通か。
感想
正直自分はモーダルを使いこなせてはいないが、気をつけるべきところやiOS15の辛みが垣間見た。
- 中途半端な時にモーダルを操作しない!
- データソースは1つにする!
- iOS16以降に限定する!(これはこれで辛い)
質疑応答で
「非同期通信をしていて複数 Alert を表示するようなケースではどうするのがいいか?」という趣旨の質問があったが、HIG 的には Alert でエラーメッセージの表現をするのってどうなんだっけ?復習が必要だ。
「出会い」の体験を向上させるために、私たちが向き合っていること 〜Core Bluetooth,Core ML,SwiftUIの活用事例〜
2023/09/01 18:10〜
Track C
スポンサーセッション(20分)
https://fortee.jp/iosdc-japan-2023/proposal/45d0a40e-bcc9-43a1-b530-15b00cc9d030
Sansan さんの発表!!
まずもう名刺交換のこと(だと思うが)を「出会い」って言ってるのが良い
グラフ描画
SwiftUI を重ねることでグラフを表現 UIKit で実装された画面の中に組み込む形で表示
円グラフの描画
PieSliceShapre(startAngle: slice.startAngle, endAngle: slice.endAngle) // ちょっと完璧に書き写せていないかも
ち、力技だ。
そうまでして外部ライブラリを利用しなかったのはなぜだろう。聞き逃したかな。
質問したら
- Swift Charts を使えるならそっちがいい
- QA が大変だった
Core BT の活用
技術的トピック
- RSSI/ TxPower で距離の測定
- Core BT における距離測定
=> これは明日以降のどこかで話してくれる
CoreML の活用
CoreML 使ったオンデバイスのリアルタイム名刺検出 結果: 300%向上 GPU Nural Engine の活用でめっちゃ向上した
Core ML モデルへの変換 Core ML Tools でできる
感想
あらゆるモデルを CoreML に変換してオンデバイスで色々やるっていうのやってみたい。 https://huggingface.co/ とかでモデル見つけてサクッと遊んでみるか。
watchOS 開発最前線
2023/09/01 18:45〜
Track B
レギュラートーク(20分)
https://fortee.jp/iosdc-japan-2023/proposal/251cd59e-46f8-4445-a8a5-df43bc8a2add
watchOS単体 vs iOS従属
従属→単体のコンバートは可能 逆もできると思うが、ドキュメントに書いていない
SwiftUI での開発がデファクトスタンダード
UIKit は使うことができない。
SwiftUI が watchOS に最適化されていることがある
普段見ている View と異なるアウトプットになったりしていて、混乱することが多い。 【watchOS】watchKit x SwiftUIで使用できるUIまとめ が参考になる。
デザイン
極端に小さい画面で何を表現するべきかを考え、決めるのがとても難しい。
Apple の時計アプリを例に
iOSアプリの Tab が watchOS では別アプリのようになっている
これは別アプリというよりかは TabBar を使っているから別れているという印象を受けたがどういう意味だったんだろう。
感想
watchOSアプリ作ってみたいな。技術的なこともだが、デザイン的なことのほうがチャレンジしがいがありそう。あと AppleWatch 持ってないから買わなきゃ。
以上