Categories: 勉強会

大手3社のiOSエンジニアが集った「WWDC23 報告会 at LINE, ZOZO, ヤフー」のまとめ #WWDC_lzy

こんにちは。virapture株式会社のCEOをしながらラグナロク株式会社のCKOをしているもぐめっとです。
最近ヴェルサイユ宮殿へ行ってヴェル薔薇の気持ちを感じてきました。(読んだことはない)

今日のお品書きは先日 WWDC23 報告会 at LINE, ZOZO, ヤフー に参加したので、そのまとめをしていきます。

コンテンツのタイムテーブル的には下記のようになっていたため、気になる部分があれば対象LTまで飛んでいただければと存じます。
19:05-19:10What’s new in image processingたなたつ (田中 達也)様 ◆ヤフー
19:15-19:20Hello Object Capture for iOS!森口 友也様 ◆ZOZO
19:25-19:30Animate SF Symbols羽柴 彩月様 ◆LINE
19:35-19:40Whatʼs new in privacy 2023大塚 達也様 ◆ヤフー
19:45-19:50The New Potential of Widgets山田 楓也様 ◆ZOZO
19:55-20:00What’s new in Swift 5.9Hiraki様 ◆LINE
20:00-20:10休憩
20:10-20:50Panel Discussion早石 明浩様 ◆LINE, 冨田 悠斗様 ◆ヤフー
永井 崇大様 ◆ZOZO, まつじ (松本淳之介)様 ◆LINE

What’s new in image processing


- twitter.com
cf: Lift subjects from images in your app

Visual Look Up

  • 猫をタップすると猫の情報をモーダルで表示している。画像に関する情報を調べてくれる。
    • LiveTextと一緒の実装方法で実装できる

SubjectLifting

  • 長押しすると物体だけ切り抜いてドラッグアンドドロップで動く
  • ios17からサードパーティアプリで利用できるようになった
  • visionを使った切り抜き方法として、VNGenerateForegroundInstanceMaskRequestを使って実装できる
  • allInstancesには切り取ったぶんだけ入っている。
    • 0は背景が入っている
  • Generate a mask
    • マスク処理も使えます。解像度を変えずに大きくしたり、小さくしたりできる

Person instance segmentation

3D body pose

  • VNDetectHumanBodyPose3DRequest()というAPIを使って人の3Dモデルが取れる
  • Animal poses
    • 動物も3Dモデルがとれる
  • Animal pose with DockKit
    • 組み合わせれば外出中に猫の様子を見るアプリが作れる

Others

  • visionの改善、CreateMLの改善などありました

Hello Object Capture for iOS

Discover how you can offer an end-to-end Object Capture experience directly in your iOS apps to help people turn their objects into...
Meet Object Capture for iOS - WWDC23 - Videos - Apple Developer - Apple Developer
  • object captureのアップデートを紹介。写真からリアルなObject Modelを作ってくれる
  • 今年はiOS用のAPIが紹介された。
    • LiDARセンサーが搭載されたデバイスで使える
    • 硬質感なものであればリアルな3Dモデルを作れる。low textureではRGBが足りなくてデータが不十分になるが、LiDARが補足してくれる
    • LiDARの点群データが背面の密度を補足してくれる
  • 反転可能な物体は反転させておく
    • 同じテクスチャが繰り返されてるのは誤解を与える
    • テクスチャがないものも混乱を招く

LiveKitでの処理の流れ

  • ObjectCaptureSession
    • capture stateを変更すると処理が進む
  • ObjectCaptureView
    • 3Dで表現されたUIで表示してくれる
  • ObjectCapturePointCloudView
    • LiDARで収集した点群データを表示できる
  • After finishing capture
    • オブジェクトデータはmacやiOS/iPadOSで使える

Animate SF Symbols

羽柴 彩月様 cf: What’s new in SF Symbols 5

Appear & Disappear

特定の機能が利用可能になったり取り除かれたときにユーザにわかりやすく示す

Bounce

  • 跳ねるようなアニメーション。
  • アニメーションが成功したかどうかもとれる
  • デモではスライダーが達したときに自動的にアニメーションが付与されていた

Scale

  • symbolEffect(.scale.up, isActive: true )を指定して動かす。

