withにiOSエンジニアとして1ヶ月。これ便利!と思った3選!

はじめに

初めまして。
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へのアップロード、審査などコーディング以外のことも行わなければなりません。
そういったコーディング以外の部分をなるべく自動化してコーディング時間を作ることも、また一つ大事なことだと感じました。