Book」カテゴリーアーカイブ

サンプル・コードの改良・発展

「iPhone SDKの教科書」には各サンプル・コードの章末に改良・発展を提案していますが、これがどの程度の作業で実現できるかは分かりにくいかもしれません。なので、各項目の難易度を書いておきます。プログラミング初心者はレベル【A】から取り組むと良いと思います。また、カウンターについては改良・発展案を書いていなかったので、これも補っておきますね。

【A】非プログラミング・レベル〜画像やサウンドの差し替え、レイアウト変更など。
【B】簡易プログラミング・レベル〜ソースコードの変更・追加が必要。
【C】高度プログラミング・レベル〜ソースコードの大幅な変更・追加が必要。

カウンター

【A】ボタン画像や背景画像を差し替えて、異なる雰囲気のカウンターを作ろう。
【B】ボタンをタップした時に音を鳴らし、動作が分かるようにしよう。
【B】10個および100個数える度に音を鳴らし、数えている状況が分かるようにしよう。
【B】複数のカウンターを表示し、異なる数を同時に数えられるようにしよう。
【B】カウンターの数値を記憶し、アプリケーションを再起動した場合にも、前回の数値から数を数えられるようにしよう。

スマッシュ

【A】背景画像とUFOの画像を差し替えて、異なる雰囲気のゲームに仕立てよう。それに合わせて効果音も差し替えよう。
【B】UFOを叩き潰した回数を数えてスコアを表示する機能を追加しよう。UFOを逃した場合は減点することも考えられる。
【B】1分間や3分間などゲームの時間制限を設けてみよう。スコア機能と合わせて、制限時間内の得点を競うことができる。
【C】得点を競うなら、ハイスコアも表示したい。ハイスコアを打ち立てたプレーヤの名前もあれば完璧だ。
【C】UFOが1機だけでなく、2機、3機と出現するようにしてみよう。ボーナス点が稼げる特別なUFOや、叩き潰してはいけない味方の宇宙船も考えられる。

バランス

【A】画像や効果音を差し替えて、まるで違う雰囲気で異なる用途に使えないだろうか?
【B】現在のボールの重みはどれくらいだろうか? もっと軽いボールや、もっと重いボールにしてみよう。
【B】ボールと盤面や空気との摩擦抵抗をプログラム・コードに盛り込んでみよう。
【C】目を閉じていてもボールの動きを感じられるようにできないだろうか?
【C】Z軸の加速度を利用して、ボールを3次元的に動かしてみよう。一人で羽根つきができるかもしれない。

クロック

【A】背景画像や針の画像を入れ替えて、オリジナル・デザインの時計を作ろう。
【B】24時間制の時計や鏡像のように逆回転する時計を作ろう。
【B】1秒ごとに秒針が小刻みに動くのではなく、連続的にスムースに動くようにしよう。
【B】アラームが鳴っている時に、盤面が点滅するなど視覚的な効果を加えよう。
【C】アラームを12時直前に設定した場合、アラーム動作に不都合が生じる場合がある。この原因と解決策を考えよう。

エイジ

【B】年齢を時間単位、分単位、秒単位でも表示してみよう。
【C】任意の日における年齢が表示できるようにしよう。
【C】起点となる日付と日数を設定すると、終了日となる日付を表示できるにしよう。
【B】グレゴリオ歴以外の暦のカレンダーを表示してみよう。
【C】時分秒単位の時間計算機を作ってみよう。

パイル

【B】パイルを多言語対応させ、日本語でも表示されるようにしよう。
【B】合成時のブレンド・モードやアルファ値を選択できるようにしよう。
【B】最初に読み込んだ写真に合わせて、合成画像のサイズが設定されるようにしよう。
【B】撮影時や選択時に写真の一部を抜き出せるようにしよう。これはイメージ・ピッカーのプロパティで設定可能だ。
【B】写真の縦横比が4:3でなくても、正しい比率で写真を合成できるようにしよう。

続・iPhone SDKの教科書はどこにある?

