今日も微速転進

ここではないどこかへ

iOS 10/Swift3 関連本あれこれ(洋書編 .ver)

購入したものとそうでないもの、読み放題サービスで中身を眺めたもの、旧版を買ったが現行版は買わない、などいろいろ。

個人の独断と偏見によるものです。あしからず。

随時追記する予定。


目次のようなもの

オライリー

50%オフというパワーワードの前に抗う術を持ちませんでした。Deal with Day とかいうヤツ。

Learning Swift Second Edition

Learning Swift: Building Apps for Macos, Ios, and Beyond

Learning Swift: Building Apps for Macos, Ios, and Beyond

  • 作者: Jon Manning,Paris Buttfield-addison,Tim Nugent
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2017/04/27
  • メディア: ペーパーバック
  • この商品を含むブログを見る

Learning Swift 3 - O'Reilly Media

まずmacOS向けのアプリを作成し、その後でiOSアプリを作るというアプローチ。これはこれで良心的な気がする。
旧版とタイトルが紛らわしいので注意。

あと、正式タイトルが"Learning Swift"の2nd editionなのか、Learning Swift 3なのかはっきりして欲しい。Packt からも似たようなタイトルのSwift 2.x向けが存在しているという。

例によって例の如く、"Early Release" 版の時点で購入しています。

  • プログラミング経験者が対象
  • Swift およびObjective-Cの経験はないと仮定
  • macOS/iOSの開発経験はないと家庭
  • Swift にフォーカス(つまりObjective-Cの話は出てこない)
  • 英語の本にしては画像多め
  • iCloud連携に関してはDeveloper License が必要なので注意されたし
  • 他のオライリー本より英文が平易で読み易い*1

最大の特徴は4部構成となっていること。それぞれSwift の解説(シンプルなiOSアプリ)、macOSアプリ作成、iOSアプリ作成、アプリの拡張(iOSアプリへのwatchOSアプリ追加、パフォーマンス改善)となる。

500ページぐらいなのでやや広く浅くになりがちだけどお買い得感はある。

サンプルコードなどは、以下。

GitHub - thesecretlab/LearningSwift2Ed: Code for "Learning Swift, 2nd Edition", published by O'Reilly Media, on developing apps with Swift 3.

iOS 10 Programming Fundamentals with Swift

iOS 10 Programming Fundamentals with Swift - O'Reilly Media

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

著者はMatt Neuburg氏。

前半がSwift 3の基礎で後半はiOSの新機能中心。

Programming iOS 10

Programming iOS 10 - O'Reilly Media

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

iOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics

※ 正式リリースはまだ。購入済み。先は長そう。

著者はMatt Neuburg氏。Swift 3の基礎的なことは書いてないので同じ著者のもう一方を読んでくれとのこと。Objective-Cの知識もあった方が良い。

サンプルコード:GitHub - mattneub/Programming-iOS-Book-Examples: Downloadable code examples for my books, “iOS 10 Programming Fundamentals With Swift” (bk1) and “Programming iOS 10” (bk2).

同じ著者でこのページ数を書き上げるあたりはすごいとしか言いようがない。

Packt Publishing

Mapt経由による。

Test-Driven iOS Development with Swift 3

Test-Driven iOS Development with Swift 3 | PACKT Books

200ページ程度で分量はそれほど多くない。チュートリアル系。

本文の説明に従ってテストを書く、コンパイルエラーに対処、テストを満たすコードを書く、という作業を繰り返していくとToDoアプリが完成するという内容の本。
写経していると退屈になってくるという意味ではつらい。

UIのテストの話は出てこないので注意。

Swift 3 Game Development - Second Edition

Swift 3 Game Development - Second Edition | PACKT Books

同じ著者で過去にもゲーム作成の本を書いているのでまともな内容だろうと思う。

Mastering Swift 3

Mastering Swift 3 | PACKT Books

簡単なサンプルを作ってそこからリファクタリングしながら解説する形式だったと思う(うろ覚え)。

Mastering Swift 3 - Linux

Mastering Swift 3 - Linux | PACKT Books

タイトルの通りLinux版のSwiftをターゲットにしている。珍しい。

Swift 3 Object Oriented Programming - Second Edition

Swift 3 Object Oriented Programming - Second Edition | PACKT Books

Swift 3 Protocol-Oriented Programming - Second Edition

