2021年 Kyash のiOSチームがやってきたこと
この記事はKyash Advent Calendar 2021の14日目の記事です。
KyashでiOSチームのTech Leadをしているtamadonです。
自分が入社当時は2名だったiOSチームも現在は3名になり、以前より機能開発以外でもやれることが増えてきました。
この1年でKyashのiOSチームがやってきた改善についてご紹介します。
Swift Package Manager(以下SwiftPMと略)の導入
iOS版Kyashの依存ライブラリ管理は今までCarthage+CocoaPodsを併用していましたが、Carthage管理しているライブラリの更新を行う際に差分が大量に発生してつらいという問題がありました。
そこで、Xcode12.5から外部ライブラリをDynamic Frameworkとしてビルドできるようになったこともあり、Carthage管理化のライブラリをSwiftPMに移行しようということになりました。
一部、SwiftPM対応していないライブラリがあるのでそれはCocoaPodsに移行しました。
ライブラリ更新時に差分が大量に出ることもなくなり、Appleが公式でサポートする仕組みに乗るというのは安心感がありますね。
ライブラリの更新処理を一部自動化
サーバサイドのチームがDependabotを利用してライブラリの更新Pull Requestを自動作成しているのを見ていて、うらやましかったのでiOSチームでも導入することにしました。
fastlaneはBundlerでインストールしており、Dependabotで更新チェック出来るようになったのですがCocoaPods管理のライブラリはそうはいきません。
色々調査した結果、Timersさんのブログを発見しこちらのスクリプトを参考に導入しました。
今まで何となく気づいた人がライブラリの更新作業を行っていたのが自動化されたので良かったです。
SwiftPM管理ライブラリの更新処理はまだ行えていないので、もし良いやり方をご存じの方がいればご連絡お待ちしております🙏
毎週App Store Connectへのアップロードを自動で行いアップロード可能な状態になっているか確認するようにした
以前、Appleへの申請直前になってアップロードがエラーになることがありバタバタした経験から定期的にアップロードが成功しているか確認出来るようにしました。
導入したことにより、申請時にドキドキすることが減りました。
一部画面をSwiftUIで実装
履歴詳細画面をリファクタリングするのと一緒にSwiftUIで実装するトライを実施しました。
最近は新規画面をSwiftUIで実装することも多く、ここで先にリリースしたSwiftUI実装の構成が新たに実装する際のお手本になっており非常にありがたいです。
詳しい話は以下の記事を参照ください blog.kyash.co
一部処理をGitHub Actionsに移行
iOS版Kyashの開発では、今までCIサービスをBitriseに一本化していました。Mobileチームのメンバーも増え、Android版の開発でもBitriseを利用していることもあり同時並行数上限に到達してBitrise Workflow完了まで待ち時間が発生するようになっていました。
そこでBitrise Workflowで実行しなくても良いもの、例えばPull Request作成時のDangerによる静的解析等をGitHub Actionsへ移行しました。
これによりPull Request作成時のチェック処理がBitriseとGitHub Actionsの並列で実行されることになり、チェック処理も若干早くなったように感じます。
また、今まで手元のローカル環境で実行していたアプリのバージョンアップスクリプトの実行等もGitHub Actionsへ移行しました。
こちらもローカルの環境に依存することがなくなり良い変更だったと思っています。
App StoreのメタデータをGitで管理しfastlaneで更新するようにした
今までは手動でApp Store Connectからストア画像やリリースノート等のメタデータを更新していましたが、これをGitで管理しfastlaneから更新するようにしました。
更新する際にGitHub上でレビューが可能になり、細かいtypoにも気づきやすくなりました。
また、メタデータをGit管理することで過去の情報が追えるようになりました。
QA用バイナリ配布時にAutifyにもアップロードするようにした
KyashではAutify for Mobileを使用してE2Eテストの自動化に取り組んでいます。
今まで手動でアップロードしていたのですが、QAメンバーにテスト用アプリをDeployGateで配布する際にAutifyへのアップロードもするようにしました。
こういう、手動で繰り返しやると地味に面倒な作業は積極的に自動化していきたいと考えています。
まとめ
軽い気持ちで「今年1年のチーム振り返りを書いてみるか」と思ったら結構多くのことが出来ていて、ボリューム増になってしまいました。
自分一人では出来ないことばかりなので、チームの皆に感謝です。これからも色々な改善を行い、ユーザーへ価値を届ける速度を上げていきたいと思っています。
Kyashでは仲間を募集しています。興味があれば是非ご応募ください。カジュアル面談でも大歓迎です。