Top▲
マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム

詳解 iOS SDK    Matt Neuburg著    武舎広幸+阿部和也+河村政雄+上西昌弘+福地太郎訳

原著者まえがき

『入門iOS SDK』のまえがきにも書きましたが、筆者が最初の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冊目『入門iOS SDK』についても少しご紹介しておきましょう。こちらの本はあちこちほっつき歩いて好き勝手をしてきた放蕩息子のようなものです。もともと筆者が書きたかった本ではあるのですが、前の3つの版では、分厚く長大な本の中に組み込まれた形になっていたからです。しかしそれがふるさとに帰ってきました。本来あるべき姿であった、独立した1冊の本になったのです。『入門iOS SDK』は3部構成になっていて、iOSプログラミングの基礎が徹底的に学べます。内容は次のとおりです。

さて、『入門iOS SDK』で紹介している上にあげたような事柄を踏まえ、この『詳解iOS SDK』ではiOSアプリ構築のために必要な実践的知識を紹介しています。Objectgive-C自体やXcodeを使ったコードやnibの編集法、プロパティ、アウトレットとアクションといった事柄についてはすでに一定の知識があることを前提にしています。

本書はかなり厚い本ですが、それをもってしてもiOSのもつ機能のすべてを紹介し切れているわけではありません。たとえば、OpenGL、Sprite Kit、Accelerate、Game Kit、iAd、Newsstand、印刷、セキュリティ、アクセシビリティ、電話、Pass Kitなどといったフレームワーク等については触れることさえできませんでした。しかし読者の皆さんが必要に応じてご自分で調べられるような道筋は付けておいたつもりです。本書を読んだあとで次のようなAppleの文献を読めば、必要な情報が入手できることでしょう。

バージョン

本書はiOS 7とXcode 5を念頭に置いて執筆しました。ただし、上位互換性について説明している箇所があるほか、以前のバージョンに注目すべき変更が加えられている場合にはその都度注意を喚起しています。たとえば、ステータスバーの動きや、アイコンの大きさ、起動画面が変更されたためにインタフェースや用語が増え、混乱を招く恐れが生じている事態についても触れています。 #@# は触れざるを得ませんでした。

全体に、それ以前のバージョンはほとんど考慮に入れていません。前の各バージョンについてはそれぞれの解説書を見ていただけばよいわけですから、以前のバージョンに関する詳細な情報をこの本に組み込む意図はありませんでした。ただ、Xcode 5から、プロジェクトテンプレートを利用してアプリを新規作成する際にARC(Automatic Reference Counting)を無効にするか有効化するかのオプションが廃止されました。ARCは人間に代わってコンパイラがメモリ管理をしてくれる機能で、このおかげでiOSプログラミングが非常に楽になりました。ARCがデフォルトで最初から有効になるため、本書でもARCを使うことを前提にしています。筆者は今でもARCが有効な場合と無効な場合を区別して考えることが多いのですが、ARCが無効なときにコンパイラがどう作用するかについてはもう説明してありません。

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

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