天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

Xcodeの奥深く、iOSモバイルアプリエンジニアの開発課題についてに参加してきた

rosca.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

iOSアプリ開発の心臓部とも言える、Xcode。その深層に潜入してみよう!
iOSモバイルアプリエンジニアが日々直面する複雑な開発課題にはどんなものがあるのか焦点を当て、効率的なデバッグ方法であったり、パフォーマンス最適化の秘訣など実践的なテクニックを深掘りしていく会にしたいと思っています。

会の様子

SwiftUIのアーキテクチャ

UIKitとSwiftUIの互換性には問題がある点が多かったり、Development Assetsを扱う機能がなくXcodeのLaunch argumentでpackage.swiftを切り替えたりする必要があったりするという話がありました。

そのため、

  • 状態管理などに関してSwiftUI Firstであること
  • DIを整えてPreviewsが辛くないようにすること
  • マルチウインドウが可能であること
  • UIKitにも対応できること
  • 外部ライブラリに過度な依存がないこと

といったアーキテクチャが重要だと考えているということです。

プライバシーマニフェスト対応で泣いた ライブラリ管理の課題

2024年春までに対応が必要なプライバシーマニュフェストに関して、実際に対応してぶちあたった課題感に関して話がありました。

まず最初に、各ライブラリにプライバシーマニュフェスト対応状況のチェックに時間がかかったそうです。リストだけでも51個のライブラリがあり、チェックに膨大な時間がかかったそうです。

次に、アプリ利用バージョンをあまりしていなかったことが原因で、ライブラリのバージョンが古かった点に苦労したという話がありました。この経験から、Renovateの導入をしたそうで、ライブラリ更新情報のキャッチアップを定期的にできる点が魅力的に感じたそうです。

最後に、メンテナンス終了ライブラリを利用してしまっている点が課題として挙げられていました。ここは力技で集中して11人日弱の工数で対応したそうです。

Q&A

LTの後はQ&Aがありました。以下、質問と回答を常体かつ一問一答形式で記載していきました。

一人前のiOSエンジニアになるためにキャッチアップしていることは?
  • 指摘を受けた後は一度家でもその指摘を調べ直し、作り直しをする
  • いろいろなものを作ることが何よりも大事だとは思う
XCodeに全然慣れないのだが対処方法はあるか?
  • たくさん触るしか無いと思う
  • ショートカットになれることがまず大切。バージョンアップにしたがって、ショートカットや機能も増えているのでXCodeに関するキャッチアップも大事になる。Ctrl + Command + M, Command + Shift + 矢印とかは作業効率をかなり上げる印象がある
XCode15になってから重く感じないか?
  • ベースの速度は上がっているはず。重くなっている場合は依存関係の自動更新が原因のことが多いので、そのあたりに注意している
  • M3 Macにしてスペックで倒しているのでそこまで感じない
アーキテクチャ関連でKMPとの接続の話を聞きたい
  • 元々はMVVM + Flux + Repositoryパターンを使っているのだが、Fluxがしんどくて現在はシンプルなMVVMにしようとしている
  • KMPは個人的にはあまり好きではない。コードが意外と冗長になりがちだし、KMPで書いたライブラリの再利用性が問題としてあったりするため

会全体を通した感想

発表内容としてはそこまでXCodeの話が多くなかったので参加前のイメージとは違いましたが、バージョンアップを怠っていてプライバシーマニュフェストで躓いたという話はよく聞く話ですし、バージョンアップをさぼったさいの負債として良い例なので、共感が強かったです。