末進行。だいぶいっぱいいっぱい。

さてさて。
そんなわけでございまして。

今回から数回に分けて、
iPhoneの開発ができるようになるためのステップを考えてみたいと思います。

サルできはじめて早5ヶ月。
(え!?いつのまに?)

今をもって「自由自在に作れている」と
まったくもって言い切れない私が話すような内容でもないのですが、
やはりそれにはそれなりの理由があるわけでして。

その理由を反芻した上で、
どうやったらスムーズに開発力を付けられるかを考えてみましょう。

まず今回のお題は、
「iPhoneアプリ開発はムズカシイのか」です。

ぶっちゃけのお話。
まずはここから。


なんて言うべきか悩むところではあるのですが。
iPhoneアプリ開発を例えると。

近未来の都市に放り出されて
「ハンバーガー買ってこい」って言われるようなムズカシさ。

があります。

・ハンバーガーというモノはわかる
・買うという行為もわかる
・どうやらものすごくクールに買うことができるらしいこともわかる
・財布らしきものや通貨らしきものは簡単に入手できる
・店にも簡単にアクセスできる
・でもオーダーの仕方がまったくわからない

そんな感じ。

なんでそんなことになるのでしょう?

私なりの結論から言ってしまうと、

フレームワークが最新式だから。
コレに尽きます。

<フレームワークって何?という人に少しだけ説明>

アプリを作るときには、
プログラム言語を使ってプログラミングすることになるのですが、
プログラム言語は言ってみれば文法ですので、言語だけ覚えてもプログラミングはできません。

日本語を話せるからと言って、小説や詩が書けるわけではないのと一緒です。

でもプログラミングをしていくと
「この部分って毎回毎回同じこと書いてるんだよなー」っていう部分が出てきます。

サスペンス終盤の崖のくだりとか、
ウォ~イェ~(繰り返し)とか。

そういう「よく使う機能を予め用意しておいた便利機能セット」のことを
フレームワークと言います。

混乱しがちですが、
一つのプログラム言語に複数のフレームワークが存在してもOKですよね。
「ウチの便利セットのほうが機能が豊富だ!イヤウチのほうが高速で処理できる!」

こういうことですので。

iPhoneアプリのフレームワークは
Cocoa touchというモノが用意されています。
アップル様提供です。

で、コイツがObjective-Cというプログラム言語のフレームワークですので、
iPhoneアプリ開発=Objective-Cということになるわけです。

このCocoa touch。
多くの参考書やWebを見ると
「iPhoneが持つ最先端の機能を簡単に使えるようになる便利なフレームワーク」みたいなことが書いてありますけどそれが大きな落とし穴なんだよワトソン君。

「iPhoneが持つ最先端の機能が使える」
ってことは、
「今までどこのフレームワークにも無かった斬新な機能の使い方をマスターしろ」
ってことなわけです。

唯一の逃げ場はiPhoneSDKというグラフィカルな開発環境なのですが、
コレだけ使って作れるアプリにはどうしても限界がありますので、
なし崩し的にCocoa touchに引きずり込まれていきます。

例えば。

// ピッカーの列数を5列に設定
– (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 5;
}

// ピッカーの行数を配列の個数で設定
– (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [self.array count];
}

こういう呪文のことをどうやら一般書籍では「簡単に使える!」って言っているようです。
どこがじゃボケェ!

iPhoneはそれ自体がとんでもなく洗練されてしまっているので、
どんなアプリを作るにせよ基準となるレベルがガツンと高く、
一般普及用ということで用意されているCocoa touchも相対的に複雑になります。

だから

どの参考書も中盤からやたら書いてあるコードが複雑。
なんとなくできそうな部分も我流でやるとコンパイルエラーの嵐になる。

ムズカシイ。

という印象になっていきます。

ですがCocoa touchも、
本来の目的は「便利機能セット」のハズですので、

ムズカシイという印象を受けているというのは

・アプローチの仕方が間違っている
・単に食わず嫌い

このどちらかが問題なわけです。

ホントにムズカシイのか、自分でムズカシくしてしまっているだけなのか。
次はその辺のことを考えてみましょう。