必見!iOS 8時代のiPhoneアプリ開発見積もりの8つのポイント Part2

こんにちは!おおはしりきたけです。前回は、iPhoneアプリ開発見積もり時の8つのポイント Part1を書かせていただきました。Part1では、端末やOSなど外部的なポイントでしたが、今回のPart2では、内部的な4つのポイントを書かせていただきます。

5.デザイン

デザインそのものが最初から決まっていることは少ないと思います。見積もり時のポイントは以下の点になります。

誰がデザインするのか?

全て自社でやるのか、デザイン会社さんと一緒にやるのか、クライアントさんがやるのか、などデザイン作業を誰が行うかによって気をつけておくべきポイントはいくつかあります。

  • どのツールでデザインするか
    • Illustrator、Photoshop、Sketch 3などどのツールで作成するのか。ツールは必ず合わせておきましょう。
  • パーツの切り出しは誰がやるのか
    • デザイナーがやる?開発者がやる?作業効率の良い方法で決めましょう。
  • 提供される拡張子は何か
    • PNG?PDF?何使うのかを決めましょう。
  • パーツの命名規約を決める
    • 例:メニュー画面のボタンがタップされた時:menu_btn_active.pngなどわかりやすい名前にしましょう。
  • 全体レイアウトも作成する
    • パーツだけではなく、全体レイアウトも必ず作成しましょう。

漏れがちな素材適用だから工数がかからないと思いがちですが、デザインが別のチームの場合は上記の作業を明確にしても、やり取りする工数というのはかかります。これらを加味してしっかり見積もりを行う必要があります。プロジェクトがスタートした後に、慌てて決めてバタバタするよりも、最初に認識合わせてデザイン側、アプリ側双方が気持ちよく仕事できる環境を整える必要があります。

どんなUIなのか?

どんなアプリでも、ユーザーのどのようなニーズに答えるためなのかというアプリの目的が決まっており、その上で要件に対する情報設計が行われていきます。もちろん情報設計は重要な作業の一つですが、弊社で成功するパターンとしては、関係者がしっかりとAppleが提供しているiOS Human Interface Guidelinesを理解しているかです。これにつきます。HIGを理解した上でどのようなUIにしていくのか検討していくとデザインの前提、効率含めて全然変わってきます。

6.アニメーション(トランジション)

最近ではTinderのようなユニークなUIなども増えてきており、アプリに特化したUIというのが増えてきました。画面が小さく、シンプルなUIになるiPhoneアプリでは、トランジションを効果的に使うことで、UXを高める事ができます。アニメーションやトランジションなども、最初から決まっていることは殆どありません。プロジェクトが進んでくうちに突然「あのアプリのあの動き」という要望があって、固まってしまう開発者の方も多いのではないでしょうか。少なくともクライアントが参考にしているアプリはあるはずですので、どのアプリのどの動きをイメージしているのかを事前にヒアリングしておきましょう。

OSSがあるか?

アニメーションやトランジションで一番工数に関わってくるのは、OSSが提供されているかです。Facebookは、iOS用PaperアプリのアニメーションエンジンであるPopをオープンソース化していたり、弊社平屋のブログでもiOS 7対応アプリで使いたいライブラリ4選といった便利なOSSの紹介をさせて頂いています。iPhoneアプリ開発はスピードが重要です、そのために効率よく開発するには、OSSは欠かせません。

パラメーター調整の工数を甘く見ない

アニメーションにおいて、デザイナーと開発者のやりとりで一番かかるのがパラメーター調整の作業です。「もうちょいフワッと」、「ガッっと出てくる感じ」など擬音での会話が多くなりがちです。もちろん会話は必要なのですが、どうしても感覚的なものになってしまうため、可能であればデザイナーの方にGIFアニメやFlashでのアニメーションなどを作成してもらうと一気に効率的になります。

アニメーション参考サイト

CAPPTIVATE.co iOSのアニメーションを紹介しているサイトです。カーソルかざすとアニメーションが動き出します。

DesignWoop 海外のデザインブログDesignWoopです。上記のリンクは、モバイルアプリのアニメーションがまとまっています。

UYI useyourinterface.comは、モバイルアプリだけではないですが、インタラクションデザインのパターンを紹介してくれているTumblrのサイトです。

7.オフライン

