ココナラのモバイルアプリ開発を担当している小林です。
ココナラのアプリは、本体サービスの機能追加や改善に合わせたアップデートを行っていますが、
- 新しいツールの導入
- SDKのバージョンアップ
- 内部設計の見直し
なども平行して進めております。 これらは技術的負債を抱えないよう継続的な取り組みが必要であるものの、諸々の事情により、常に最良の状態を維持するのは難しくもあります。
そこで今回はココナラiOSアプリがいま抱えている課題の中で、早期解決が望まれるものを紹介してみたいと思います。
急ぎではないけど着手したい
Dangerの導入
Danger は Pull Request を自動的にチェックし、フィードバックしてくれます。 手作業による見落としや手間を減らすためにも、早めに導入したいツールのひとつになります。
R.swift/SwiftGenの導入
ココナラiOSアプリではStoryboardやImage Assetを多用しています。 typoによる実行時の不具合を減らすためも、R.swiftかSwiftGenのような仕組みを導入したほうが良さそうです。
マルチモジュール化の仕切り直し
ビルド時間短縮や多様な運用を想定し、マルチモジュール化を行ったものの、分割基準が良くなかったのかあまり効果が出ていません。 シーンやドメイン単位で分割基準を設けるなど、より意味のあるモジュール分割を検討したいところです。
サービス向上のためにやりたい!
User Notifications Framework
iOS10より、プッシュ通知関連のAPIがUser Notifications Frameworkに統合されました。これに移行することで、アプリ使用中に受けた通知をシステムUIで表示することができたり、よりリッチなUIを提供することができます。
アプリがiOS9をサポートする都合で移行が保留となっていますが、旧いAPIはdeprecatedにもなっているため、早く着手したい部分ですね。
iPadへの最適化
ココナラiOSアプリは歴史的経緯により、iPad版を含むUniversal Appとしてリリースされているのですが、iPadへの最適化がほとんどされていません。最適化されたレイアウトが無いだけでなく、諸々の問題からLandscape表示も制限しているため、一部ユーザからも強く要望されていたりします。 後述のiPad OS対応も含め、ここ最近になって優先度が高まっている課題です。
やらなきゃまずい!!
Xcode11/iOS 13 SDKへの移行
先日Appleより、2020年4月以降、App Storeに提出する全てのアプリはXcode11/iOS 13 SDKでビルドされなければならない旨が案内されました。ココナラのiOSアプリは下記の問題があり、現時点で最新のXcode/SDKに移行できていません。
- 一部のオープンソース・ソフトウェアがSwift4に対応していない
- VoIP機能を提供するSDKに不具合がある
- iPad OS対応とともにマルチウィンドウに対応しなければならない
特に最後の問題に関しては、既存コードに大きく手を加えなければならない可能性があるため、難しい対応となりそうです。
Sign in with Apple
こちらも先日Appleよりアナウンスされたものです。 本件はiOSアプリへの影響だけでなく、WebやAndroidアプリ、バックエンドのシステム側にも大きな負担が生じることは間違いありません。開発チーム総出を挙げての対応となるため、頭痛のタネとなりそうです...
所感
いやー、改めて整理してみると危機感を感じざるを得ませんね...
特にプラットフォームに依る課題は期限が迫っているため、悠長に構えているわけにもいかなくなっていますね。ココナラのサービス改善と並行し、これらの課題の解決も待ったなし!な状況なのです。ということで...
ココナラでは一緒にココナラアプリを良くしてくれる方を募集してます! ユーザー志向のアプリエンジニア募集。技術選定の裁量あります - 株式会社ココナラのモバイルエンジニア中途の求人 - Wantedly
まずは軽く話したいという方も大歓迎ですので、お気軽にご応募くださいませー。