1. はじめに
こんにちは。モバイルのテックリードの大澤です。普段は「あすけん」のiOSアプリ開発を担当しています。
本記事では、2024年度の振り返りと2025年度に向けた技術的チャレンジについてご紹介します。 特に、今年度取り組んできた技術スタックの進化やアーキテクチャ刷新、AI活用の取り組みなど、現場での実践例を交えながらお伝えします。
2. 技術スタックの現状と進化
技術スタックの主な変化(2024年度)
Objective-CからSwiftへの移行が完了
2024年度をもってObjective-CからSwiftへの移行が完了し、今後はSwiftのみでの開発体制となりました。
テストフレームワークの刷新
従来のXCTestCaseによる新規テスト作成は終了し、Appleが新たに提供するSwift Testingを標準としています。これにより、よりモダンで効率的なテストコードの記述が可能になりました。
スクリーンショットテストの導入
UIの品質担保やリグレッション検知の自動化を目的に、スクリーンショットテストの導入も進めています。
MVIアーキテクチャの導入推進
アプリのアーキテクチャとしてModel-View-Intent(MVI)パターンの導入を本格的に進めており、状態管理やUIロジックの明確化、テスト容易性の向上を図っています。
Kotlin Multiplatform(KMP)の進捗
- iOSアプリでは一部の通信ロジックをKMPで実装する形に置き換えました。
- Android側でもKMPの導入が本格的に始まっており、今後はiOS/Android間での重複実装がさらに減少していく見込みです。
- これにより、両プラットフォームで共通化できる領域が拡大し、開発効率や保守性の向上が期待されています。
2025年度に向けた方針
- 他のセクションでも触れている「マルチモジュール化の推進」が大きなテーマとなっています。
- これにより、プロジェクトのスケーラビリティや開発効率、保守性のさらなる向上を目指しています。
3. アーキテクチャ刷新:MVIへの移行
MVI(Model-View-Intent)アーキテクチャを選択した理由
MVIアーキテクチャを選択した主な理由は、単方向なアーキテクチャにすることで状態管理をしやすくし、テスト容易性を高めるためです。従来のアーキテクチャでは、状態の流れが複雑になりやすく、バグの温床やテストの難しさにつながっていました。MVIを採用することで、状態の一元管理やUIロジックの明確化が実現でき、より堅牢で保守性の高いアプリ開発が可能になります。
移行戦略・進め方
新規実装では積極的にMVIを採用し、既存コードについては、置き換えが可能な範囲で順次MVIへ書き換える方針で進めています。これにより、既存の大規模なリファクタリングによるリスクを避けつつ、段階的かつ着実にMVI化を推進しています。
導入によるメリット・課題と工夫
メリット
MVIアーキテクチャを導入したことで、状態変更の流れが明確になり、状態管理が非常に追いやすくなりました。これにより、デバッグやテストが書きやすくなり、開発効率や品質向上につながっています。
課題・工夫した点
一方で、Intent → ViewStateのフローで状態変更をするとアニメーションが意図しない挙動をするケースがありました。その場合は、View側で
@State
を使うことを許容することで、アニメーションの意図しない動きを回避しています。状態管理の一元化と柔軟な実装のバランスを取りながら、現場に合った形でMVIを運用しています。
4. マルチモジュール化の推進
背景・目的
社内では、エンジニア以外のメンバーにも分かりやすいように「モバイルレゴ化プロジェクト」と命名し、マルチモジュール化を推進しています。 この取り組みの主な目的は、単一障害点(Single Point of Failure)の解消、ビルド時間の短縮、そしてチーム開発の効率化にあります。
モジュール分割の方針・設計例
モジュール分割の方針としては、機能単位で独立して動作することを目指して設計しています。 これにより、各モジュールが疎結合となり、個別に開発・テストがしやすくなります。
開発効率・保守性向上
マルチモジュール化を進めたことで、レゴのように機能を付け替えやすくなり、保守性が向上が期待できます。 まだ、移行段階なので今後は社内で実際に効率や保守性が向上するかを検証していきます。
CI/CDやテストへの影響・工夫
各機能単位でユニットテストやスクリーンショットテストが実装できるようになり、ビルド時間の短縮や開発サイクルの高速化が期待できます。 これにより、品質担保と開発効率の両立を実現しています。
5. AI活用の取り組み
AI導入の背景・目的
AI活用の主な目的は、開発効率の向上です。日々の開発業務において、AIを活用することで作業の自動化や省力化を図り、より価値の高い業務に集中できる環境を目指しています。
社内の承認フローを通せば、原則使える状態になってます。
iOS開発におけるAI活用の具体的な事例
- テンプレ実装の生成 繰り返し発生する定型的な実装や、プロジェクトのテンプレートコードをAIで自動生成しています。
- テストの生成 ユニットテストやスクリーンショットテストのコードをAIにより自動生成し、テストカバレッジの向上とテスト作成の効率化を実現しています。テストのフォーマットを改善し、出力結果が安定するようにしています。
- コードレビュー AIを活用した自動コードレビューにより、コード品質の維持やレビュー工数の削減を図っています。精度を上げるためにレビューガイドラインの充実させています。
- コードや仕様の調査 複雑なコードや仕様の調査・要約をAIに任せることで、調査工数の削減や知識共有の効率化を実現しています。
AI活用によって得られた効果・今後の期待
- 生産性の向上 AIの活用により、日々の開発業務の生産性が大きく向上しました。繰り返し作業や調査・レビューの自動化によって、より本質的な開発に集中できるようになっています。
- コントリビュートのハードル低減 iOSエンジニア以外の方でも、AIのサポートを活用することでプロジェクトへのコントリビュートがしやすくなりました。これにより、チーム全体の知見やリソースを活かした開発が可能になっています。
6. まとめと今後の展望
2025年度は、マルチモジュール化のさらなる推進とAI活用の強化に注力していきます。 これらの取り組みを通じて、開発効率や保守性の向上、そしてより良いユーザー体験の提供を目指します。
askenでは新しい仲間を募集しています!