最近、スマホアプリの開発を外注する機会があり、無事リリースまで こぎつけたものの、反省する点も多々あったので、今後のためにも どのような流れで行えば良いのかを まとめておきます。
■要件定義
必要な機能を箇条書きにしながら、絞っていきます。
開発手法としては MVP(minimum viable product)がおすすめです。
実用に足る最小限の製品(MVP)をリリースし、ニーズをみつつバージョンUPする方向で進めます。
■画面設計
外注先の開発会社に、スマホアプリの概要を伝えやすくするために、概要画面設計を作成しておきます。
紙でまず画面設計を簡易的に書きます。
最初から、Adobe XDやSKETCH等のプロトタイプ作成ツールで、画面設計を行うよりも、紙で書きながらアイディアを出した方が良いですね。
ラフなスケッチにすることで、レイアウトとフローに集中できます。
(ツールを使うと ツールの使い方に労力を奪われますので。)
紙で書いたものを基にソフトを使って、開発会社に見積作成を依頼する際の資料とし完成させておきます。
以下のAdobeのブログでも、紙の力のことが書いてありますね
▼プロトタイプをつくる理由と紙の力
https://blogs.adobe.com/japan/web-fundamentals-wireframing-prototyping/
■技術選定
要件定義・画面設計がまとまってきたところで、技術選定を行います。
ネイティブにするかクロスプラットフォームにするかで、今回悩みました。
◆ネイティブアプリ
iOS:Objective-CまたはSwift
Android:JavaまたはKotlin(コトリン)
◆クロスプラットフォームアプリ
React Native
Flutter (フラッター)
Xamarin (ザマリン)
◆クロスプラットフォームアプリ(WebView)
Ionic (アイオニック)
Monaca (モナカ)
◆ガワネイティブアプリ
ネイティブアプリだけど中身はWebViewというアプリ
速度・操作性を考えると 全ネイティブが理想なのは明白ですが、そこは 今回のスマホアプリの特性や開発コスト・保守運用を考えつつ、決めていきます。
結論として、今回リリースしたアプリは
ネイティブで開発、その内の40%ほどをWebViewにする、ネイティブアプリ・ガワネイティブアプリを掛け合わせたもので作成しました。
クロスプラットフォームアプリ(React Native)と最後まで悩みましたが、ios/androidのOSバージョンアップ時に 不安なため、React Nativeは今回は見送りました。
また、主要機能はネイティブに、お知らせ等はWebViewといった形のアプリが多いことを、開発会社との打ち合わせ時に聞き、この技術仕様に決定しました。
反省点は、
・主要機能でないと考えて WebViewで作成したページが実は重要だった
・WebViewの表示速度が思っていた以上に遅い(特にios)
ということが起きたことです。
ユーザーの使用頻度をみつつ ネイティブに作り直すことも考えています。
■開発会社選定
要件定義・画面設計をみせつつ、複数の開発会社と会い、見積もりをお願いします。
11月当初から選定を開始、翌年3月末のリリースを考え動き出しましたが、アプリ開発会社の年末・年度末の忙しさはすごいです。
小さな仕事(500万以下)はやらないという話もありました。
またアプリエンジニアが現在埋まっているので、すぐに稼働できないという返答も多くありました。
開発会社選定時で、注目すべき点は、担当ディレクターの能力です。
実作業することとなるエンジニアの能力を、こちら側で把握するのは困難なので、担当ディレクターをしっかり見極めましょう。
■発注
外注先が決定したら、NDAを結び、開発費用、納品物、納品日を確認後、発注です。
納品日に関しては、エンジニアリソース・Appleの審査等々あり、明確に納品日を決められないという開発会社も多いです。
今回発注した会社も、ある程度、納品日に幅をもたせて、お互いに共有するということにしました。
今回スマホ開発を発注して感じたことは、動作テスト・不具合改修時間が、WEB開発と比べ、スマホアプリ開発は 3倍程かかるなということです。
そのためリリーススケジュールは 相当余裕をもちましょう。なお 今回 想定より1ヶ月リリースが遅れました。
■仕様詰め
正式発注後、
最初の段階の仕様詰めが一番重要です。
(全ての開発にいえることなので、スマホアプリ開発に限ってのことではありません。)
今回、私にスマホアプリ開発経験が少なかったこともあり、ディレクションもお願い(ディレクション費用 全体費用の10%くらい)したのですが、
決して任せきりにしてはいけません。
また相手先から来た質問にはすぐ答えるようにして、仕様・画面設計を徹底的に詰めましょう。
丸投げは決してダメです。
■開発
開発中は、常に質問や仕様詳細を、開発会社とチャットでやりとりしました。開発先のエンジニアの進捗を送らせないためにも、質問に対する返答は すばやく行いましょう。
■リリースのために用意するもの
リリースの前に、こちら側で用意するものをあるので、その準備をしましょう。
・アプリの説明(App Store/Google Playに載るアプリ説明文)
・アプリ利用規約
・プライバーポリシー
今回 多言語対応(日英)アプリだったため、アプリ利用規約・プライバーポリシーは日本語版と英語版を用意しました。
■リリース前テスト
一通り完成したら、実機テストを行います。
今回の開発会社はDeployGateというツールを使っていたので、それでアプリを共有してもらい、動作テストを行いました。
https://deploygate.com/
■審査・リリース
ios/androidの審査に要する時間を しっかり把握しておきましょう。
◆ios
Appの審査は50%が24時間以内に、90%以上が48時間以内に完了します。
https://developer.apple.com/jp/app-store/review/
◆android
2~3時間でリリース公開されます。
■保守
リリース後もスマホアプリ保守には相応のリソースがかかります。端末毎の不具合対応・OSアップデート時対応で目が回ります。
スマホアプリ保守は、知見がたまりましたら 別記事にして公開したいなと思っています。