かみやんの技術者ブログ

主にプログラムの話です

技術者向け iOS6 新機能!


上図、左がiPhone5、右がXperia GX

iOS6でましたね〜。iOS6の発表は、夜中の2時にネットの前に待ち構えて、ワクテカしながら発表を聞いていました。毎度毎度テンションが上がりますね!
iPhone5でましたね〜。僕は、ソフトバンクのオンラインショップで発売日の16時に予約サイトに行って、サーバ混雑中と1時間ほど格闘しながら予約しました。発売日の翌日にiPhone5が届きました〜。
iOSディベロッパーならみんなMAX盛り上がるときだよね。祭りだ!祭りだ!
さて新しいOSがでたら必ず新機能をチェックすべし!アプリ企画者、ディレクター、プログラマならみんなチェックすべし!どこに企画のネタが落ちているか分からないし、どこに自分のアプリの改善可能点があるか分からないし。これは必須!という訳で毎度おなじみのiOS Dev Centerの新機能紹介ページの翻訳です。いつもOSリリースと同時にブログにアップしていたのだけど、ちょっとバタバタしてで遅れました。だってiPhone5が縦長なんてギリギリまで発表されないんだもの。みんなアプリのアップデートで死にそうでした。
という訳でいつもどおり適当意訳もあるけど行ってみよう〜。

iOS6新機能

マップ

アップルが提供する新しい地図に加えて、「マップ」アプリとMapKitフレームワークは他のアプリとのやり取りを新たにサポートします。現在協調動作をしない独自地図アプリが、「マップ」アプリを起動したり、興味のある場所やルート情報を表示したりする簡単な方法が用意されています。ターンbyターンナビゲーションサービスのようなルート情報を提供するアプリは、ルーティングアプリとして登録でき、システム全体で有効なサービスを作ることができます。
ルーティングアプリとして登録することはユーザの目の前にサードパーティのアプリを取得する機会をより多くします。ルーティングアプリは単にドライブやウォーキングに限定されるものではありません。ルーティングアプリはユーザの好きな自転車やハイキング、航空路、地下鉄、その他の公共交通機関のルートを提供します。そしてアプリはユーザのデバイスにダウンロードする必要がありません。「マップ」アプリは、AppStoreでルーティングアプリについて知っていて、ルート情報のためにそれらのアプリを購入するオプションをユーザに提供することができます。
ルート情報を提供していないアプリでも「マップ」アプリとルーティングアプリの両方のメリットを得ることができます。アプリは特定の位置を表示することや2地点のルート情報を表示する新しいインターフェースを使うことができます。
アプリでルート情報を提供する方法や、「マップ」アプリでルート情報を表示する方法の詳細は、Location Awareness Programing Guide参照してください。


かみやん:何かと残念な地図で世間をお騒がせしているApple製地図ですが、なんかルーティングアプリとか新しい仕組みがあるみたい。それに対応するとユーザがアプリをダウンロードしなくても、そのアプリを提示してくれてダウンロード機会を増やしてくれるって書いてあるけど、どんな感じなんだろう。ぐるなびみたいなアプリはチャンスなのかな?

ソーシャルフレームワーク

Social Framework(Social.framework)は、ユーザのソーシャルメディアアカウントにアクセスするシンプルなインターフェースを提供します。このフレームワークは、iOS5で導入されたTwitterフレームワークにとって代わり、Facebookや中国のWeiboサービスが追加されました。アプリはこのフレームワークを使うことによってユーザのアカウントでステータス更新や写真の投稿ができます。このフレームワークはAccountsフレームワークと連携して、ユーザにシングルサインオンを提供し、また、ユーザの承認されたアカウントにアクセスすることを保証します。
UIKitフレームワークは、ユーザがいくつかの選択された内容に基づいて実行できるアクションを表示するための新しいUIActivityViewControllerクラスを提供します。このクラスの機能は、ユーザがTwitterFacebookなどのソーシャルアカウントにコンテンツを投稿できるようにすることです。アプリは、iPhone上でモーダルにこのクラスを表示したり、iPad上でPopoverのコントローラの利用で表示したりすることができます。ユーザがいずれかのボタンをタップすると、View Controllerは、関連付けられたアクションを実行するための新しいインターフェースを提供します。
ソーシャルフレームワークについて、より詳細な情報は、Social Framework Referenceを参照してください。UIActivityViewControllerクラスについては、UIKit Framework Referenceを参照してください。


