こんにちは!現場では、主にAndroidの開発をしている今井です! 今回は、弊社で実践しているモバイルアプリの開発フローに関してご紹介をします。
日々進化するモバイル端末に対して、モバイルアプリ開発で以下のような悩みを抱えてませんか?
- iOS/AndroidなどOS、端末が複数ある
- OSも、開発するアプリもアップデートが頻繁でテストが大変
- アプリの設計が悪く、バグがたくさん!
- などなど
こういった課題に関して、弊社がモバイルアプリ開発で実践しているノウハウを数回に分けてご紹介していきます。
開発のフローはどんな形?
全体的なフローは、
- コードを書く・レビューするを繰り返す(開発)
- テスト用のバイナリをデプロイする
- 試験項目を作成し、テストを行う
です。
上記のフローのうち、テストにおいて一番重要な部分は、要求仕様書、設計書から試験項目を起こして実施です。 何とも素朴かもしれませんが、これが基本なのです。 プロジェクトによっては自動テストを導入したりしますが、試験項目書の作成は必須ですね。
バージョン管理はGitを使うこと!

開発中のバージョン管理システムは主にGitLabを使用しています。 Gitを使った開発では、どんな風にブランチを運用するかが重要です。 弊社では、GitLabとGit Flow(a successgull git branching model)を部分的に取り入れたフローで運用しています。
コードレビュー
実際の開発では、GitLabのMerge Requestという仕組みにより開発者同士がコードレビューを行っています。 開発時は専用のブランチを作成し、開発が完了したら、本流と合流してもらうように、Merge Requestを出します。 コードレビューの結果、問題なければ本流にMergeされるのですが、ここで、必ず意識していることがあります。それは、
テストコードが書かれていることです。
テストコードを作ること!
「テストがないコードは古い」とまで言われる昨今、 テストコードは可能な限り記述するようにしています。 テストコードがあることによって、機能・メソッド一つ一つの信頼度が上がり、 人力の試験だけでは補えない部分までカバーすることができます。 テストコードを書くことは、開発者のスキル向上にも直接つながりますしね!
また、品質の担保は最終的には人力頼みとなりますが、 開発中からできる限り見落としや考慮漏れを排除するために、 テストコードを書かないとMargeしないなど、 ルールを設けるようにして運用しています。
テストアプリのデプロイはDeployGateを使うべし!
まだケーブルを使って転送してませんか?
開発が終わり、テスト用のバイナリを端末にデプロイするのですが、 弊社では、バイナリをインストールする手段として、 DeployGateを使用しています。 DeployGateは、アプリインストールを効率化するツールで、 こちらも開発環境に依存したバグ等を防ぐとともに、 実機にインストールするためのオーバーヘッドを下げることで、 試験の効率化を図っています。
また、テスト用のバイナリ作成は必ずCIツールで生成されたものを用いるようにしています。 これは、開発環境に依存した不具合などを防止するために有効な手段となっています。
試験項目を作成する際に注意すべき点を洗い出すべし!
さて、テスト対象のアプリが用意され、試験できる準備が整いましたが、 肝心の試験項目はどういったことに気をつけて作成するべきなのでしょうか。
アプリの世界観や要求にもよりますが、以下の点に気をつけると、不具合が発生しづらくなるかと思います。
- 画面が再表示されたとき、状態が復元されるかどうか
- 通信エラー時の挙動に気をつける
- データがない時(エンプティステート)の表示は問題ないか
- サポート対象の端末にインストールできるかどうか
モバイルアプリのテストは、アプリの状態だけでなく、端末の状態や外的要因(ネットワーク等)にも気を配る必要があります。 また、OSバージョンの違いなどにも注意しないといけないため、できるだけモバイルアプリに最適化されたテスト項目が準備されなくてはいけません。 テスト観点に関して、次回以降にさらに詳しく紹介させていこうと思います。
まとめ
いかがでしたでしょうか。
モバイルアプリ開発において、様々なOS・端末への対応は必須事項ですが、 だからこそバグの混入を防ぐことは困難です。
テストコードの準備や、試験項目の精度を高めるなど、 何重にも保険をかけることで品質の高いアプリ開発を行っていきたいものですね。