Amarronの日記

iOSやMac、Web系の記事を書きます。

iOSDC JAPAN 2021 感想 自分用メモ

iOSDCを見たので、自分用メモとして残しました。

iOSDCの概要

f:id:Amarron:20210919193903j:plain

iOSDC Japan 2021はiOS関連技術をコアのテーマとしたソフトウェア技術者のためのオンラインカンファレンスです。 日本中、世界中から公募された100本を超える知的好奇心を刺激するトークの他にも、パンフレットに掲載された技術記事、参加者であれば誰でも作れる即興のトーク・アンカンファレンスなど、初心者から上級者まで楽しめるコンテンツがみなさんを待っています! 9月17日(金)〜9月19日(日)はお祭りです!お楽しみに!!

https://iosdc.jp/2021/

その他

iOSDC Japan youtube channel

全体の感想

  • ニコ生について
    • プレミアム会員ではないので少し不便(時間を戻して見れなかったり、一時停止ができなかったり)
    • 途中で止まることがちょこちょこある(戻したりできないのでその部分が抜ける)
  • 内容について
    • 相変わらずナレーションが豪華
    • heyのcmが頭に残る(とにかく明るい印象)
    • 特定の会社が複数人登壇している
    • 専門的すぐてついていけないセッションもあったが、刺激になった
    • Combineとかaync/awaitの話題が多い印象
    • 知見が広がって楽しかった
  • その他
    • Discodeを使ってみた(前日にインストール)
      • 設定がいけていないのか、通知がめちゃくちゃくる
      • 質疑が聞けて少しカンファレンス感があって良かった
  • 後で調べたいこと
    • SwiftUIでハードウェア連携
    • GraphQL
    • Concurrency,async/await
  • 面白そう
    • Nandgameとか面白そう(hak & tomzoh)

自分が聞いたセッション

  • 9/17
    • SwiftUIで使ったアプリを1年運用してみてわかったこと / Akifumi Fukaya
  • 9/18
    • 初めてのハードウェア対応 / Takeshi Yokokoji
    • Network ExtensionでiOSバイス上で動くパケットキャプチャを作る / 岸川克己
    • エンジニアの視点から見る(株)ゆめみの働き方 / yumemiイシガキ
    • 実践 iOS オープンソースプロジェクトの始め方 / Yoshimasa Niwa
    • 100日間AR表現を実装して見つけた面白い実装を全力解説 / 服部 智
    • Swift 5.5 async/await を支えるモナド、継続、コルーチン / 稲見 泰宏
    • Finder Sync Extension で Mac 向け便利ツールを作ろう / Kyome
    • LT
    • スタディサプリ」がFull SwiftUIを選択した先に見えてきたもの。 / Hajime Nakamura
  • 9/19
    • 実践 SharePlay / Group Activities / 所友太
    • 大規模なアプリのマルチモジュール構成の実践 / giginet
    • LINEアプリのモバイル体験改善に向けた取り組み / 早石 明浩 / 富家 将己
    • ケースに応じたUICollectionViewのレイアウト実装パターン / to4iki
    • SwiftUI+GraphQLで新規プロダクトの継続的破壊(Continuous Destruction)に立ち向かう / Takuya Yokoyama
    • async/awaitやactorでiOSアプリ開発がどう変わるか Before&Afterの具体例で学ぶ / Yuta Koshizawa
    • hak & tomzoh 特別企画 / hak(時間が重なったので途中から)

https://fortee.jp/iosdc-japan-2021/timetable

9/17

SwiftUIで使ったアプリを1年運用してみてわかったこと / Akifumi Fukaya

https://speakerdeck.com/akifumifukaya/iosdc21

  • KAUCHE
    • シェア買いでお得
    • 歴史
      • 2020年リリース
    • 中身
  • アーキテクチャ
    • MVVM
      • View <-> ViewMode l<-> Model
      • View:ProductDetailView
      • VM: ProductDetailViewModel
      • V: ProductDetail
      • f:id:Amarron:20210919193911p:plain
  • SwifrUIの問題
    • NavigationLink.destinationに設定したViewはNavigationLinkが読み込まれると同時に初期化されてしまう
      • LazyViewを導入すると初期化するタイミングを調整
    • SFSafariとNavigationLinkの相性が悪い
      • 違うのを使うのが良い
    • EnviromentObjectで意図しない画面遷移や画面が真っ白になる
      • EnviromentObjectを利用しない

