SSブログ

WWDC2011セッションビデオ [プログラミング]

先日のAppleのWWDCでのセッションを収録したビデオが公開された。Developer programのメンバでなくても見ることができる。いくつか気になるトピックがある。

SandboxをOSがサポートするための新しいプロセス間通信であるXPC

I/O Kitのなにが変わったのか調べないといけないUserland Devie Accsess

retain/release/autoreleaseをコンパイラが自動的に生成するというAutomatic Reference Counting

Core ImageがiOSでも使えるようになった。あんなのどうすんだ。

それどころかvDSP、BLAS、LAPACK、vImage、vForceまでiOSに乗るらしい。どうすんだ?

さらには、アプリの終了前の状態を全部保存して、立ち上げ直したときにそのまま継続できる、というのをOSがサポートするResume。しかしそのためにはアプリで使うすべてのオブジェクトをNSCoderに対応しないといけないみたいで、結構しんどい。そのかわり自動終了(OSが仕事をしていないアプリを終了させてリソースを再配分する)というおまけがついてくる。それはいいかも。

いっぱいチェックしないといけないのがあるけど、まず、AV Foundationのビデオをぼーっと見た....

ビデオを見ると、AV FoundationはやっぱりQT Kitを置き換えるものだということがわかった。一番の違いはQT KitがMac OS Xでだけ動作するのに対して、AV FoundationはiOSでも同じコードが動く、ということ。それ以外にも微妙に違っている。
GPUを自動的に使う
OpenGLを生で呼ばなくてもいいらしい。CoreVideoとの関係はよくわからない。CoreImageを使ってフィルタをかけるなんていう場合どうするのかはQT Kitと同じでいいのか、よくわからない。
AVAsset
リソース管理のためのクラスであるQT KitのQTMovieが、さらに抽象化の進んだAVAssetというクラスに置き換えられた。
KVOの多用
これまでdelegateが使われていたような場面でKVO(Key Value Observing)が使われるようになった。KVOはdelegateにくらべてオーバーヘッドは大きいけれど柔軟性はずっと高い。むしろ通知(NSNotification)に近い使い方ができるが、レイテンシは通知ほど大きくなく、慣れると使いやすい。AV Foundationだけでなく、これまでコールバックをdelegateを使って表現していたところはKVOで置き換えられるのだろう。
Blockの多用
クロージャの1種である10.6から導入されたBlockをコールバックに指定するようになっていることが多い。これはAV FoundationがGCDを内部で使って、重くなりがちなムービーのレスポンスをよくしようという発想だろう。これは正解だな。でもBlockって使いにくい。
ストリーミング対応
StaticモデルとDynamicモデルという区別ができた。Staticは普通のローカルあるいはネットワーク越しのファイルを扱う場合で、Dynamicというのはストリーミングを扱う場合らしい。Dynamicでもバッファリングはそれなりに書く必要がありそうな感じ。
AV Capture
AV Captureは別セッションになっていた。もうこれはQT Kit Captureそのまま。QTCaptureSessionがAVCaptureSesseionというふうにただ名前が違うだけ、と考えていいらしい。クラス構成もまったく同じ。ビデオの最初の方で、歴史が紹介されて古いQuickTimeのSequenceGabberのコードは今でも動く、と自慢してた。たしかにそうだけど、ペアで使う前提のQuickDrawのメモリマネジメントのコードはもう動かない。QuickDrawぬきでSequenceGrabberを使えるようにするぐらいならQT Kitに書き換えるよな、普通。

いつものことだけどつぎつぎ新しいAPIが導入されて、こっそり古いAPIが削除されていく。互換性のためにAPIそのものがすぐになくなるというわけではないけれど、ヘッダファイルはさっさとなくなってしまう。5年で横井さん小野田さん、10年で浦島太郎だもんな。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立07/01献立07/02 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。