今後取り組むべきiOSアプリカイゼン

ココナラのモバイルアプリ開発を担当している小林です。
ココナラのアプリは、本体サービスの機能追加や改善に合わせたアップデートを行っていますが、

  • 新しいツールの導入
  • SDKのバージョンアップ
  • 内部設計の見直し

なども平行して進めております。 これらは技術的負債を抱えないよう継続的な取り組みが必要であるものの、諸々の事情により、常に最良の状態を維持するのは難しくもあります。

そこで今回はココナラiOSアプリがいま抱えている課題の中で、早期解決が望まれるものを紹介してみたいと思います。

急ぎではないけど着手したい

Dangerの導入

Danger は Pull Request を自動的にチェックし、フィードバックしてくれます。 手作業による見落としや手間を減らすためにも、早めに導入したいツールのひとつになります。

R.swift/SwiftGenの導入

ココナラiOSアプリではStoryboardやImage Assetを多用しています。 typoによる実行時の不具合を減らすためも、R.swiftSwiftGenのような仕組みを導入したほうが良さそうです。

マルチモジュール化の仕切り直し

ビルド時間短縮や多様な運用を想定し、マルチモジュール化を行ったものの、分割基準が良くなかったのかあまり効果が出ていません。 シーンやドメイン単位で分割基準を設けるなど、より意味のあるモジュール分割を検討したいところです。

f:id:coconalainc:20190918171444p:plain
iOSアプリ・モジュール構造の見直し案

サービス向上のためにやりたい!

User Notifications Framework

iOS10より、プッシュ通知関連のAPIがUser Notifications Frameworkに統合されました。これに移行することで、アプリ使用中に受けた通知をシステムUIで表示することができたり、よりリッチなUIを提供することができます。

f:id:coconalainc:20190918171605g:plain:w240
現在の野暮ったいアプリ内通知

アプリがiOS9をサポートする都合で移行が保留となっていますが、旧いAPIはdeprecatedにもなっているため、早く着手したい部分ですね。

iPadへの最適化

ココナラiOSアプリは歴史的経緯により、iPad版を含むUniversal Appとしてリリースされているのですが、iPadへの最適化がほとんどされていません。最適化されたレイアウトが無いだけでなく、諸々の問題からLandscape表示も制限しているため、一部ユーザからも強く要望されていたりします。 後述のiPad OS対応も含め、ここ最近になって優先度が高まっている課題です。

f:id:coconalainc:20190918171955j:plain:w320
iPad版アプリのデザイン

やらなきゃまずい!!

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

まずは軽く話したいという方も大歓迎ですので、お気軽にご応募くださいませー。