初めての iPhone アプリ開発を振り返って

先日、初めて個人的に作った iPhone アプリがリリースされました。
折角なので、このアプリ開発に至った経緯とか、いろいろ思ったところを半分思い出として残しておこうと思う。

開発するに至った経緯

今回何故 iPhone アプリの開発をしようと思ったかというと、いくつか理由があるが一番は書店でとある雑誌を見つけたところから、今回のアプリ開発がスタートした。

この書籍に書かれている内容を、今回のアプリ開発の中で結構実践して結構助かったりしたので、分厚い参考書とかよりもかなり役に立った。

それ以外にも考える理由はいくつかある。

  • 仕事に結構余裕が出来て、定時後の自由な時間が増えた
  • 昔一緒に仕事した人が、同じように iPhone アプリを作ったらしく、その話の中で「自分たちは折角技術者なんだから、自分たちの得意とすることを使わない手はない」という言葉がとても印象的だった
  • 自分の爪痕を Apple に残したかった
  • 自分の生活の中であったら便利だなーと思う機能があり、それが世に出回っていなかったぽいので、今回自分で作ろうと思った

色々思うところはあるけど、やっぱり大きいのは時間的余裕が出来たってところで、何か形に残るものを作りたいなーと。
しかも iPhone アプリを作るのに必要不可欠な Mac は手元にある。
これはやらない手はないだろ、という流れ。

開発時に考えた事、やった事、思った事、大変だった事

実際に開発に着手したのが 6月末頃。
そんでもって最初に Apple に申請を出したのが 8月頭。
なので、開発期間としては約 1 ヶ月くらい。

この短い期間で、かつ初めての iPhone アプリ開発という中で、いろいろ試行錯誤した点を箇条書きで残しておく。

考えた事
  • 世の中にあふれているアプリの中で「ヒットするアプリ」とされるのは、必ずしもデザイン最高、機能充実とは限らないのではないか(もちろんゲームは除く)
  • 個人的には、「ヒットするアプリ」というのはやはり『アイデア』が大事じゃないかと
  • かといって万人に「ヒットするアプリ」を作るのは難しい(それが出来たら起業でもしようかな)
  • であれば、まずはニッチな分野や人をターゲットにしてみる
やった事
  • まずはモックを作った。しかもペーパーモック*1

 モックでは、大体の画面レイアウトや、大まかなアプリの仕様を考えるのに使った

  • 個人開発だけど、ソースのバージョン管理は導入(BitBucket*2 を使った)
  • アプリの実機テストでは、TestFlight*3 を使った
  • 審査に必要な iOS Developer Program には、実機テストのタイミングで申し込んだ
  • アプリのデザイン(今回はアプリのアイコン画像だけ)は、得意な人に依頼
思った事
  • ペーパーモックは良かった。Excel とかツールを使うよりも、アプリの画面くらいであれば、ペーパーモックでも十分イメージが掴める
  • ソースのバージョン管理を導入したおかげで、ある時点まで動いていたアプリが、とある改修で動かなくなったとしても、すぐに元に戻せる。安心感にも繋がる
  • TestFlight 超絶便利!!数人のテスターであっても導入すべきだと思った。理由としては、テスターを増やす手順も数ステップで済むし、不具合などの改修版をリリースする場合、TestFlight にそのアプリをアップロードしておけば、テスターはそこからダウンロードするだけで改修版をインストールできる。いちいちテスト用のハードを Mac に繋いで...なんてやらなくて済む
  • 更に TestFlight へアップロードする用のアプリのビルド、及びアップロードまでを Jenkins を使って自動化。これはテスト段階での作業時間を大幅に短縮できたと思う
  • 私のように絵心が無いような人は、デザイン周りを得意な人にやってもらうのが一番の近道だと思う。その際の権利周りとかは事前にしっかりね
  • 世の中には「iPhoneアプリ開発」と銘打った書籍はたくさん出ているが、全てを購入する訳にはいかないし、必ずしも自分が欲しい情報が載っているとは限らない。そういう時には、ネットに転がっている先人達の知恵がとても役に立った。でも書籍も大事
大変だったこと
  • 広告導入*4が思ったよりも大変だった。

 今回のアプリでは「タブ」+「テーブル」を使用していたが、その画面で使用する Controller に、UITableViewController を使用していた
 しかし、後々広告を導入しようとしたときに、この Controller のチョイスミスが原因で、うまく広告が表示できなかった
 仕方なく、UITableViewController を UIViewController に変更。変更自体はそこまで大変ではないが、ある程度画面動作のテストが終わった後に発覚したので、細かいところの再テストまで出来なかった

リジェクトされた内容と対策

7月中の開発を無事に終え、さぁいよいよアプリの申請。
ネットの情報を見ながらなんとか申請を行ったが、(予想通り)あえなくリジェクト。しかも 2 回も(T_T)(T_T)。
その時にリジェクト理由と、それに対応した内容を残しておく。

1回目のリジェクト(T_T): 「使い方が分からないから、使い方の動画を撮ってそれを送って」

ぐぬぬ...確かにデフォルトロケールは日本語だから、英語対応とかは今回していないんだが...使い方が分からないと来たか。
という事で、ググってみると同じ理由でリジェクトされた人も結構居て、その人達の対策案を私も実践。

  1. まずは QuickTimePlayer を使って、Xcode の Simulator の画面をキャプチャして動画を作成
  2. それを iPhote 使って編集して、YouTube にアップ
  3. YouTube のリンクをレビューコメントに記載して、再申請


2回目のリジェクト(T_T): 「動画Thank you。でも、iPad で動かないから対応して」

これ原因解明に苦労しました。
私の持ってる iPad2 の実機でも問題なく動くのに何でだよーー
かといって検証するために新しい iPad 買うか...正直そこまでの余裕は...○| ̄|_
対応方法に行き詰った...

と色々試していく中で 64bit の Simulator で動かない事が判明。
しかも 64bit は iPad だけじゃなく、iPhone でも動かない。何だってーー
そして色々調べていく中で、どうやら 64bit 環境で動かないのではなく、英語ロケール環境で動かないという事が発覚。

理由は単純で、Storyboard を英語ロケールに対応させてなかったことが原因。
Storyboard を英語ロケールにも対応させて、一旦英語ロケールでも 64bit 環境でも動くことを確認。

しかし、これが指摘の本当の原因かどうかは正直微妙な所ではあったが、もうこれで動かないと言われたらお手上げ状態。
なので、レビューコメントに「これで動かなかったら、その時のオペレーション手順と、検証で使用したハードウェアの情報を教えて下さいテスター様」と書いて、再々申請。

一週間後...

早朝 6時過ぎに Apple からメールが!!

The status for your app, is now Ready for Sale.

iTunes Connect でもステータスが「Ready for Sale」に!!!!
やったーーーーー!!審査通った!!!!
いやー朝からテンション上がった!もう目も覚めたわ!

そして数時間後には AppStore 上で作ったアプリが見れる...(T_T)
感動...(T_T)
いやーホント良かった。

今後の課題

実際の仕事では「UT書かないなんてありえないっしょ」と偉そうなことを言っていたが、今回のアプリ開発では UT を一つも書けなかった...○| ̄|_
次は UT 書こうと誓いましたとさ。

おしまい。