かみやんFacebookに投稿も楽になった。これはいい!あとSafariの共有ボタンのようなUI、UIActivityViewControllerで簡単に実装できるんですね。共有が簡単に実装できる。これもいい!

Pass Kit

Pass Kitは、Webサービス、新しいファイルフォーマット、Objective-C(PassKit.framework)を使い、ダウンロード可能なパスを実装した新しい技術です。企業は、クーポンや搭乗券や企業向けの割引券などを表すパスを作ることができます。これらの物を表す物理的な物を持ち運ぶ代わりに、ユーザはiOSバイスにこれらを保存し、今までと同じような使い方で使うことができます。
パスは、サードパーティWebサービスで作成され、メールやSafariやアプリで配信されます。パスそれ自身は、特別なファイルフォーマットで、配信前に証明され暗号化されています。ファイルフォーマットは、ユーザが何のためのサービスなのかを知るための関連ある識別情報を持っています。またバーコードや、景品交換をしたり使ったりできるようにカードを検証するその他の情報が含まれている場合があります。
PassKitや、アプリでPassKitをサポートする場合のより詳細な情報は、Passbook Programing Guideを参照してください。


かみやん:財布の中のカード類が全部なくなる時代がくるといいね!道のりは長いと思うけど、流行って欲しい!

Game Center

Game Centerは、ゲームを遊ぶ体験を進化させるために追加された新しい機能があります。GameKitフレームワークに追加された主要な変更は以下です。

  • チャレンジは、アチーブメントやスコアを友達と競争することができます。プレイヤーはGame Centerアプリからチャレンジを発行することができます。アプリは、GKChallengeクラスを使ってゲームにチャレンジの発行をさせることができます。
  • GKGameCenterViewControllerクラスは、以前のリーダーボード、アチーブメント、友達リクエストのビューコントローラの機能をすべて統合しています。アプリは以前のビューコントローラを使うことができますが、それらは新しいGame Center ビューコントローラの中のタブとして表示されます。
  • ローカルプレイヤーの認証のプロセスが変更になりました。新しいプロセスでは、アプリはすべての認証ステップを実行するブロックをauthenticateHanderプロパティに設定します。一度、設定したらGameKitは必要なときにローカルプレイヤーを自動的に認証します。しかしGameKitは直接、認証インターフェースを表示しません。代わりに、ハンドラは提供されている認証ビューコントローラを表示し、認証UIが表示されたときにより正確に制御できる機会をアプリに与えます。
  • (訳注:その他、ターン制ゲームとか、GKMathmakerクラスとかいくつかあるけど興味がないのでパス)


かみやん:友達とチャレンジ!というのがついたみたいだね。まだ試してないや。

リマインダ

Event Kitフレームワークユーザのデバイスでリマインダを作成したりアクセスしたりするインターフェースが追加されました。アプリが作成したリマインダは、ユーザが作成したものと一緒にリマインダアプリに表示されます。リマインダは、位置ベースや時間ベースのアラームも含むことができます。
リマインダの生成の新しいインターフェースを含むEventKitフレームワークについて、より詳細な情報は、Event Kit Framework Referenceを参照して下さい。


かみやん:ついにリマインダもAPIが公開された。リマインダ置き換えアプリとかも出そうですね!

アプリ内課金

StoreKitフレームワーク(StoreKit.framework)は、新たにアプリ内でiTunesのコンテンツを購入する機能を提供し、Appleのサーバのダウンロード可能なコンテンツを取得する機能を提供します。アプリはビューコントローラを表示し、ユーザにiTunesのアプリや音楽や本や他のコンテンツをアプリ内から直接購入させることができます。アプリは購入のために利用できるようにしたいコンテンツを識別しますが、購入処理の残りの部分はStoreKitが処理します。
iOS6より前は、開発者はアプリ内課金を通して利用可能にするダウンロード可能な任意のコンテンツを管理するために対応する必要がありました。ホスティッドダウンロードは、新たにユーザに利用可能にするために開発者がしなければならないことを簡素化します。新しいSKDownloadクラスは、コンテンツのダウンロード可能な一部を表します。加えてSKPaymentTransactionクラスは任意のホスティッドコンテンツのためにダウンロードオブジェクトの配列を提供するように変更されました。コンテンツの一部をダウンロードするために、アプリはダウンロードオブジェクトをペイメントキューに追加します。ダウンロードが完了したら、ペイメントキューオブザーバーに通知されます。
Store Kitフレームワークのクラスについての詳細は、Store Kit Framework Referenceを参照してください。


