その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

Xcodeの「全機能」を網羅した全752ページの超大作『Xcode 5 徹底解説』書評

先日 yidev 恵比寿勉強会 に行った際、隣の席にいらっしゃった @es_kumagai さんより、すごいプレゼントをいただきました。



この本を手に取ってまず驚くのが、その 752ページ(!!!!) という超特大ボリュームです。世の中に「徹底解説」を謳う解説本は数あれど、 本当に「全機能」を網羅している本 は初めてみたかもしれません。


(iPhone5sとの比較。分厚さが伝わりますでしょうか)

対象読者:入門者から上級者まで!

目次を見てみると、「Xcode とは」「Xcode をインストールする」から始まるので、Xcodeを未ダウンロードな入門者 から読めますし、「xcodebuild コマンドを使ってビルドする」「ユニットテストを実現する XCTest」「Xcode サーバーと Bot でテストを自動化する」といった 中級者向け の内容もがっつり解説されています。


また、Xcode を使いこなしている上級者といえど、なかなかこの 752 ページの内容を全て把握してる人はいないんじゃないかなと。そういう意味では、それこそ入門者から上級者まで、iOSアプリ開発に携わる人全員に何かしらのお役立ち情報があるのでは、と思います。


Xcode5徹底解説 for iOS/OSX
熊谷 友宏
秀和システム
売り上げランキング: 31,269


全ページを通して読んでみた感想としては、全項目の冒頭に「◯◯とは」「この機能はどんなときに役立つのか」という説明があるので、 目次だけではなく、各項の冒頭だけでも一通り目を通す という読み方をするといいんじゃないかなと思いました。

勉強になった項目

以下には、自分が全項目に目を通してみて勉強になった項目を書いていきます。


※重要な機能でも、自分が知ってたものについては書いてないので、書籍の魅力を要約するものではありません。

7.2.3 スコープ内の変数名をまとめて編集する

コード内の変数名にカーソルを合わせて、▼ マークをクリックして出てくるメニューから [Edit All in Scope] を選択すると、同じスコープ内のその変数が全て選択された状態になり、同時編集できる、というもの。


Refactor メニューでも同様のことができるけど、知りませんでした。

7.2.8 カーソル位置のスコープを自動でハイライトする

これは地味ながらも個人的に「おお!」と思った機能。


[Editor] > [Code Folding] > [Focus Follows Selection] を選択すると、カーソルがあるスコープだけがハイライトされる というもの。


規模の大きいコードを書いていると、意識があっちこっちにいってしまいがちなので、これは助かるかも。

8.6.4 レイアウトをプレビュー画面で確認する

アシスタントエディタのプレビュー機能で、iOS6 / iOS7, 3.5 inch / 4.0 inch でのストーリーボードの見え方をビルドなしで確認することができます。

8.7.4 アウトレットコレクション

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

みたいにやると、複数のコントロールをアウトレットとして連結できる。

8.8.3 コントロールの表示テキストを言語環境に応じて変化させる

Object IDを使ったローカライズ方法。

9.4.5 Build Phases 設定

Run Script フェイズの

  • Run script only when Installing オプションにチェックを入れると Build Settings の Deployment Postprocessing がONのときだけスクリプトが実行される
  • Input Files / Output Files オプションがそれぞれどの環境変数に渡されるか

9.4.6 Build Rules 設定

ここいじったことないなぁ。。

10.4 スキームの設定項目

"Parallelized Build", "Find Implicit Dependencies" といった Build Option の効果や、Arguments タブ、Options タブの各設定項目について説明があります。


(↑このへんの話です)

10.5 スキームにカスタム実行スクリプトを登録する

各アクションを実行する前後で、任意のスクリプトを実行できる(Pre-actions / Post-actions)とのこと。たとえば アクションの前後にメールを送信 したり。(奥が深い。。)

13.3.4 OpenGL ES フレームキャプチャによる一時停止

