書評:『本気ではじめるiPhoneアプリ作り Xcode7.x+Swift 2.x対応』

[2016/03/29 画像を追加しました]

基本的に書評はサブブログの方に書くことにしてますが、iOS関係なのでこっちへ。

今回のターゲットは、『本気ではじめるiPhoneアプリ作り

f:id:atuyosi:20160328230851j:plain:w480

前半がXcodeの基本と必要最低限のSwiftの文法、後半がサンプルアプリの作成。最後のChapterはアプリのiTunes app Storeへのアップロードの解説。 ぶっちゃけるとこの本を読んだのはアプリの申請後。

特色としては「現場のエンジニア」がステップバイステップ式の入門書を書いたってところでしょうか。個人的な印象としては他のプログラミング言語の経験があるプログラマがとりあえずiOSアプリを作ってみたい、という場合に最適な本だと思います。

サブタイトルの「黒帯エンジニア云々」からしてちょっと不安になるがいたってマトモ。全ページカラー印刷なので紙面が綺麗で読みやすい。ちょっとしたTipsの内容もなかなかいい。 とっつきやすさはピカイチな気がするが、難点は索引がイマイチなところか。

サポートサイト:SBクリエイティブ:本気ではじめるiPhoneアプリ作り

概要

Swiftの文法の解説、主なUIKitのコンポーネントの説明。主に紹介されているサンプルは合計4本。

  • 定価と割引率を入力すると割引後の金額が計算されるというアプリ(Chapter 4)
  • Todoアプリ(Chapter 5)
  • クイズアプリ(Chapter 6)
  • YahooAPIによる商品検索アプリ(Chapter 7)

他と比較して特筆すべき点はAutoLayoutの解説。また、Chapter 9にSketchによる簡単なアイコン作成の方法が載ってたりする。

長所

  • AutoLayoutをGUIで設定する場合についての解説がかなり詳しい(Chapter4の6)
  • 紙質が良さげ。全ページカラーで目に優しい(?)
  • (意図的になのかどうかはともかく)極力プログラミングの専門用語を使わずに記述されてる
  • Xcode自体とiOSシミュレーターについても結構ページを割いてる
  • さりげなくチューニングのヒントが書いてある

Xcodeの入力パラメータが入力欄の拡大画像または表になっていてわかりやすい*1

特に最後発だけあってiTunes Connectなどアプリ提出関係の解説は一番いいと思う。

短所(or 書いてないこと)

  • ジェスチャ操作系はスルーされている
  • カメラ関係がスルーされてる
  • Kindle版は固定レイアウトっぽい*2
  • 四則演算以外の演算子についての解説はされてない*3
  • breakとかcontinueとか大域脱出系の構文にも言及なし*4
  • クロージャーについての説明なし*5
  • YahooのWebAPIを使うサンプルがあるので、YahooIDが必要*6
  • 索引がちょっとしょぼい

サンプルで使ってない機能については潔くスルーしてるとも言える。本で紹介しているサンプルに必要、またアプリ開発を続けるうえで必要になる可能性の高そうな内容に厳選されてる印象。whereとかguardとか言及してるけどサンプルでは使ってないのもある。

気になったところ

説明の順序の問題

preparedForSegueメソッドによる画面遷移前の処理を箇所(p.370とか)。 記載されている手順通りに進めていくと、画面遷移先のViewControllerが作成されていないので一時的にエラー扱いになる箇所がある。 無視して次のステップへ進んでしまって問題ないが、未経験者は若干戸惑うだろうと思う。ここは注意書きがあったほうがいいと思う。

UIKitのコンポーネントのオプションとか

標準で用意されてるUI部品のオプションについての説明がないのがちょっと引っかか る。 UITableCellのスタイルとか、UIAlertControllerとかちょっと唐突に説明なしに使われてる。

他にも代入文の右辺側にクラスのプロパティを置く場合、クラス名を省略できるケースについて説明がないとかちょっと気になるところ。

変数の型を書くときのコロンの位置

別に文法上は問題ないけど。

はてな教科書の記載例:

var age: Int = 56


今回紹介している本:

var value :String = "Hello, playground"

変数の右に半角スペースを入れて、コロンはIntとか変数の型の側に書くスタイル。ちょっと意外。
今回の本の場合、StoryBoardからドラッグ&ドロップした際に自動入力された箇所と、そうでない箇所でコロンの位置が違うので違和感ある。

他の例(github style guide):

let timeToCoffee: NSTimeInterval = 2

参考:swift-style-guide/README_JP.md at master · jarinosuke/swift-style-guide · GitHub
日本語:GitHub - github/swift-style-guide: Style guide & coding conventions for Swift projects

文法上はどっちでもいいのでどうでもいい問題ではあるけど会社によってコーディングがある場合は素直にそっちでって話。

StoryBoard における要素の複数選択

[2016/03/29 23:36 追記 ]

「要素を複数選択した状態でPinボタンをクリックしてAutoLayoutの制約を設定して下さい」とさらっと書いてあったりする。 StoryBoardで複数選択する場合はShiftキーを押しながら2つ目の要素をクリックするか、画像編集ソフトで範囲選択するのと同じ要領で対象要素を囲むようにカーソルをドラッグしてやればいい。

ちょっとハマったところ

[2016/03/29 画像を追加]

Chapter 4とChapter 7しか写経してないが、Chapter 7はハマるところがある。一箇所は明白な誤植(p.352、後述)。 もう一方は順序の違いによると思われる。

UISerchBar のdelegateの接続の問題でちょっとてこずった。