Swift 3 Protocol-Oriented Programming - Second Edition | PACKT Books

ほとんどの掲載コードはiOSmacOSLinux、(IBMが提供する)Webブラウザ経由で実行するSwiftで動作するらしい。

Swift 3 Functional Programming

Swift 3 Functional Programming | PACKT Books

2016年の6月に出ている、要するにDeveloper preview versionのSwift をベースに書かれている。そのため微妙に正式リリース版のSwift 3と違う部分があるかも。

Swift 3 Programming Cookbook

Swift 3 Programming Cookbook | PACKT Books

3月発売予定。Cookbookは当たり外れが大きいので目次をよく確認することを推奨。

Swift 3 Programming for Kids

Swift 3 Programming for Kids | PACKT Books

3月発売予定。子供がよろこぶようなプログラム、なのか、子供と一緒にプログラミングなのか不明。

Playgrounds で文法を学びつつサンプルアプリを仕上げるようなタイプに見える。

Pragmatic Bookshelf

Rails 関連本とかヘルシープログラマの原著を発売した出版社。

iOS 10 SDK Development

サブタイトルは"Creating iPhone and iPad Apps with Swift"。

iOS 10 SDK Development: Creating iPhone and iPad Apps with Swift by Chris Adamson with Janie Clayton | The Pragmatic Bookshelf

正式発売は年明けじゃないだろうか。

iOS 8版の時は一冊全体でTwitter クライアントをブラッシュアップしながら作るという本だった。サンプルソースを見る限り前半はPlaygroud でお勉強。後半からPodCast用のクライアントを作るのかな?

いちいちXcode のプロジェクトを作る必要がないという利点はあるけど、日本語の書籍のように一冊で複数アプリの作り方を解説というスタイルを期待していると肩透かしを食らう。

iOS 8版を踏襲しているとすると、順を追って機能を追加していくスタイルでちょっとまどろっこしい。せっかく写経したコードをバッサリ削除して次のステップへ、とか進化のなぞりかえしスタイルだったはず*2。音楽再生タイプのアプリを作りたいなら役に立つかも。

クリスマス前後とか元旦に割引キャンペーンがあると思う。ただし買う気はしない。

Raywenderlich.com

www.raywenderlich.com

ゲーム開発向けのチュートリアルで有名。

月額料金制のチュートリアルとは別に書籍も発行している。

購入したことがないのでなんとも言えないが、やや割高な印象。

日本語のレビューを見かけない……。誰かレビュー求む。

Big Nerd Ranch

www.bignerdranch.com

今まで購入したことはないのでなんとも。

macOS向けアプリ開発についての本(通称ヒレガス本)で有名。iOSよりmacOS向けの書籍に期待したい。

iOS Programming: The Big Nerd Ranch Guide (6th Edition)

iOS Programming Guide | Big Nerd Ranch

誰かレビュー求む。

Amazon.comのレビューは好評の模様。

所感など

本を買って満足、もしくは本の内容を把握して満足するという状態になっていて非常にまずい。

イギリスのPackt はちょっと自重しろよって感じです。昨年あたりから日本の方はRとPython本がバブル気味ですが、海外もProgramming 関連本はよく売れるんでしょうか。


インプット過剰気味なのでちゃんとアプリをリリースするところまでちゃんと持っていきたい今日この頃。

それではまた。

*1:個人の見解です。他の方が読み易いと感じるかどうかは語学力に依存すると思います。

*2:学習効果は高いと思うがなんかめんどい

国語辞書アプリを買った話

Twitterで話題になっていたアプリです。割引キャンペーンだったので(1月31日まで)。

想定したよりもはるかにUIがいい。

精選版 日本国語大辞典

精選版 日本国語大辞典

  • 物書堂
  • 辞書/辞典/その他
  • ¥4,800


f:id:atuyosi:20170128043540j:plain

「朝」で検索したところ。

また、カタカナ語はちょっと不安でしたが結構収録されているようです。

f:id:atuyosi:20170128041052j:plain


詳細は開発元ページへ。

www.monokakido.jp

参考:「即買い以外にないですよ」日本最大の国語辞典がiOSアプリに。おすすめの使い方を聞いてみた

面白いと思ったところ

あくまでも個人の主観です。

インデックス画面

f:id:atuyosi:20170128041034j:plain

タテヨコ両方向のスクロールで、見出し語を一覧できるようになっている。UIKitUICollectionViewをカスタマイズしているのかな。

