概要
iOSDC2日目に参加したので、そのまとめ。
参加したセッションまとめと、感想を記しておく。
セッションまとめと感想
登壇者が話したことと感想とが混じっているので、雰囲気で察してくれることを祈る
詳解Fastfile by ぎぎにゃん
- 資料
- fastfileの詳細について話すよ
- fastlineの活用事例
- コードレビュー
- Danger用に自社で作ったスペルチェックツール、いいな
- サブミット
- CIでリリースビルドしてサブミット
- SlackBOTからサブミット
- 定期的にmasterをビルドしてサブミット
- 強いな
- 社内向けビルド
- エンタープライズライセンスでビルドして配信サービスで社内配布
- PRごとに配布
- 社内向け配信サービスは16時から話すよ
- メトリクス収集
- コードレビュー
- ありがちなこと
- なんでもfastfileに書きがち
- メンテしやすい最高のfastfileの書き方
- Fastfile
- 基本的にはRuby
- Fastfile
- import
- 複数のfastfileを読み込んで実行できる
- GitHubでシンタックスハイライト
- 一行目に
#vim: syntax=ruby
って書くといいよ
- 一行目に
- 公式のAdvanced Featureを読む
- いろいろ書きやすいがゆえに肥大化する
- 最高のFastfileとは
- 書かない
- コードを書くところではないので、書くものを減らす
- コツ
- 値を書きすぎない
- 環境変数を利用する
- 設定とロジックを分離する
- ~fileを利用する
- Gymfileなど
- ~fileを利用する
- Actionを分離する
- テンプレートを作るコマンド
bundle exrc fastlane new_action
があるので、それを利用して作成するとよい - パラメータのバリデーションがしやすい
- 型チェック
- テストが書きやすい(RSpec)
- テンプレートを作るコマンド
- 値を書きすぎない
- コードサイン
- AutomaticはCIでこけやすい。理由はわからない
- よく聞く話だー
- matchはGitで管理しているプロファイルをいい感じに取得する…らしい
- 正しい世界観はXcodeのコンフィグレーションを使うのがよいのではないか
- Xcode9からAutomaticとManualが同居できるようになった
- AutomaticはCIでこけやすい。理由はわからない
- 最高の設定
- fastlaneあるある
- 手元での確認がだるい
- デバッガを使う
- Rubyのデバッガ
- pry
- .envrc
- envchain
- direnv
- Rubyのデバッガ
Depth in Depth
- 資料
- Depth
- 深度
- 深度の用途:背景を飛ばす
- フリマ系アプリで出品時に背景を飛ばすなどの用途がある
- 深度の用途:3Dスキャン
- 深度の用途:その他
- ZOZOスーツの「30センチ後ろにさがってください」などの検知に使っていそう
- 深度は発想次第で写真以外にも用途がいろいろある!
- Disparity(視差)
- 人間の左右の目で見えるものが違う
- iPhone7以降の背面カメラで利用
- DepthはDisparityから計算できる
- Depthの逆数=正規化されたDisparity
- Time of Flight
- iPhoneXの前面カメラ
- iOSで取得する方法
- AVDepthData
- 深度を表すクラス
- どの方法で取得しても最終的にこれが得られる
- iOS11以上
- var depthDataMap: CVPixcelData
- 用途別にわけると3種類
- 撮影済の写真
- カメラからリアルタイムに取得
- AVCaptureDevice
- ARKitから取得
- ARFrameにプロパティがある
- AVDepthData
- 方法に優劣はなく、用途に応じたものを使う
- 背景合成の手法
- マスク画像を基準に、オリジナル画像と背景画像をブレンドする
- CIBlendWithMask
- 顔の深度をしきい値に、深度マップを2値化する
- PotraitMatte
- https://twitter.com/daisuke7/status/1035753094758334466
- いい感じにしてくれる
- 静止画じゃないと使えない
- 人が写っていないと使えない
- iOS12以上じゃないと使えない
- どういうケースで、なにができてなにができないのか把握しづらい
5000行のUITableViewを差分更新する
- 資料
- UITableViewで差分更新、パフォーマンスの話
- UITableViewで差分更新する
- 特徴
- 行数がたくさんあっても早い
- 更新方法
- 全部更新
- アニメーションなしだが、簡単に使える
- 差分更新
- 全部更新
- 特徴
- 差分更新をどう実現するか
- 差分のIndexPathを正確に指定するだけ
- diffを使おう
- diffとpatch applyをしている
- 差分更新はここがいい
- きれいでわかりやすいアニメーション
- 既存アプリ+差分更新
- 来週からでもいれてみたらいい
- あかんやつw
- 実際にやってみた
- 来週からでもいれてみたらいい
- 差分更新いれてみた
- reloadData()を置き換えていく
- 遅すぎた。Filterが遅すぎる
- reloadData()のほうがマシでは?
- パフォーマンス解析するのにInstruments
- Timer Profiler
- Timer Profilerでわかること
- アプリ実行中のCPU負荷の時系列のグラフ
- differを使って調査
- 調査した結果、diffに時間がかなりかかっていた
- firebaseの指標値内に収めたい
- diffのあとはpatchのパフォーマンス改善
- 削除に時間がかかる
- reloadData()に戻すという方法もある
- 削除に時間がかかる
- diffの行数だけ計算させて、行数が少なければそのままライブラリ、多ければreloadData()を使うという方法をとった
- 差分更新と多数行削除の共存
- banjun/GigDiffer というコンセプト実装ライブラリを作った
Synchronized iPhones!
- 資料
- まだない
- Syncしてやりたいこと
- iOS端末のリフレッシュレートにあわせる
- 最も早いリフレッシュレートは60fps
- CADisplayLinkを使えば、リフレッシュレートにあわせて描画できる
- iOS端末のリフレッシュレートにあわせる
- iOSデバイスの時刻をあわせる
- NTP、GPS、NITZ
LT
メモ取る時間がない感じなので、諦めた。
全般的にルーキーという感じがまったくしなくて、とても良かった。
下記のLT資料は、あとで読みたい。
Appleのアニメーションはなぜ美しいか考える
まとめ
デザインやアニメーションについての言及があるセッションがあって、音系のセッションもあって、実り多いカンファレンスだ。