[後編] 初めてスマホアプリ開発PMを担当する方向けのTIPS集
非エンジニアからPMになった自分の立場からお伝えできる事、きっと役に立つであろう事を実体験をベースに発信しています。
WEBアプリの開発経験はあるが、初めてスマホアプリ開発を任されたプロジェクトマネージャー/プロジェクトリーダー/ディレクター職の方に参考になれば幸いです。
今回のテーマ
前編(こちら)に続き、今回もスマホアプリは未経験の方に向けた内容となっており、WEB案件には無い特徴や知っておいた方が良いと思う事を紹介します。
知っておくと良い用語やポイント
仕様を決める時や、動作テストの時にアプリならではの概念が沢山あるので、ポイントとなるであろう部分をいくつかあるので紹介します!
これらを考慮しておくかどうかで開発計画、予算が変わってくるものもあるので、ぜひ参考にしてみてください。
フォアグラウンド、バックグラウンド
アプリが画面に表示されている状態をフォアグラウンド、起動はしているが裏側に居る状態をバックグラウンドと言います。
古いバージョンのアプリを利用しているユーザーに対して、新しいバージョンへのアップデートを促すダイアログを表示する機能を入れるとしましょう!
ダイアログの表示有無を判定するタイミングを"起動時"としてしまうと、アプリを起動しっぱなし(=バックグラウンドにいる状態)でフォアグラウンドに移行したユーザーはダイアログは表示されない仕様となってしまいます。
フォアグラウンドへの移行時も判定処理の対象にする場合は意図的に実装が必要になるので要チェックでお願いします(色々とよしなに動いてくれると思いきやそうでかったりします・・)
逆にバックグラウンドに移行した時や、バックグラウンドに居る時はこういう処理をしたいという仕様が必要ならそれも考慮が必要です。
(例:音楽プレイヤーアプリで音楽再生をバックグラウンドでも継続し、1曲終わったら次の曲を流すなど)
テスト担当者の方でも「この状態でバックグラウンドで放置したらどうなるんだろう」「バックグラウンドからフォアグランドに移行したらどういう挙動するんだろう」などテストをする場合があるので念頭に置いておきましょう!
アップデート、クリーンインストール
アプリのインストール方法は2パターンあります。
アップデート
… 既にアプリがインストールされた状態で、新しいバージョンを上書きインストールする
クリーンインストール
… アプリをインストールしていない状態で、新規でインストールする
ネイティブアプリではアプリ内にデータベースやファイルをキャッシュする仕組みを入れられます。
新バージョンで機能追加をする場合や、内部のデータの持ち方を変える場合など、下位互換を考えておかないとアップデート後の起動時にローカルの参照先が変わったなどでアプリがクラッシュしたり、元々設定メニュー内で設定していた設定値がリセットされたりします。
下位互換を考えて要件を整理し、開発チームに相談していきましょう!
またテスト時に想定外の不具合が発生した場合、どの方法でインストールしたのか?どのバージョンからどのバージョンに上げたら発生したのか?も原因調査の上で大事な情報になります。
キル、タスクキル
起動していたアプリを端末のタスクから強制的に終了させる操作を指します。
要件詰めでどう関わるかについては、わかりやすい例がゲームアプリでバトル中にアプリ終了→再起動したら復帰する、などですね。
設計上、特に考慮しなければ、直前までアプリの画面上に表示していた情報や状態は維持されずに、再起動後は通常の起動時と同じ挙動をします。(スプラッシュを経由してホーム画面を開くなど)
"キルされた後に、こういう状態にしたい"という要件があるかどうかで設計・実装が変わってくるので、ここもおさえておきましょう!
経験値のあるテスト担当者だとキルをさせる操作は必ず試しますので、考慮しておくと良いです。
リモートPUSH、ローカルPUSH
PUSH通知はアプリを触っている人なら馴染みのある機能だと思います。
大きくは以下の2通りの通知方法があります。
リモートPUSH
… サーバーから送信されるPUSH通知。
メルマガの様にブロードキャストで対象者に配信するケースや、チャットアプリのメッセージ受信の様に指定したユーザーに対して通知するケース
ローカルPUSH
… アプリ内部で送信させるPUSH通知。
フィットネスアプリにある様な、アプリ起動時に「3日ぶりにトレーニングしましょう」などメッセージを出す
リモートPUSHはサーバーが必要なため、通知の要件によってどちらで満たせるのか検討しましょう!
タブレット対応に必要な事
開発したスマホアプリはiPadなどのタブレット端末でもいい感じに動くイメージですか?
残念ながらNoです・・。
特に意識せずに開発をした場合、インストール自体はタブレットでもできますが、いざタブレット画面で見ると上下左右に黒い空白がある状態で真ん中にアプリ画面が小さく表示されたりします。
いい感じに見せたい場合の対応方法として、Webサイトのレスポンシブデザインの様に画面幅に合わせてUIが伸びる形で実装するか、タブレットにはタブレット専用のレイアウトを表示したい場合はスマホとは別にレイアウト実装をするかになります。
後者は見た目を2パターン作る事になるので、デザインも実装も作業工数が大きく増えます。
このあたりの要件も最初の時点で期待値をすり合わせして、対応するかどうか、どういう対応方法とするかの方針を決めておくのをお勧めします。
上記は画面レイアウトの話をしましたが、機能の動作面でもスマホでは動いていたのに、タブレットだと正常に動作しない事もありえます。
(発生したら、タブレットとスマホで処理を分岐させて対策したりします)
という事から、テストの範囲も2倍にしないと品質担保できなかったりもする(テストのコストに思いっきり跳ねる)ので要注意ポイントです。
OSバージョン、機種による挙動差異
WebでいうところのSafariやChromeのバージョンによって特有の不具合が起こったりするのに近い内容です。スマホアプリの場合はこのバージョンの違いよる差異はWebブラウザより顕著だと個人的に思っています。
スマホアプリは、OSのバージョン毎に提供されている機能もできる事も違いがあります。
使えるライブラリもバージョンによって選択肢が変わるため、どのOSバージョンからどのOSバージョンまでをカバーしたいかは最初に決めておきましょう。
"機種"については、Androidはいろんなメーカーから端末が発売されますが、OSが同じでもメーカーによって挙動が変わる事があります。(昔よりは減りましたが今でも苦労する場面がある・・)
AppleはAndroid程ではありませんが、モデルによって挙動が変わる事もあります。
これらをわかった上で、推奨バージョンを決めたり、テスト対象の端末を決めたりするとテスト工程でのトラブル発生を防ぎやすくなります。
まとめ
以上、前後編に渡ってスマホアプリ開発におけるポイントを紹介しました。
書き始めたらトータルで6,000文字を超えてしまいました…。
もし読んでくださる方が居たらありがとうございます。
今回あげた事は一つ一つの情報は探せばたくさんありますが、技術寄りの情報が多かったり、そもそもPM視点でどういう切り口で情報を探せば良いのかが悩ましいという事があると思いますので、PM目線で要点だけいくつか摘んで整理するというのはやってみる価値はあるかと思いまとめてみました。
今回あげたこと以外にもあるのでまた機会があれば記事にしたいと思います。
テーマや粒度は探り探り書いているため、読んでくれた方でもっとこの視点で、とか、この辺を深掘りしても良さそう、などあればご意見頂けると嬉しいです!
〜クリエイションで世界の「面白い」を増やす〜
株式会社Futurizeはプロダクト開発スタジオです。
Web2系のサービス開発から、「ブロックチェーン」や「AI」を用いた開発に取り組んでいます。
一緒に働く仲間も順次募集しているため、ご興味あればXアカウント(@tamametal666)や弊社HPまでお気軽にご連絡ください!