Pulse

  • 脈打つようなアニメーション
  • 接続中や充電中みたいなものにつかう
  • SFSymbolであればレイヤーごとにアニメーションするか、といった選択もできる

Variable Color

  • 時間とともに変わるアニメーションを表現できる。こちらのほうがリッチなアニメーション
  • ただしこれが利用できるSFSymbolは限られてるので探してください

Replace

アニメーション前
アニメーション後
  • symbolの状態が変わったことを表現できる
    • .contentTransitionをつけるときれいなアニメーションを提供できる

What’s new in privacy 2023

At Apple, we believe that privacy is a fundamental human right. Learn about new technologies on Apple platforms that make it easier for...
What’s new in privacy - WWDC23 - Videos - Apple Developer - Apple Developer
  • privacy関連の新機能について紹介
    • プライバシーは基本的人権とappleは考えている。

新機能

Embedded Photos picker

photos pickerがアプリ内部に埋め込めるようになった。

Write-only calendar access

ios17でカレンダーの読み込みと書き込みの許可が別々になった

Communication Safety

  • センシティブなコンテンツを受信するときに警告が出るようになる

Platform Changes

Safari Private Browsing

  • 追加のトラッキングとFingerrintを守る機能を追加
  • リンクをコピーした時にSafariはトラッキングパラメータを削除します。
削除前
削除後

Privacy manifests

  • xcode15で新しくサードパーティSDKを使う開発者向けにプライバシー情報を記載したのPrivacyInfo.xcprivacyファイルが導入される
  • privacy reportを使うことでプライバシーマニフェストをまとめて表示できる
  • Privacy Tracking Domains
    • ドメインを登録することでトラッキングに関するものだけ拒否といったこともできる
  • Required reason APIs
    • APIを使う理由を書くものが追加。
    • 例えばディスクを使うときは空き容量は人によってかわるので理由を明示してあげる
  • Appleはprivacyに関わるSDKのをリスト化します
    • 今年の後半からレビューの一部としてチェックするようになります。

The New Potential of Widgets

The widget ecosystem is expanding: Discover how you can use the latest WidgetKit APIs to make your widget look great everywhere. We'll...
Bring widgets to new places - WWDC23 - Videos - Apple Developer - Apple Developer
  • iOS17でリリースされた新しいWidgetの紹介

Widgetとは?

  • ホーム画面やロック画面に情報を表示できる機能です。

iOS17での新機能

Interactivity

ボタンやトグル、タップができるアクションの体験ができるようになった。例えばタスクに対してチェックができます。

Animations

swiftUIのアニメーションmodifierが使える。

StandBy

  • iPhoneを横向きに設置したらホーム画面のWidgetが横に表示されている
  • Xcode15のCanvasSettingsから確認できます

Xcode Previewのupdate

  • xcodeでTimelineという機能が使えるようになったため、イベントや時間ごとに一覧化できるようになった。

Potential of Widgets

  • ウィジェットでゲージが動的に変わったり、背景色の変更といったアニメーションが使える

What’s new in Swift 5.9 in 5min

Hiraki様

if and switch試験の導入

  • 値を直接返せるようになった。
let message = 
switch httpStatusCode {
case 200..<300:
  "success"
case 400..<600:
  "other"
}
複数ステートメントはサポートされない
let message = if 200..<300 ~= httpStatusCode {
  let prefix = "suc"
  let suffix = "cess"
  prefix + suffix // NG
  // return prefix + suffix // NG
}

type parameter packs

genericsを使ってやるにはoverloadを用意する必要があった。手動だと制限があるが、シンプルに書けるようになりました。
func query<each Response>(_ item: repeat Request<each Response>) -> (repeat each Response)
引数の数には制限がないように書けます。

Swift macros

例えば@CaseDetectionをつけると暗黙的にマクロを定義した部分が実装されるようになります。
@CaseDetection
enum Path {
  case relative(String)
  case absolute(String)
  // isRelative, isAbsoluteが使える!
}
他の関数を追加することもできる。

Noncopyable structs and enums

Copyableとconsumingを使うことで書き込みの競合が発生しないように書ける。所有権の破棄も可能。
struct FileDescriptor: ~Copytable {
  private var fd: CInt
  init(descriptor: CInt) { self.fd = descriptor }
  func write(buffer: [UInt8]) throws {
    let written = buffer.withUnsafeBufferPointer {
      Darwin.write(fd, $0.baseAddress, $0.count)
    }
    // ...
  }
  consuming func close() {
     Darwin.close(fd)
  }
  deinit {
    Darwin.close(fd)
  }
}

