今回は、タイトルの通り、西方夏子さんが書かれた「Swift+Core DataによるiOSアプリプログラミング」を拝読させていただいた感想を書かせていただこうと思います。

はじめに


今回この記事を書くに至った経緯としましては、マイナビブックスさんにて、読者モニター募集のキャンペーンをやっていまして、 応募させて頂いた所、当選したとご連絡を頂き、本の出版日の前にモニターとしてPDFを頂きました。 モニターの条件として、SNS等で感想をシェアするということでしたので、このblogに感想を書かせていただき、自分のTwitter等で拡散させていただこうと思います。
以下、拙いですが、私が読んだ書評となります。

書評



書かれているのはCoreDataのことだけじゃない


まず、この本では、単にCoreDataのことについてズラズラ書いているものではなく、 UIKitの基礎から、実際にCoreDataを使う例に至るまで、 はじめてCoreDataを扱う人、ある程度入門書等を読んだ駆け出しの開発者でも理解しやすい ように書かれています。
目次を抜粋しますと、

  • 概論
  • UI開発の基礎
    • UIKitの機能と役割
      • UIKitとは
      • ビュー
      • ビューコントローラー
      • イベントハンドリング
  • (省略)

といった感じで、初めからガシガシCoreDataの仕組みを書くぞ!って感じというよりは、初めての人でも、本を読み進んで、サンプルプロジェクトを見ながら書き進める時の前提知識が身につくようになっています。
また、後半では、Xcode7から登場したPlaygroundに関しても触れられており、CoreDataをPlayground上で動作させることに関しても書かれています。
更に、XCTestにも触れられているので、CoreDataを使った際のテストに関しても書き方が理解できるようになっています。

読み手のこともしっかり考えているんだなと思いました。

CoreDataの事をどれだけ網羅しているか


CoreDataに関しては、はじめの概論から始まり、

  • 基本的な使い方(永続ストアのセットアップ等)
  • データモデルの定義方法
  • データの追加/削除やフェッチ
  • 自動マイグレーションとマッピング
  • エラーの検証とハンドリング
  • FetchedResultsControllerの使い方
  • 効率化としてライフライクルやフェッチの応用
  • 並列処理
  • iCloudでの利用

といった形で、CoreDataの基礎から応用まで、 網羅 している感じです。
特に、実際のアプリ上では非同期でフェッチしてユーザーにストレスを与えずにデータを引き出す事が重要で、 それに伴うスレッドセーフなフェッチの仕方にも触れられているので、実践的なところまでカバーしているなと思いました。
サンプルアプリを交えて章が進んでいくので、実際に作りながら、CoreDataをどう使っていくのかも学べます。
また、あまり情報のない、CoreData側での保存時のバリデーションの方法や、iCloudでの利用も記載されていて、 自分にとっても新しい発見がありました。
いままでCoreDataで定義したEntityに入る値の検証はそれ専用のValidatorクラスを作ったりして行っていましたが、それをEnitityに持たせられるのは便利だなと思いました…!

また、Swiftがベースですが、SwiftとObjective-Cで少し異なるような場面では丁寧に、Objective-Cでの場合も掲載されています。

開発環境のサポートに関して


本にも記載されていますが、

  • Swift 2.1
  • Xcode 7.2
  • iOS 9.2

に対応しています。前から原稿を書いていたとしたら途中でiOS、Xcodeのアップデートもあった中なので、ほとんど支障はでなかったかもしれないですが、
本を出すときに最新バージョンに対応しているようにして書かれていたのかなと思います。

本を読む難しさは?


入門本を読めて、ある程度アプリが作れる人なら問題なく読めると思います。
基礎から応用までとにかく丁寧に、コードも交えて解説されているので、読むのが難しい、ということもないかなと思います。
また、目次をみて必要な箇所だけ読む、でも十分理解できると思います。
サンプルアプリを作る場合はしっかり最初から読むほうが良いですが。

さいごに


西方夏子さんが以前書かれた「UIKit徹底解説」に続き、今回の本も拝読することができ、私としてはとても満足しています。
今まで英語で書かれた情報などを頼りに、CoreDataManagerなるものを作って、業務で使用してきましたが、なんとなーくの知識で組んでいたのもあって、この本を読ませて頂いて、「…うん、改修しよう」ってなりました。笑
それくらい、自分がなんとなくの理解でCoreDataを使っていたんだなと気付かされました。
昔に、「iOS CoreData 徹底入門」という本が出ていましたが、それも改訂版が出ておらず、最新のiOSやSwiftでCoreDataについて書かれている本はほとんどないので、
当分はこの本が、
CoreDataを使いたい、使いこなしたいと思った人にとって必要な1冊になるんじゃないかなと思います。
また、 サンプルアプリも掲載されているので、CoreDataのみならず、アプリ開発の基礎も養えるんじゃないかなと思います!

今はRealmがあり、CoreDataに取って代わろうとしていますが、CoreDataはiOS SDKがネイティブで提供することもあり、まだまだ現役ではあると思います。
CoreDataを選択すると、クロスプラットフォームでアプリを提供するときの障壁になる可能性はありますが、iOSのみだったらCoreDataを使う選択肢は大いにあると思います。
もちろん、実践的・実用的に使いこなすには、マイグレーションや非同期での扱いもこなさないといけないですが。

拙い文章でしたが、これで私の書評とさせて頂きます。