はじめてiOSアプリリリースしたけど、とっても苦労したって話
Macを信者から布教されて7年ほど...
Xcodeにはじめて触れてから5年ほど経ちますがようやくアプリをリリースしました。
(何のドラマもないただ長いだけの経歴は別途ネタとしてまとめようかと。)
リリースしたアプリ
https://itunes.apple.com/jp/app/ohayo-shinpurunao-tian-qiaramu/id907899803?mt=8&uo=4&at=10l8JW&ct=hatenablog
タイトルにあるとおり、お天気アラームアプリです。
アラームの基本機能はしっかりとおさえ、寝ぼけていてもわかるくらいシンプルなお天気表示、アラーム表示がウリのアプリです。
お天気は色で表し、直感的に理解できるようにしています。お天気のアイコンは補助的な感じでしか使っていません。
今回作成したアプリに関しては、開発、画面デザイン、アイコンデザインは一応自分でやりました。
作った動機
今あるアプリへの不満8割と、ちょっとしたアイデア2割です。
以下煽り気味ですが、このくらいの不満がアプリ開発を駆り立てるのですよ...
アラームアプリに対して思っていたこと
- 使いにくいのが多い。
- 機能が大杉。(↑にもつながる)
- 決まった時間にアラーム音だけ鳴らすアプリはないのものか。
- アラーム再生時の画面に文字盛り込み過ぎ
- 鳴らないときがあって油断ならない。
- なんでバックグラウンドで鳴らないの?
お天気アプリに対して思っていたこと
- 装飾が凝り過ぎ。ぱっと見で天気が分かるのはないものか。
ちょっとしたアイデア
目覚めたときにカーテン開けるまでもなく天気がすぐに分かれば、
どんなに忙しい朝でも、天気を考慮した準備ができるよね。そうだよね。
っていうやつ。それだけ。
昔はカーテン開けない派で朝困った経験が多々あったのですよ...
こだわろうと思ったこと
- いらん機能は全部消す。(現状のアラームアプリの機能にとらわれない。)
- アラーム機能は不自由させない。
- 一度セットしたら、アラーム鳴るまでアプリは起動しなくて良いようにしたい。
- 天気はできるだけ分かりやすく表示したい。
要はシンプルイズ某ということで、着手しました。
制作目標期間は1ヶ月。
画面設計
ペーパープロトタイピング的な感じを試してみようかと実施してみました。
テンプレは以下からいただきました。
iPhone5 ペーパープロトタイプ用のPDF A4サイズ iOS7, 8 - Qiita
書いたらPOPっていうアプリをつかって
実際にiPhoneで画面遷移やUI等の使用感を試しました。
画面設計は、構想段階からそこそこ変わらぬイメージでできました。
開発
以前すこしだけ、Cocoaで開発することもありましたが、
現職がWinアプリ開発な人ですので、ほぼ初心者と見積もってましたが、
少しばかりの知識の貯蓄と無駄に溜まった初心者参考書をつかってなんとか作ることができました。
下記、いろんな機能をつまみ食い的な感覚で実装しましたので浅く広く勉強することができたのでよかった。
- バックグラウンド機能(音楽再生)
- ローカル通知
- 位置取得
- iPodの音源取得
- アプリ内課金
などなど
つまづいたこと
- バックグラウンド再生
上記の文句にも書きましたが、
iOSのアラームアプリって割とバックグラウンドで再生できず、アプリは起動したままクソして寝ろ。っていうアプリが多いのです。
理由としては、バックグラウンドではアプリは強制的にお休み状態になるので、アラーム音鳴らすタイミング(時刻)が分からないの。
ていうか、そもそも鳴らす人もいない。
加えてマルチタスクのアプリは、意図した目的のためにバックグラウンドサービスを使うだけにする。(VoIP、音楽再生、位置情報、タスク完了、ローカル通知など)っていう規約があり、それを破るとリジェクトされちゃったりします。溜まんねえな。
ローカル通知時に音源を鳴らせたりもするけど、それも30秒までだったりして、iPodの音源鳴らせないじゃんかと。アラームを止めるタイミングでお天気を確認したいので、以下のような寝起きフローが達成できないと困るわけです。
(アプリはバックグラウンド状態)
- アラーム鳴る
- ローカル通知出る
- アプリ起動
- アプリのSTOP押す(←このとき天気を確認)
- 起床!
しっかしまあ、この世には脱獄アプリでなくてもバックグラウンド再生に対応しているアプリが存在しているわけで。
それらのアプリの挙動を研究してたら、ある糸口が分かりまして、「だけどこれってAppleに文句つけられたらお手上げじゃね?」とかビビりつつながら実装を進めました。
テストと称して、自分のアラームとして使ってみたものの、寝坊かましてしまってから、逆に信用できなくて朝が強くなりました。(おい)
リリース&リジェクト
お盆前に実装・テストを終え、神にすがるような思いでアプリの申請を出しました。
お盆明けのある日、起きてiTunes Connectをのぞいてみたら「Rejected」と。
理由:
- iOSで標準で提供している機能をアプリ内課金で使わせようとしてんじゃねえボケ
- バックグラウンドONになっているんだが、つかってる様子ねーぞ。どういうことだ。
('A`)オワタ
1についてはちょっとマネタイズに走ろうとしてたのです...チョットだけ...
起きる(アラーム止める)ときしか使わないアラームに広告入れてもなーとか考えていて、だったらアプリ内課金や!と。
ってなわけで、「iPodの音源使いたかったら100円払いなさーい」って腰振ってたら規約に引っかかったわけです。だせえ。
2については恐れていた事態やなあと。どうにかバックグラウンド機能が必要だということを言いたい...
そこで、再度バックグラウンドでアラームを鳴らしている先駆者たちをじっくり研究してみることに。そして気付きました。共通項。
睡眠前音楽再生機能
これは眠る前に心地よいミュージックを鳴らして快適にお休みいただこうという機能だと思うのですが、こいつを実装すれば、「バックグラウンド機能が必要なんや」と胸はってドヤ顔できるわけです。
自分にとってはあってもなくてもどっちでもいい機能(→いらない機能)だったので、画面を増やしたくなかったのですが、ほかにどうしようもないということでさっさと実装して再申請。
数日後またメールが。
「Rejected」
('A`)クッソ
Apple「理由:バックグラウンドONになっているんだが、つかってる様子ねーぞ。どういうことだ。」
私「ふふふ。今回はバックグラウンド機能つかってないと困る機能が実装されているのだよ。睡眠前にリラックス音楽を再生するために必要なんだよ。分かったか!!」
Apple「でもお前、アラーム再生にも使ってるだろ?」
私「え?」
Apple「アラーム再生を実現しているステップを提供してみろよ。さあ。」
(((((('A`)))))))マジオワタ
ってなわけで、撃沈。のう!
よし、もうこうなったら正直に全部タネあかして「じゃあどうすればいいんだってばよ!」って泣きついてやる。って覚悟を決めたわけです。
それで、なんかAppleとやり取りしているうちに英語がだいぶ苦手な自分とのやり取りがだいぶウザかったのか、返事が来なくなってしまいました。
あれ?と思ってたら1日後に「ready for sale」のステータスが!
あれ?なんで?でもやった!
てなわけで、なかなか謎な感じでリリースができたわけです。
シンプルにアラームを使いたい方にはうれしいアプリですので是非ダウソしてみて下さい。
ver.1.0版にバグがありまして、今なら広告が表示されません。(設定忘れ)
https://itunes.apple.com/jp/app/ohayo-shinpurunao-tian-qiaramu/id907899803?mt=8&uo=4&at=10l8JW&ct=hatenablog