Panel Discussion

早石 明浩様 ◆LINE
[冨田 悠斗](https://twitter.com/tommy__yj)様 ◆ヤフー
[永井 崇大](https://twitter.com/na9ain)様 ◆ZOZO
[まつじ (松本淳之介)](https://twitter.com/mtj_j)様 ◆LINE
  • 松本様
    • LINEでiosに特化したことをしている
    • SlothCreatorが好き。Dogseaをみてください
  • 永井様
    • zozoから来た。zozofitというスーツをきて体型計測するアプリを作ってる
    • ARKitが好き。ARが好きなのと簡単な実装でできるので好き
  • 冨田様
    • Yahooのメディア
    • Metalが好き。ゲーム以外にも使える。Yahoo天気の数レーダーでMetalが使われていてCPU使用率を下げて表現ができる

一番印象に残ったものは?

  • 松本様
    • Vision Pro
    • VRやARを新しい形で知識がなくてもswiftUIで簡単にできるのがすごい
  • 永井様
    • Vision Pro
    • oculusを持っているが、体験レポートを見た感じ今までのHMD(HeadMountDisplay)とは一線が違う体験ができるらしい。ハンドトラッキングの正確性もすごそう。価格もすごい。HMDを流行らせるために全力で作ってきた感がある
  • 冨田様
    • Vision Pro
    • vrでもarでもない仕組みがあるのは痒い所に手が届く感じでいいが、値段がすごい
  • 生one more thingどうでした?
    • 松本様: 最前列ということで朝7:00に並んで見ていたが、そろそろ来るタイミングで動画を回していたが、声がうるさくて現地の声は取れなかった
      • 永井様: 周りも興奮してたので問題ないです
    • 冨田様: 前のスクリーンをみんなで見始めて興奮してた。

興味のあったセッションは?

  • 松本様
    • [Unleash the UIKit trait system](https://developer.apple.com/videos/play/wwdc2023/10057/)
      • UI trait collectionを自分でカスタマイズできたり、UIKitでヒエラルキーをSwiftUIみたいにパスできるようになった
    • [Expand on Swift macros](https://developer.apple.com/videos/play/wwdc2023/10167/)
      • 自分で実装してみてもいい経験だった
  • 永井様
    • [Meet ARKit for spatial computing](https://developer.apple.com/videos/play/wwdc2023/10082/)
      • vision OSでARKit使う時の説明セッション。ハンドトラッキングで興奮した。カスタムジェスチャーを実装したら魔法みたいな体験が実装できそう。
    • [Design considerations for vision and motion](https://developer.apple.com/videos/play/wwdc2023/10078/)
      • ヘッドマウントディスプレイでのデザインの考慮の話。
      • スマホなどのデバイスからHMDに代わって扱う上でVRよりの話がある
      • 視野角やテキストを読ませる時は視覚の中心に配置したりとか、新しいポイントがたくさんある
      • (公開NG)zozoでARKit使ってる?
        • クロスプラットフォームで作ってるので使えてない
  • 冨田様
    • [Meet SwiftData](https://developer.apple.com/videos/play/wwdc2023/10187/)
      • アノテーションツールだけでできるのはとてもいい
    • [Discover machine learning enhancements in Create ML](https://developer.apple.com/videos/play/wwdc2023/10044/)
      • pythonで実装しても大変な機械学習を箇条書きで書くだけで勝手に学習するだけで自動的に教えてくれるのはすごい(この画像に何が入っているかを,区切りで書くだけ)
      • 画像の中のオブジェクトの座標を指定しなくても勝手に学習する
      • CreateMLが好きでアプリに簡単に機械学習を取り込むのがいい

新機能を自分のアプリに入れるなら?

  • 松本様
    • watchOS navigation
      • vertical pagenation入れてみたい
    • Widget
      • どういうのがベストかは探っていきたい
      • ipadのwidgetで出ていたものが表示できるようになったのでどうやって最適化するかを考えないといけない
  • 永井様
    • TipKit
      • zozofitで自信ある機能を入れてもその機能までの導線に達していないため自作でオンボーディングを作っていたのでとても助かる
      • こういうtipの使い方はダメといったNG例もあった。たとえば販売促進など。
      • ios17を入れるとシステムアプリでtipkitが観れるらしい
    • Widget
      • やれることが増えて思わずアプリに遷移したくなる機能が増えてアプリへの動線として使いたい
  • 冨田様
    • visionOS App
      • 普段防災アプリを担当しているが、避難訓練でも入れてみたい。アプリの中だと現実味がない。visionOSだと津波の位置、どのドアが危ないとかで伝えやすそう
    • Push Notifications Console
      • Pushをアプリのコンソールから打てるようになった。
      • テストもしやすい。

おすすめドキュメントは?

  • 松本様
    • [Creating an intuitive and effective UI in watchOS 10](https://developer.apple.com/documentation/watchos-apps/creating-an-intuitive-and-effective-ui-in-watchos-10)
  • 永井様
    • [Designing for visionOS](https://developer.apple.com/design/human-interface-guidelines/designing-for-visionos)
    • HIGとしてもvisionOSをデザインする上でのポイントや守ることが書いてある。iOSやwatchOSに書いてないことがあって面白い
  • 冨田様
    • [SwiftData](https://developer.apple.com/documentation/swiftdata)
    • 保存が楽

当日の様子

始まる前

  • 現地
    • early checkinした時に交流の場が設けられる
      • すでに楽しい空間が出ている
      • ノベルティがもらえる
      • 副社長のスーザンさんと写真も撮れた
    • ヘルシーな朝飯がもらえた
      • ランチはカテゴリごとに4つくらいあって、カレーとラザリアを受け取った
      • グリーンカレーが一番美味しかった
    • 壇上に上がったティムクックも撮影できました
    • keynoteが始まる前にティムクックとグレイグがありがとうといったお話をした
  • 日本のextendの様子
    • wwdc関連のクイズ
      • 字幕の数は幾つかとかあった
      • クイズに答えると景品がもらえた
    • LTをしたり、現地組と電話を繋いでいたりしていた
      • Appleの豊田さんも含めて交流会もしていた

Keynote後

  • appleparkのツアーをしたり、appleのエンジニアと話したりした
    • ブースができていて、聞きたいことを聞ける
    • ラボと違って時間とか気にせずお話しできてよかった
  • state of the unionは後ろのカフェで見ていた
  • visionPro preview
    • steve jobs博物館に飾ってあった。思ったより小さくてコンパクト
  • インフィニティループのオフィスでは、エレベータで自分の仕事がいかに大事かをジョブスに説明できないとクビになるといったエレベータがあった

もぐめっとの所感

自分一人では調べきれないことも報告会などではサクッとインプットできるので非常にありがたい勉強会でした。
個人的にはWidgetがとても使いやすくなりそうなので今後のアプリのアップデートを楽しみにしております!
最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!
‎◆◇ワンナイト人狼ゲーム 公式オンラインアプリ◇◆あの有名なボードゲームの " 人狼ゲーム " が、オンラインゲームアプリとして無料で楽しめる!ワンナイト人狼オンラインは、人狼ゲームをもっと簡単に3人から遊べるようにした協力オンラインゲームアプリ。人狼ゲームの面白さがこのオンライン無料アプリにギュッとつまってます!友達を誘って協力するのも良し!1人で参加し、オンライン上で友達を探してもOKです!◆◇ワンナイト人狼オンラインアプリの特徴◇◆・脱落者なし・3人からでも遊べる・無料でゲームができる・少ない情...
‎ワンナイト人狼オンライン 友達と推理する協力オンラインゲーム - App Store
他にもCameconOffcha、問い合わせ対応が簡単にできるCSmart、フリーランスのコミュニティのNextFreelanceといったサービスも作ってるのでよかったら使ってね! また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

- virapture.com


ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!
ラグナロク株式会社では多くの会社のスマホアプリ開発のサポート業務・スマホアプリ内製化やチーム育成等を行っております。開発コンサル事業、開発チームでのタスク管理や工数管理、スクラム開発等の手法のアドバイスもしております。
ラグナロク株式会社 - ラグナロク株式会社 - Android iOSアプリ開発支援・チーム育成
mogmet