9/218

初めてのハードウェア対応 / Takeshi Yokokoji

https://speakerdeck.com/ykkc/chu-metefalsehadoueadui-ying

  • STORESレジの紹介と対応ハードウェア
    • 技術スタック
      • Lang:Swift
      • FW:SwiftUI, Combine
      • API:GraphQL
      • DB:Realm
      • Tool:GitHub,Bitrise,FireBase,Fastlane
    • STORESレジの紹介
      • 処理
        • 商品読み取り→合計金額の通議→決済→レシートの発行
        • 上記処理には様々ハードウェアが必要になる
  • 開発
    • Bluetooth
    • Bluetooth Low Energy(BLE)
      • CoreBluetooth Frameworkで実装
        • 全体図
          • f:id:Amarron:20210919202337p:plain
        • プログラム
          • BLEDeviceModel
          • BLEDeviceManager
          • BLEDevice
    • Bluetooth Classic
      • f:id:Amarron:20210919202532p:plain
      • Bluetooth 3.0以前の規格
      • 実装意外にも色々調整が必要
        • MFi登録申請、認証が必要
        • f:id:Amarron:20210919202615p:plain
      • アプリからの接続ではFrameWorkUIが必要
  • 苦労したこと
    • 接続状態管理
    • ハードウェア固有の動作差分
    • リモートワークで機器が増える

Network ExtensionでiOSバイス上で動くパケットキャプチャを作る / 岸川克己

https://www.icloud.com/keynote/0Cj2gU0ETpApwIpSA2soblajA#iOSDC_2021

  • Network Extension、パケットキャプチャの概要
    • Network Extensionとは
      • ネットワーク関連の昨日を拡張・拡張・カスタマイズできるAPI
      • Wi-Fi設定の変更
      • VPN構成の作成と管理
    • パケットキャプチャとは
      • ネットワークを流れる通信データ(パケット)をデバッグなどのために取得(パケットキャプチャ)してわかりやすい表示したりするソフトウェア
    • ソフト
  • Charles proxy for iOSのようなパケットキャプチャを作るには
    • f:id:Amarron:20210919202622p:plain
  • VPNとは
    • f:id:Amarron:20210919202628p:plain
    • f:id:Amarron:20210919202634p:plain
  • Network Extensionで簡易VPNクライアントとサーバーを実装する
    • Packet Tunnel Providerで作成
      • f:id:Amarron:20210919202640p:plain
    • Content Filterではできない
      • 外部への出力が制限されている(Xcodeのコンソールに表示くらいしかできない)
    • 開発
      • httpパケットの通信内容を確認する機能を実装したい
      • XcodeでPacket Tunnel Providerを選択して、新規プロジェクト作成
      • どのコードがどの操作に影響しているかドキュメントに記載されていない場合が多い
        • サンプルコードを動かしながら1つづ検証する必要がある
      • デバッグはログで確認する
        • 非同期処理が多いのでデバッグよりログがおすすめ
      • パケットを取得する
        • TCPパケット、UDPパケット
      • VPNサーバーの通信を実装する
      • 3 way handshake
        • f:id:Amarron:20210919202647p:plain
  • UDPのキャプチャ
    • Among Usを教材とする(ゲームはUDPが多い )
    • リバースエンジニアでAPIGitHubに上がっている
    • キャプチャーすると誰が敵に割り当てられたかわかる(チートツールが作成できた)
    • Discodeでワイワイするのが楽しいが死んだ後にはオフにするのが手動で煩わしい→これを自動でできることが動機の一つ

エンジニアの視点から見る(株)ゆめみの働き方 / yumemiイシガキ

実践 iOS オープンソースプロジェクトの始め方 / Yoshimasa Niwa

  • ライブラリの開発
    • APIデザイン
    • ライセンス
      • 法的な問題がわかる人に相談
      • どうやって表示するか
        • SPDXを使う
        • IDETem;ate<acros.plist
    • パッケージング
  • メンテナンスの計画
    • Pull Requestをどう扱うか
      • 受け付けなくてもOK
      • 受け付ける場合、CLAなどの同意が必要になる
      • One Source RepoとMono Repo
    • コミットチェック
      • CI環境の互換性
      • GNU makeの活用
        • macOSは対応バージョンが古い
  • プロジェクトの公開
    • GitHub
    • GitHubActions
    • ISSUE_TEMPLATE
    • PULL_REQUEST_TEMPLATE
  • 広く使ってもらう
  • コミュニティへの還元

