はじめに
初めまして。
2022年9月よりiOSエンジニアとしてjoinしました、ashi_psnです。
私は2016年4月から新卒でエンジニアとなり、今年で7年目となります。
これまでに2016年4月から2017年8月までは、医療系スマートフォンアプリ/webアプリケーションの開発、 2017年9月から2022年9月まではグルメメディア系スマートフォンアプリの開発とモバイルアプリチームのリーダーをしてきました。
そして2022年9月、withにiOSエンジニアとして入社しました。
今回は入社してから約1ヶ月が経ち、まだまだ全体像が分かりきっていない状態ではありますが、withのiOSで用いられるツールで便利と思った点が多々あり、それを便利度、おすすめ度それぞれを5点満点で評価したものを3つご紹介いたします。
①fastlaneでの自動化
便利度 ★★★★★
おすすめ度 ★★★★★
【内容】
- 証明書の更新(match)
- アプリバージョン更新
- リリースの自動化
【おすすめポイント】
証明書管理管理はmatchで行っていますが、更新と取得でそれぞれレーンが別れていて、更新処理をするとslackに他のエンジニアに証明書ダウンロードを促すチャットが流れます。
これによって証明書の更新が漏れが起きにくく、とてもいいと思いました。
また、AppStoreへのアップロードなどのリリース作業も、
プロジェクトのバージョン変更とデプロイがfastlaneで1コマンドでできます。
fastlaneも多くのiOSエンジニアに浸透したと思う一方、まだまだXcodeでバージョンやbuild番号を手動で変更してXcode上でArchiveしApp Storeへアップロードしている人も多くいるかと思います。
そんな中fastlaneのコマンドを叩くだけでバージョン設定とリリース作業ができるのは、コーディングに専念ができる時間が増え、生産性があがりとても捗りそうだなと感じました。
②テスト用バイナリ配布の自動化
便利度 ★★★★☆
おすすめ度 ★★★☆☆
【内容】
- Pull Request上で「/deploy」とコメントを打つと、AdHocスキームでテスト用バイナリの作成とダウンロードリンクをコメントに記載してくれる
【おすすめポイント】
iOSチームではgitflowでgit運用をしており、新機能開発ではfeature/xxx のブランチで機能開発を行い、developブランチへPull Request作成してレビューを行い、developへマージ後、releaseブランチでQAをしてリリースする流れとなっています。
以前勤めていた会社では、QAのバイナリはTestFlight、もしくはエンタープライズアカウントでビルドしたものを用いていましたが、TestFlightの場合は都度ビルド番号やバージョンを更新してアップロード、エンタープライズアカウントでのビルドは証明書の付け替えが必要で、地味に手間がかかっていました。
弊社では、EMLancherというツールを用いてテスト用バイナリを配信しており、「/deploy」コマンドを叩くとCI上でAdHocビルドを行い、EMLancherへアップロードされ、ダウンロードリンクがコメントに残る仕組みがあります。 これによって、バイナリごとにどの改修が含まれているかわかり、気軽にレビュー中に動作テストも行えるため、とても便利です。
③デバッグメニュー
便利度 ★★★★☆
おすすめ度 ★★☆☆☆
【内容】
- ステージング環境ごとにビルドしなおす必要がなく向き先が変更できる。
- テストアカウントへのログインが入力なしで行える。
- カスタムスキームやモーダル、アラートなどの機能を単体で確認することができる。
【おすすめポイント】
サーバーは開発環境、ステージング環境、本番環境の3つがあるのは一般的かと思いますが、
多人数で開発してる場合はステージング環境も複数あることがあります。
その場合、サーバーの向き先ごとにプロジェクト内のスキームで定義していては、管理コストがあがり、向き先を変更するごとにビルドし直さなければなりません。
withではデバッグメニューからサーバーの向き先を変更できるため、ビルドも1回で済み、また設定ファイルもステージング環境用を共通で用いることができます。
そのため、QAの際にバイナリを何度も入れ直す必要がありません。
デバッグメニューの恩恵はそれだけでなく、テストアカウントへのログインがパスワードの入力など一切なくできたり、単体機能としてテストしずらいカスタムURLスキームやユニバーサルリンクも、デバッグメニューから確認することができるなど、多くのメリットがありました。
最後に
今回紹介した内容は、比較的知っているメジャーで、取り組んでいる企業や個人の方もいらっしゃるかと思います。
僕自身もfastlaneは導入経験があり、デバッグメニューは使っている企業も一部はあるというのは知っている程度でした。
ただ、その一方で、やはりあるとないとでは大きく違う、そんなことをwithに入社して1ヶ月ではありますが感じました。
今回は3つのことを紹介しましたが、他にもSwiftLintによる静的解析でコーディング規約に準拠させたり、ライブラリ更新の自動化なども取り組んでいます。
私たちiOSエンジニアは、iOSアプリの実装が主な業務となる一方、証明者管理やApp Storeへのアップロード、審査などコーディング以外のことも行わなければなりません。
そういったコーディング以外の部分をなるべく自動化してコーディング時間を作ることも、また一つ大事なことだと感じました。