マーリンアームズ サポート   翻訳   講座   アプリ   コラム    
辞書サイト   JavaScript講座

入門 iOS SDK    Matt Neuburg著    武舎広幸+阿部和也+河村政雄訳

原著者まえがき

私が最初のiOSプログラミングの本を出版したのはiOS 4のときでした。それからiOSのアップデートのたびに新版を出してきましたが、どんどんページ数が増えていきました。そして今回の版を出すときには、「気はやさしくて力持ち」の巨人が本をビリッとふたつに引き裂いてしまったようです。結果、今回は次のように2冊構成となりました。

その巨人はなかなか気が利いた男で、もう潮時であることを察してくれたのです。この前の版はなんと1,150ページにも及ぶ分厚くて扱いにくい本でした。実を言うと私はその巨人に、第1版の出版前から——いや、執筆そのものを構想する前から——「ビリッとふたつに引き裂いて」とお願いし続けていたのです。そもそも2010年の初めに私がO'Reilly Mediaに提案したのは“Fundamentals of Cocoa Programming”というタイトルの本で、その内容として『入門 iOS SDK』とほぼ同じものを考えていました。結局私のこの提案は、OS X用のフレームワークである(狭い意味での)Cocoaを中心にしたものではなく、iPhone/iPad用のフレームワークであるCocoa Touchを使ったプログラミングに関する解説を大幅追加するという条件つきで受け入れてもらえました。私はそのものすごく分厚くなりそうな本の執筆を開始したのですが、いつまでたっても終わりは見えず、2010年の秋にどうかお願いですから二分冊にしてくださいと声を大にして訴えました。しかし、O'Reilly Mediaは首を縦に振ってくれませんでした。マザーグースの登場人物でたとえれば、王様の馬と家来を総動員しても、ハンプティ・ダンプティをふたつに引き裂くことはできなくなってしまっていたわけです。

ですから、2冊にするという今回の新たな構成は、たしかに私がかねてから希望していた形に近いことは近いのですが、厳密には同じではありません。本当は「別々に2冊」ではなく二分冊、つまり同じタイトルで第1巻と第2巻、という構成にしたかったのです。ページも章も「通し」にして、たとえば第1巻が13章(400ページ)で終わったら、第2巻は14章(401ページ)から始まるといった具合にしたかったのです。そんな古風で旧式な、でも実にイイ感じの分冊方式を、残念ながらO'Reilly Mediaは頑として受け入れてくれませんでした。

そんなわけで2冊目の『詳解 iOS SDK』(仮題)は1章(1ページ)から始まってはいますが、内容的にはこの本『入門 iOS SDK』の続きにほかなりません。相互に補い合い、2冊そろって初めて完結する構成になっているのです。ですから、iOSのアプリを作るのに必要な基礎知識を十分身につけ、自分が何を目指してどういうことをやっているのか、正確にしっかり意識しつつ作業を進めたいという読者には、2冊とも読んでいただきたいと思います。しかし同時に、本の厚みの点でも内容の点でも2冊にしてもらってよかった、と感じる読者も多いのではないかと思います。

たとえばCやObjective-C、Xcode、Cocoaの言語やアーキテクチャについての基礎知識はもう十分あるという人や、そういう基礎は必要に応じて調べたり覚えたりしながら作業を進めればよいと考えている人も、もうこれまでのように「この本の最初の13章は、iOSプログラミングの作成には直接関係しないごくごく基礎の知識しか扱っていない」などと文句を言わなくても済むようになりました。その「最初の13章」は1冊目の『入門 iOS SDK』にまとめてしまいましたし、2冊目はトロイア戦争の10年目のある日から唐突に物語が始まるホメロスの長編叙事詩『イーリアス』と同じように途中からいきなり話が始まって、(iOSのアプリ作成に必要な言語やXcodeについての知識はすでに修得済みとの前提で)読者はいきなりビューやビューコントローラの話に飛び込む形になりますから。たとえ途中でこういうベテラン読者の気が変わって、いや、基礎知識をもっと完璧に身につけたほうがよさそうだな、と思ったとしても、1冊目の『入門 iOS SDK』がありますから、それを入手して学習していただけばよいわけです。

さて、このような2冊構成の本の1冊目であるこの本について言えば、これはもうあちこちほっつき歩いて好き勝手をしてきた放蕩息子のようなものです。もともと私が書きたかった本ではあるのですが、前の3つの版では、分厚く長大な本の中に組み込まれた形になっていたからです。しかしそれがふるさとに帰ってきました。本来あるべき姿であった、独立した1冊の本になったのです。この本は3部構成になっていて、iOSプログラミングの基礎が徹底的に学べます。内容は次のとおりです。

