参加してなくてもついていけるもん!WWDCゴリゴリキャッチアップ会20190617の参加メモ
-
「Sing in with Apple」@d_date
- Apple IDでサインインが出来て以下がとれる
- User ID
- Full Name
- Hide My Email
- 別のランダムなアドレスが共有される
- サービス側は本当のメールは見えない
- Appleは保持しない
- Cross-Platform
- javaScriptなど
- Firebase側の対応は?
- 今プルリクを投げている
- バックエンド側の対応が終わってないので実装が正しいかわからないとのこと
- セッションの変更に対応する
- サインイン状態に変更があればNotificationが飛んでくる
- Apple IDでサインインが出来て以下がとれる
-
「Sound Analysis」@shu223
- 発表資料
- Sound Analysisはイマイチ注目されていない
- ユースケースが分かりづらい
- Speech
- 誰が話しているか?を認識する
- 話者認識ができると議事録とかに使える
- iOS13で追加された音声解析のフレームワーク
- 今の所音声の分類のみできる
- Core MLモデルを自作する前提
- 音声分類のデモ
- Create MLで学習させる
- サザエさんの動画で話者を分類
- ストリーミングしながら解析もできる
- 70〜100%くらい精度が動く
- 無音部分をトレーニングデータに入れたら精度が上がりそう
- overlapFactor
- 入力の音声バッファの長さは1.0秒
- 1.0と1.0の間にタラちゃんの声が入ると認識されない
- デモのオーバーラップは0.9でやっている
- 認識結果は信頼度が取れる
-
「CoreML」 @sonson
- Core MLとCreate ML
- アプリがスタンドアローン化
- 複雑なNNに対応
- 時系列データの扱いが簡単になった
- アプリケーション側での追加学習が可能になった
- 夜間、充電中にバックグラウンドで追加学習
- 時系列データ
- 瞬間のデータは同じだがそれまでのコンテキストが意味を持つ
- 音声のために
- Sound Analysis Framework
- チャンネル、ビットレート、長さなどいい感じ見てくれる
- ニューラルネットワーク+K最近傍法
- ユーザーの手書き入力の代表値に似ているかを判断
- ユーザーが星だと思っているものを認識させる
- 学習にはコストがかかる、電気、熱、時間
- Advances in App Background Execution
- 詳しくはiOSDCのプロポーザルが通ったら!
- Core MLとCreate ML
-
「SF Symbols」 @ezura
- 発表資料
- SF Symbolsのコンセプト
- 1,500個以上のAppleが提供するSVGで自作も可能
- iOS 13 or later..etc macがない
- サンプルはAppleのサイトでDL可能
- 標準の画層セットが追加されただけではなく
- SF Fontと親和性の高い設計
- SVG
- 表示に関するパラメータがちゃんとある
- points
- weight
- scale(small, midium, large)
- baseline offsetを持つ
- weightに対応していて変更するとシンボルも太く細くなる
- 使う時
- UIImage(systemName: "person.fill")//Appple提供のSymbol
- UIImage(named: "person.fill")//自作のSymbol
- symbolの名前とぶつかった場合はsymbolが優先される
- iOS13とそれ以外で選択される画像がことなる
- NSAttributedString
- NSTExtAttachmentにimageを設定するだけ
- デザイン指定
- 従来のデザインガイドとはことなる
- 高さと幅の制約を指定しても意味がない、scaleとpointで指定する必要がある
- baselineで揃えるのも効果的
-
「Dark Mode」 @takasek
- 発表資料
- 動画や写真などに集中できる、バッテリー消費とか
- iOS Design System
- familiarityの維持
- プラットフォームの一貫性
- 明確な情報ヒエラルキー
- アクセシビリティ
- シンプル
- UIKit謹製のマテリアルなどを使おう
- Semantic Color
- 絶対値ではなく、意味で色を指定する
- quaternaryLabelなど
- system colorsはlight, dark, accesible
- HIGは必読
- 階層構造
- light mode
- ドロップシャドウ
- dark mode
- ドロップシャドウは使えないため、色の微妙な違いで表現
- Elevated Background Color
- Primary, Secondary, Tertiary
- light mode
- vibrant
- 背景色によらず見やすい色
- コード
- view.backgroundColor = systemBackgroundでdynamicColorが適用される
- UITraitCollectionのおかげでカスタムカラーが作れる
- UIColor.label
- CGColorはDynamicにならない
- TraitCollecitonが変化するタイミングで更新がいる
-
「URLSessionとNetwork.frameworkに追加されたWebSocketサポートについて」@omochimetaru
- 発表資料
- 時間がないので色々飛ばしてまずデモをやる
- WebSocketサポートが入った
- サーバーも入った
- URLSession Client API
- UILSessionにwebSocketTaskが追加された
- enumでバイナリかテキストか分けられる
- 色々な切断方法、通知がある
- sendPingがある
- demo
- https://github.com/omochi/WebSocketMacIOSDemo
- macOSをサーバー、iPhoneをクライアントにして接続
- iPhone側に受信できるようにした
- シミュレータからiPhone実機につなぐ
- localでwebサーバを立ち上げてブラウザで受信している
-
「RealityKit / Reality Composer」 @TachibanaKaoru
- 発表資料
- RealityKit & Reality Composer
- ARKitは割愛。これをみてね
- RealityKitとしてレンダリングエンジンが増えた
- RK
- ARに特化
- iOS13以降
- RKのみでサポートしている機能がある
- Collavorative AR, model rendaering in body detection
- Body Detection
- AR空間の人体を認識、座標を取得
- modelファイルを呼びだすだけ
- Reality Composer
- 3D modeling toolのようなもの
- mac版はXcodeのdeveloper toolから試せる
- シーンに3Dオブジェクトの配置
- AR空間でのモデルプレビュー
- usdz file
- Reality Composerで出力することはできない
- コンバーターで作るしかない
- Share Reality file
- rcprojectから直接ファイル共有することができる
- メッシュ編集ができない
- ObjectにTextureを貼り付けられない
- 外部のモデリングツールで作ってimportする
-
「Data Flow Through SwiftUI」@kitasuke
- Unidirectional
- SwiftUIはReact+MobXに近い
- MobXとReduxはよく比較される
- Reduxは単一方向のデータフロー
- SwiftUIはViewからStateを変えれてしまう
- Reduxなら更新される箇所を制御できる
- FluxはFacebookが作ったGUIアーキテクチャ
- Unidirectional data flow
- Motivation
- Decoupled
- 依存性を排除
- Testable
- Scalable
- Decoupled
- Motivation
- 試しにコードを書いてみた結果
- SwiftUI + Flux
- SwiftUI + MVVM
- ルールちゃんと決めれば良さそう
- https://github.com/kitasuke/SwiftUI-MVVM
- SwiftUI + Redux
- WIP
- Reactに踏み込んだほうがSwiftUIを活用できるのではないか
-
「Accessibility」@myb
- 発表資料
- Accessibility
- アーティストが歌うないようをリアルタイムで手話
- アクセシビリティドメイン
- Vision
- Hearing
- Physical & Motor Skills
- Literacy & Learning
- Voice Control
- Accessibility Element
- isAccessibilityElementがtrue
- UIKitのコントロールはデフォルtrue
- acccessibilityTraitsで要素の性質を指定
- Accessibility Label
- ローカライズされた文字列
- ベストプラクティス
- とにかくラベルを追加しましょう
- ラベルには要素のタイプを含まないようにする
- 追加ボタンなら追加だけにする
- UIの変化に合わせてラベルも返る
- コンテキストが伝わるラベルにする
- 意味のあるアニメーションにもラベルを追加する
- UIAccesibilityCustomAction
- クロージャが使えるようになった
- UIAccessibility
- 設定の情報を取得
- isVideoAutoplayEnabledが追加された
- shouldDifferentiateWithoutColor
- 色弱の方向けに色以外で
- Environment Override
- 設定変更後のデバッグが簡単にできるようになる
-
「Binary Frameworkとその関連する情報」@kishikawakatsumi
- 発表資料
- Binary ramework in swift セッション416の話
- ABI Stability
- module stability
- xcframework
- swift package manager
- Swift 5.0
- ABI
- 5.1
- Module Stability
- 異なるバージョンのコンパイラのでビルドされたフレームワーク(.swiftmodule)をimportできる
- importに必要なのは.swiftmoduleだけ
- Swift Module Interfae
- Module Stability
- Build Library For Distribution
- yesにすると.swiftinterfaceがModules/A.swiftmoduleに生成される
- importするのに必要なI/Fをテキストの形式で示したもの
- publicなクラスと関数の情報+コンパイラのメタ情報など
- https://forums.swift.org/t/plan-for-module-stability/14551
- ABI Stability
- 関数呼び出し規約、ネームマングリングなど
- ライブラリをリンクする時にリンクできるか
- 異なるバージョンのコンパイラで生成されたバイナリ(ライブラリ)をリンクすることができる
- importではなく、リンクフェーズでエラーが起きる
- フレームワークのバイナリを入れ替えると再現できる
- 4.0と4.1で作られたバイナリは相互にリンクできなかった
- デフォルトは互換性を保つ設定でビルドされる
- パフォーマンスをかせぎたいひと向けに
- @frozenや@inlinableを明示的につける
- 先にパフォーマンスを計測してからつけましょう
- XCFramework
- フレームワークのプロジェクトをアーカイブします
- まとめて全てのアーキテクチャのアーカイブを作ることもできるが探しづらい
- アーカイブパスを指定してコマンドを分けてアーカイブを生成するほうが良さそう
- 1つの巨大なバンドルとして扱う事ができる
- distributionの形態としてはこれ以上ない形
- ただし、XcodeにはSPMが導入されているのでGithubから直接ライブラリをインストールできる
- githubにpackage.swiftを置く必要がある
- SPMを使うほうが楽なのではないか
- Package.swiftはコンパイル可能なDSL
- OSSライブラリにおいてはSPMで導入するメリットが多い
- 依存解決
- バージョン管理
- Package.swift置くだけ
- XCFrameworkは当面プロプライエタリなベンダーライブラリに使われるのではないか
- SPM & XCFramework
- CarthageがXCFrameworkになるのはすごく便利
- セットアップが簡単、ドラッグ&ドロップするだけ
- copy-frameworkが不要になる