いよいよWWDC。最後にWWDCに行ってから、随分長いですが、毎回行きたいとはおもってるんですが、あいかわらず行けません。

ちまたでは、iCloudが大きな話題です。前からAppleのノースカロライナのデータセンタの話は、とても大きな何かの一部では無いかとおもっていて、iCloudの話には大きな興味があります。

過去に少しTweetしたりしてるんですが、前から気になっていることを、少し整理して、書いておきます。


モバイル端末の能力とシンクライアント化とクラウド

モバイル端末の能力は、バッテリ効率の点で、プロセッサ能力、メモリの量等の上でのバランスが重要だと思います。ここで、過去のiPhoneのCPU性能を見ると、チップの能力から最大限のクロックを使うのではなく、一段遅くしてバッテリ効率を稼ぐアプローチを取っているように思えます。たとえば、iPhone4とiPad(1)ではプロセッサは同じA4だけれど、バッテリ容量の小さいiPhone4は、クロック落としているようです。

一方、ユーザの視点であれば、もっとモバイル端末を高度に使いたいという要望があるわけで、アプリケーション視点では、プロセッサ能力は上げられればそれに越したことは無いわけです。アプローチは、シンクライアントだったり、ある種のクライアントサーバ型モデルだったりします。Google検索のようなクラウド系のサービスも、ある種のシンクライアント型に近いと言えるでしょう。また、最近登場してきているiPhone用の音声認識ソフト等は、要素を取り出すのを端末でやり、認識処理をサーバ側でやるようになっていて、今後、この手のアプローチは増えると思います。

僕は、ブラウザをフロントエンドとしたシステムだけがクラウドでは無いのではないかなと思っていて、クラウドの活用で、モバイル端末の能力のバランスをとれるんじゃないかと思っています。


Closure と Grand Central Dispatchとタスクの細分化

一方、モバイルにも使われ始めていますが、マルチコアのシステムの能力を、上手に使い切るのは、難しいことです。ある種の言語を用いると上手に使い切れるというのもあると思いますが、とりあえず、ここでは置いておいて、いわゆる逐次実行を前提とした言語を考えます。

この手のシステムの場合、実行コンテクストを何らかの方法で上手に多重化する必要があり、典型的には同期が問題になるわけです。(イベントドリブン型のNode.jsなんかも、関連した話題になりそうだけど、これも置いときます。)

CPU能力を使い切るという意味でいうなら、細かくタスクを分割して順次処理するようにキューに積み、それを順次実行するようにすれば良いと考えられます。一方、タスクを分割し、あとで実行させるように詰んで行くのは、既存の言語環境とライブラリのデザイン方式では、難しく、プログラマの立場でいうなら、大きな負担があります。

ここで、ある種のショックを受けたのは、Appleの技術者がCにClosureを導入し、Closure単位でディスパッチキューに詰んで実行する仕掛け(Grand Central Dispatch)を提案したことです。Closure単位で詰むことができれば、プログラミングはとても容易になります。そして、システムレベルでディスパッチキューが管理されることで、上手にプロセッサ能力を使い切ることが出来ます。

プログラミングする立場で言えば、Closure+GCDを使うようにプログラムを書いてさえいれば、利用可能なプロセッサの能力に応じて処理能力がスケールします。


iOS5 + Lion + iCloud の正体(の妄想)

ここで、GCDがローカルプロセッサのものだけでなく、自宅にある比較的能力の高いデスクトップ等、自分の持っている計算資源を統合して使えるようになったり、あるいは、クラウドで用意されている計算資源を組み合わせて使うことが出来るようになれば、蛇口を捻って水をだすように、計算能力を使うことが出来るようになります。TimeCupsuleやAppleTV等のデバイスも全て一緒に動くとしたら?

僕は、iCloudの正体は、実は、これではないかと思っているのですが、はたしてどうでしょう。

たとえば、デベロッパは、フロントエンドにあたるAppとバックエンドで動くAppを登録でき、組み合わせ実行できるとしたら?通信の遅延の問題とか、帯域の問題とかはあるんだけど、上手にやると面白そうです。

レコードレーベルの話もあるわけですが、正直、ユーザのストレージの代行を単にするだけなら、Appleが自分でやらなくても良いかもしれない。大きめのDCをあれだけコストかけて準備するのは、それなりの理由があるんじゃないか、きっと、そこにとどまらない何かがあるんじゃないかなぁと、期待してたりしします。

そんなわけで、明日のKeynote、リアルタイムで見られるかどうか分かりませんが、大いに期待しています。


blog comments powered by Disqus