読者です 読者をやめる 読者になる 読者になる

カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

アプリ開発のアドバイスをくれ、という依頼を受けたので考えまとめ

スポンサードリンク

f:id:InvokeTwoA:20151222140105j:plain
f:id:InvokeTwoA:20151023183618p:plain「アプリ開発の知見をシェアしてくれと言われた!」
f:id:InvokeTwoA:20151215172640p:plain「またフワッとした依頼ですねー」
【目次】

依頼内容

  • アプリ開発の経験者として、アプリ開発について相談したいとの事

1.アプリの大まかな見積もり
2.**の某アプリの作成の期間と人数
3.機能ごとの見積もり
4.アプリの運用・保守
5.サーバの選択
6.iOS、Android両対応。クロスプラットフォーム開発についてアドバイスが欲しい

f:id:InvokeTwoA:20151023183618p:plain「wearのようなアプリ……使ったことないからインストールしなきゃ」
f:id:InvokeTwoA:20151215172640p:plain「アプリ開発の仕事をしてるとやたらアプリをインストールしますよね」
f:id:InvokeTwoA:20151023183618p:plain「1と3の内容が重複してるところとか、色々と嫌な予感がする相談」

某アプリを使ってみた感想

  • フッターメニューがあるタイプの標準的なUI
  • ログインなどでサーバー通信が必要(その場でアカウント作成も当然できる)
  • SNSに必要な機能が一通り揃っている
  • 画面いっぱいに出る広告があった

アプリ開発とweb開発の違い

f:id:InvokeTwoA:20151217131314j:plain
f:id:InvokeTwoA:20151215172640p:plain「webの開発とはだいぶノウハウが違いますよね」
f:id:InvokeTwoA:20151023183618p:plain「いろいろなプログラミング言語の経験があるとか、新規技術を積極的に調べて実践できるスキルがあるかどうかが大事だよね」

  • アプリ開発が初めての場合は独自のノウハウが必要となるので学習コストが必要
  • GUIの開発に慣れてないと大変かも
  • アプリは携帯の小さな画面サイズのサービスとなるが、携帯画面用の開発に慣れてるか?

(慣れてないと初めは非常に画面が狭く感じてしまう)

  • 技術の進化がめざましい分野なので、最新情報を追える必要がある(古い資料はあまり役に立たない)
  • 工数とは別だが、iOS申請など(申請してから一発承認だとしても一週間ほど)やたら時間がかかる。リジェクトされる事も少なくないので余裕を持ったスケジューリングが必要
  • webページではなくアプリでなければいけない理由があるのか? ないならばwebページ作った方が数倍楽

(パッと考えられるメリットとして、プッシュ通知。課金のしやすさ。位置情報取得などが挙がる)

  • ユーザーが機種変更したときの対応とかも考える必要あり

2.**の某アプリの作成の期間と人数

  • デザイナー(各解像度の画像準備。画面のレイアウト決定) 1〜2人
  • アプリ開発者(必要あればテスターも担当) 2〜3人

f:id:InvokeTwoA:20151023183618p:plain「開発者が一人だとリスクヘッジができないので、最低でも開発者は二人からというルールが前の会社ではあったよね」
f:id:InvokeTwoA:20151215172640p:plain「エンジニア同士の作業分担って明確にしないと効率落ちますよねー。多すぎても却って首を絞める罠」
f:id:InvokeTwoA:20151023183618p:plain「バイナリファイルのコンフリクトとか地獄を一度は経験するよね」

f:id:InvokeTwoA:20151227053438j:plain

f:id:InvokeTwoA:20151023183618p:plain「デザインに関しては、アプリ標準のUIを使うか、独自の画像をばんばん使いたいかでデザイナーさんの仕事量が大きく変わりそう」
f:id:InvokeTwoA:20151215172640p:plain「アプリによってはデザイナーさんが不要なケースもありますもんね」

3.機能ごとの見積もり

f:id:InvokeTwoA:20151023183618p:plain「一通り機能が揃ってるアプリはだいたい一ヶ月くらいの工数見積もりになるよね」
f:id:InvokeTwoA:20151215172640p:plain「一ヶ月以上だと長すぎると言われますし、申請関係など何が起こるか分から無いことも多いので一ヶ月以内とは言い難い……」
f:id:InvokeTwoA:20151023183618p:plain「そもそも工数見積もりって担当するエンジニアの経験や力量を元に推測するものだよね。今回はエンジニアの正体が不明!」
f:id:InvokeTwoA:20151215172640p:plain「数値を出しにくいものに数値を出す。これぞサラリーマンですな」

  • 開発環境構築 3日
  • 申請関係の準備 2日(デベロッパー登録、アプリ申請、広告申請)
  • ログイン機能 3日
  • 写真の閲覧機能 4日
  • 写真投稿機能 5日
  • 機種別対応(iOS,アンドロイド) 2日
  • デザイン 5日
  • テスト 3日
  • もしアプリ開発が初めてならば、アプリ開発の基本学習 7日
  • サーバー側の機能(どこまでできているか不明。何で実装するかも不明)

f:id:InvokeTwoA:20151023183618p:plain「25+7+α営業日。これは一ヶ月を超える!」
f:id:InvokeTwoA:20151215172640p:plain「どんな機能にもバッファを取ると日数が増えますよね」

※ 1.0.0 はどこまでの機能を考えているのか
(アップデートで対応予定のものなどフェイズを分けられるなら分けるべき)

4.アプリの運用・保守

f:id:InvokeTwoA:20151208221411j:plain

  • 携帯は新しい端末が常に出続けるし、OSアップデートなどもあるので常に一人は運用担当を用意したい
  • iOSアップデートしたらアプリが動かなくなった -> 大騒ぎというのはよくある事
  • サーバーを別で用意するならば、サーバーの監視も必要になる

(サーバーが落ちていた場合、アプリは最低限どのような動きができるべきかなどルールは事前に決めておく)

  • 動作確認でどの端末でテストするかなど決めておく。量が多い場合はテスターも必要

(さらにアプリの各バージョンでの動作確認など、すべてを網羅するのは非常に大変)

5.サーバの選択

  • 特にどのサーバーを使えという事はない
  • AWSなどで良いのでは?
  • ユーザー数が見積もれるのであれば必要サーバー台数などの数字は出せる

6.iOS、Android両対応について

  • unity の開発を考えている? titanium はやめておけ!としか言えない
  • iOS、アンドロイド用で別々で作る事も一つの手
  • いずれにしろ iOSは審査期間が長い、Android は審査期間が短いので両方のバージョンはずれていく

iOSアプリの特徴

  • 一言で言えば「ルールが厳密」
  • 審査期間が長い(順調でも一週間)
  • リジェクトもされやすい。審査基準は厳しいし、基準も変わる

Android アプリの特徴

  • 一言で言えば「自由」
  • 審査期間が短い。審査基準も緩い
  • カメラ機能を使うときは別アプリのカメラ機能を〜 などの組み合わせが容易

締めの言葉

f:id:InvokeTwoA:20151023183618p:plain「……裸で戦場に赴くような気分だけど、明日行ってくるかー」
f:id:InvokeTwoA:20151215172640p:plain「生きる事は全て主業なのだと、偉い人が言ってました」
f:id:InvokeTwoA:20151023183618p:plain「アドバイザーの場合、自信満々でいる事が大事だよね。どやぁオーラでいかねば」

追記

f:id:InvokeTwoA:20151023183618p:plain「先方のドタキャンで待ちぼうけになったよ (´;ω;`) 」
f:id:InvokeTwoA:20151215172640p:plain「うわぁ……」