【書評】「SwiftでつくるARKit超入門」を読みました

SwiftでつくるARKit超入門という本を読み、非常に良い本だと思ったので書評ブログを書くことにしました。
2020.09.11

クラスメソッド福岡オフィスでiOSアプリエンジニアとして働いている田辺です。ご縁がありSwiftでつくるARKit超入門という本を読み、ARの学び始めにとても良い本だと思ったので書評ブログを書くことにしました。

書籍情報

書籍の著者は北村愛実さんです。ARKitやUnityに関するブログや書籍を公開されていたので、本を手に取る前から存じあげていました。

北村愛実 1988年生まれ。立命館大学院理工学研究科卒業。大学院では画像処理を利用したスマートフォン用のアプリケーションやゲームを開発する。IT企業の研究職を経て、現在は主婦をやりつつ執筆やイラスト制作に励んでいる(本データはこの書籍が刊行された当時に掲載されていたものです) https://www.hmv.co.jp/artist_%E5%8C%97%E6%9D%91%E6%84%9B%E5%AE%9F_000000000665641/biography/

書籍はBOOTHにて購入させていただきました。

https://booth.pm/ja/items/1036430

説明が行われる機能抜粋

ARKitの基本的な機能から少し応用的な機能まで紹介されていて、メジャーアプリなどのサンプルアプリの実装までなぞっていくことができました。

  • 特徴点の検出
  • 特徴点を利用した平面検出
  • 検出した平面の上への3Dモデルの表示
  • 垂直面の検出
  • オリジナルの3Dモデルを置くまでのフロー
  • 光源推定
  • 環境マッピング
  • オクルージョン
  • モーションキャプチャ
  • AR空間の永続化とその仕組み
  • AR空間の共有
  • 距離測定
  • メジャーアプリの実装

どんな本

ARKitはAppleが発表したAugmented Realityのアプリケーションを艱難に実装できるように提供されたフレームワークです。コードは非公開ですがVisual Inertial Odometryと呼ばれる技術を使って精度を高めたカメラの位置と向きをリアルタイムに検出できます。

また、アップデートも継続的に行われていて水平面の検出から始まりARで求められがちな機能を容易に扱えるAPIが次々と追加されています。

最新のARKitだとiPad Proのみの対応ではありますがLiDARスキャナが搭載された端末ではより速く正確に認識できるようになりました。LiDARを使って現実の物体の向こう側に3Dオブジェクトが隠れるオブジェクトオクルージョンにも対応しました。

Appleが力を入れていることは理解していても中々手を出さずにいたARの領域に取り組む機会を得たもののまずは概要を手を動かしながら体験したいなという思いがありこの本を手に取りました。

この本では、Swiftの基本的な経験があってARKitの経験が全くない人でも理解できるようにテキストとイラストでわかりやすく説明しながらARKitの概要を掴めます。

ARKitで提供されているAPIを使って簡単なサンプルアプリを作りつつ必要に応じてARについての基礎知識についても理解できるよう書かれているのでとてもわかりやすかったです。ARの経験が全くない自分でも最後まで読んで一通りコードを動かすことができました。また、バージョンの問題でdeprecatedになったメソッドや型があるので、写経した後Xcodeの警告やドキュメントを参照しながらコンパイルエラーを解決しないといけない部分があります。

この書籍をすすめられる人

ARKitに興味がある人でSwiftやiOSアプリの開発経験がある人にはおすすめできる本だと思いました。ARKitに興味があるもののSwiftのことは全くわらないという人は著者の方の以下のようなブログ記事を参考にアプリケーションを作ってみるのが良いかもしれません。

ARKitとUnityの組み合わせは日本語の情報も多いです。Unityについての基本的な理解があると捗りそうだなとARKitについて調べているときに感じたので私もUnityを触れるように環境を整えました。

感想(まとめ)

WWDCのARKitに関する最初のセッションを観た後、最近のバージョンで書かれたARKitについての本はないか探している時に見つけた書籍でした。

実機で動かしながら楽しく学べる本だったのでARへの興味が薄れることなく、手を動かして自分で作ってみるフェーズに移れて良かったです。読み終わった後はARKitについて書かれた記事で登場する語句やAPIで何もわからない気分になるようなことはなくなりました。