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でも同じコードが動く、ということ。それ以外にも微妙に違っている。
いつものことだけどつぎつぎ新しいAPIが導入されて、こっそり古いAPIが削除されていく。互換性のためにAPIそのものがすぐになくなるというわけではないけれど、ヘッダファイルはさっさとなくなってしまう。5年で横井さん小野田さん、10年で浦島太郎だもんな。
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年で浦島太郎だもんな。
2011-07-01 21:55
nice!(0)
コメント(0)
トラックバック(0)
コメント 0