技術な話し

【2019年】iOSアプリを新規開発する際に決めた大事な7つのこと

はじめに

この度、古くから面倒を見てもらってる先輩からiOSの開発依頼を受けて久しぶりに開発することになりました。(会社が副業OKなの助かりました。)

それにあたりどのようにiOSを開発するのか。した方が良さそうなのかを
大きく7つの項目で纏めておくことにしました。

iOSアプリを新規開発する際に決めた大事な7つのこと

adobe XDでモックを作成してから開発する

いきなりアプリ開発して、修正依頼がくると直す手間がかなり大きいのでモックをadobe XDを使って作成することにしました。

かなり直感的な仕様で、使いやすく40枚越えのアプリのモックもサクサク作ることができました。また、ケーブルで繋ぐだけで実機で動作確認もできるのがgoodでした。

引用元: https://blogs.adobe.com/creativestation/web-july-update-of-adobe-experience-design-cc-preview

Adobe XD

まあでも、元々adobe cloudに登録していたのが決めた一番の理由です。
prottとかでも問題ないかと思います。

Prott App

ストーリーボードは複数に分割して管理する

前述したように、画面数が40枚を越えてしまったので、
管理を考えてストーリーボードを分けようと考えています。

1枚づつストーリーボードを分ける方法もあるらしいのですが、1人の開発でそれはtoo muchな気もするので、今回は意味別に分けて7つくらいに分けておこうと思います。

【Xcode】Storyboardを複数に分割して管理する方法

MVCアーキテクチャを導入して開発する

iOSの開発にもかなりの数の推奨アーキテクチャがあるようです。
今回の受託内容は新規開発のみで、今後の継続開発は他の方にお任せする可能性もあるので、将来的な共通理解の意味も込めてアーキテクチャの導入は行っておこうと思います。

一覧のまとめは図解して紹介してくださっている、この方の記事が一番わかりやすかったように思います。

iOSをMVC,MVP,MVVM,Clean Architectureで実装してみた

そして、今回導入しようと思ったのがMVCモデル。
WEBでもよく使われてるやつですね。

こちらに決めた理由は

  • 1人での開発なのでそこまで分けるコストをかける必要ない
  • とは言っても、引き継ぎの可能性も考えてオレオレな構成はやめておきたい
    • 引き継ぎの際の学習コスト低い方がいい
  • ロジックをmodelに分けるだけでもだいぶスッキリしそう

という感じです。

最近の流行りはもっと細かく分けて依存関係なくすものなんですけど、それを導入するには少し規模が小さいかなと思いこのような判断にしました。

MVCは以下の公式見てやっていこうと思います

Model-View-Controller | 公式

mvc構成にする場合、もちろんディレクトリを分けると思うのですが、その時に便利なライブラリがsynx。
これを使うと、xcode上で切り分けたディレクトリ通りにローカルのディレクトリ構成も直してくれる便利ツール。

venmo/synx

対応するバージョンを決める

対応するバージョンを決めるためには、iOSのバージョンのシェア率を確認しながら、先方と話し合うことが大事です。

以下の公式サイトからバージョンのシェア率を確認することができます。

App Store – サポート – Apple Developer

2018年1月18日時点では、以下のような結果になっており、
今回は、iOS10までの対応で行こうという話になりました。

2018年1月18日時点

2019年1月12日時点

使用するOSSライブラリ一覧

用途に合わせて使用するライブラリは先に決めておくと、無駄に自分で独自開発することなく済むので効率的です。(自分で開発すると勉強にはなりますが、品質の面でも劣ることが多いです。OSSはすごい)

以下のサイトが鬼のようにまとめてくれているので、こちらから探せばいいと思います。

OSSライブラリを鬼のようにまとめてくれているサイト

書いてたら長くなりそうなので、別の記事にまとめました。

http://www.ohmg.tokyo/entry/ios-use-oss-library/

デバック用のテストリリースツールを決める

次に、デバック用のテストリリースツールを決めたいと思います。
こちらは、app storeにリリースする前に、実機にダウンロードして動作を確認することができるツールです。

候補になったのが

  • TestFlight
  • DeployGate

よく比較してくれているサイトがこちら

[iOS] TestFlight の特徴 と DeployGate との違い

今回採用するのは、TestFlightにすることにしました。

決めた理由としては

  • TestFlightを使ったことがあり学習コストが低い(一番の理由)
  • iOS Developer Programに入っているため、追加コスト無し
  • クラッシュ検知に追加SDK必要無し
  • バイナリの登録方法も簡単そう

というふわっとしたやつです。特にこだわりはありません。

デプロイの手順を決める

以下のサイトがしっかりまとまっていたので、車輪の再開発する必要なく参考にしながら進めたいと思います。

iPhoneアプリ申請やAppleの審査に関するメモ

以上、iOSアプリを新規開発する際に決めた大事な7つのことでした。
誰かに見せるというよりは、自分のdocument代わりなので、足りない部分があるかもしれませんが、何か参考になればそれはそれで嬉しいです。

多分、これに則って開発したら行き当たりばったりよりはスムーズに開発できると思います。

開発はこれからなので、しっかり頑張る

ABOUT ME
maru
maru
オーマイガー東京(編集長)/キグルミだ熱狂(gt, 作詞作曲)/新卒2年目エンジニアです。赤坂と浅草におります。最近作った→ https://lgtmeow3.tokyo