かみやん:なんと!アプリからiTunesのアプリや音楽や本が買える!アフィリエイトフィーとか入るのかね。うまく連動したコンテンツ紹介アプリとか増えそうですね。

コレクションビュー

UICollectionViewクラスはユーザに順序付けされたデータを表示する新しい方法を提供します。コレクションビューオブジェクトを使用すると、アプリは埋め込まれたビューの表示と配置を定義することができます。コレクションビュークラスは、独立したデータ項目の配置を定義するために付随したレイアウトオブジェクトと密に連携して動作します。UIKitは、標準またはさまざまなサイズの項目を含む複数列のグリッドを実装するために利用できる標準的なフローベースのレイアウトオブジェクトを提供します。またグリッドレイアウトより良いものを作りたい場合は、開発者が選択した任意のレイアウトスタイルを提供するために、カスタムレイアウトを作成することができます。
コレクションビューは項目の表示をサポートするための専用のクラスのグループで動作します。セルに加えてコレクションビューは補助的なビューと装飾ビューを持つことができます。これらのビューの使い方と配置は、レイアウトオブジェクトによって完全に制御されます。例えば、フローベースレイアウトオブジェクトは、コレクションビューの中のセクションのためにヘッダとフッタのビューを実装するための補助的なビューを使用します。
その他のコレクションビューの注目すべき特徴としては次のようなものがあります。

  • アプリのコレクションビューの表示を管理するためにUICollectionViewControllerクラスがあります
  • コレクションビュー内のコンテンツのアニメーションをサポートします
  • 項目の挿入、移動、削除を処理します
  • セルや他のビューを生成したり管理したりするために簡素化されたモデルを提供します。

アプリのUIとしてコレクションビューを使うことについての詳細は、Collection View Programing Guide for iOSを参照してください。


かみやん:@fladdictさんがUITableViewControllerをハックしてカスタマイズをiphone_dev勉強会で発表していたけど、汎用化されたということかな?

UIステート保存

ステート保存は、アプリに対してユーザが最後に使用したときのユーザインターフェースの状態を復元することをより簡単にできるようにします。iOS6より前では、アプリの終了イベントで現在のUIの状態についての情報をアプリが保存することが推奨されていました。再起動するとアプリは、その情報を使いUIの状態を復元し、アプリが終了してないように見せていました。UIステートでは、アプリのユーザインターフェースを保存したり復元したりするために基盤を提供し、このプロセスを簡素化します。
ステート保存の実装では、アプリのユーザインターフェースのうちどの部分を保存するのかを識別する労力はまだ必要となります。加えて、保存と復元のプロセスは、再起動の間にコンテンツが欠落したりアプリのUIが変化したりといった、不測の事態に備えてカスタマイズすることができます。
ステート保存についてより詳細な情報は、iOS App Programing Guideを参照してください。


かみやん:ibisMailでは、これ自力でやってますね。システムが面倒見てくれると楽になりますね。

オートレイアウト

オートレイアウトは、以前にUIの要素をレイアウトするために使用された「スプリング・ストラット」モデルを改良したものです。オートレイアウトでは、アプリのUIの要素をレイアウトする方法についての規則を定義します。これらのルールは、スプリング・ストラットモデルよりも、より関連の大きなクラスを表現し、より直観的になります。
オートレイアウトで使用されるエンティティは、制約と呼ばれるObjective-Cのオブジェクトです。この方法は、多くのメリットをもたらします。

  • ローカライズで文字列を交換したときに、レイアウトを修正しなくてよい
  • ヘブライ語やアラブ語のような右から左の言語のときにUI要素を反転しなくてよい
  • ビュー内のオブジェクトとコントローラーレイヤーの間での調整がよりよくなる

大抵、ビューオブジェクトは親ビューと関連する兄弟ビューの中で標準的なサイズと位置についてのベストを知っています。コントローラは、なにかしらの理由で非標準を要求されたときは、それらの値を上書きすることができます。
オートレイアウトについてより詳細な情報は、Cocoa Auto Layout Guideを参照ください。