ようやくという感じで、5月頭に「iPhone SDKの教科書」が増刷されたそうで、その第2刷本も最近届きました。でも、未だにAmazonでは注文不可のままで、インターネット書店一括検索で調べると、リアル書店のジュンク堂でも品切れを起こしていますね。増刷分が一瞬で売り切れたとは考えにくいので、訳が分かりません。配本や流通がどうなってるのか、ますます不可解です。買いたいと思った人が、買いたい時に買えると良いのですが….前回と状況は変わっていませんね。

real-bookcover

アイコンのローカライズ時の注意点

「iPhone SDKの教科書」のサンプルをApp Storeにサブミット中ですが、アプリケーション・アイコンをローカライズしているAgeのバイナリーをアップロードすると以下のエラーが出ます。

The binary you uploaded was invalid. The bundle did not contain an icon.

よくよく調べてみるとiPhone Application Programming Guide(キホンだよな〜苦笑)に、こんな記述がありました。

Even if you provide localized versions, however, you should always include a default version of these files at the top-level of your application bundle. The default version is used in situations where a specific localization is not available.

アプリケーションのパッケージを開けば分かるように、アイコン・ファイルはローカライズしているから、English.lprojやJapanese.lprojといったフォルダ内にあります。しかし、これじゃダメで、トップ・レベル(パッケージを開いてすぐの階層)にもアイコン・ファイルが必要ってことのようです。

もっとも、トップ・レベルになくても、.lprojフォルダにアイコン・ファイルがあれば、非対応言語の場合でも正しく表示されます。また、App Storeでは言語ごとにアプリケーション・アイコン(512×512ピクセル)を変えて登録できないから、なんだか中途半端な気もしますね。

ともあれ、この点はアップロード時に自動チェックされるので、以下の手順で対処する必要があります。ただし、これはローカライズ時にXcodeが自動的にすべき仕事ですよね。

  • .lprojフォルダとは別にImagesフォルダにもIcon.pngを入れる。
  • (このIcon.pngは英語版でも日本語版でもどちらでも良い。)
  • ImagesフォルダのIcon.pngをプロジェクトのImagesグループに登録する。
  • アプリケーションをビルドし直す。

files-of-age

サンプル・アプリケーションをサブミット中

「iPhone SDKの教科書」で解説しているサンプル・アプリケーションをApp Storeにサブミットしています。アプリケーションの由来として書籍の説明画面を追加しているけど、それ以外は基本的には書籍に掲載したままです。iPhoneアプリケーションなのだから、App Storeに出すところまで検証しないと意味ないですよね。他の書籍の人はどうしているのかな?

ともあれ、全6種類のうち、まずは斥候としてカウンターをサブミットしたのが4月初め。当初は「書籍『iPhone SDKの教科書』#0-Counter」みたいなアプリケーション名であったのが原因でリジェクト。iPhoneという商標をそのまま使うのはダメなんですね。それは知ってたけど、書名としてなら大丈夫かと思ったのが甘かったですね。

そこで「iPST#0-Counter」に改名して再サブミットするも、今度は説明画面に書籍の表紙の写真を載せていたのがダメでした。うむ〜確かに表紙にはiPhoneという言葉も、iPhoneの写真も載ってます。それはそうなんだけど、一度に指摘して欲しいよね。

三度目の正直となるか、二度あることは三度あるとなるか、表紙ではなく本文ページの写真に入れ替えて再々サブミット。しばらく音沙汰がなかったのですが、いつのまにか審査に通過していました。普通は審査通過メールが来るのですけどね。

ともあれ、現在はApp Storeから「iPST#0-Counter」を無償ダウンロードすることができます。

ipst0-counter-in-appstore

斥候くんが審査にパスしたので、残る5種類もサブミットしました。作業は難しくないけど、同じことを5回もするのには飽きちゃいました。なにしろ、説明画面の追加、ディストリビューション用バイナリーの作成、説明文章の作成と英訳、画面キャプチャーの作成、そしてApp Storeへのアップロードと、それなりに時間がかります。それが5回ですからね、楽しいゴールデン・ウィークに何してるんだろう?というキブンになります(笑)。

セカイ頓智の旅

Mac Fanでの新しい連載「セカイ頓智の旅」が始まりました。頓智・のメンバーが世界中を旅しつつ、セカイカメラを巡って社会と人々を思念する過程をお届けしようという企画です。

sekai-tonchi-no-tabi

