その後のその後

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

『iOSアプリ開発 達人のレシピ100』という本を書きました

2013年に入ってから4ヶ月間、無職のありあまる時間をつぎ込み執筆してきた本が、ついに本日発売となりました。


f:id:shu223:20190520093655j:plain

バルセロナで観光もせず執筆し、その後は鎌倉のコワーキングスペースに毛布を持ち込み半泊まり込みで執筆し、企画当初は230ページの予定だったところを大幅超過して370ページも書いてしまったほどに気合いを込めました。


タイトルには『達人のレシピ』とありますが、もちろん著者が達人というわけではなく、掲載しているレシピが達人レベルの難しさ、というわけでもなく、私が提案した『iOSアプリ開発に役立つTips』という地味なタイトルに対していろいろな大人の方々の意向が加わってこうなった、というものです(カッコイイので大変満足しております)。

本の内容

ざっくり言うと、iOSアプリ開発まわりのTips集です。


概要紹介代わりに、『はじめに』に書いた内容を転載します。

iOS SDK がカバーしている領域は非常に広大で、これだけ開発者が増え、書籍やオープンソースが充実した今でも、具体的な実装方法の情報が見つからない機能や、あまり知られていない機能も少なくありません。


本書では、書籍やインターネットでよく見かけるような定番レシピではなく、

  • 利便性が高いわりにあまり知られていない/情報が少ない機能を使うレシピ
  • 現場の開発者のかゆいところに手が届くレシピ
  • 応用が利き、開発の幅が大きく広がるレシピ

といったレシピを100 個、カテゴライズして紹介しています。


どれも実際に現場でiOSアプリ開発をおこなう過程で培われた「生きた」レシピですので、入門を終え、実際にアプリを開発されている方には役立つレシピががきっと見つかると思います。


ぜひ目次をご一読ください。


というわけで、ぜひ目次を見ていただき、興味のある項目がありそうであればご購入いただけると嬉しいです!




レシピ一覧(目次)

※本記事ではカラーの元画像を使用していますが、書籍自体は1色刷り(モノクロ)です。

Chapter1 アニメーション/演出
  • 001 CATransform3D を用いて3D 表現をおこなう


  • 002 3Dアニメーション
  • 003 UIKit で物理演算エンジンを使用する


  • 004 UIKit 上でパーティクルエフェクトを表示する


  • 005 Core Image の遷移エフェクトを使う


  • 006 パスに沿ってアニメーションさせる
  • 007 グラデーションカラーをアニメーションさせる


  • 008 画面を揺らすエフェクト
  • 009 クロスディゾルブで画面遷移
  • 010 UIView のBlocksアニメーションをキャンセルする
  • 011 トゥイーンライブラリを使用する:PRTween
  • 012 トゥイーンライブラリを使用する:AHEasing



Chapter2 画像処理/色処理
  • 013 OpenCV for iOS を使う
  • 014 vImageで画像処理をおこなう
  • 015 シャッター音の鳴らないカメラアプリを実装する
  • 016 カメラにフォーカスと露出をタップで合わせる機能をつける
  • 017 Core Image の各フィルタのパラメータの詳細を調べる
  • 018 Core Imageでノイズ/チェッカーボード/ストライプ等のパターンを生成する


  • 019 トイカメラのようなトンネルエフェクト(ビネット効果)を写真に加える


  • 020 画像をポスタライズ(色数を減らす)する


  • 021 画像にモザイクをかける


  • 022 UIBezierPathでパスを描画する
  • 023 SVGファイルをUIBezierPath オブジェクトに変換する


  • 024 画像を多角形で切り抜く


  • 025 プログラムからスクリーンショットを撮影する
  • 026 画像の4 角を維持したまま拡大縮小する(9スライス)


  • 027 Core Graphics を用いてグラデーションを描画する


  • 028 UIColor の重ね合わせ/CSSカラー名での色指定をおこなう
  • 029 配色技法に基づいた色のセットを自動生成する



Chapter3 オーディオ処理
  • 030 OpenALで3D 空間に音源を配置する
  • 031 デバイスのボリュームボタンの操作を検出する
  • 032 ヘッドフォンジャックの抜き差しを検知する
  • 033 バイブを鳴らす
  • 034 システムボリュームに左右されない音量でシャッター音を鳴らす
  • 035 AVAudioRecordを用いてマイクに入力された音声を録音する
  • 036 AVCapture を用いてマイクに入力された音声を録音する