かみやん:オートレイアウトの発表のときはMac向きな機能だなと思ったら縦長iPhone5のためだったか?拘束ベースで、ここのビューだけ高さを拘束しないけど、他のビューは上に拘束とか下に拘束みたいにするのかな。

データプライバシー

位置情報に加えて、システムは新たに次のユーザのデータにサードパーティアプリがアクセスする前にユーザに許可してよいかを問い合わせます。

  • 連絡先
  • カレンダー
  • リマインダ
  • フォトギャラリー

連絡先、カレンダー、リマインダデータでは、アプリはそれらの項目にアクセスが拒否された場合に備えて準備をしたり、拒否に応じて動作を調整したりする必要があります。もしアクセス許可のプロンプトを表示してない場合は、得られるデータ構造は有効ですが、レコードはありません。もしユーザがアクセス拒否をしたらアプリはNULL値か空のデータを得ます。もしユーザがアプリに許可を与えたら、システムはデータをリロードしたり復元したりする必要があることをアプリに通知します。
フォトライブラリでは、既存のUIで、アクセス拒否に対応しています。
アプリはInfo.plistファイルでどのようにデータを使用するつもりであるかの説明を提供をすることができます。アクセスのためにシステムがプロンプトを表示する必要があるときにユーザにその説明が表示されます。
Info.plistファイルにどのキーを足す必要があるのかについての詳細は Information Property List Key Referenceを参照してください。個別のデータへのアクセスについては、関連するフレームワークリファレンスを参照ください。


かみやんガラケーiアプリのときはプライバシーガチガチで自由度がなかったけど、初めてiPhoneAPIをみたときは緩すぎて怖かったけど、やはりつきましたね。が、しかし、アプリディベロッパからしたらサポートが増えるだけ。。ibisMailもibisPaintも連絡帳の名前が表示されませんとか、画像がフォトライブラリに保存できませんとか、よく来ます。。

フレームワークの機能拡張

前の節で説明した項目に加えて、以下のフレームワークは、追加の拡張機能を持っています。新しいインターフェースの完全なリストについては、iOS6.0 API Diffを参照してください。

UIKitフレームワーク

  • UIステート保存が新たにサポートされました。UI State Preservationを参照してください
  • ビューは制約ベースレイアウトに新たに対応しました。 Auto Layoutを参照してください
  • UICollectionViewクラス(とそれをサポートするクラスとプロトコル)は、順序づけられた項目を表示することをサポートします。Collection Viewsを参照してください
  • UITextViewとUITextFieldは新たにアトリビュート文字列を使ってスタイル付きのテキストをサポートしました。
  • UIKitは新たにNSAttributedStringとNSMutableAttributedStringオブジェクトの描画をサポートしました。そして文字列ベースのビューは新たにコンテンツのためにアトリビュート文字列をサポートしました。
  • アクセシビリティは新たにボイスオーバーを拡張しました
    • ボイスオーバーは特定のアクションをトリガーにする新しいジェスチャーが使えるようになりました。
    • 開発者は、要素から要素へ、より論理的なフローを提供するためにボイスオーバーが生成する要素のリストの項目を一括で並べることができます。
    • スクロールビューは新たにスクロール中に特別な状態の文字列を提供できるようになりました。
    • アプリは新たに、アクセシビリティシステムがアプリのレイアウトやUIが変化したことを知るために通知を送ることができるようになりました。
    • 新しい通知はボイスオーバーのお知らせの状態についての情報を提供します。
  • UIActivityViewControllerクラスはメールやTwitterFacebookのようなサービスを通じてコンテンツをシェアするための機能が追加されました。Social Frameworkを参照してください。
  • UIDeviceクラスはベンダー固有IDが追加されました。
  • UIImageクラスは新たに、画像の拡大縮小率を指定するための初期化メソッドが追加されました。
  • アピアランス(見た目)のカスタマイズは、UIBarButtonItemやUIPageControlやUIPageViewControllerやUISwitchやUIStepperクラスにも追加されました。
  • UITableViewクラスは以下の変更があります。
    • 新しいUITableViewHeaderFooterViewクラスはテーブルのヘッダとフッタを実装します。
    • セルや他のビューの生成と管理をより簡素なモデルにしました。
  • ストーリーボードは、アプリがセグウェイの巻き戻しと復元IDの指定ができるようになりました。
  • UIWebViewクラスは、WebコンテンツのインクリメンタルレンダリングをOFFにする方法が提供されました。
  • UIViewControllerクラスは次のような動作をサポートする新しいインターフェースが追加されました。
    • 新しいインターフェースは画面の回転を管理したり追跡したりする分かりやすいパスが提供されました。
    • アプリはトリガーされるセグウェイを拒否できるようになりました。
    • セグウェイの巻き戻しが追加されました。
  • UINavigationBarをサブクラス化して、アプリのナビゲーションUIにカスタムナビゲーションバーを協調させることができるようになりました。