100日間AR表現を実装して見つけた面白い実装を全力解説 / 服部 智

https://speakerdeck.com/satoshi0212/100ri-jian-arbiao-xian-woshi-zhuang-sitejian-tuketamian-bai-ishi-zhuang-woquan-li-jie-shuo

  • 顔ペイント
    • 機能
      • 顔にペイントする
    • 「Tracking and Visualinzing Faces」を参考に作成
    • program
      • ARSCNViewDelegate
    • iOS15以降
      • 「Creating an App for Face-Painting in AR」も同じような機能が実装されている
  • 現実スプラトゥーン
    • 機能
      • 壁とかにペイントする
    • 実装
      • LiDARでのスキャンとMesh化
      • カラーボールの挙動
    • Appleのサンプルが参考になる
  • ARなぞとき
    • 機能
      • 空中に文字を表示
  • BlotterMedia風効果
  • EyeTrack HeatMap
    • 機能
      • 見ている箇所が赤くなる(ヒートマップ)

Swift 5.5 async/await を支えるモナド、継続、コルーチン / 稲見 泰宏

https://speakerdeck.com/inamiy/iosdc-japan-2021

  • 非同期計算
    • 従来
      • コールバック方式による非同期計算
        • コールバック地獄
      • リアクティブ・プログラミングによる非同期通信
    • swift5.5
      • async/awaitによる非同期計算
    • 実はどれも同じような考え
  • 関数型プログラミング
  • モナド
    • f:id:Amarron:20210919202710p:plain
    • モナドの例
      • Optional
      • Array
      • Rx.Observable
    • モナド則は「結合律」が重要
    • ここまでのまとめ
      • f:id:Amarron:20210919202719p:plain
    • 計算効果
      • 計算効果=計算の過程で追加で発生する(副)作用
        • エラーハンドリングなど
    • do記法
      • Resultのdo記法による手続き化
    • モナドの問題点
      • 計算効果の合成が扱いにくい
    • 自由モナド
    • まとめ(モナド
      • f:id:Amarron:20210919202728p:plain
  • 継続
    • 継続=コールバック関数
      • CP
      • CPS←今回はこっちが重要
    • structures Concurrency
      • 親タスクと子タスクが入れ子状態になる
        • リソース管理が楽になる
    • callcc
      • コールバックの合成
      • shift/reset(限定継続)
    • まとめ
      • f:id:Amarron:20210919202740p:plain
  • コルーチン
    • コルーチン=中断と再開できる機能を持つ関数
    • データ競合が起きないようにできる
    • まとめ
      • f:id:Amarron:20210919202749p:plain
  • まとめ
    • f:id:Amarron:20210919202801p:plain

Finder Sync Extension で Mac 向け便利ツールを作ろう / Kyome

https://zenn.dev/kyome/scraps/7f1e4af8f3f212

  • Finder Sync Extension
    • ローカルとリモートでファイルを動機する
    • 指定したフォルダとその階層化の監視
    • 動機状態の表示
    • カスタムコンテキストメニューを提供
    • カスタムツールバーボタンを追加できる
  • Finder Sync Extension 実装の基本
    • Mac側の設定で機能拡張の有効が必要
    • project作成
      • Finder Sync Extensionターゲットで作成
      • 収容アプリと機能拡張のバージョンを合わせる
    • 実装
    • 注意点
      • 読み書き権限が適用しない場合がある
        • NSOpenPanel,NSSavwPanelを使ってファイルパスを取得すれば読み書き権限が通用する
      • App Sandbox下で監視するフォルダを指定するのは厄介
      • Finder機能拡張同士が競合することがある
        • 先に有効化されたほうが優先される
    • 便利ツール
      • ScaleHelper
        • @2x,@3xの画像が自動生成できる
      • RenameHelper
        • ファイルを連番でリネームできる
      • NewCanvas
        • 無地の画像ファイルを作成できる

LT

  • Nearby Interactionを利用した空間認識 / yoshimi
    • Nearby Interactionとは
    • 取得できる情報
      • 距離と方向
    • ユースケース
    • 使ってみて
      • 2台までなら安定して検出できる
    • 制約
      • 縦持ち
      • 壁とかない
    • iO15から3rd partyアクセサリで利用可能
  • 再現ができない?特定ができない?ZOZOTOWNアプリのトップクラッシュに立ち向かった話 / chichilam
    • フィードバックから原因究明
      • 使い続けると落ちる→メモリの増築が原因
        • リニューアルでリッチになったのでメモリが増え続けるクラッシュ
    • 解決に向けて
      • 画面遷移で画像を作り続けている箇所を改善
    • まとめ
      • 原因特定は色々な角度から検証し続ける
  • M1チップの脆弱性M1racleを読み解く / 星野恵瑠
    • M1チップに脆弱性が発覚
      • M1racles
    • 脆弱性内容
      • 別プロセスでデータをやりとりできてしまう
    • 問題点
      • マルウェア同士でデータがやりとりできる
      • 現状そんな問題ない
  • Hacking the Tesla API / きんちゃん。
    • BMW Digital Key
    • Tesla
      • 開場からエンジンをつけるまで
  • やってみよう!iOSDCデザインスポンサー! / FromAtom
    • デザインスポンサーは何をするの?
      • 公式ロゴ
      • 公式サイトを作る
    • スケジュール
      • 5/27 ロゴのデザイン案
      • 6/12 ロゴ完成
      • 7/6 サイトデザイン案
      • 8/4 サイトリリース
    • メンバー
      • デザイナー
      • エンジニア
      • とりまとめ
    • 社内交渉
      • スポンサーのメリット
      • 人のマッチ
    • 毎年模索
    • 良かったこと
      • 全体のブランディングができる
      • みんなが使ってくれる
      • 水石琴乃さんに読み上げられる
  • iOS 15以降のNotificationのあり方について考える / haseken
    • Notification新機能
      • Notification Summary
      • 集中モード
      • Interruption Level
    • これらの影響
      • Notificationがユーザーの目に触れにくくなる
      • Notificationがシステムに深く係る場合、サービスに支障が出る
  • あなたの知らないSafariのExperimental Featuresの世界 / HEAVEN chan / ikkou
    • Experimental Featuresとは
      • フラグをオンにすると、Safariで使える実験的な機能
    • 注目の設定
      • http2とhttp3
      • WebGL2.0
      • WebGPU
      • Web Ahre API Level 2
      • HTMLelement
        • 3D/AR向けなど
        • 現時点ではOnに変更しても動作しない
  • SwiftUI.Textを使いこなす5分間 / あつや
    • 長い文字で途中にboldしたい場合
    • テキストに画像を入れる場合
    • 文字列補間を拡張した書き方
      • appendInterporation
    • 数値の三桁区切り
      • 数値を文字列に入れると自動で3桁区切り(1,980円)で行ける
    • FormatStyle
  • 最強の500系エラー画面を探し求めて / akatsuki174
    • 51アプリの500系エラーを集めた
      • 何も説明無し:24
      • 説明あり:17?
      • 説明あり+アクションボタンあり:10?
    • 良くない500系エラー
      • 説明無し、説明が不十分
    • 良い500系エラー
      • 説明あり、ユーザーが次にどうすべきか判断できる材料が示されている、最新の状況がわかるようになっている
  • 「Hey Siri, おはよう」に憧れて / kiwi
    • スマートリモコンスイッチボット
      • 専用のアプリからSiriでショートカット実行
    • Homekid
      • Homebridge
        • 現在のステータスが返せない

スタディサプリ」がFull SwiftUIを選択した先に見えてきたもの。 / Hajime Nakamura

  • 技術検証
    • 想定するデザインのプロトタイプをSwiftUIで実装
    • Full SwiftUIでのアーキテクチャパターンの検証
    • UIKitを組み合わせる仕組みの検証
  • 見えてきたメリット
    • アニメーション
      • f:id:Amarron:20210919202821p:plain
  • 見えてきたデメリット
    • ライフサイクル系メソッドの不安定な動作
      • Firebaseの自動スクリーントラッキングが対応していない
      • →ナビゲーション時に手動で送信するコード作成
  • 見えてきたTips
    • プログラムで画面遷移を制御する
      • APIと通信して条件に適した場合のみ画面遷移したい
        • 隠しNavigationLink
  • 所感
    • 開発体験が加速
      • UIの実装がスピードアップ
      • 実装の変更やレビューがしやすい

9/18

実践 SharePlay / Group Activities / 所友太

  • SharePlay入門
    • SharePlayとは
      • iOS15.xで対応予定
        • iOS15.0には間に合わないので対応延期
      • FaceTime通話中に離れた場所の友達とアプリを共有する
      • 映画やスポーツなど一緒に視聴するなど
      • 対応しているアプリ
    • 3種に分けられる
      • f:id:Amarron:20210919202827p:plain
  • 実践
    • 画面共有
      • FaceTimeで画面共有を選ぶ
        • Zoomの画面共有のような機能
      • 対応するのに必要なコードは0行
      • アプリが画面共有されてしまわないか気をつける必要がある
        • パスワードなどセキュアな入力フィールド
        • DRM(FairPlay)で保護された動画
        • 画面キャプチャ中に特定要素を隠す実装
          • f:id:Amarron:20210919202833p:plain
    • 動画共有
      • FaceTime中に好みの動画を再生する
      • DRMで保護されたコンテンツもShare
      • 片方が一時停止すれば、もう片方も一時停止する(動作の同期)
      • 対応するのに必要なコードは50行程度
    • カスタム
      • 軽いデータ(テキストなど)を送受信できる
  • その他
  • QA
    • Q1. 相手がアプリを持っていなかったら?
        1. 相手にダウンロード推進する画面が表示される
    • Q2. 有料会員しか視聴できない動画は?
        1. サービスによる
    • Q4. 相手がMacでもSharePlayできる?
        1. YES、safariのみで動作可能(カスタムイベントには)
    • Q5. iOS 15 betaでSharePlayを動作するには?
        1. developer.apple.com/download でプロファイルをダウンロードする

大規模なアプリのマルチモジュール構成の実践 / giginet

https://speakerdeck.com/giginet/da-gui-mo-naapurifalsemarutimoziyurugou-cheng-falseshi-jian

  • このトークについて
    • f:id:Amarron:20210919202839p:plain
  • マルチモジュール分離前の状況
    • 目的
      • 開発時のビルド待ちを減らしたい
        • これが一番の目的
      • 機能感の依存や副作用を減らしたい
      • テスト記述の簡略化
      • ObjCなどの古い実装を隠蔽したい
    • アーキテクチャ
      • f:id:Amarron:20210919202849p:plain
  • 現在のCookpadアーキテクチャ
    • f:id:Amarron:20210919202900p:plain
    • 問題点
      • Feature Module間は依存関係を持たないようにする(縦ではなく横の連携)
        • Environmentを経由して依存にアクセスする
        • f:id:Amarron:20210919202910p:plain
      • DescriptorとResolver
        • Environmentが持つ依存解決の仕組み
        • UIViewcontrollerを隠蔽できる
    • マルチモジュール化の効果
      • f:id:Amarron:20210919202917p:plain
    • まとめ
      • f:id:Amarron:20210919202925p:plain
  • 実践的マルチモジュール
    • モジュール分離を浸透させるには
      • すべてを一度に移行しない
      • 穴を塞ぐ
      • 開発者が迷う点を減らす
    • すべてを一度に移行しない
      • 古い実装(既存)を残して、新しい機能から入れられるようにする
        • environmentで吸収
      • 古いViewControllerへの遷移
        • Resolver経由で取得する(古い実装を無理に変更するのではなく、既存を隠蔽して使えるようにする)
    • 穴を塞ぐ
      • 新しいアーキテクチャのモジュール、Sceneの自動作成
        • モジュールの生成
          • XcodeGenを利用
        • シーンの生鮮
      • ジェネレーターを整備することで、形式にそうような仕組みで組み込まれるようにする
    • 開発者が迷う点を減らす
      • コミュニケーション
        • 勉強会、資料、会話など
      • ベストプラクティスの提供
        • 実装揺れが起こりそうな箇所は明確な取り決めを行う
      • 仕組みによるリアーキテクチャの指針
      • メタプログラミングの利点
        • f:id:Amarron:20210919202933p:plain
      • この仕組のメリット
        • f:id:Amarron:20210919202941p:plain
      • モックの自動生成
        • mockoloなどがある
      • その他の工夫
        • 静的解析など
    • モジュール分離の浸透のためにできること
      • f:id:Amarron:20210919202950p:plain
  • まとめ
    • f:id:Amarron:20210919202958p:plain
  • 質疑(Discode
      1. バゼルなど他のビルドは検討しなかった?
      2. 標準のビルドに載せたい、今回は選択しなかった、知見があれば教えてほしい
      1. 少しだけ違う場合の使いまわしどうする?
      2. 別々に用意することが多い
      3. 全く同じであれば使い回せる仕組みになっている

LINEアプリのモバイル体験改善に向けた取り組み / 早石 明浩 / 富家 将己

  • 会社紹介
  • iOS11 & iPhone X対応
    • いくつも不具合あり
    • 改善点
      • 出たしが遅かったので、早めに対応できる体制をつくる(Eary Bird TF)
  • Eary Bird TFでの対応
    • iOS12
      • Siriショートカット
      • 通知のグループ化
    • iOS13
      • Context Menu
      • Dark Mode
      • wathOS6 & SwiftUI
      • Share Suggestion
      • Sigin in with AppleID
    • iOS14
      • Widget
      • Picture in Picture
      • ATT(App Tracking Transparency)
    • iOS15
      • 通知機能
      • 集中モード
      • Siri Suggestion in Widget
      • Quick Note
      • など
  • 組織変更
    • 2021年に組織変更

ケースに応じたUICollectionViewのレイアウト実装パターン / to4iki

https://speakerdeck.com/to4iki/kesuniying-zitauicollectionviewfalsereiautoshi-zhuang-patan

  • 目次
    • テーマ背景
    • UICollectionViewのおさらい
    • レイアウト実装の設計
    • まとめ
  • UICollectionView
    • UICollectionViewLayout
      • UICollectionViewFlowLayout
        • 縦横に均等配置、動的なレイアウトはできない
      • UICollectionViewDelegateFlowLayout
        • 複雑なレイアウトは苦手
      • UICollectionViewLayoutCustom
        • 要素に応じてレイアウトを頻繁に更新するケース
        • 比較的難易度の高い実装となる
        • 例)可変長のアイテムをTopに整列するなど
      • UICollectionViewCompositionalLayout
        • iOS13以降
        • カスタムと同じようなレイアウトをより簡単に実装
        • 例)
      • 利用ケース
        • f:id:Amarron:20210919203007p:plain
  • 実装
    • 方針
      • UICollectionViewCompositionalLayout + DiffableDataSource
      • レイアウトとデータを分離
      • f:id:Amarron:20210919203015p:plain
        • DiffableDataSource
          • 型による制約でデータとUIの不整合を防止
        • SectionProvider
          • レイアウト・データ反映の提供
        • SectionModel
          • 表示データとProviderを保持
  • まとめ
    • f:id:Amarron:20210919203022p:plain
  • その他
    • GitHubにサンプルコードあり

