取り合えず、当初はAmazonで「i-Phone SDKの教科書」を買って見た。ウェブで調べた限り、入門には良い、こんな本が欲しかった等の評が見られたからだ。届いたそれを見て、取り合えずAppleのデベロッパー会員登録、SDKダウンロード、良く街角で人の出入りを数える時に使っているのを見るカウンターをシミュレートしたアプリのサンプルプログラミングをやってみた。まずInterfaceBuilder(以下IB)と言う視覚的デベロップツールによるインターフェースの部品配置、プログラム上にそれら各部品との接続口的な宣言を幾つか書き、またIBに戻って、それをプログラムに文字通り電線でつなぐ。で、後は僅かなプログラミングを施し、ビルド。i-Phoneシミュレーターが起動。素晴らしい。その様に書かれているままにスラスラと進めたが、殆ど身に残る感のないまま後二、三のサンプルを書き進んだ。
rakugaki:01

この本全体として、i-Phoneのプログラミングを体系的に把握する事は難しいと思う。サンプルも応用問題が出題されているが、道理がまだ分からないままインターネットで検索し回って、やっと何かしらが出来た具合だ。その経験は何かしらを身に付かせたが、アップデレゲートとは何か?とか、動的結合とは何か?等の疑問が残り、i-Phoneプログラミングの作法と言うものがあり、それに従わず好きにプログラミングをしても、わけの分からないエラーが頻発して、すぐに退場させられそうな雰囲気があった。今から考えると、結局その闇を探る様な期間は、別クラスとのやり取りを体験し、特殊な変数のスコープを覚えるまで続いた様に思う。

この本のリファレンスとしての機能は、特にNS系の関数や、ココアのライブラリについては全く浅く、UI系もダメ。正にガイドブック的なものだと思っておいた方が良いと思う。
ただしオブジェクト指向や、C言語、objrctive-c言語に対しては、覚書としての使い方が出来、初めの頃には結構助かった。今でもお約束事でど忘れした物に対しては、一番シンプルなこのリファレンスを思わず見てしまう。
IBについてはサンプルで使っているだけで、それもリファレンス的には使えない。

金が勿体無い人は、以下のサイトで触りは十分かも知れない。
http://gihyo.jp/dev/serial/01/iphone

objective-cに対しては以下のサイトがリファレンスになるが、2.0の追加機能に対しての説明はない。
http://wisdom.sakura.ne.jp/

NS系のライブラリについては、こちらのページなど大分お世話になりました。
http://konton.ninpou.jp/program/cocoa/index.html

それでも本が欲しいなら、今なら「基礎から学ぶiPhoneアプリ開発」と言う本が良いと思う。IBの説明が詳しいし、体系を説明しようとしている。

多分、これは通らなければならない登竜門の様な物だろう。初めは時間をかけても網のたらいに砂をかける如く知識は積もらない。細部が分からなければ全体が掴めない。全体が掴めなければ細部は理解出来無い。禅問答の様だが、いつか繋がる時がくるのが人間の知恵の凄い所だ。

iPhoneからの投稿
私はずっと、i-Phoneを持つ前はWindowsMobileを持ち歩いていたが、その機能には期待もなにも生まれなかった。小さい画面、重い動作、入力の辛さ。発展する気配は何一つ感じられなかった。デベロッパーもそうだったので、実用的なソフトは殆ど開発されていない様に見えた。携帯型コンピュータはこんなもので、大きなビジネスになる訳がないと皆思っていた。

しかしi-Phoneが現れると、自体は一転し、それら悪い点は全て完璧とは言わないまでも解消に向かった。すると瞬く間に主流になり、その流れに日本の折りたたみ携帯メーカーも無視せざるを得なくなった。自ら制限を与えて取り組まなかった要素に、戸惑いながら不器用に合わせて行くより他なくなった。

問題は、決してi-Phoneは新しい視点で作られた物では無かったと言う事だ。不便な物が不便で無くなっただけだ。それだけでブームが起きた。しかし既成のブームを追えるだけの構造しか持たない日本のメーカーは、自ら制限を課し、なにも見ないくせに、ただ生産性だけを唱える事しか出来なくなっている為、それが何故売れているのかもわからない。景気低迷で苦しいとは言え、酷い転落スパイラルである。