というわけで、この本を読めばiOSプログラミングに必要な基本の知識とテクニックが身につきます。この本ではiOSの面白いアプリのプログラミングの方法を紹介するといったことはしていません(が、解説の理解を助けるための例題を多数使ってはおり、例題もネットからダウンロードできます 。私自身が作った本物のアプリや、プログラミングの実際の環境や状況を例にあげてわかりやすく説明したつもりです。この本を読破し、その内容をマスターすれば、2冊目の『詳解 iOS SDK』を読む態勢が整うというわけです。

バージョン

この本はiOS 7とXcode 5以降を念頭に置いて執筆しました。全体に、それ以前のバージョンはほとんど考慮に入れていません。前の各バージョンについてはそれぞれの解説書を見ていただけばよいわけですから、以前のバージョンに関する詳細な情報をこの本に組み込む意図はありませんでした。ただ、上位互換性について多少説明している箇所があるほか、以前のバージョンに注目すべき変更が加えられている場合にはその都度注意を喚起しています。たとえば、ステータスバーの動きや、アイコンの大きさ、起動画面が変更されたためにインタフェースや用語が増え、混乱を招く恐れが生じている事態については触れざるを得ませんでした。

Xcode 5では、プロジェクトテンプレートを利用してアプリを新規作成する際にARC(Automatic Reference Counting)を無効にするか有効化するかのオプションが廃止されました。ARCは人間に代わってコンパイラがメモリ管理をしてくれる機能で、このおかげでiOSプログラミングが非常に楽になりました。Xcode 5ではそのARCがデフォルトで最初から有効になるため、この本でもARCを使うことを前提にしています。私は今でもARCが有効な場合と無効な場合を区別して考えることが多いのですが、ARCが無効なときにコンパイラがどう作用するかについてはもう説明してありません(12章は例外で、ARCを使わないときにしなければならないことを紹介しました)。

また、Xcodeのテンプレートでストーリーボードを使うか使わないかを指定するオプションもなくなりました。Empty Applicationのテンプレートを使う場合を除くすべてのプロジェクトでメインのストーリーボードが表示され、代わりに.xibファイルをメインとして使うオプションは廃止されました。したがって私も解説手法を変え、ストーリーボードが最優先で、ふつうはそれを使うことを前提にして解説しました。また、.xibファイルに保存されているnibファイルだけを使ってプロジェクトを構成する手法も紹介してあります。ただしこの方法は過去のバージョンの場合より手間がかかるようになりました。テンプレート作成のダイアログのチェックボックスのチェックをはずすだけでは済まなくなったからです。

ほかにもiOS 7とXcodeの画期的な新機能をいろいろ紹介してあります(画期的な新機能だということを取り立てて指摘したりしていない場合が多いですが)。AppleがこのバージョンでiOSプログラミングをこれまで以上に容易で快適なものにしようとしたことは明らかで、その構想は全体に成功したと言えます。たとえばモジュールと自動リンク、アセットカタログ、テストナビゲータといった新機軸のおかげで、以前よりはるかに快適な開発環境が実現されました。当然私も、こうした機能をユーザーが使うものと見なして解説しました。

『Programming iOS 4』の「まえがき」から

iPhoneが無料もしくは非常に安価なアプリのおかげもあって人気を博し、その後iPadも大人気となったことから、多くのプログラマーがiPhoneやiPadのプログラミングに興味を抱いて新規参入し、その状況は今後も続くものと思われます(もっとも、こうしたプログラマーはOS Xについては同様の見方をしてはいないと思われます)。この動向は、Appleが毎年開催している開発者向けイベントWWDC(ワールドワイド・デベロッパーズ・カンファレンス)にも反映され、講座の力点がOS XからiOSへと移りつつあります。

このようにiOSプログラミング熱が拡大するのは喜ばしいことではありますが、その一方で、いわば歩く練習もしないうちから走ろうとする傾向を助長してもきました。面白そうなアプリを開発中と思われるプログラマーがよくオンラインで質問をしていますが、その質問内容を読んでみると、そのプログラマーが嬉々として作業を進めているiOSの世界の基本ルールに無知であることが明白になるのです。iOSは人のもつ想像力同様、無限とも思えるすばらしい能力をプログラマーに与えてくれますが、そうしたiOSにも基本ルールがあるのです。

このような実情を目の当たりにして、私はこの本を書きたいと思うようになりました。iOSの基本ルールを学ぶための本です。私はOS XのベースになっているCocoaの大ファンでしたので、以前からCocoaに関する本を書きたいと思っていたのですが、それを実行しなかった一番の理由はiOSとその人気でした。こうして、結局はCocoaそのものに関する本ではなく、iOSの本を執筆することになったわけです。この本では、健全なiOSプログラマーが依って立つべき基本——Objective-Cの基本(まずはC言語から始めます)、オブジェクト指向プログラミングの特質、各種ツールの利用法、Cocoaオブジェクトの生成および参照の方法、オブジェクト間の通信、メモリ管理などなど——を教育的かつ有益でありながら徹底的かつ論理的な方法で解説しようと努めました。以前に執筆した本と同様、この本についても、まずは全体を通読していただき、その後も便利な資料として常に手元に置いて参照していただけることを期待しています。

Appleが提供している参考資料やサンプルプロジェクトの存在価値を低めることは、著者の意図するところではありません。Appleの参考資料やサンプルプロジェクトは有益で、その価値は時が経つにつれて増しています。私も大いに活用しました。しかし事実を合理的に整然と紹介しているかというと、そうとも言い切れません。オンラインの資料は、利用者の知識や経験を一定レベルに想定して作成せざるを得ませんし、利用者が資料をしかるべき順序で活用するかというと、そうとも限りません。また、オンラインの資料は教材よりは参考資料として使うのに適しています。プログラミングの例題は、どれほどしっかりしたコメントがついていても、読んで理解するのは難しいものです。例示はしますが教えてはくれないのです。

それに比べて、本は章分けされていますし、ページも振られています。ですから私は「ふつうはObjective-Cを学習する前にCを学習するはずだ」と考え、1章でCを、2章以降でObjective-Cを解説しました。また、事実を羅列するだけでなく、自分の経験もある程度生かして読者の役に立つよう努めました。この本のいたるところに「初心者にありがちなミス」が紹介してありますが、その大部分は私自身が目撃したり犯したりしたミスです。私自身や周囲の仲間が学ぶ過程で陥った落とし穴を事前にお知らせして注意を喚起しておきたかったのです。また、例題の多くは大規模なアプリの一部分だけです。プログラミングの学習に役立つのは、大規模なプログラムの全体ではなく、そのプログラムを作った際の思考過程です。この本で何よりも学んでいただきたいのはこうした思考過程なのです。