第1回目は4月末に発売された2009年6月号で、頓智・CEO井口尊仁氏とのパリでの対話が収録されています。いろいろとネタが多くて、泣く泣く香港での話題は見送ったくらいなのですが、今後どうなりますことやら、乞うご期待!

ちなみに、これまでの「aのかたち」は休載です。まだまだ書き足りないので、またいつか再開したいと思っていますが、あれはあれで結構大変でしたね。大きなテーマを取り巻く話題を小分けにして連載する難しさを堪能させていただきました。

Programming for non-programmers

イーノみたいなタイトルだけど、「iPhone SDKの教科書」は、非プログラマのためのプログラミング、あるいは、非CocoaプログラマのためのCocoaプログラミングの本です。私自身が非プログラマにして非Cocoaプログラマだったしね。PCは電源の入れ方も分からない(つまり、Macオンリー)と公言しているので、Cocoaプログラミングの経験が長いように思われがちだけど、そんなことはありません。

snappy-xcode

正確には「Cocoa+Java」って本を出した2001年頃以降はCocoa使用経験ゼロです。何故って、デスクトップ・アプリケーションとしての作品は作らないからね。ここ何年かは「コンピュータは死んだ」と主張していて、少なくとも表現の媒体やフロントエンドとしてのデスクトップは完全に色褪せているわけです(ラップトップも同じこと)。

だから、Cocoaは忘却の彼方だし、Objective-Cは皆目分からんってのが以前の私。だけど、最初のiPhoneアプリ開発は2週間もかからなかったと思う。正式なSDKがない頃で、ドキュメントも皆無に近い状況を考えれば、なかなか優秀ですね(自画自賛)。ただ、これにはワケがあって、Cocoa Touchがエレガントであることと、CとSmalltalkの使用経験があったことに助けられている。OOPSって仕組みさえ理解すれば、後は調べればいい(調べるしかない)ですからね。

そんなラッキーもあって、iPhoneアプリ開発は異様に簡単だと思いがちだけど、プログラミングが初めての人にとっては敷居が高いことには変わりない。一方で、プログラミング経験のある人にとっては、新しいAPIや言語に取り組むことは大きな問題にならない。というのが1年ほどiPhoneスタディ・グループを主催しての実感で、それが「iPhone SDKの教科書」の通奏低音になっている。すなわち、敷居を下げることと慣れること、ね。

一方、非プログラマにとって「iPhone SDKの教科書」の次に必要なのはアルゴリズム考案力なんだけど、これは結構難しい。アルゴリズムは解決すべき問題ありきなので、どうしても個別対応になっちゃう。事例紹介ばかりだと汎用性に欠けるし、一般的なアルゴリズムは抽象的になりがちで面白くない。何か良い書籍等があれば教えてくださいませ。

iPhone SDKの教科書はどこにある?

普段はAmazonでしか書籍を買わないんですけど、そのAmazonでは「iPhone SDKの教科書」が入手できない状態が続いていますね。しかも、本体価格2,800円に対して4,000円以上の中古商品・コレクター商品がゾロゾロとあります。

high-priced

随分以前に「トランスMaxエクスプレス」が絶版状態になって、4〜5倍もの高値がついたり、違法フル・コピーが売られたりしたことがありましたが、新刊書籍が中古レアもの扱いになるのはダメですよね。周辺業者が商魂逞しいと言うより、出版社の配本判断がお馬鹿さん過ぎです。

だけど、インターネット書店一括検索で調べてみると、3サイトは在庫無しで4サイトは在庫有りでした。オフライン書店は調べにくいけど、ジュンク堂書店の池袋本店は7冊在庫有りです。

Amazonにあらずんば本にあらず、とまでは言いませんけど、流通革命とかIT革命とか、いつの時代の話だったんでしょうね。この出版社って「IT・ビジネス出版社」ってうたってるものの、ぜんぜんインフォメーション・テクノロジーっぽくないです。

【追記】1日後に調べるとジュンク堂の在庫が8冊に増えていました。なぜ増えるのかが不思議ですね。それはともかくとしても、オフライン書店から引き上げてオンライン書店に回すべきじゃない? 営業と流通は何をしてるんだろう? 脳梗塞&動脈硬化じゃないよね?

iPhone SDKの教科書で考えたこと