Chapter4 UI
  • 037 3D 表現を用いたUI


  • 038 UINavigationController の遷移アニメーションをカスタマイズする
  • 039 バウンスさせてビューを出す
  • 040 PathやFacebookライクなスライドメニューを実装する


  • 041 数値をバッジで表示する


  • 042 スクロール付きタブバーを実装する
  • 043 UIAlertViewを左寄せにする


  • 044 UIView サブクラスをxibファイルから生成する
  • 045 xibファイルのローカライズをInterface Builder上でできるようにする


  • 046 背景色にビルトインテクスチャを適用する


  • 047 GLKitを用いて描画処理を高速化する
  • 048 画面の解像度の種別を判定する
  • 049 Core Plot で折れ線グラフを描画する



Chapter5 テキスト
  • 050 自然言語のテキストを属性で区分する


  • 051 正規表現を使う
  • 052 UILabelでのテキスト表示をリッチにする
  • 053 UILabel / UITextView / UITextFieldのテキストをNSAttributedStringで装飾する


  • 054 UILabel のテキストに効果をかける


  • 055 UILabel の文字列を立体的に見せる


  • 056 UIWebView からアプリ内に入れたカスタムフォントを使う
  • 057 UITextView やUIButton のテキスト位置を調整する
  • 058 UILabel / UITextView の高さを調整する
  • 059 英単語の単数形/複数形変換をおこなう
  • 060 UITextField への入力時にキーボードではなくピッカーを出す



Chapter6 位置情報
  • 061 Google Maps SDK for iOS を使用する


  • 062 MKAnnotationView のコールアウト(吹き出し)をカスタマイズする


  • 063 MKMapView のピンをタップせずにコールアウトを出す
  • 064 指定方向に指定距離離れた場所の緯度経度を計算する



Chapter7 WEB サービス連携
  • 065 UIActivityViewController の連携アプリを追加する


  • 066 カスタムUIAcitivityを実装する


  • 067 UIWebViewで表示中のHTMLコンテンツを取得する
  • 068 App Store のAPI からアプリの最新バージョンを取得する
  • 069 ユーザーにApp Store のレビュー投稿を促す



Chapter8 デバッグ
  • 070 Instrumentsを使わずに空きメモリ/使用メモリ/ CPU 負荷を取得する
  • 071 使用メモリ量やCPU 負荷をリアルタイムにアプリUI 上に表示する


  • 072 例外発生時にスタックトレースを出力する
  • 073 クラス名/メソッド名/コード内の何行目かをログ出力する


  • 074 静的アナライザによる解析を特定のファイルで無効にする
  • 075 アプリ内でログを閲覧する



Chapter9 開発ツール
  • 076 クラスの依存関係を図示する


  • 077 ドキュメントを自動生成する


  • 078 CSVファイルからスクリプトでplistを生成する
  • 079 otoolでアプリが使っているフレームワークの一覧を取得する
  • 080 Apple の開発用ツールをXcodeメニューに追加する
Chapter10 Xcode
  • 081 Xcode のファイルテンプレートを自作する
  • 082 Xcode のFunction Menu にコメントを表示する
  • 083 Xcode のRun Scriptを特定のConfigurationに対してだけ実行する
  • 084 Xcodeマクロ($(SRCROOT)や$(BUILD_DIR)等)の置換内容の一覧を調べる
  • 085 Xcode 4 のCode Snippet Libraryにコードスニペットを追加する


  • 086 ARC の有効/無効をファイルごとに設定する
  • 087 1つのプロジェクトで複数のBundle identifierを使い分ける
  • 088 カラーテーマファイルを用いてXcodeのエディタのカラーをカスタマイズする
Chapter11 その他
  • 089 デバイスにインストールされているアプリ一覧を取得する(方法その1)
  • 090 デバイスにインストールされているアプリ一覧を取得する(方法その2)
  • 091 .ipa ファイル生成を自動化する
  • 092 1行でiOSバージョンを判定する
  • 093 zipファイルを解凍する
  • 094 CSVファイルを読み込む
  • 095 通知名の有無をチェックする
  • 096 NSUserDefaults の内容を一括消去する
  • 097 構造体をNSDictionary やNSArray に格納する
  • 098 オブジェクトが持つプロパティの型と名前の一覧を取得する
  • 099 浮動小数点数の乱数を生成する
  • 100 GCD を用いてバックグラウンドで処理を遅延実行する


補足

  • ほぼすべてのレシピにサンプルコードがついています。
  • iOS6対応(表紙とか帯に入れてもらえばよかった。。)
  • 電子書籍版は、企画発生当初よりお願いしているのですが、いろいろとハードルがあるらしく、まだ今のところ予定がありません。。

買えるところ

(5/28追記)Amazonで売り切れになっていることがあるようなので、オンラインで買える(かつ在庫状況がその場で確認できる)ところをいくつかピックアップして載せておきます。


また、下記リンクから、本書の近隣のリアル店舗における在庫の有無が調べられます。

https://takestock.jp/book/4798038180/search/