# 概要
自社サービスのネイティブスマホアプリ。企業のクチコミ閲覧や、求人応募、採用担当とのメッセージやり取りなどができる。
# チーム構成
自分はiOSアプリのリードエンジニア・サーバーサイドエンジニアを担当。
iOS:3人
Android:3人
サーバーサイド:3人
PL:1人
アナリスト:1人
デザイナー:1人
# 技術スタック
バックエンド:PHP Symfonyを使用したREST API, ORMにDoctrineを使用
DB:MySQL
分析:TreasureData, BigQuery, Firebase
iOS:RxSwift, Swift Concurrenncy, Combine, MVVM, TCA, XCTest, Bitrise
# 工夫・成果
- APIの実装からアプリのリリースまで全ての工程を開発する
仕事の領域に境界を引かず、要件定義から参加して、リリースまでのスケジューリング・バックエンドの実装・アプリの実装・リリース完了まで、すべての領域で開発を行なっている。日々の業務ではサーバーエラーを常に監視し、無視できるエラーかどうかの判別・無視できないエラーの場合その他のログやアプリ側の実装含めて確認し、修正。
- iOSアプリのリアーキテクチャを主導
RxSwiftを使用したMVVMアーキテクチャだったが、SwiftConcurrency・Combineを使用したTCAアーキテクチャへのリアーキテクチャを主導。自分が抜けても継続的にリアーキテクチャが継続できる状態を目指し、ドキュメンテーションなどノウハウの資産化も徹底。
- iOSサブスクリプション価格改定対応
Appleのサブスクリプション機能において、価格改定を行なった。既存のデザイン変更や改定に伴うサーバーサイド側・アプリ側両方の対応も行なった。スケジューリングや要件の整理など、PLも兼務。テスト環境がなかったため、Sandbox環境を活用したサーバーサイドの開発環境との疎通含めたテスト環境を構築し、サブスクリプションの仕組みやノウハウもドキュメント化した。
- 署名の自動化
自動署名機能を活用し、ProvisioningProfileを完全廃止。Bitriseワークフローの整備も同時に行い、業務効率化に大きく貢献した。また、署名の仕組みを自動化したことによるブラックボックス化を防ぐため、ドキュメントも作成。
- Unitテスト導入&カバレッジの向上・UIテスト導入
これまでロジックのテストがなかったので、TCAアーキテクチャへのリアーキテクチャと同時にXCTestを導入。漫然とテストコードを書いてもコストになるだけで意味がないため、何をテストすべきなのか・どう実装すればテストしやすいかなども整理し、ドキュメント化し、メンバーに共有。この観点でのコードレビューを徹底した。
- SwiftUIの導入
コードの再利用性が高く、変更容易性が高まりそうという期待や、最新の技術を使用することによる採用メリットなどを考慮し、一部SwiftUIを導入。移行計画や、メンバーへのタスク割り振りなども全て自分が主導した。基本的には自分がサンプルを作成し、メンバーがそれを元に他の画面を作成するという進め方となっている。特に、UIKitとの共存・画面遷移・TCAの親子間でのデータバインディングが難易度の高い実装だったが、メンバーでもわかりやすく実装できるように時間をかけて共有し、ドキュメント化した。
- 開発生産性指標の作成
新規性のある活動が評価されやすい反面、エンジニアの継続的な改善活動が評価されにくく、デリバリーパフォーマンスの向上や品質改善へのインセンティブがなくなっており、エンジニアのモチベーション低下にも影響していた。
そのため、DevOpsの4Keysを基準にした開発生産性指標の設定を行い、人事評価制度と結びつけることで、継続的改善活動が評価に影響するように主導した。DevOpsの4KeysはWebサービスを前提としているため、ネイティブアプリナイズした指標にするなどの工夫も行なった。
- チーム全体の生産性向上に寄与
スクラムマスター的な活動を行い、なぜスクラムなのか・なぜこのスクラムイベントがあるのかといったチームのあり方も啓蒙した。マインドマップツールがなかったのでMiroを導入、テスト環境でのテストデータ作成の負担が大きかったのでProxymanというレスポンス改ざんツールを導入、GoogleAppScriptとSlackを活用した業務自動化など、チーム全体の生産性向上に繋がる改善活動を積極的に行なった。
- 技術コミュニティへの貢献
社外カンファレンスへの参加や、社内テックブログの執筆など、技術コミュニティに対する貢献活動も行なっている。テックブログは、特に、iOSアプリのプライバシーマニフェスト対応に関する対応手順を記載した記事がはてなのトレンド入りするなど、界隈のニーズをとらえた記事を作成できた。