こんにちは、iOSエンジニアの西村です。
今年も8/22 ~ 8/24にiOSDCが開催され、ヤプリはプラチナスポンサーとして協賛しました!
私は今回で3回目のiOSDC参加となりますが、特に印象に残ったセッションをいくつかご紹介したいと思います。
気になったセッション
App Clipの魔法: iOSデザイン開発の新時代
セッションの内容:
- App Clip は、アプリをインストールしていなくてもアプリの一部機能を素早く利用できる機能
- Xcode プロジェクトに App Clip ターゲットを追加して簡単に開発を始められる
- 既存のリソース(ソースコード、画像)などが流用可能
- App Clip として動かしたいコードを
#if APPCLIP
~#endif
で囲む
- App Clip として動かしたいコードを
- App Clip はユーザーに提供するだけでなく、開発においても利用価値がある
- デザイン共有の場で活用することで、画面デザインだけでなく体験(Haptics)も簡単に共有することができる
- ただ、App Clip を開発で利用するハードルは高い
- App Clip は審査対象(開発用として審査を通すことは難しそう)
- Debugビルドでもipaの事前インストールが必要になるので利点はほぼない
- Enterprise Program は App Clip をサポートしていない
セッションを聞いて:
App Clip が登場してから5年… iPhone を使ってはいるものの未だに App Clip を使ったことがなかったので、今後の普及に期待したいところです。(現時点ではスターバックスや Coke ON くらい?)
開発におけるアイデアも興味深かったものの、導入にはハードルが高く、実際に活用するのは難しそうに感じました。
ただ、プロダクトで活用すると便利になるシーンはいくつかありそうだったので、どのように落とし込んでいくか検討する余地はありそうです。(レジ前での会員登録に使うなど🤔)
詳解UIWindow
セッションの内容:
- UIWindow はアプリのコンテンツを表示するためのウィンドウの提供
- iOS13 から iPad で同一アプリを複数開くことができるようになった影響で UIWindowScene が登場した
- 画面のサイズを取得したい場合は、UIView から順番に辿っていくのが良い
UIView.window
→UIWindow.windowScene
→UIWindowScene.screen
- Window の重なり順を変更したい場合は
windowLevel: UIWindow.Level
を変更する- windowLevel が同じであれば、新しく visible 状態になった UIWindow が前に表示される
- キーウィンドウは、キーボード入力などの座標値を持たないイベントを受け取ることができる
- 画面タップやマウスホバーなどは座標値を持つイベント
- SwiftUI から UIWindow にアクセスするには、 UIApplicationDelegateAdaptor を実装すると EnvironmentObject 経由で取得できる
セッションを聞いて:
今まで UIWindow を扱う際は必要箇所を都度調べてから使っていたので、全体的に説明していただけて UIWindow についての理解が深まりました。特に、スライドがアニメーション付きで非常に分かりやすかったので理解しやすかったです。
また、全画面表示時の CGPoint の特性やステータスバーの挙動に関する注意点についても詳しく解説されていたので、これらに注意しながら今後の開発に取り組んでいきたいと思います。
ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策
セッションの内容:
- スマホアプリの脆弱性診断は、OWASP が発行する MASVS に基づいて行っている
- MASVS:データ保存/認証認可/プライバシー保護についてセキュリティ基準を示している
- MASTG:MASVS の各項目に対する検証方法が記載されている
- パスワードなどのデータ保存について
- パスワードを平文で保存すると「バックアップ」や「サンドボックスエスケーピング」などからデータが漏洩する恐れがある
- UserDefaults:平文で保存される、加えてバックアップの対象になるので、バックアアップの暗号化が有効化されていなければ、Mac上にも平文で保存される
- Keychain:AESで暗号化されている、バックアップされても暗号化されているのでリスクは許容できる程度に低い
- そもそもパスワードは保存しないのがいい、リフレッシュトークンなどを利用する
- ソースコードにハードコードされたクレデンシャル
- APIキーや暗号鍵をハードコードすることで第三者に利用されてしまう
- 難読化した場合でも完全に防ぐことは不可能、あくまで時間稼ぎ
- 秘匿すべきキーをソースコード上にハードコードすることは避ける
- セキュリティ対策はアプリ特性によって対応要否決めるのが大切、セキュリティ知識をつけることで正しくリスク許容できるようにする
セッションを聞いて:
iOSにはサンドボックスがあるからといって、気を抜いてはいけないと感じたセッションでした。
比較的堅牢と言われているiOSでも、様々なセキュリティリスクが潜んでいることがわかったので、正しいセキュリティ知識を身につけ対策を怠らないように心がけていきたいと思います。
最後に
今年も参考になるセッションが多く、大変勉強になりました!登壇者の皆さま、そして運営の方々、ありがとうございました!
他にもパフォーマンスやビルドに関するセッションなど、今後の開発に役立ちそうな内容が盛りだくさんでしたので、見逃したセッションは後ほどチェックしてみようと思います。
また、今年はヤプリがスポンサーセッションを行っているので、ぜひそちらのスライドもご覧ください!