「iPhone SDKの教科書」の売れ行きは好調のようで(?)、すでに何人かの方から感想をいただいたり、ブログなどで紹介していただいたりしています(ありがとうございます!)。手の内を明かすといったことではないのですが、この書籍で目指したことを書いておきますね。箇条書きにすると、こんな感じ。

  • 初心者が独習できる。
  • 思考と作り方を学べる。
  • 楽しくてカッコ良い。
  • コードは極力少なく。
  • 知識を羅列せず関連付ける。
  • できるだけ自己完結させる。

counter-sketch

すでに読まれた方は気が付かれたと思いますが、この書籍は一般的なプログラミング解説書とは雰囲気が違います。旅行に喩えると、ありがちな解説書が名所案内だとすれば、こちらは旅行記に近いのかもね。これまで一行もコードを書いたことがない人が、曲がりなりにでもアプリケーションの制作過程を追体験できるように考えたわけです。つまり、初心者〜中級者が対象であって、すでに制作経験が豊かな人には無用の本です(きっぱり)。

追体験したいと思っていただくためには、制作するアプリケーション自体が魅力的でなくっちゃね。少なくとも無味乾燥なサンプルや、説明のためだけのコードはダメでしょ。さらには、説明が長くなると飽きちゃう。そこで、エッセンスを凝縮した題材を用意して、グラフィックス・デザインとサウンド・デザインの専門家にも協力していただいて、スマッシュ・ヒットなサンプルを都合6個用意した次第。

そのようなサンプルの制作顛末記が本書の後半(カウンター以降)ね。そして、本書の後半を理解するための基礎知識が前半部分です。はじめにサンプルありきの逆算的な基礎知識なので、ぜんぜん網羅的ではありません。だけど、一刻も早くアプリケーションを作りたいのに、前提となる長話で日が暮れてしまうのはイヤですよね。だから、iPhone OSのすべては理解できないけど(そんなの無理無理、私もできていない!)、本書の範囲内では過不足のない説明を心がけています。

つまるところ、鬼の一念で何とかプリケーションを作りたいと願う人に向けて書きました。しかもiPhone用のアプリケーションだから、視覚的にも聴覚的にも操作的にも納得できる水準をクリアしたい。そもそも話としても、iPhoneをどのように使い、何を実現したいかというアイディアが大事だし、そのアイディアを現実化する過程を重視したい。そんなこんなで、ちょっと風変わりな「教科書」になったわけです。まぁ、理想と現実は違っているかもしれませんので、お気付きの点がありましたら、お知らせいただけると幸いです。

iPhone SDKの教科書が到着

「iPhone SDKの教科書」が海を越えて香港に届きました。Snowflakesのポスターの前で記念撮影。モデルは展覧会のキュレータ、Jamsen Law氏。

book-in-hk

EMSのトラッキングを見ると東京から香港まで1日半以内で届いていますね。ただ、受け取り先に指定したアートセンターが土日休みだったので、今日受け取ることができたという次第です。

ともあれ、永原康史さんにお願いした書籍装丁が素晴らしいです。巨大な帯を付けるのは編集部のアイディアだったと思いますが、書店では目立ち、購入して帯を取ればスッキリ、という案配です。もともと表紙は極力シンプルに!が希望だったので、派手好み?の編集部?営業部?との折衷案だったのではないかと邪推します。

たかが技術解説本にデザイン云々とは如何なるものか?という声も聞こえそうですが、書籍は中身の情報だけでなくて物質ですからね。どうでもいいような装丁の本なら、買っていただいた読者の方々に申し訳なく思っちゃいそう。

それから、予告編を出したように1月末に執筆を終えていたんだけど、出版までには随分と時間がかかるようです。グーテンベルク以来の超オールド・メディアである印刷は、現在でも多くのメリットがあると思っているだけに、効率化を推し進めて欲しいところ。

それで言えば、著者の収入なんて微々たるもので、大半がどこに消えているのか釈然としません。iPhoneアプリケーションを開発できる人なら、フツーは書籍を書く気になれないんじゃないのかな。私はフツーじゃないので納得していますけど、アプリ開発&販売するほうが10倍くらい経済性が高いですから。もちろん、単純な経済性だけじゃないけどね。