6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CA Tech LoungeAdvent Calendar 2023

Day 16

【iOS】個人アプリの大改修に立ち向かってみた。

Last updated at Posted at 2023-12-18

はじめに

この記事では、過去に開発したiOSアプリの大規模アップデートについての経験を共有します。特に、なぜこのタイミングでアップデートを行うことに決めたのか、開発プロセス、アップデートのリリースとその影響について焦点を当てています。自分の直面した課題とその解決策について詳述し、同様の状況に直面するかもしれない読者の方の参考となれば幸いです。

背景

改修前のプロダクト情報

開発環境

  • 初回リリース:2018年
  • 最終アップデート:2020年9月
  • Minimum iOS Version:11.0
  • プロダクトの規模感:小さい

改修を決意した理由

リリース時に使用した広告SDKバージョンのサポート終了により、アップデートが必要となり、大規模な改修を決意しました。

改修方針

継続的なアップデートを行うための環境を整えることを目指し、以下の改修方針を決定しました。

アーキテクチャ

  • MVVM
    • 選定理由
      • 継続的なアップデートを行うため、責務分離を行いたい。
      • 自分自身がMVVMを少し勉強していた。
      • 他アーキテクチャに挑戦することも検討したが、プロダクト規模が大きくない
      • 継続的なアップデートを安定的に行いたいという理由で、挑戦的なアーキテクチャの採用は行わなかった。

UIフレームワーク

  • SwiftUI
    • 選定理由
      • 複雑なレイアウトは実装しない。
      • 少ないコード量で実装できる。

サポートOS

  • iOS 15以上
    • 選定理由
      • SwiftUIの機能制限がiOS15以前と比べて少なく、スムーズに開発を進めることができる。
      • 過去30日間のアクティブユーザーの中で、iOS15未満のユーザーが1%に満たなかったため。

パッケージ管理

  • SwiftPackageManagerを使用
    • 選定理由
      • 使用していたライブラリが全てSwiftPackageManagerでのインストールが可能だったため。

ブランチ戦略

  • mainブランチをリリース可能な状態に保つ
    • アップデートまでは、replace用のブランチを作成し、このブランチをデフォルトブランチとして設定してSwiftUIへの置き換えを進める。

このような方針で開発を進めることにしました。

改修後アップデートまでの道のり

1. プロジェクトファイルの捜索

プロジェクトデータの所在不明により、ファイルの捜索に時間を要しました。

2. ビルドが通らない

3年前のプロジェクトのBuildが一発で通るはずがありません。仕方なくコードを読み、Buildできる状態まで進めました。

3. GitHubのリポジトリが見つからない

GitHub上にリポジトリを作成していませんでした。そのため、このタイミングでGitHubにリポジトリを作成しました。

4. 改修後の初回アップデート

今回のアップデートでは、以下の機能を追加しました。これらの機能は、ユーザー体験への影響を最小限に抑えつつ、アプリの開発効率を向上させることを目的としています。

  • 強制アップデートアラートの実装
    • 目的
      • 古いバージョンの不具合による問題を避け、全ユーザーが最新版に移行することを保証するため。
  • ATT(App Tracking Transparency)の承諾率向上のための事前説明ダイアログ
    • 目的
      • ATTの重要性とユーザーへの影響を明確に提示することで、承諾率を高め、広告の効果的な配信を確保するため。
  • ATTダイアログ・強制アップデートアラートのローカライズ対応
    • 目的
      • 本アプリは日本以外のユーザーも多いため、主要言語へのローカライズ対応を行なった。
  • GDPR同意ダイアログの設置
    • 目的
      • EEAと英国のデータ保護規則に準拠しパーソナライズされた広告のためのユーザーデータ収集に同意を得るため。
  • Firebase Crashlyticsの導入
    • 目的
      • アップデート後のアプリの安定性を監視し、迅速な問題対応を可能にするため。
  • Google Analyticsを用いたイベントロギングの追加
    • 目的
      • ユーザー行動のデータを収集し、将来の機能改善やアップデートの計画に活用するため。

アップデート配信後の影響

アップデート後のユーザー行動の分析により、アクティブユーザー数に大幅な減少は見られず、目標達成を確認することができました。

今後の展望

大規模な改修を経て、アプリの内部実装を更新し、機能改善と新機能の実装に向けた基盤を整えることができました。今後はこの基盤を生かして、アプリの規模を拡大できればと思います。

最後に

この記事で、長期間アップデートされていなかった古いプロダクトの改修の経験を共有しました。同じ課題に直面するかもしれない方々にとって、一つの参考になれば幸いです。

参考文献

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?