概要
お昼休みを利用して久しぶりに社外の勉強会に参加しました。
自分の備忘録代わりにブログに残しておきます。
参加した勉強会
『ラクマ x STORES LTイベント ~ iOS開発の裏側 ~』 https://hey.connpass.com/event/236189/
発表内容
「SwiftLintをもっと活用する (仮)」by @natsumi_oishi
.swiftlint.ymlを使い分ける
- テストが書きにくい
- force unwrapとかでエラーになる
- Tests配下に.swiftlint.ymlを配置するとディレクトリ配下で適用される
- 親子で設定が競合した場合、子で上書きできる
- Build Pharesではswiftlinのコマンドだけでよいが、CLIはconfigオプションで複数指定する(そのときは親→子の順にする)
swiftlintの実行時間を短くする
- 処理対象のファイルを絞り込んで実行すると短くなる
- Issueに書いてあったスクリプトを書換えて使っている
analyzeを使う
- メモに必死で聞き逃した
- ドキュメントにanalyzer: Yesのものがanalyzeで使える
- ただし、全体で4つしか指定されていないので、必要なものが使えない
- Unused importを採用してみたが、必要なときに消されてしまったり、不要なものが追加されたりするので、うまく使えなかった
「ラクマでのSwiftUI導入方針とTips」by @darquro
SwiftUI導入方針
- 2021/2ぁら徐々に導入
- 画面全体もあれば一部導入もある
- MVPをベースにしていて、ViewModel Protocolパターンを導入した
困ったこと
- iOS13/iPadOS 13のサポートを切ろう!
- テキストフィールドのキーボード入力まわりの挙動がおかしい
- Previewがエラーになって時間ばかりかかる
- 諦めてシミュレータ起動したほうが早いこともある
- if statementを多用しない
- Xcodeのコード補完が壊れて無限にローディングする
- if #available をViewModifierで使用しない
- リリースビルドしたアプリでcrashする
- 該当の画面をひらいたときにcrashする
- Crashlyticsでどう見えるか→リリースしてないからログにでていない
- STORESも困っている
Tips
- ViewDidLoadModifierを作る
- AlertBinding
- iOS14と15でAlert周りが変わったので、互換をもたせて使いたい
「SwiftUIっぽくした話」by @chocoyama
- STORESレジアプリの話
- フルSwiftUIで実装している
- 今日はレシート印刷の話をする
- XMLをCALayerにパースしてレイアウトしている
- XMLベタ書きをSwiftUIっぽくした!
- XMLは宣言的→SwiftUIも宣言的→SwiftUIから宣言的にXMLにできるのでは
- XMLっぽさ2ではFlutterっぽいIFのフレームワーク
- だいぶ書きやすくなった
- 型で指定できるのでコード補完も効いて書きやすくなった
- 課題
- 要素を配列に渡す→制御構文をかけない
- XMLっぽさ3ではresultBuilderを使う
- 内部DSLを生成できる
「SwiftUIで STORES 予約 をフルリニューアルした話 」by @yoshikei
- STORES 予約をSwiftUIでフルリニューアルした
- SwiftUIを採用した経緯
- リソースが限られていたので、宣言的にUIを実装して効率をあげたかった
- Flutterはほかアプリとの親和性を考慮して見送った
- 新しい技術に対応できるタイミングだった
- iOS13を気にしなくてよかった
- アプリの内容がシンプルだった
- フルリニューアル=フルスクラッチだったので、デザインなどの問題があってもデザインチームに相談できるので、挑戦できた
- アーキテクチャはSwiftUI+Combine+MVVM
- APIはREST(すでにあるAPIの関係)
- パッケージ管理はSPM
- 強み
- コンポーネント単位でUIを作れる
- コードベースが比較的シンプル
- UIの変更に強くレビューしやすい
- 弱み
- OS間で実装をわけないといけないことがあった
- 14と15の差異を吸収するため
- ベストプラクティス&挙動が安定していない
- OS間で実装をわけないといけないことがあった
まとめ
- お昼時間の勉強会、初めて参加したけどいい体験でした
- レシート用のXMLをSwiftUIの宣言的レイアウトから効率よく生成するというアプローチが面白かったです
- DTPのころにXML自動組版という夢を見た身としては、XML懐かしいなーって思いました
- SwiftUIの導入実績を耳にすることが多いけど、各社だいたい似たようなところでハマっている印象を受けました
- そして各社乗り切っているところもすごいですね