サードが出すwiiのゲームが面白くないのは、新しい遊びが全く生まれて来ないからだ。サードはデベロッパーツールに対して制限があるらしいが、それにしても、まるでwiiでシミュレートできる動作を確認、既定してから、その範囲内で結果を出そうとしている様に思う。やはり生産性重視である。

私は逆に思う。自由な発想を制限無く遊ばせてから、wiiでやってみたい動作を思いつき、それをどうやって実現するかを考えるべきなのだ。実現するとは限らないから、生産性はある程度無視せざるを得ない。大きすぎるメーカーや、それにくっ付く中小企業では難しいのは分かる。ただ、窮地に陥った任天堂だけは、それをする事の出来る資質を、昔から持ち合わせている様だ。任天堂の歴史を調べてみて欲しい。

さて、i-Phoneもブームが暫く続いたせいで、アプリ市場は緩和状態に近づきつつあるだろう。だが、アプリ一つ一つに目をやると、どれ一つとして完璧なものはない。evernoteにしてみてもtouchtodoにしても、勿論notepadにしてみてもである。まだまだ個人デベロッパーが立ち入る要素はある様に見える。そして、その気付きがそのままアプリ作りのアイデアになる。アップストアのコメント欄は、異常なコメントは除き、アイデアの坩堝である。

また、先に言ったwiiの如く、i-Phoneと言う所を離れて、何かこんな事が出来たらなあと言う思いつきも役に立たない訳ではないだろう。

要するに、景気低迷で大手が苦しむ今だからむしろ、個人デベロッパーのつけいるすきがある様に感じる。

iPhoneからの投稿
オブジェクト指向の参考書を買い求めたが、当時はJAVAはまだただの遅いWeb用途のプログラミング言語だと言う括りであり、もっぱらC++の世界だった。見つかったのが確か「オブジェクト指向狂詩曲」と言うほんだったと思う。その本は今名著とされているらしい?その本のお陰で、以下の様にオブジェクト指向の概念は理解出来た。

つまり世界を物の集まりとして見て、その各々が各々の要素や動作で影響を与え合いながらある事象や仕事をして行くと言うイメージなのだろう。
rakugaki:01

rakugaki:02


そしてそれら物物は、ある型から生まれると言う。専門用語でその型をクラスと言い、生まれた実体をインスタンスと言う。
rakugaki:03

rakugaki:04


何故そんなややこしい仕組になっているかと言うと、世の中には様々な人間がいるが、性格の差や体型、顔、頭、動作の多少の差はあるが、基本能力は同じなので、例えば色々な人間を千人ぐらいプログラミングする時に、一々基本能力から書き直していたら大変だから型を作って大量生産しようと言う事と、同じ様な物が同じ括りにまとまっていると、人にそれが何かと説明する時に何かと分かりやすいと言う理由があるのだと理解した。その仕組を継承と言う。

その概念は分かった。C++でどうやってクラスを定義し、インスタンスを生成するかも分かった。ただ、何か腑に落ちない。何か遊ばれている様な気がする。結局実際Cだったらどう実装するのだろうと考えてしまう。

C言語の構造体も、色んな要素を一括りにして纏める機能だが、それは変数の集まりなので、動作までは記録出来ない。だが、それも関数へのポインタ変数を入れれば良く、なんだC言語だってオブジェクト指向じゃないかと思った。が、つまりその考え方がオブジェクト指向であると言う事なのだろう。

つまりオブジェクト指向の正体は、関数へのポインタ入り構造体に違いないだろうと思っていた方が、結局理解しやすいのだろう。

もっと具体的に言うと、ある犬構造体は、自分の属性変数として野良犬を値として持ち、「吠える関数」へのポインタを持っている。「吠える関数」は、誰に向かって吠えるかを引数として取り、それに「ある人間」を入れると、呼ばれた吼える関数はワンと音声を発音すると共に、様々な構造体へのポインタと名前のセットの入った配列に、ある人構造体へのポインタを探しに行く。見つけたらそのポインタの構造体の中の「吠えられたら関数」のポインタを探し、実行する。その中では属性を確認し、「弱い」なら自分の「逃げる関数」に処理を渡す。そうなってるんじゃないかなそうに違いないだろう。継承の実装もそれ用の配列を通したただのポインタの受け渡しに違いないと言う所で、私の浅はかな疑念は収まった。

iPhoneからの投稿