iPhoneアプリでは、オフライン要件も出てくることがあります。オフライン要件で事前に検討しておくポイントには、以下があります。

オフライン機能は必要?

オフライン機能を実装する場合、アプリの根本的な前提条件が変わってきます。オフライン機能の実装が必要な場合、開発工数は確実に大きくなります。開発工数とユーザーへの効果を比較し、本当にそのコストを使ってまで、ユーザーに提供したい機能なのかをしっかりと検討しておく必要があります。

また、オフラインが必要な状況としては、以下が考えられます。この場合は、オフラインの検討が必要になります。

  • 地下や電車などオフラインが頻繁に発生する箇所で利用するアプリ
  • 地方の山岳部(工事現場等)で利用するアプリ
  • オンライン/オフラインが関係ないアプリ

オフライン時のデータの扱い

オフラインで利用するということは、アプリ内にデータを持つことになります。その場合、以下が検討しておくポイントになります

  • アプリ内でどのようにデータを持つのか
  • 暗号化の仕組みはどうするのか
  • データの同期はどうするのか
  • データをどのタイミングで削除するのか

上記は、UI、機能に直接関係ないですが、アプリ内の根本に関わってくるので、非常に重要なポイントに成ります。

8.状態遷移

バックグランドからの復帰後のアプリの挙動など、考慮されておらずテスト時に不具合となることもあったりします。検討漏れでのテスト時の不具合というのは手戻り以外の何者でもないので、状態遷移についても検討しておきましょう。iOSアプリの状態遷移をしっかりと把握しておき、力技の状態遷移ではなく、適切な動きにさせる必要があります。

iOSアプリの状態遷移

iOSアプリの状態は、以下になります

  • Not running」:アプリが起動されていないか、実行していたが、システムを停止させた。
  • Inactive:アプリがフォアグラウンドで実行されているが、利用していない状態
  • Active:アプリがフォアグラウンドで実行され、起動中
  • Background:アプリがフォアグラウンドには無いけど、まだ動作している状態
  • Suspended:メモリの保持はしているが、アプリは動作していない状態

high_level_flow_2x

 

どんな状態遷移があるか

  • ホーム画面からのアプリ起動
  • 別アプリからのアプリ起動
  • Push通知からのアプリ起動
  • オンライン時のアプリ起動
  • オフライン時のアプリ起動
  • ホーム画面へ戻る
  • 別アプリを起動
  • アプリをタスクから終了
  • ログイン/ログオフ/自動ログイン
  • アプリのバージョンアップ通知からの起動

等など考えるとキリがないです。例えばPush通知からのアプリ起動にしても、アプリを起動するだけなのか、通知されたメッセージによって起動画面を変えるのかなど、考慮する点は多々あります。こういった状態遷移から、アプリの挙動をしっかりと決めて各画面間の整合性を合わせておく必要があります。

まとめ

iPhoneアプリも数年前に比べると、開発前に検討しておくべきポイントが増えています。沢山あるアプリと差別化するためのUIであったり、何処まで端末やOSをフォローしておくべきか、内部の構造をどうやって設計していくかなど、開発者には色々と大変な部分も増えてきていますが、開発前にしっかり検討しておきましょう。今回のポイントをいかにまとめます。

1.OSバージョン

  •  どこまでのユーザーをフォローするべきか
  • どんな機能を利用するのか

2.端末

  • どの端末までをフォローするべきか

3.開発対象

  • 開発する機能が明確になっているか
  • 機能がフワッとしている場合は、前提を付けておく
  • リリース申請なども対象にはいるのか確認しておく

4.開発対象以外の作業

  • 開発環境のツールに何を利用するか
  • ハードウェア、サーバー費用、交通費などその他にかかる費用を明確にしておく

5.デザイン

  • デザインファイルのルールを決めておく
  • iOSアプリのデザインiOS Human Interface Guidelinesを理解しておく

6.アニメーション(トランジション)

  • 「あのアプリのあの動き」を出来る限りヒアリングしておく
  • OSSが提供されているか事前に調査しておく
  • パラーメーター調整の工数を甘く見ちゃダメ、ゼッタイ

7.オフライン

  • オフラインで利用が必要なアプリなのか?
  • オフライン時のデータの取扱を決めておく

8.状態遷移

  •  どこから、どういう形で起動されるのかを考えておく
  • 画面単体ではなく、アプリとしての整合性を必ず意識しておく