UIKit frameworkのクラスについて詳細な情報は、UIKit Framework Referenceを参照してください。


かみやん:ベンダー固有IDされましたね。UDIDが非推奨になった代わりでしょうね。同じディベロッパー内ならデバイスを一意に識別できると。

OpenGL ES

OpenGL ESは次の新しい拡張があります。

  • GL_EXT_texture_storage拡張は、1コールでテクスチャの全体の構造を指定することができ、アプリのテクスチャをOpenGL ESによってさらに最適化できます。(訳注:テクスチャフォーマットの変更ということか?)
  • GL_APPLE_copy_texture_levels拡張は、GL_EXT_texture_storage拡張の機能の上に構築され、テクスチャのミップマップ集合をテクスチャからテクスチャへコピーできます。(訳注:ミップマップごとコピーということか)
  • GL_EXT_map_buffer_range拡張は、バッファオブジェクトの一部だけを変更する必要があるときにパフォーマンスを改善します。
  • GL_APPLE_sync拡張は、アプリにファインゲイン同期を提供します。これはアプリが送るOpenGL ESコマンドの一部を選択したり、それらのコマンドが完了するまで待ったりすることができます。(訳注:CPUとGPUで同じメモリにアクセスなどのための同期機構らしい)
  • GL_EXT_shader_framebuffer_fetch拡張は、OpenGL ES 2.0アプリにのみ有効で、フラグメントシェーダーでフレームバッファのデータの読み取りをサポートします。

これらの拡張は、iOS6が走るすべてのデバイスで有効です。いつものようにアプリで使う前に拡張があるか確認してください。


かみやん:これは嬉しい!フラグメントシェーダーではフレームバッファは出力先でしかなかったが読み取りもできるようになった。

メディアプレイヤーフレームワーク

MPVolumeViewクラスは音量ビューの見た目をカスタマイズする新しいインターフェースが追加されました。アプリはボリュームスライダーとルーティングボタンに関連付けられた画像を変更するためのインターフェースを使うことができます。
MediaPlayerフレームワークのクラスの情報について、詳細はMedia Player Framework Referenceを参照してください。

Image IO フレームワーク

Image IO framework(ImageIO.framework)は、画像のEXIFIPTCメタデータにアクセスする方法が追加されました。アプリはCGImageSourceRefとCGImageDestinationRefのオパキュータイプに関連した関数を使ってメタデータにアクセスできます。
Image IO frameworkのクラスについての情報の詳細は、Image I/O Reference Collectionを参照してください。

iAdフレームワーク

iAd framework(iAd.framework)は、iPadバイス用にミディアム矩形サイズを新たにサポートしました。iAd frameworkのクラスについての情報の詳細は、iAd Framework Referenceを参照してください。

Foundationフレームワーク

Foundation framework(Foundation.framework)は次の拡張が含まれます。

  • NSFileManagerクラスはiCloudの利用可能判定のためのubiquityIdentityTokenメソッドが追加され、また、iCloudにユーザがログインしたりログアウトしたりアカウントが変更されたことを伝えるためにNSUbiquityIdentityDidChangeNotification通知が追加されました。
  • NSUUIDクラスは様々なタイプのUUIDを表現するオブジェクトを生成するのに役立ちます。例えば、アプリはRFC4122ver.4のランダムなバイト列としてNSUUIDオブジェクトを作成したり、既存のUUID文字列をベースにしたりすることができます。
  • NSURLRequestクラスは携帯電話ネットワーク経由のリクエストを許可すべきかどうかアプリから指定できます。
  • NSStringクラスは、すべて大文字へ、すべて小文字へ、単語の先頭大文字への変換メソッドが追加されました。