SwiftUI+GraphQLで新規プロダクトの継続的破壊(Continuous Destruction)に立ち向かう / Takuya Yokoyama

https://speakerdeck.com/chocoyama/swiftuitographqltehurotakutofalseji-sok-de-napo-huai-nili-tixiang-kau

  • Continuous Destructionとは、改善・変更のこと
  • STORESレジについて
    • 技術スタック
  • 破壊(変更)への対応
    • 変更に対応しやすい→ユーザーに価値を届けやすい
    • SwiftUI
      • レイアウト変更しやすい
        • f:id:Amarron:20210919203028p:plain
      • 表示確認がしやすい(アプリの起動が必要ない、複数パターンの確認もできる)
      • STORESレジでの変更への取り組み
        • デザインシステム=デザイン原則をまとめたスタイルガイド
        • f:id:Amarron:20210919203038p:plain
      • まとめ
        • f:id:Amarron:20210919203046p:plain
    • GraphQL
      • f:id:Amarron:20210919205205p:plain
      • 強み
        • 必要なデータだけ取得する
        • 少ないリクエストで複数のリソースにアクセスできる
      • STORESレジでの変更への取り組み
        • 仕様変更を監視し通知する
        • など
      • まとめ
        • f:id:Amarron:20210919205211p:plain
    • まとめ
      • f:id:Amarron:20210919205220p:plain
    • SwiftUI+GraphQLをあわせてできること
      • f:id:Amarron:20210919205227p:plain
      • SwiftUIとGraphQLは1対1
  • 振り返りと今後の展望
    • f:id:Amarron:20210919205232p:plain