一昔前にデジタルの欠点としてよく言われた、「デジタルは一覧性が良くない」という主張に対する一つの回答になっている。

画面サイズの大きいiPad Pro あたりで使うなら、決定打と言えるレベルではないでしょうか。

ひとつひとつの見出し語のセルの文字サイズが違うのも意外な点。文字サイズが不揃いになっているおかげでうまくメリハリがついていて逆にいい。

物書堂さんの他のアプリについては購入したことがないので以前からこうなのかもしれませんけど*1

検索機能

これもなかなかよい。検索語の入力ボックスの左側のアスタリスクのアイコンをクリックすると、パターン検索(シェルのメタキャラクタ拡張?)の特殊記号の入力ができるようになっている。

f:id:atuyosi:20170128043817j:plain

普通の正規表現とは違って、シャープ記号を任意の漢字、アットマークを任意のカナに対応する特殊文字として使える。内部で[\p{Han}]とか`[\p{Hiragana}\p{Katakana}]‘というようにユニコードの文字プロパティに展開されているか?

f:id:atuyosi:20170128040916j:plain

まったくの余談ですが、ラ@で「ラーメン」にヒットするかと思ったがダメだった。長音記号はかなには含まれていないらしい。検索結果が多すぎるとまずいのか、ら*でも「ラーメン」はヒットしない。「ラガー」、「ラグーン」*2などの単語はヒットするのに。ら*んなら問題ない。


検索パターンの展開エンジン(正規表現エンジン?)、どうしてるんだろうか。 ソフトウェア開発者の端くれとしてはとっても気になります。

シェイク操作で検索ボックスの文字列がクリアされるのも地味ながら便利。

イラストなど

こういう図表が省略されていないのもいい。

f:id:atuyosi:20170128041011j:plain

そのほか

内部でlibxslt を使っているらしい。辞書データがXMLなのだろうか。手書き入力はオープンソースtomoeでもZinnia}ではなくパナソニック製のライブラリらしい。

まとめ

従来の、スタンドアローンの電子辞書*3の欠点をきっちりカバーしているのではないかと思います。

高校などの試験でスマートフォンを持ち込めないケース*4は不都合があるかもしれませんが、もはや学生ではないですし。

収録語彙数が多いはずなのに全然もっさりしていないし、使い勝手のいいUIのお手本みたいな感じ。

病院の待ち時間の暇つぶしとしてなかなかいい。あまり夢中になると名前を呼ばれても気づかないのでちょっと危険。


それではまた。

*1:大辞林のアプリからこのUIみたい

*2:ブラック・ラグーンを連想してしまうじゃないか

*3:アプリじゃなくて専用デバイスの方。なんだかワープロ専用機みたいに過去のものになっってる?

*4:そもそも、学生同士が相談できないように、各学生が同じ答えを書けないような試験問題にすればいいはずです。

iOS アプリ開発入門本いろいろ(Swift 3 / Xcode 8 )

今年もiOS アプリ入門本の出版シーズン到来のようです。

[2017/10/07 追記]

現在のIOS のバージョンは11で、開発ツールはXcode 9.x、プログラミング言語としてはSwift 4.x、です。

このページで紹介している本は一世代古く、本の記述通りにしても動かないケースがあります。

すでに改訂版が予約受付中なのでそちらを購入することをお勧めします。

[追記ここまで]

さすがに初級向けの本を買う気はあまりないですが、過去に関連本の紹介記事(比較記事)を書いているので全くスルーするのも如何なものかと。

本屋で現物確認したものと過去に購入したものの改訂版を中心に紹介してみます。

他にも入門書が2冊ほど存在することを認識してはいますが、発売時期、タイトルから判断して紹介していません。


一通り出揃ったので記事の構成を変えるました。あくまでも個人の主観によるものです。

プログラミング未経験者向け

プログラミングの経験がない人向けの本。もしくはプログラミング自体の経験はあるが、できるだけ親切な参考書が欲しい人向け。

『これからつくる iPhoneアプリ開発入門 ~Swiftではじめるプログラミングの第一歩~ Swift3/Xcode8対応』

これからつくる iPhoneアプリ開発入門 ~Swiftではじめるプログラミングの第一歩~

これからつくる iPhoneアプリ開発入門 ~Swiftではじめるプログラミングの第一歩~

iOSアプリ開発の未経験者向け。まず手を動かそうというスタイルの入門書。すでに固定レイアウトだけどKindle版が出てる。

サンプルアプリもタイマーアプリからカメラアプリ、WebAPIを利用するものまで幅広い(計6本)。非常にバランスが良い内容になっている。

書店で見た印象としては、プログラミング未経験者向けの講座の教科書としては非常に良さそう。 パート1とパート2の二部構成で、概ね丸二日あれば全体を修了できるような構成になっていて、セミナー教材としての利用をかなり意識しているように見える。

気になった点としてはメソッドの引数を列挙した表の説明文がリファレンスの直訳になっている点。そのままではわかりにくいのではないかと思った。

[2016/12/05 追記]

AppStoreへのアップロード方法は載ってなかったはず。

『やさしくはじめるiPhoneアプリ作りの教科書』

やさしくはじめるiPhoneアプリ作りの教科書 【Swift 3&Xcode 8.2対応】 (教科書シリーズ)

やさしくはじめるiPhoneアプリ作りの教科書 【Swift 3&Xcode 8.2対応】 (教科書シリーズ)

Amazonで予約可能な状態にはなっている。 発売済み。Kindle版は固定レイアウト。

評判の良かった著者によるもの。以前とタイトルが少し違うので構成が旧版と変わるのかも。

前著と比較すると、ページ数がかなり減っている。 内容をかなり絞ってわかりやすい点を中心にしたのだろうと思う。前著の特色の一つであった巻末付録は今回も似たような内容で収録されている。

どの部分を削ったのか、検証はしてない。

ページ数が少ないのでとりあえず一冊最後までやりきる、という意味ではいいと思う。ただ、この一冊では物足りないと感じて、結局別の本を買うことになるんじゃないだろうか。

iPhoneアプリ開発講座 はじめてのSwift』

iPhoneアプリ開発講座 はじめてのSwift

iPhoneアプリ開発講座 はじめてのSwift

今のところKindle 版はなし。360ページとやや少なめ。

著者ご本人による紹介記事:Swift 入門書「iPhoneアプリ開発講座 はじめてのSwift」を執筆しました! | Developers.IO

本文の構成はプログラミング言語としてのSwiftの説明が三分の二ぐらいで、残りがアプリのサンプルの解説(サンプルアプリは計5本)。

先に理論というか、プログラミング言語と抽象的な概念を説明してから実例としてサンプルアプリの開設に入るという典型的な構成です。最初に紹介している「これからつくる iPhoneアプリ開発入門」とはほぼ逆のコンセプト。

一番の差別化ポイントはご本人による紹介にさりげなく書いてあるとおり、説明のためのイラストが多数掲載されている点でしょうか。

はじめてiPhoneアプリを作る人にとって、"何がわからないか?"に徹底的にこだわり、 400点以上のキャプチャ図と200点以上のイラストを使って懇切丁寧に解説しました。
(紹介記事より引用)

本当に200点以上のイラストかどうかは数えていないのでわかりませんが、プログラミングの概念を説明するための図がたくさん入っているのは間違いないです。

例えば変数や配列を説明するのの箱と矢印のイラスト、条件分岐などの処理の流れなどイメージを持たせるためのイラスト、ですね。

操作手順を説明するためのスクリーショット(画面のキャプチャ) が多い本はたくさんありますが、説明のためのイラストにここまで力を入れている本は珍しいはず。

きっと組版担当と装丁を担当された方は苦労されたのではないかと思います。図が大量にある割にページ数は360ページしかありません。ほぼ全ページに何らかの画像が入っているはずです。図と本文の対応関係のチェックなど、校正作業のことを考えるとゾッとしますが。

ページ数の割に図が多いですが、図の周りに文章を回り込ませているので特に内容が薄いということはないです。同じ出版社の他の入門書とはうまく差別化できているのではないでしょうか。


前述の「これからつくる iPhoneアプリ開発入門」と比較すると、操作手順を解説しているページは少なめ。

書いていないトピックとしては、カメラを使うアプリと、AppStoreへのアップロード方法など。

『ノンプログラマーのためのSwift教室 ゼロから作ろう! iPhoneアプリ

ノンプログラマーのためのSwiftブック ゼロから作ろう! iPhoneアプリ

ノンプログラマーのためのSwiftブック ゼロから作ろう! iPhoneアプリ

プログラミング未経験者向け。専門学校の非常勤講師の方が書いてる。この記事で紹介している書籍の中で最小のページ数。

非常に大胆に割り切った構成の本。プログラミング言語としてのSwiftの解説はかなり割り切ってXcodeの操作とサンプルアプリの解説に特化している。

間違いなく読者を選ぶタイプの本です。

読者に「自分で入力したプログラムが自分のiPhoneで動く」、という体験をさせることに重点を置いているようです。

第2章で「はじめに知っておきたいSwiftの流儀」と称して文法のさわりとコーディング規約(入力スタイルか?)を解説し、そのあとは個別のアプリの解説というスタイル。

サンプルアプリ用の画像素材*1は見た感じかっこいいです。提供されている画像をXcodeのプロジェクトに組み込むとか、AutoLayoutの設定周りは丁寧に解説されている印象。

紹介文によると、

このプログラミング言語は奥が深いので、まずはお手本通り間違いなくソースコードを入力し、iPhoneアプリを動かすことを第一に目指してください。

と書いているのでサンプルを示した後で理屈を紹介するタイプ文字通り写経して実際に動かすことがメインのようです。

操作方法の説明ページ内の、Xcodeスクリーンショットが他より見やすいとは思いました。

これまでにSwift or iOS 向けの本を書いた実績はないみたいなので関連本の著者としては新規参入組。

Kindle版は提供されていないが、マイナビのページからPDF形式が購入できる。

プログラミング経験者向け

ある程度、他のプログラミング言語の経験はあるが、iOS向けアプリは作ったことはない人向け。

『詳細! Swift 3 iPhoneアプリ開発 入門ノート』

改訂版あり

定番の解説書の改訂版。どちらかというと他のプログラミング言語の経験者向け。 640ページと圧倒的なボリューム(紹介している中では最多)。

この出版社はKindle版の発売が遅い印象だったんですが早くもKindle版が出ています(固定レイアウト)。

サポートサイト:詳細! Swift 3 iPhoneアプリ開発 入門ノート サポートサイト

特徴は、以下のとおり。

  • 旧版と同じく白地に青と黒の2色刷り。
  • サンプル数は旧版の347から360に増加
  • カバー範囲が広いのである程度はリファレンスとしても

内容はいいと思うのだけど、二色刷りなので本の装丁(見た目)としては他と比べると少し見劣りしてしまう。ページ数が多い分、誤植も多かったりするのでサポートページの正誤訂正を確認することをお勧めします。

基本的に解説する項目ごとに簡単なサンプルを解説し、そのサンプルに補足的な項目を加えていくスタイルなので360という数字に特に意味はないです。

旧版と大きく章構成は変化してないようです。Swift 3/Xcode 8への対応が中心。クラス名や定数のプレフィックスの変更への対応ぐらいに見える。

サンプルコードの新旧比較を取ろうかと思いましたが、フォルダ名の数字がズレていて面倒なのでやめました。

旧版を持っている立場からすると躊躇しますね。Swift 3対応のUIKitのリファレンス本とか逆引き系の本の電子版が出版されるならそちらを買いたいところです。

『本気ではじめるiPhoneアプリ作り Xcode 8.x+Swift 3.x対応』

改訂版あり

Kindle版もリリース済み(固定レイアウト)。ページ数は432ページと紹介している中で二番目三番目。旧版よりちょっと増えた。

他のプログラミング言語の経験はあるけど、iOS向けは未経験という層がターゲット。

基本構成は旧版と同じ。サンプルアプリは計4本。

他の入門書との差別化ポイントは以下の通り。

  • 前半でプログラミング言語の説明とUI部品の解説、後半でサンプルアプリのコードを解説する二部構成
  • iOSシミュレーターの説明が比較的詳しい
  • アプリのアイコンの作成法(Sketch 3)
  • App Storeへのアップロード方法の解説

YahooのAPIを使うアプリの関係でYahoo のIDを作る必要あり。相変わらずカメラ機能を使うアプリについては記載なし。

『TECHNICAL MASTER はじめてのiOSアプリ開発 第2版』

TECHNICAL MASTER はじめてのiOSアプリ開発 第2版 Xcode 8+Swift 3対応

TECHNICAL MASTER はじめてのiOSアプリ開発 第2版 Xcode 8+Swift 3対応

電子書籍版はなし。ページ数500ページ越え。

最初に簡単なWebブラウザアプリを作ったあと、Swift の文法を解説。その後はWeb APIを使って飲食店の情報を調べるアプリにどんどん機能を追加していくという構成。

実質的に一つのアプリの作成を通して、アプリ開発に必要なノウハウを一通り解説する書籍。

他の書籍との差別化ポイントは、以下の通り。

  • アプリのApp ストアへの提出まで解説している
  • CocoaPodsによるオープンソースライブラリの組み込み
  • ライセンス文書の表示タブの追加方法
  • 他のアプリとの連携(URLスキーマなど)

CocoaPodsmacOS/iOS 用のライブラリ管理ツール。

書いていない事柄としてはジェスチャー操作周りぐらい。

他のどの入門書よりもアプリを実際にリリースするという点にフォーカスしていると思う。

秀和システムという出版社は個人的に良いイメージがない*2ので敬遠していましたが、この本は組版・装丁も良さげ。

著者のWebサイト:書籍「はじめてのiOSアプリ開発」第2版が出ました – 長谷川智希 @tomzoh blog

出版社ページ:TECHNICAL MASTER はじめてのiOSアプリ開発 第2版 Xcode 8+Swift 3対応|書籍情報|秀和システム

未発売(執筆中?)

詳細不詳

執筆開始のアナウンスのみ。

アプリ開発本ティザーサイト | はれときどきくもりZ

参考:【重大発表】iPhoneアプリ開発本を執筆して、C&R研究所さんから出版します! | はれときどきくもりZ

文法書

定番

詳解Swift 第3版

詳解Swift 第3版

入門書を読んでさらにSwift を学ぶなら必須。

これも定番。今のところ紙媒体のみ。第二版の場合は1月末か2月末にリフロー形式でKindle版が発売されたので今回も同じだろうと予想。3月になってもKindle版のアナウンスはなし。

Kindle版待ち(検索可能なPDFが理想だけど)。

英語の本買ったし別にいいかな。

理解を深めるために

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

技術評論社より。著者はメルカリとクックパッドの中の人。

文法書というより他の言語のEffective XXX(XXXはプログラミング言語の名称)シリーズに近い内容かもしれない。

詳細不明。Swiftの文法のうち、高度な記法(記述?)を使ってよりスマートなコードを目指しましょうとか?

技術評論社から出版されるということはPDF形式が入手できそうなので期待している。

その他関連本

関連本も記載しておきます。

iPhoneAndroidアプリ内課金プログラミング完全ガイド』

iPhone&Androidアプリ内課金プログラミング完全ガイド 第2版 (Smart Mobile Developer)

iPhone&Androidアプリ内課金プログラミング完全ガイド 第2版 (Smart Mobile Developer)

タイトル通りアプリ内課金についての本。旧版は達人出版会から電子書籍が買えたけど、第2版については情報なし。

まだ実物を見てない。

Kindle 版購入後にPDFが買えるようになっていてとても悲しいです。

Amazonのレビュー欄にある通り、収録されたソースコードに扱いに注意が必要。課金アプリのためのAPIの使い方を解説する本なのに「個人で使用する以外に利用することはできません」と書いてある*3

まとめ

今から手を出すなら「これからつくる iPhoneアプリ開発入門」が未経験者に優しいと思います。

理屈の理解に重点を置きたいなら「iPhoneアプリ開発講座 はじめてのSwift 」の方が説明のイラストが多いので良いかと思います。この2冊はコンセプトがそれぞれ真逆なので。

大重さんの方は手堅くまとめてるんだろうけど未経験だとちょっとしんどい。ページ数も他より多いし。

作りたいアプリのイメージがはっきりしていて、アプリのリリースまで本気でやりたいなら『はじめてのiOSアプリ開発 第2版』もなかなか良い印象です。


iOSアプリ開発の入門本を書く著者陣も淘汰されているのかな。Swiftビギナーズ勉強会とクラスメソッドの方が新規参入組。

というか、同じ出版社(SBクリエイティブ)から入門本出し過ぎ。ちゃんと差別化はするんだろうけど、中級者向けとか、もう少し尖った内容の本もお願いしたい。


気づいた点など何かあれば随時追記します。

それではでは。

*1:著作権の関係で読者が自由に使えるわけではないだろうと思うのでありがたみは薄い

*2:価格の割に中身が薄かったり、印刷に使用されている紙が微妙に厚かったり。紙質もいまいちな印象。

*3:ソースコードを丸パクリするなという意味に解釈したけど気持ち悪い

『よくわかる Auto Layout』読了

よくわかるAuto Layout

よくわかるAuto Layout

7月頭にKindle版を購入してようやく読み終えました。他の本読んだりしたのと、暑さにげんなりしていたせいです。

率直にいうと熱帯夜による体調不良とAmazonKindle Unlimitedのせいです。

ほぼ確実に9月某日にXcode 8およびSwift 3が正式にリリースされると思います。本書はXcodeおよびSwift のバージョンの影響を受けるような内容はほとんど無いので購入タイミングについて悩む必要は無いと思います。

概要

なぜか「はじめに」が「だ・である」体の文章でびっくりする。本文は「です・ます」体。

出版社:リックテレコム : よくわかるAuto Layout iOSレスポンシブデザインをマスター

サンプルのダウンロード:リックテレコム 書籍情報

著者さんのブログ:「よくわかるAuto Layout」を執筆した話 - Jeffsuke is not a pen.

目次
Chapter 1 Adaptive Layoutをはじめる
Chapter 2 Auto Layoutの基本概念
Chapter 3 UIViewControllerとレイアウトをサポートするクラス
Chapter 4 StoryboardとAuto Layout
Chapter 5 コードとAuto Layout
Chapter 6 実装基本パターン
Chapter 7 実装応用パターン
Chapter 8 Auto Layoutをデバッグする
Chapter 9 サイズクラスとトレイトコレクション

各章ごとにほぼ独立した内容になっているのでAuto Layout の経験があるならChapter 1から3はさらっと目を通すかスルーして、 Chapter 4から9を読めばいい。コードからAuto Layout を設定しない(Interface Builder派)ならChapter 5は読まなくても大丈夫*1

あるいは、目次と索引を見て興味のあるところから読んで、残りは時間のあるときに読むとか。

良い点

そもそも日本語のAuto Layout の解説書が出版*2されること自体が非常に喜ばしい。

  • それぞれの章で内容が独立している
  • リファレンスとして充分な内容
  • 豊富なサンプル
  • これまでの経緯に触れたうえで具体的な手順を説明している(現在のベストプラクティス)
  • 入門書で端折られがちな、Size Class (トレイトコレクション)についての章がある*3

iOSプログラミングの入門書はiPhoneの縦向き固定でiPad向けの画面レイアウトの解説がない場合がほとんど。Auto Layoutも概念の説明と簡単な例で終わっているケースが多い。

そういう点を踏まえると本書のようなAuto Layoutの本は貴重。

もちろん、インターネットで調べることである程度は解決することは可能。Webサイトの多くは初歩的な内容か特定のトピックだけなので体系的な知識を得るのは難しい。特にiOS関係は古いバージョンについての情報が混ざっていたりして、本当この方法でいいのか判断できずに混乱しがち。その点、この本の場合は「以前はこうだったが最新のバージョンではこうする」というこれまでの経緯を踏まえて説明されているので混乱しにくい。

ちょっとした余談ですが、技術系の本で「あとがき」と「謝辞」がある本は久しぶりな気がする。

気になった点など

  • 内容の関係で説明と図が交互にひたすら続く
  • 固定レイアウトはやっぱりツラい
  • スクリーンショットを大きくできないものか(電子版のみ)
  • 設定済みのプロジェクトデータのみ提供されている
  • 「トルツメ」という日本語は初めて見た*4

スクリーショットを見て、文章を読んで…の繰り返しなので読んでいて疲れるかも。

Kindle for PC or Kindle for Mac で読む場合はサブディスプレイを用意して、片方でXcodeを起動しておくといいと思います。

サンプルコードはXcodeのプロジェクトで、一つのプロジェクトの中に多数の.storyboardファイルという形式。
欲を言えば、設定済みの状態だけではなく設定前のXcodeプロジェクトファイルがあると良かったと思う*5。 また、サンプルコトードは章ごとに分割されていたほうがわかりやすいような気がする。

ページ数の都合もあるだろうけど、一章ぐらいは完全なチュートリアル形式でも良かったかも*6

まとめ

最初から読めばまとまった知識が得られる、リファレンスとしてつまみ読してもいい。リフロー形式か、検索可能なPDFだったら最高だったかな。

Auto Layout はよく分からない、あるいは自作アプリをiPadに対応させていけどSize Classはよく分からないという方にオススメです。また、ひとまず入門書を読み終えて、本格的にiOSアプリを作ろうという場合も買っておいて損はないです。

というかXcodeiOS/Mac向けのアプリをつくるなら必須ではないでしょうか。


それではまた。

*1:読んで損はないし、別に読むなという意味ではないです

*2:KDPではなくフルスペックで

*3:英語の本だとちゃんと説明しているのもあったはず。The Pragmatic Bookshelfのやつとか

*4:どっちかというと校正用語なの?

*5:Storyboardとバージョン管理システムの相性が良くないので難しいのかも

*6:9章はかなりそれに近い内容

Tesseract-OCR-iOSと二値化処理の切り替え

久しぶりにOCR関連。

前置き

二値化処理 (image thresholding)というのは、各色ごとに(8ビットなど)の階調で表現された画像データを、あるしきい値(閾値)を基準に0と1の二値で表現できるデータに変換すること。

このあるしきい値でという部分がポイントで、このしきい値を決定するためのアルゴリズムがいろいろと提案されている、らしい。

OCRライブラリであるtesseract-ocr(および、そのラッパーライブラリであるTesseract-OCR-iOS)も内部で画像を二値化(二値画像化)している。 通常、グレスケール化して二値化するが、ここで二値化処理がうまくいかないと当然のごとくOCR結果に影響する。

ノイズの多い画像であるとか、画像の種類によってアルゴリズムを切り替えるようにできると望ましい。

欲を言えば、画像のヒストグラムか何かの特徴量で自動判別させたい。

tesseract-ocr内部では Otsu’s method を用いて二値化しているらしい。

これはこれで優秀なアルゴリズムらしい。グレースケールの仕方が悪いのか、特定の画像で二値化がうまくいかないケースがある。 アルゴリズムのせいなのか、ライブラリ側の問題なのか、あるいは前処理の問題かはなんとも言えない*1

やりたいこと

  • アプリ側のオプションで二値化アルゴリズムを切り替えたい
  • (できれば)tesseract-ocr の標準のアルゴリズムも残したい
  • OpenCVを組み込むのはバイナリサイズの都合で避けたい

Tesseract-OCR-iOS(tesseract-ocrのiOS向けラッパーライブラリ)では、デフォルトの二値化処理をバイパスするための手段が用意されている。

解決策(暫定)

公式のWikiを参考にすればいい。

要するに、 preprocessedImageForTesseractというメソッドを定義して、その内部で自分の使いたい方法で画像を二値化 して、UIImageオブジェクトで返せばいい。

これはこれでいいのだけれど、tesseract-ocr標準のアルゴリズムが使いたいケースに対応できない。本来なら実行時に(動的に)preprocessedImageForTesseractメソッドが定義されてない状態にするのか、オプションをしていできるようにライブラリ側を改造するのが最善だと思う。

残念ながら、Swiftで実行時に特定のメソッド呼び出しを無効化する方法がわからないのと、Objective-Cはわからないのでライブラリの拡張は諦める。

以上を踏まえて、少々お行儀の悪い方法で逃げることにする。

ライブラリ側のコードを見る限り、preprocessedImageForTesseractの戻り値がnilの場合は標準の二値化アルゴリズムが使用されるみたいなので、下記のようにしてみた。

画像データはグレースケール化されているものとする。

Example for "preprocessedImageForTesseract"

GPUImageの"Adaptive Threshold"と"Avarage Luminessence" フィルタ、tesseract-ocrのデフォルト(nilオブジェクトを返すことでTesseract-OCR-iOS側でフォールバック)の三種に切り替える例。

文字の線幅が太いと、"Adaptive Threshold"はエッジ抽出フィルタのような挙動をするのが難点。

以下のようにenumを定義しておく。

enum ThresholdMode : Int {
    case OtsuThreshold = 0
    case AvarageLuminessence
    case AdaptiveThreshold
}

ViewController側で、

var threshold_mode = ThresholdMode.OtsuThreshold

のようにして切り替える。OpenCVを使えばもっといろんなアルゴリズムを使えるだろうけど、理屈が分かっていないので保留。

とりあえずここまで。

ディジタル画像処理 [改訂新版]

ディジタル画像処理 [改訂新版]

広告