Foundation frameworkのクラスについての情報の詳細は、Foundation Framework Referenceを参照してください。

外部アクセサリフレームワーク

External Accessory framework(ExternalAccessory.framework)は、Bluetoothバイスへの接続を管理するための新しいインターフェースが含まれます。アプリはペアリングのために有効なBluetoothバイスのリストのアラートパネルを表示することができます。自動接続しない以前にペアリングされたアクセサリーを起こす機能が提供されます。
External Accessory frameworkのクラスについての情報の詳細は、External Accessory Framework Referenceを参照してください。

Event Kitフレームワーク

Event Kit fremework(EventKit.framework)は次の拡張を含みます。

  • フレームワークは、リマインダの生成をサポートします。Remindersを参照してください。
  • カレンダーとリマインダのイベントは新しくサーバ上の同じイベントを複数のデバイスで参照するための外部識別子を提供します。
  • iOS6以降にリンクしたアプリのために、システムはカレンダーやリマインダデータにアクセスする前にユーザに許可を取ります。
  • アプリは新たにEKEventEditViewControllerオブジェクトからプログラム的に編集をキャンセルさせることができます。

Event Kit frameworkのクラスについての情報の詳細は、Calendar and Reminders Programming Guideを参照してください。

Core Video フレームワーク

Core Video framework(CoreVideo.framework)は2つの新しいピクセルフォーマットに対応しました。これらのフォーマットは、OpenGL ESと協調する1チャンネルと2チャンネルの画像のための効率的な保存方法を提供します。Core Video frameworkの関数についての情報の詳細は、Core Video Framework Referenceを参照してください。

Core Media フレームワーク

Core Media Framework(CoreMedia.framework)は基本メディアタイムサービスビヘイビアとして定義されたCMColockRefとCMTimebaseRef型を追加しました。Core Media frameworkの関数についての情報の詳細はCore Media Framework Referenceを参照してください。

Core Location フレームワーク

Core Location Framework(CoreLocation.framework)は次の変更を含みます。

  • CLLocationManagerオブジェクトは新たにユーザが長い間行っていない場合にロケーションイベントの配信を一時停止します。この動作はフレームワークGPSや他のハードウェアをOFFにすることによってバッテリーを節約します。これはデフォルトで有効ですが、CLLocationManagerオブジェクトのpausesLocationUpdatesAutomaticallyプロパティの値を変更することでこのバッテリー節約機能をOFFにできます。アプリは、CLLocationManagerのactivityTypeプロパティの値を適切な値に設定することで使用方法を基にした位置の精度の向上ができます。このプロパティは現在、車での移動とフィットネス(訳注:散歩とかジョギングと思われる)を区別させることができます。

Core Location frameworkのクラスについての情報の詳細は、Core Location Framework Referenceを参照してください。

Core Bluetooth フレームワーク

Core Bluetooth framework(CoreBluetooth.framework)は、ペリフェラルモードでBluetoothバイスと通信することをサポートします。いままでiOSバイスはセントラルモードでのみ通信できたが、新たにiOSバイスペリフェラルモードで自分自身をアドバタイズ(訳注:発見される側として待つ状態)でき、他のiOSバイスと通信できる。
Core Bluetooth frameworkのクラスについての情報の詳細は、Core Bluetooth Framework Referenceを参照してください。


かみやん:Bluetooth4.0では省電力モードができ、ボタン電池で1年動作するBluetooth対応小型機器等が作れるようになり、それにより腕時計や脈拍計などの機器が発売されてきている。これらのデバイスペリフェラルバイス(周辺機器)と呼び、親側をセントラルデバイスと呼ぶ。ここでは、今まではiOSバイスがセントラルデバイスのみであったが、これからはペリフェラルバイスとしても動作させることができるということを指しています。

Core Audio

Core Audioフレームワークファミリは次の変更を含んでいます。

  • 比較的長いタイムスライスを使用して、優先順位の低いスレッドで処理することができる新しいAUDeferredRendererオーディオユニットができました。
  • AudioQueueProcessingTapオーディオユニットは、オーディオキュー内のデータに割り込み、それを処理することができます。

iOSで利用可能なオーディオ技術についての情報の詳細は、Multimedia Programing Guideを参照してください。新しいオーディオユニットについての情報の詳細は、Audio Unit Component Services Referenceを参照してください。

