bug bug bug

それにしても、世の中うまくいかないことが本当に多い。

バグ バグ バグ

まあ、0ではないからいいにせよ。

iPhoneSDKの教科書CocoaTouchプログラミング、最初の一歩

iPhoneSDKの教科書CocoaTouchプログラミング、最初の一歩

なんとか、最後まで、アプリのソースコードを、シミュレータで走らせるところまで
いきました。

自分のiPhoneにも、作成したソースコードをインストールして、動きました。

ここに、語弊があります。

本に書いてある通りに、機能するわけではない。残念ながら。

カウンター

スマッシュゲーム

物理エンジン実験のボール

時計  

アラーム時計だと、本には書いてあった。シミュレータではうまいこと、アラームの音もなってくれた。しかしながら、残念なことに、実機では、アラームがなってくれない。
シミュレータではうまいこといって、実機ではうまいこといっていないというのはどういうわけやねん。

年齢の計算マシン

こちらは、英語圏のユーザ向けと、日本語圏のユーザ向けで、

1) アプリの名前
2) アイコンの中身
3) アプリで、出てくる「年齢」Age in Years 「月齢」 Age in Months 「日齢」Age in Days
といった表記を、「設定」を日本語圏にするか、英語圏にするかで、英語/日本語とわけて、出力されるようにしようという
プロジェクトなのですが、これがまたうまいこといかない。
まず、アイコン画像の切り替えがうまいこといかない。
アプリの中のテキストの表記きりかえに至っては、プログラムされているテキストがそのまま出力されていたりして、「なんじゃこれ?」
って感じです。


そして、最後にパイルという名前の、画像合成ができると銘打っている
アプリにまでいくわけです。
これが、インストールまでいっても、一番悲しい結果に終わっているような気がする。

写真と写真の合成ができると書いてあるけど、いくら写真を撮影して、積み上がるように「保存」をしても
黒色で設定したビュー画像が登場するだけで、画像ファイルを、アプリに取り込ませることで、おこるはずの変化が
まったくおこらない。

アプリの機能をまったくはたして、いない。ほかのアプリは、不具合があるとはいえ、「アラームのならない時計」「英語表記が、うまいこといかない年齢計算」
と、役割がまだしもあるのですが、このパイルというプログラムはその機能も果たしていない。
なんとか、写真の撮影まで、飛ぶことができたくらいです。

この本が出版されてからかれこれ1年が経過しています。
その間に、SDKの中身もかわったようです。
本に出てくるはずの項目が、実際のソフトウェアの画面では登場しないですとか、そんなこともしょっちゅうあります。

筆者は、おそらく、読んでたどるだけで、アプリの開発のサイクルを体験できるように気をつかって、本書を執筆したのだと思いますが、
アップデーとがされていないので、読者は注意が必要だと思います。

とはいえ、よくできた本なのではないでしょうか。この本を、友達に推薦されることがなかったら私はSDKについて、もっと遠回りをしていたのでは
ないかと思います。

ソフトウェアが更新されていることによって、おこるアプリの不具合だけでなく、明らかに、記述が抜けているのではないかという
箇所もあります。
時計のアプリを作成するときに、アラームの指定時刻がきたとき、音声ファイルが再生されるように、
AVAUdioPlayer なるクラスを使いますが、これ、フレームワークの追加というステップを踏まないと、
動きません。そのことが、どうも抜けているのではないかと思ったり。

それと、筆者は、読者がアプリを作るときに、
筆者が用意した画像や、音声のファイルをそのまま利用するという学習者と、音声ファイルも、画像ファイルも自作するという学習者の2タイプを
想定して、本を書いているように見受けられます。

そうすると、あらかじめ、プロジェクトのフォルダに、出来上がった素材のファイルが入っている場合と、素材が空っぽなので、
開発段階に応じて、素材をつくって、プロジェクトに登録する場合での開発手順と、「微妙」だとは思いますが、「違い」が登場するのだと
思いますが、
そこのところの区別が、妙に曖昧になっています。
その曖昧さが、年齢計算のアプリのローカライズの不具合に微妙な影響を及ぼしているような気がしてなりません。

はじめに、一つしかないアイコン画像を、「ローカライズ」というステップを通じて、英語用、日本語用にするという段階をかませるのと、
最初から、プロジェクトフォルダに、日本語用アイコン画像と、英語用アイコン画像が、入っている場合とで、すこしは、開発手順が
違ってくると思うのですが、そのところの、区別なども曖昧だったりします。

「繰り返し」になるステップは、どんどん省略されています。

実機へのアプリのインストールの手順

ローカライズの手順

画像ファイルを、プロジェクトに登録するためのステップ

フレームワークの手順

インターフェースビルダーで、ボタンを作成したり、アウトレットとコネクトするためのステップ。

ようするに、「完全な、ステップ」というところまではいっていない。
やはり、読者が、いままでに、テキストで読んだところについては、「既習」ということにして、
筆者が、書く負担を軽減しているということが、実勢のようです。別に悪いことではないのですが、
読んで、プログラムを作成する側は、筆者が、どういう部分で、先のテキストを知っていることを前提に
しているのかということを、注意して読まないといけないという点で、ここのところは、ある意味問題かもしれません。

こういうテキストの性格上、重複はいとわないほうが、いいものに出来上がったのではないかと思うからです。

プログラムをつくって、端末にインストールするところまで「体験」するステップが低いというのはすばらしいことだと
思います。

あとは、開発したアプリを、流通させるための手順を踏むだけです。

それと、もうひとつ。

アクションやアウトレットを、一つの画像ファイルに二つ以上、接続させるということがあります。
このとき、画像ファイルに、マルチプル という設定を与えないと、機能しないのではないかという問題があるのですが。

重複をいとわない、完全なるステップが、完成することを、願ってやみません。

それにしても、面白い体験ができて、よかったです。

「教材」として、選択されたアプリも、ひとつひとつが、応用の幅が広くて、この先の「自力開発」を促す上で、いいのではないでしょうか。

アプリとアプリの機能を組み合わせることで、また新しい発想や、着想を身にまとったアプリを開発することもできそうです。
そう簡単ではないと思いますが。