iPhoneアプリ開発初心者にオススメの本と学習方法の紹介。

iPhoneアプリ開発

iPhoneアプリ開発初心者

先日、初めてのiPhoneアプリをリリースしました。

Today&Tweet 通知センターに和暦とTwitterのつぶやきを表示しよう。 | Simple gadget life
今でこそ、アプリを見た時に簡単なものであれば、 ソースコードというか仕様みたいなものがイメージできるのですが、 最初は何がなんだかわかりません。(わからない所がわからない状態です。。)
そこで、どのようにして私がiPhoneアプリ開発のスキルを上げていったのかを順を追って書いてみたいと思います。一人でも多くの人がiPhoneアプリ開発にチャレンジしてもらえると嬉しいです。

はじめに

開発初心者を対象としています。といっても、何かしらのプログラミング経験はあった方がいいです。もうJavaでコード書きまくってますよとかいう方には物足りない内容だと思います。 ご了承ください。
あと、開発にはMacが必要です。ハードルが高いかもしれませんがMacデビューしちゃいましょう!

何から初めればいいの?

さて、ココからが本題です。 とにかくアプリを作りたくて仕方ないと思います。 アイデアがあってそれを形にしたくてウズウズしていることでしょう。 ですが、グッとこらえて基本をしっかりと押さえてほしいのです。 これをやらないといつまでたっても応用が効きません。急がばまわれなのです。 私はこの2冊の本をとっかかりに開発をスタートしました。

①よくわかるiPhoneアプリの教科書

②Xcode4ではじめるObjective-Cプログラミング

この2冊どちらか1冊でもいいのではと思われるかもしれませんが、 これは間違いなく2冊購入すべきです。 また、始める順番でいうと①→②→①の順をオススメします。

まず①ですが、この本の良いところは、 開発環境(ユーザー登録、Xcodeという開発ツール)について優しく書かれている点です。ここで躓くとそれ以降が続きませんので、非常に重要です。ボタンを押すとラベルに文字が表示されるといった簡単なアプリを とにかく作ってみましょうというスタイルなので、「今アプリ作っているな」という実感を得られるでしょう。

サンプルのプログラムが書かれているので、それをまずは真似して打ってみるのがいいと思います。(俗にいう写経というものです。) ただし、真似して打ち過ぎてもダメです。それだけでは力がつくことは無いですし、 覚えることも出来ないと思います。なぜならば、iPhoneアプリを作るための言語であるObjective-Cに対する解説が 十分ではないからです。

作ったアプリが動きはするのですが、全く内容が理解できないのです。ですので、いくつか動かしてみてなんとなく概要が理解できたら②の本に取り掛かってほしいです。

②ではObjective-Cの基本的な解説が書かれています。allocやinitといった超基本的なコードの意味やNSString,NSDictionaryといった 基本的なクラスなど丁寧に書かれています。①で単純にコードを写しているだけだと、あまり意味を考えず出来てしますので、基本が身につかなかったりします。しっかりと文法を抑えておきましよう。

ここでも本の通りにコーディングするのはいいですが、 完全に覚えるというレベルまでは求めなくて良いです。 重要なのは、本のどこにどんな事が書いてあったかがわかるレベルで良いです。NSDateクラスを使ったソースを何も見ずにかけることが重要ではなく、本のどこにそれが書いてあり、サンプルを見ながらでよいので必要に応じて使える事が重要です。

また、C言語は事前に学習しておく必要があるか?という問があるかと思いますが、私はNoだと思っています。 初期段階では使うと言っても簡単な変数定義、if文やfor文といった分岐文のみであるためです。ですのでObjective-Cを学習する中で覚えれば十分だと思います。この本で理解を深めることでようやく①で打ち込んでいた内容がわかるようになってきます。

この状態でもう一度①に戻ってまたいくつかのサンプルを動かしてほしいです。オススメはTableViewです。TableViewはあらゆる場面で登場するiPhoneの基礎だと思います。 メインの画面には使わなくても、設定画面で使われるということも多いです。 ですので、確実に押さえておいてほしい部分です。 ここまできてようやくスタートラインに立てたという感じになると思います。

更にレベルアップしていくためには?

上記の2冊だけでは正直アプリといえるものではありません。EvernoteやTwitterと連携して・・・と出来て初めてアプリといえるものになると思います。
ではどうればできるようになるか。 まずは、難しい機能は置いておいて、自分で作れそうな範囲のアプリを作ってみてほしいのです。

最初ならばTableViewで3行分セルを表示し、2行目のセルのみText入力のエリアを作るとか、 そういうレベルで充分です。それだけでも、2行目だけTextエリアを表示するには?位置はどうすれば調整できる?とか Textを格納する変数ってどうすれば良いの?・・・となってきます。 簡単そうですが、いざやろうとしても意外とできないものなのです。

本の内容を書き写す行為と自分で作成する行為は全く別です。 結構ショックですが、このショックを受けとめ、 また調べなおして自分で実装して理解していく過程こそがレベルアップなのです。

だんだんとレベルが上がったり、本に書いていない機能だったりすると、 ネットを駆使して調べるようになってきます。 そこにはソースが書かれているので、最初はコピペで実装してみる。 その後少しソースをいじってカスタマイズしていく。

結局はこの繰り返しなのです。 ここで諦めず、続けた人がアプリを開発、リリースできる人になれるのだと思います。

開発を進めて行く上で知っておいた方が良い事

・よくあるインターフェースは実はネット上で共有されていたりする。
最初、私は何もわからず、「みんな洒落たUI作れてすごいなぁ。無茶苦茶勉強したんだろうなぁ」と とても関心していたのですが、実はネット上で転がっていてプラモデル感覚で組み立てて行けば、 意外とそれっぽいアプリが出来たりするのです。

【iPhone】UIデザイン向上をサポートをするOSS 5つ – enator’s blog
他にも沢山あります。 このフリーのソースを組み込むだけでも最初は難しかったりします。 基本あってこその応用です。

■アップルのガイドラインを事前に抑えておく。
もしiTunes Storeでリリースを考えているのであれば、 Appleのアプリのガイドラインを知っておく必要があります。 この基準を満たさなければリリースは出来ないのです。

iPhoneアプリ審査での111の禁止項目(意訳) | fladdict
ここを事前にチェックしておくと良いでしょう。
ちなみに、私は当初バックグラウンドでどんな処理でも続けることが可能だと思っていたのですが、 実は特定の利用(音楽、VoIP、位置情報取得)でしか使用することができません。 アプリの仕様を根本的に変えるという苦い経験をしました。 事前に知っておくことで失敗は回避できるでしょう。

いろいろ書いてみました。 これを読まれた皆さんには少しでも効率的にiPhoneアプリ開発をしていってもらえればと思います。 自分も初心者レベルから少し抜けだした程度なので、これからもっと勉強に励んでいきたいです。

<追記>この記事の続きとなる記事を書きました。合わせてご覧下さい。

iPhoneプログラミングUIKit詳解リファレンス。初心者から踏み出すための一冊。 | Simple gadget life