その後のその後

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

iOS 9、watchOS 2 技術記事のまとめ

今年はWWDC後の勉強会も多く開催され、正式リリースを前にして iOS 9、watchOS 2 の技術情報が既に多く出てきています。あとでキャッチアップしよう、と思ってたらいつの間にかかなりの記事がたまってきたので、ここらへんでいったん整理しておこうと思います。

iOS 9

Search API

Search API は既存アプリへのメリットもはっきりしているためか、注目度が高く、発表スライドや詳細な解説記事を多く見かける印象があります。

App Thinning
  • App Thinning メモ - Qiita
    • 「App Thinning」「App Slicing」「On-Demand Resources」「Bitcode」など、どれが何だか区別がつかなくなる各用語について解説してくれています。
SFSafariViewController

UIWebView や WKWebView と同様に、アプリ内ブラウザとして使えるビューコントローラ。

コンテンツブロッカー(Content Blocker Extension)


UIStackView



LLDB


Core Location
  • 【iOS 9対応】知っておきたい位置情報周りの変更点 - Qiita
  • What's New in Core Location - WWDC 2015
    • Core Location は、「このAPIがあればあの機能が実現できる!」みたいな新APIはないのですが、`requestLocation` という一度きりの位置情報取得をするためのAPIが追加されたりとか、バックグラウンドで位置情報取得をするために設定が必要なプロパティが増えたりしたようです。
    • Apple Watch での挙動についても解説されています。


MapKit
  • iOS 9で強化されたMapKit - Qiita
    • ピンアノテーションに任意の色をセットできるようになったりとか、コールアウトの詳細部分に任意のUIViewサブクラスをセットできるようになったりとか、見た目のカスタマイズ性が向上したようです。
    • Transit 機能の開放、Flyover のタイプ追加等、結構うれしい機能追加があります。
Audio Unit Extension


Metal
  • WWDC 2015 METAL
    • あまり見かけない、貴重な Metal 情報。WWDC 2015 の4つの Metal 関連セッションの内容をかいつまんで紹介してくれています。


ReplayKit

ReplayKit は、画面を録画するフレームワーク。ゲーム実況にしろ、ユーザビリティテスト用途にしろ、それをメインプロダクトとしてがっつり取り組んでいる企業がいくつかある分野なので、あまり個人的には直接は利用しなそうと思っていたのですが、下記スライドに載っているサンプルを見ると、導入が簡単そうなので、ちょっと試してみようかと。


その他
  • iOS9でカスタムURLスキームの遷移に失敗するときの注意点 - Qiita
    • iOS 9 ではプライバシーへの配慮により、Info.plist に LSApplicationQueriesSchemes キーに対して追加してあるカスタムURLスキームについてのみ、 `canOpenURL:` で正しく結果を返してくれるようになった
    • (Info.plist に追加してないと、対象アプリがインストールされていて遷移可能でも、canOpenURL で `NO` が返ってくる)


  • Breaking changes for Foundation API - Speaker Deck
    • NSMutableDictionary に nil を突っ込むと、今までだと例外になっていたのが、要素の削除、という扱いになったとのこと


watchOS 2

Complication
  • 簡単!Complication!!
    • Complication の実装手順について、用語説明からダウンロードサンプルまであって、すごく丁寧に解説してくれているスライド


HealthKit
  • How to make workout app for watch os 2
    • HKWorkoutSession クラスを用いて、ワークアウト機能を利用したアプリを実装するための情報がひと通り書いてある大変ありがたいスライド


Core Graphics


その他

watchOS 1.0のアーキテクチャはいったい何のために用意されたのだろうか。ネイティブ化されるまでの半年間はいったい何のために必要だったのだろうか。Apple Watchに搭載されている一部のApple製のアプリは最初からネイティブで動作しているはずだが、はじめからその方法を解放できなかったのはなぜなのか。

    • という、開発者みんなが思った疑問についての、Bitcode やプロセッサを絡めての考察。
  • http://d.hatena.ne.jp/shu223/20150616/1434454680
    • 2つのアセットカタログの使い分け、メディアデータの保存場所、Watch Connectivity のメッセージ送信可否の条件等々の細かい話