現象としてはUISearchBarのテキスト入力ボックスでSearch ボタンを押してもキーボードが閉じない。そしてサッパリ検索されないという。サポートサイトからコードをダウンロードして差分とって解決した。

対処法としては下記画像のようにに、Outletを接続する。

f:id:atuyosi:20160328215729j:plain

  1. Main.Storyboard をクリック
  2. ドキュメントアウトライン(エディターエリアの左のやつ)で"Search Bar"をクリック
  3. Utility Area のConnections Inspecter(一番右)をクリック
  4. Outletのところのdelegateの右端にある+ボタンをクリックしたままUISearchBarの上部の3つの丸いアイコンの一番左のやつまでドラッグする。

f:id:atuyosi:20160329134423j:plain
最初("Search Bar"をクリック)

f:id:atuyosi:20160328215034j:plain
修正前

f:id:atuyosi:20160328215556j:plain
ドラッグ先

f:id:atuyosi:20160328215050p:plain
修正後(こうなってればOK)

本来UISearchBarをStoryBoard上にドラッグする時にUITableViewControllerのカスタムクラスに値がセットされてれば勝手に設定されるんじゃないかと思う。

ついでに書いておくと、本文に記載がないが、ダウンロードしたサンプルプロジェクトだと、Attribute Inspecterの下記の項目も設定されてたりする。 挙動に影響はしないように思われる。

f:id:atuyosi:20160328220757j:plain

誤植とか

公式の方にはまだ1件だけのようですが…。いつの間にか正誤情報が追加されてます。p.352は出版社のページにも記載がありますんでそちらも参照。

SBクリエイティブ:【正誤情報】『本気ではじめるiPhoneアプリ作り Xcode7.x+Swift 2.x対応』

図の中の説明のミス(p.181)

本文の説明は問題ないが、図の中の説明で、"controlキー”とすべきところが"optionキー"と記載されてる(p.181の上部にある図)。まあ、御愛嬌かな。

f:id:atuyosi:20160328234228j:plain

説明がおかしい(p.352)

[2016/03/30 23:36 追記] 公式にも掲載されてます*7

UITableViewのCellの"Style"を"Basic"にしろという指示があるが、これは不要なはず。 StoryBoard上のカスタムセルの表示が設定前に戻ってしまう。 というか、この次のステップのIBOutletの設定に支障がでる。

カスタムセルを使いたいわけだから、"Table View Cell "は"Identifer"をitemCellに設定するだけOK。

f:id:atuyosi:20160328205707p:plain

ダウンロードしたサンプルコードをXcodeで開いてみたが、そっちの方はちゃんと"custom"になってる(画像は自前で写経したやつ)。スクリーンショットの方が正しいと勘違いして本文を間違って修正したとかではないかと思う。

f:id:atuyosi:20160328233617j:plain

あとは上手くいかない場合はATS(App Transport Security)しろと書いてあるが、普通に設定しないとダメ。ここもXcodeに慣れてないとつまずきそうなポイントだと思うのだけど。

f:id:atuyosi:20160328232654p:plain

この本の書評記事をいくつか見た覚えがあるけど写経せずに書評書いてますね?そうですね?

余談のようなもの

f:id:atuyosi:20160328230224j:plain

そこに振り仮名(ふりがな)を振る必要ないのでは?

どこぞの偉い人が読み間違えて恥をかいたとかいう事件でもあったのだろうか?

この本に限らず著者の名前(漢字)が読めない場合が多いんでルビ振ってくれとかいう話?

それ以前にこれ、書店員さんが追加発注とかの管理に使うんじゃないんだっけ?一体誰得…?

書店で留学生がアルバイトしているケースは見たことがあるけど。

どうせなら『本気(マジ)ではじめる』とかそっち路線で攻めたらどうか。

まとめ

上記のようにちょっと痛い誤植があったりするけど、そこさえ回避すれば全然いい本。ただし扱っているトピックが少ないのでリファレンスにはなりえない。 そういう意味では、この本一冊では厳しい。他の言語の経験はあるけどイマイチ勝手がわからない人向け。コツさえつかめばあとは自分でググって調べられるよ、みたいな人向け。

カメラアプリとかGPSとか諸々載ってないの?って場合には『詳細!Swift2 iPhoneアプリ開発 入門ノート』方がいいと思う。

あと文法についてもかなり省略されているのでApple公式ドキュメントか、『詳解 Swift 改訂版』を買うのがいいと思う。

詳解 Swift 改訂版

詳解 Swift 改訂版

ひょっとしたら「詳解Swift」など他の書籍を購入する可能性を考慮して記載内容を削ったのだろうか*8

詳解Swiftの方はKindle版がリフロー形式らしい。iOSアプリ開発の本でKindle版が固定レイアウトでないのは珍しいので貴重。


他の本についても別途比較記事を書く、かも。

*1:逆いうと他の本の場合はスクリーンショットはあるが画像が小さいのでちょっと見づらいというか、入力値が読み取りづらかったりする

*2:20%ポイント還元とかだったりするので非常に残念

*3:プログラミング言語の本であれば大抵あるはずの、「演算子の一覧」みたいなページがない

*4: ただし"continue"についてはChapter 7で説明ナシで使用している。いや別にわかるからいいけど

*5:別にいいけど

*6:住所や電話番号の入力を要求される画面があるが、画面の下の方の「後で登録する」をクリックすれば回避可能

*7:日付が3/23のまま追記されてる

*8:iOSエンジニアなら当然買うでしょ!!とか?