アプリの実行を一時停止して、OpenGL ES の描画状況を確認することができる機能。

13.4 ブレークポイントの設置と扱い方

すごく昔の記事 にちょろっと書いたことがありますが、Xcode のブレークポイントって奥が深いんですよね。。本項では、[Edit Breakpoint] から設定できる項目ひとつひとつについて解説されています。

13.4.6 ブレークポイントに停止条件を設定する

「3回このブレークポイントを通過したら停止させる」みたいなことができます。

13.4.7 ブレークポイントでログメッセージを出力する

ブレークポイント通過時に、コンソールにログメッセージを出力できます。このメソッドを通ったかどうかみたいな確認のときには、ソースにNSLogとかを直接書くよりも、こっちの方法を使った方がソースを汚さずに済むので良さそうです。

13.4.8 ブレークポイントで変数に値を設定する

ソースをいじることなく、一時的に変数の値を差し替えられます。UIImage とかでも差し替え可能。

13.4.9 特殊なブレークポイント

ソースコード内に置く通常のブレークポイントだけではなく、

  • 例外が発生したときに処理を行うブレークポイント
  • 指定したシンボルが実行されるタイミングで処理を行うブレークポイント
  • OpenGL ESエラーブレークポイント
  • テスト失敗時ブレークポイント

といったものも作成できます。


シンボルブレークポイントはソースコードが公開されていない外部ライブラリ内のメソッド実行時に止めたいときとかにも使えるので、便利そうです。

13.4.10 ブレークポイントを他の制作者と共有する

[Share Breakpoint] でワークスペース内の "Shared Data" に保存されるようになるとのこと。

13.5 ブレークポイントで停止した状況を把握する

以前書いた Quick Look や [Print Description] についても触れられています。


13.5.2 の、スタックトレースの表示の精度を調整できるスライダー、知らなかった。。

13.6 ステップ実行で原因箇所を特定する

Step Over / Step Into / Step Out の違いの解説から、それぞれを使いこなしてどのようにデバッグしていくか、という具体的な方法が解説されています。


13.6.4 の、デバッグエリアの変数ビューの右クリックメニューから [Edit Value] で変数の値を書き換えられるのは知りませんでした。ステップ実行していて見つけたクサイ部分を詳しく検証する際に使えそうです。


13.6.8 の後半にある、「ステップ実行時に、自分のスレッドだけ動かして、他スレッドは中断させる」方法も初めて知りました。なんと control + shift で GUI からもこの操作を行えるとのこと。。

Chapter15 ユニットテストを作成してソースコードを検証する

XCTestフレームワークを用いてユニットテストを実行する方法が解説されています。最近は iOS アプリのテストに特化した技術書 も出ていますが、後述の Chapter 16 と合わせると約50ページと、テスト部分だけ見ても相当なボリュームがあります。


標準フレームワーク/環境を使用した基本的なテスト手法だけでも知りたい、という場合にも本書は買いだと思います。

Chapter16 XcodeサーバーとBotでテストを自動化する

OS X Server をインストールして Xcodeサーバーを稼働させる方法から、それと連携して

  • テスト
  • ソースの静的解析 (static analyzerの実行)
  • ビルド (archive)

を自動実行する Bot を作成して運用する方法 がステップバイステップで詳しく書かれています。

まとめ

というわけで、Xcode 5 を本当に徹底解説した書籍『Xcode 5 徹底解説』オススメです!


Xcode5徹底解説 for iOS/OSX
熊谷 友宏
秀和システム
売り上げランキング: 31,269

関連記事

iOS7の新機能を軸とした解説本。こちらも書評を詳しく書いたのでぜひご覧ください。

拙著の紹介。こちらは中級者向けのレシピが100個載っています。ライブラリを使うレシピでもそのソースコードにも触れており、ある程度アプリ開発に慣れてきた方々には何かと参考になる項目があると思うので、ぜひ目次だけでも目を通していただけると嬉しいです。