ANDPADのiOSアプリの設計について

iOSアプリの設計について

施工管理アプリANDPADのモバイルアプリ開発をしている山下です。

今回はANDPADで採用しているiOSアプリの設計について書こうと思います。

ANDPADはサービスリリースしてから4年ほど経過しており、ユーザー数も右肩上がりに伸び続けています。アプリもリリースしてから3年半ほど経過して設計を振り返る機会ができたので記事を書いている次第です。

基本的な設計方針としてはMVVMを採用しています。3年半ほど前は、アプリ界隈では比較的新しめの設計だったのですが、今では結構当たり前になっているのかなと思います。構成図はこのような感じです。

     f:id:oct88:20190529171816p:plain

使っている主なライブラリは、

  • RxSwift
  • Realm
  • Alamofire

などです。比較的今でもよく使われているライブラリなので選択は正解だったと思います。

MVVMの部分は、一般的な使い方と基本同じなので説明を割愛します。ApiManagerは、ローカルやサーバー側からのデータ取得を担っています。ScreenUpdateManagerは、複数画面をまたいだ場合のイベント伝搬の責務を担っています。 

建築系で特有の機能をライブラリ化

ANDPADは、iOSだけで5アプリリリースしています。ちなみにAndroidも4アプリリリースしています。Androidアプリの開発も私がやっているのでまた設計の話を別記事で書こうと思います。

 開発当初から、建築業界という広いドメインを扱うサービスなので用途毎に複数のアプリをリリースしようと決めていました。複数のアプリをリリースするにあたり、共通化できそうな機能は独自ライブラリとして切り出す手法を初期段階から行なっていました。同じような機能を実装する場合はOSSのライブラリと同じような感じでライブラリをインストールするとアプリから呼び出せるようになっています。ライブラリの管理はCocoaPodsを使っています。カメラ機能など、建築現場特有の機能などはよく要望を頂くのでライブラリ化することでだいぶ助かっています。

         f:id:oct88:20190530161018p:plain

設計を振り返って

 今回設計を振り返ろうと思ったきっかけは、あるアプリをリニューアルするにあたり現状の設計を見直して改善できる部分を洗い出そうと思ったからです。今までの設計の中で失敗だったなと思ったのは役割があいまいなManagerクラスを作ってしまったことや、色んな場所から呼び出したいモジュールを安易にシングルトンにしてしまったことなどです。次の設計では、このあたりを解決した構成を考えたいと思っています。形になった段階でまた記事を書こうと思います。おたのしみに!では 

積極採用中

弊社では、業務拡大中で最高の設計をしたいiOSアプリ開発者を積極採用しております。みなさまのご応募お待ちしております!!エンジニア採用サイトに募集職種や、会社の雰囲気の分かるインタビュー記事があります。是非ご覧ください。