AV Foundation フレームワーク

AV Foundation framework (AVFoundation.framework)は、次の拡張を含みます。

  • AVPlayerクラスは外部のタイムソースに再生を同期するための機能が追加されました。シングルプレイヤーオブジェクトは、HTTPライブストリームおよびファイルベースアセット(プログレッシブダウンロードされているファイルとローカルファイルの両方を含む)の両方を再生することができます。そして、アプリは同じプレイヤーオブジェクトのビデオ出力を表示するために複数のAVPlayerLayerオブジェクトを使用することができます。
  • 新しいAVPlayerItemOutputクラスは、アプリがそれらを処理できるように、再生中に復号化されたビデオフレームをAVPlayerItemオブジェクトとして取得することができます。
  • AVAssetResourceLoaderクラスを使用すると、アセットのロード処理にデリゲートオブジェクトを挿入して、カスタムリソースリクエストを処理できるようになります。このクラスは、AVURLAssetクラスと共に動作します。
  • AVAudioSessionクラスは新しく使用中の現在のオーディオルートについての情報を公開します。
  • AVAudioMixInputParametersクラスは、オーディオデータが再生され、読み込まれ、公開される前にそのデータにアクセスするために使われるMTAudioProcessingTapRefデータにアクセスする機能を提供します。
  • AVAudioSessionクラスは次の拡張を含みます。
    • 割り込みや変更を検出するためのオーディオセッションデリゲートの使用は、新しい通知セットにより使用非推奨になりました。
    • オーディオセッションは複数のオーディオハードウェアデバイスのルーティングを許可する新しいAVAudioSessionCategoryMultiRouteオーディオカテゴリをサポートします。
    • オーディオセッションは、ムービー再生のシナリオのための適切な出力信号処理をする新しいAVAudioSessionModeMoviePlaybackモードをサポートします。
  • AVCaptureConnectionクラスは、アプリでビデオ受信においてビデオの安定化のための機能をON/OFFすることができます。
  • AVCaptureMetadataOutputクラスは、キャプチャコネクションオブジェクトによって発行されたメタデータに割り込むための新しいクラスです。
  • AVMetadataFaceObjectはAVCaptureMetadataOutputオブジェクトによってキャプチャされた顔認識の報告をする新しいクラスです。
  • AVTextStyleRuleクラスは、字幕やクローズドキャプション(訳注:ON/OFFできる字幕)や他のテキスト関連メディアアセットのためのオプションのスタイルを指定するための新しいクラスです。
  • AVAudioPlayerクラスは、MPMediaLibraryクラスから取得したURLを使ってユーザのiPodライブラリからオーディオアイテムを再生することができます。

AV Foundation frameworkのクラスについての詳細な情報は、AV Foundation Framework Referenceを参照してください。

Ad Support フレームワーク

Ad Support Framework ( AdSupport.framework )は、広告目的でアプリが使うことができるIDにアクセスする機能を提供する新しいフレームワークです。このフレームワークはまた、ユーザがアドトラッキングにオプトアウトしているかどうかを示すフラグも提供します。アプリは広告IDにアクセスする前にオプトアウトフラグをみて、それに従う必要があります。
このフレームワークについての情報の詳細は、Ad Support Framework Referenceを参照してください。

Accelerate フレームワーク

Accelerate Framework( Accelerate.framework )は、新たにベクタスカラパワー関数、vDSP関数、離散コサイン変換関数、SSE関連ベクター関数、sine関数、vImage関数が追加されました。
Accelerate frameworkの関数についての詳細は、Accelerate Framework Referenceを参照してください。

さいごに

やー、iOS6iOS5からOTAでアップデートできるようになったので、普及は早そうですね。早めにiOS6専用アプリとかを新規に作ってもよさそう。楽しみ楽しみ。
個人的にはOpenGL ESの新機能を触って調べてみたい。
――
よかったらibisMail Free(無料)、ibisPaint X(無料)ダウンロードをよろしくお願いします。
URL:ibisMail Freeのダウンロード、レビューはこちら
URL:ibisMail for iPhoneのダウンロード、レビューはこちら
URL:ibisMail for iPadのダウンロード、レビューはこちら
URL:ibisPaintのダウンロード、レビューはこちら サイトは、ibispaint.com
ご意見ご要望はTwitterから: @kamiyan