iOSDC Japan 2022 プロポーザル一覧

LT(5分)

JailBreak対策

darquro darquro darquro

昔はiOSのJailBreakはよく行われていましたが、最近はiOSのアップデートによりJailBreakは少なくなったような印象です。
とはいえ何もしないのではなく、やれることはやっておいたほうがいいと思います。

本LTでは、JailBreakはどのような手段があるのか、アプリはどのような対策ができるのか、自分なりに調べた結果を共有したいと思います。

4
LT(5分)

M1対応プロジェクトと非対応プロジェクトを行き来するためのRosetta 2切り替え術

417_72ki 417.72KI 417_72ki

M1 macの登場から1年半が経過し、今ではストアのラインナップからIntel macが消えました。
しかし未だにM1対応されていないライブラリやプロジェクトが多々あります。
M1環境でもそういったプロジェクトで開発するために出てくるのがRosetta 2ですが、現状このRosetta 2の切り替えはGUI上でしか行なえません。
これでは複数の開発、が同時進行している場合非常に不便です(え?そんな状況は無い?)。

本LTでは、Appleの非公開APIと黒魔術を利用してRosetta 2のオン/オフを切り替えるツールの開発を通じて得た知見を紹介します。

話す内容

  • 従来のRosetta 2のオン/オフ切り替え方法
  • Objective-CとSwiftの混合パッケージの作成方法
  • Rosettaのオン/オフを切り替える非公開API
  • LaunchServices.plistについて
2
レギュラートーク(20分)

SwfitUI時代の状態管理アーキテクチャの新潮流を捉える!

kara_mage karamage kara_mage

これまでのiOSアプリの開発では、MVVMアーキテクチャが採用されることが多かったと思います。


しかし、宣言的UIであるSwiftUIの登場により、SwiftUI時代に合った状態管理アーキテクチャを検討する必要があると感じています。

現在、 SwiftUI開発でのデファクトスタンダードな状態管理アーキテクチャやベストプラクティスと呼べるような何かは存在せず、手探りで試行錯誤している段階なのかなと思います。

そこで、このセッションでは、SwiftUI時代における以下の4つの状態管理手法について比較検討し、状態管理の新潮流を捉えたいと思います。

・MVVM
・The Composable Architecture(TCA)
・ReSwift
・RecoilSwift

5
レギュラートーク(20分)

iOSにおけるWakeword検知機能の実装

iganin_dev 伊賀 裕展 iganin_dev

株式会社エクサウィザーズが提供する介護記録アプリ「CareWiz ハナスト」は、
フォアグラウンド状態において有効な独自のWakeword検知機能と音声によるアプリ操作機能を備えています。

Wakeword検知を行うためには常時音声を取得する必要性があり、独特な実装を行い問題に対処する必要があります。
本セッションでは、Wakeword検知機能の実装を中心に下記の内容をお伝えする予定です。

Wakeword検知
・Wakeword検知の方法
・アプリでの実装
・SoundAnalysisを用いた精度向上

常時録音に伴う問題と対応
・イヤホンの脱着などの音声インプットの変更
・電話などによる中断

音声によるアプリ操作
・音声とアプリの操作の連携
・Wakewordから自由発話認識への連携

2
LT(5分)

GraqhQLリクエストのパフォーマンスをFirebase Performance Monitoringで計測する方法

iganin_dev 伊賀 裕展 iganin_dev

株式会社エクサウィザーズが提供する介護記録アプリ「CareWiz ハナスト」ではAPIサーバーとの通信にGraphQLとRESTを使用しています。

便利なGraphQLですが、Firebase Performance Monitoringで通信時間を計測しようとすると問題が発生します。
Firebaseコンソール上ではGraphQLクライアントからのリクエストが全て同一のものとして扱われてしまうのです。
なぜならGraphQLのリクエストは基本的に同一エンドポイントへのPOSTリクエストとなるからです。

本 LTではそのような問題にどのように対処したのか、具体的な実装を交え解説します。

2
レギュラートーク(20分)

みんなが幸せになるErrorを考える

coffeegyunyu 日向強 coffeegyunyu

iOSに限らず、アプリはいつもと同じように使っていても、ユーザーの環境はたまたアプリの状態など、様々な原因によってエラーが発生します。エラーハンドリングをアプリ側で行なった後、アラートやテキストなどでユーザーに伝えることは多いと思います。

  • 「エラーが発生しました」
  • 「原因不明のエラーです」
  • 通信に問題がないはずなのに「通信エラーです」

これらのエラーメッセージは、どうやったらエラーの状態から抜け出せるかわからず、お問い合せをいただいても解決できない場合がほとんどです。

このトークでは、エラーのハンドリングについて、どうやったらハンドリングしやすいエラーの仕組みが作れるのか、またErrorはどのように利用するのが望ましいのか、AppleのクラスやAPIデザインに着目し、ユーザー、サービス、開発者全てが幸せになる、簡単で鮮明なエラー作成をみんなで考えるトークになります。

6
レギュラートーク(20分)

SwiftUI in UIKit で開発する世界

hcrane14 Hiromu Tsuruta hcrane14

【概要】
SwiftUIが登場してから3年が経とうとしています。

古いOS対応もあり、すぐに導入できなかったアプリも多かったでしょう。
そんな中、新規のアプリを全てSwiftUIで構成した例も増えてきました。

しかし、現実問題として既存の多くのアプリはUIKitで構成されています。
この資産を活かしつつ、どのようにSwiftUIと歩んでいくのかを考えていく必要があります。

今回はそんな悩みを抱えつつ、私達のプロダクトで行なってきた共存の仕方をご紹介していきます。

【目次】
1.SwiftUIとUIKit
-SwiftUIの強みと弱み
-実装判断の基準
-責務の分け方

2.アーキテクチャー
-既存のアーキテクチャー
-SwiftUIとUIKitのアーキテクチャー共存

3.課題
-共存の向き・不向き
-車輪の再発明
-実装において注意すべき点

※内容が前後する可能性があります

7
レギュラートーク(20分)

広まれSafari Web Extensions!Safari Web Extensions の始め方

base_front matsue base_front

iOS 15 から Safari の拡張機能である Safari Web Extensions の開発が出来るようになりました。
すでに素晴らしい拡張機能がいつかかリリースされているものの、まだまだその数が少ないように感じます。
そこで今回は Safari Web Extensions の開発が広まるように、その始め方を紹介します。
具体的には、Safari Extension App のテンプレートの中身を解説しつつ、ある要素をHTMLから削除する拡張機能を作るまでの手順を紹介します。
Safari Web Extensions の持つ可能性を感じて頂ければと思います。

1
レギュラートーク(20分)

Core ML Toolsにコミットしつつ、Pytorch製深層学習モデルをCore MLで動かそう

fukafukatani 深谷 fukafukatani

モノグサ株式会社では記憶アプリMonoxerを開発・リリースしています。
iOS版のMonoxerで深層学習モデルを使うために、Core ML Toolsを使ってPytorch製のモデルをCore MLで動作するモデルにコンバートする必要がありました。
Core ML Toolsを使ってみるとわかりづらいポイントや、モデルが未サポートの演算を含んでおりモデルをコンバートできないといったことがありました。
そこでこのトークでは、Core ML Toolsをスムーズに使う方法や未サポートの演算をどうすればサポートできるかをシェアします。

  • Core ML / Core ML Toolsの概要
  • Core ML Toolsの基本的な使い方
  • Core ML Toolsがうまく動かなかった時
  • Core ML Toolsに未サポートの演算を追加するには
2