async/awaitやactorでiOSアプリ開発がどう変わるか Before&Afterの具体例で学ぶ / Yuta Koshizawa

https://zenn.dev/koher/articles/swift-concurrency-cheatsheet

  • Concurrency(並行性)・・・iOSアプリ開発を劇的に変える可能性がある
    • async/await
    • Structured Concurrency
    • actor
  • Swift Concurrency
    • iOS13から使える
  • 質疑(Discode
      1. 小さいアイコンと大きなアイコンで、大きなアイコンがくるまでは小さなアイコンを表示したい
      2. TaskGroupを使うと良いかも
      1. 小さなアイコンと大きなアイコンを非同期で取得する処理で同時にエラーが起きないか
      2. Excuteしている方でエラーが発生のみ発生されると思う

hak & tomzoh 特別企画 / hak(時間が重なったので途中から)

  • 「作ってわかる」教材おすすめ
  • どこから情報を取得している?
    • f:id:Amarron:20210919205247p:plain

LT

  • ほんの一瞬だけでもConcurrencyの計算理論に触れてみませんか? / ばんじゅん
    • 概念的な世界で説明
    • CCS
  • NDIとARKitを連動させた新しい映像表現 / 服部 智
  • Swiftのソートアルゴリズムの特徴を5分できちんと知る / Takanori Hirobe
    • Timsortと呼ばれるアルゴリズムを使っている
      • Swift5.0から使われる(それまでは、Introsortが使われていた)
      • 他の言語でも使われている
    • ソートに重要なこと
      • 速さ
      • 安定性
        • 同じ値の場合、ソートしても順番が変わらないと安全
      • メモリ使用量
  • Using Eigen from Swift (via C) / さのたけと
    • Eigen
    • SwiftからEigenを使えるようにする
    • Swift<->C<->C++
  • 5分でわかるIDFA / ATT / 神武
    • IDFAで広告効果を計測する仕組み
    • IDFAを使用できなくなった
    • ATTを大体として使う
    • ATT許可率をアップさせる
      • メイン機能の後に表示する
    • SKAdNetwork
      • ユーザーの個人情報を含まないID
      • AppStoreClientとアドネットワークでやりとり
  • アプリの終活 / 久利龍義
    • アプリを綺麗な状態にする
      • 不要な機能、実装、画像の削除
    • 時間を取られない状態にする
      • 問い合わせ対応への負荷軽減
      • 自動化
      • READMEの最新化
    • クローズに向けた機能の構築
      • 注文定式機能追加
    • 次のアプリへの相続
    • 就活後の対応はほとんど0
  • 2段階認証実装の勘所 / ころころ
    • 多要素認証
      • 認証の3要素
    • iPhoneの生体認証を多要素認証として使うことは難しい
    • 多要素認証としての2段階認証
    • TOTP
    • ネイティブアプリでTOTPを実装
  • 今、改めて振りたいiPhone搭載のセンサとその使い道 / Atsushi Otsubo
    • 位置
      • GPS
      • 気圧センサ
    • モーションセンサ
    • メディア関連
      • カメラ
      • マイク
    • その他
      • LiDAR
      • 輝度センサ
      • 近接センサ
  • Kyash iOSアプリのQAの歴史 / konifar
    • 2017年4月リリース
    • 2017年12月品質上げる懐疑
      • Bug Bash 開催
        • 職種関係なく触ってもらう
        • 1年後マンネリ化
    • 2020年改善の兆し
      • 運用とUnitテストの整備
      • MVVM
        • VewModelのところでテストを強め
      • 6月 週1のナレッジ共有回
      • QAチームによるバグ分析と資産化
    • 2021年9月
      • まだ課題があるので改善し続ける
    • 定期的に課題を上げて改善する
    • アリストテレス
      • 改善とは行為ではなく習慣である
  • Hey Siri!マルチプラットフォームでのSiriショートカットの地雷を教えて / monoqlo
    • Tips
      • メッセージをすべてコントロールできない
        • プラットフォームごとに少し違う
      • iOS13,iOS14でメッセージが違う
        • カスタムメッセージを読んでくれない
    • おかしいと思ったら
      • 再起動、言語設定
    • 最後
      • Appleの管理化からは逃れられない

表彰

  • モリアガリトーク
    • 3位 岸川克己
    • 2位 Daiki Matsudate
    • 1位 Yuta Koshizawa
  • アンカンファレンス賞
    • sonson
  • ベストフィードバッカー賞
    • aokiplayer
  • iOSDCチャレンジ
    • 5位 Ogijun
    • 4位 ta-ka-tsu
    • 3位 yuchiro22
    • 2位 noppe
    • 1位 hironytic