AppleのiCloud、Core Data同期問題で批判される

AppleのiCloud、Core Data同期問題で批判される

iCloudをMacとiOSユーザーのドキュメント、データ、メディアファイルの新たなデジタルハブにするというAppleの野心的な計画は、開発者からの苦情に直面している。報道によると、開発者たちはAppleがデータベース同期に関する問題に対処してくれるとは思っていないようだ。しかし、状況は改善するだろうという期待もある。

Apple が問題に対処するために提供している選択肢が限られていることに不満を抱いた複数のアプリ開発者は、主に Core Data データベースと iCloud の同期に関連する問題に焦点を当てて、ブログ記事で苦情を公表しました。

彼らの苦情はジャーナリストによって取り上げられ、彼らはしばしばこれらの特定の限定的なデータベース同期の問題を Apple のオンライン サービス全体と混同し、iCloud 全体が「壊れていて希望が見えない」と宣言する見出しを生み出し、一方で iCloud を「自動で簡単」だと宣伝しているとして Apple を非難する結果となった。

Apple の口が堅い秘密主義により、同社が特定の問題に対する修正をどのくらい早く提供するかを確実に予測することが難しくなり、開発者の計画を複雑化させている。その一方で、開発者自身の顧客が iCloud のサポート不足や、開発者が iCloud のサポートを追加した後にアプリ内での同期の問題に対して苦情や低評価を大量に送信している。

「AppleがiOS 7でiCloudのすべてを修正し、2年後にようやく問題なく使えるようになったと言ってくれると嬉しいが、あまり期待はしていない」と、匿名のiOS開発者がThe Vergeの「なぜiCloudは『正常に動作』しないのか?」という記事で語った と報じられている。

AppleのiCloudサービスの幅広い範囲

さらに事態を複雑にしているのは、「iCloud」が Apple がほぼすべてのオンライン サービスを漠然とカバーするために使用している非常に広範なマーケティング用語であるという事実です。

一般的に「クラウド」とはインターネットを指し、多くの場合ネットワークベースのサービスを指しますが、最近ではファイルの「クラウドストレージ」を指すこともあります。「iCloud」で行われるすべての処理は、メール、連絡先、カレンダーサービスを含むAppleのサーバー上で行われます。開発者はこれらのサービスに問題を抱えておらず、散発的な中断はあるものの、ユーザーからの苦情はそれほど多くありません。

Appleの様々なデジタルダウンロードおよびショッピングサービス(iTunes、iBooks、iOSおよびMac App Storeソフトウェアにおける業界をリードするメディアコンテンツを含む)も、「iCloud」という傘下にまとめられています。開発者が不満を漏らしているiCloudも、このiCloudではありません。

同社はまた、独自のアプリベースのファイルストレージサービスも提供しており、ドキュメントを「クラウド」に保存し、ユーザーの複数のMacやiOSデバイス、場合によってはウェブからもアクセスできるようにしています。フォトストリーム、「iPhoneを探す」、「どこでもMy Mac」、その他様々なデータ同期サービス(Safariのブックマークやリーディングリストなど)もiCloudに関連付けられた機能です。

これらの機能はいずれも、開発者が報告している iCloud の問題とは直接関係がなく、Apple の便利で一般的に信頼できる (ただし完璧ではない) iCloud が「壊れている」とは思わない 2 億 5000 万人のユーザーの多くが混乱する結果となっている。

AppleのiCloudの暗い面と明るい面

サードパーティ製アプリ開発者にとって、iCloud に関する主な問題は、自社アプリとクラウド間でデータベースを確実に同期(そしてデバイス間で同期を維持)できないことです。この問題は、アプリ内のデータ管理と保存を簡素化し、開発者がソフトウェアタイトル独自の側面に集中できるように設計された Apple のフレームワーク、Core Data によって解決されます。Core Data 自体は、多くの開発者から高く評価されています。

Appleは2005年のMac OS X TigerでCore Dataを導入し、iOS 3.0でApp Store開発者向けに公開しました。Core Dataにより、開発者はユーザーのデータをオブジェクトとして扱うことができ、データの保存と取得の複雑な処理の大部分を開発者が処理できるようになります。Core Dataフレームワークは、さまざまなタスクに適したデータの保存方法のオプションを提供します。シンプルなXMLテキストファイルまたはバイナリデータ(どちらも標準ファイルの例)、あるいはSQLiteデータベース(専用のトランザクションを介してアクセスおよび変更される整理されたデータを含む特殊なファイル)のいずれかです。

AppleがiCloudを導入した際、サービスの新機能「ドキュメント&データ」をCore Dataフレームワークに統合しました。これにより、アプリは使い慣れたフレームワークを活用して、iCloud経由でアプリのデータを保存・取得できるようになりました。ドキュメントベースのデータファイルや、環境設定などの単純な「キーと値のペア」であれば、iCloudは非常にうまく機能するようです。

Appleの開発者向けドキュメントには、「iCloudの根底にある考え方は、デバイス間の明示的な同期を排除することです」と説明されています。「ユーザーは同期について意識する必要はなく、アプリはiCloudサーバーと直接やり取りすることはありません。このドキュメントで説明されているiCloudストレージAPIを採用すると、iCloudアカウントに接続されたすべてのデバイスに変更が自動的に反映されます。ユーザーはどこからでも、安全で一貫性があり、透過的に個人コンテンツにアクセスできるようになります。」

実際にアプリに iCloud サポートを実装するのは簡単なことではありません。Apple 自身も、Mac OS X Mountain Lion に組み込まれたさまざまなアプリに iCloud サポートを追加するのに約 1 年を費やし、iWork アプリの iOS バージョンと Mac バージョンの間で iCloud ベースのファイルを動作させるのにさらに時間がかかりました (以下に表示)。

iCloudドキュメント同期

SQLiteデータベースへの増分変更をiCloudと同期するという、より野心的な取り組みは、さらに複雑です。複数の開発者が、この作業がそもそもうまくいかないことにかなりのフラストレーションを感じていると報告しており、ユーザーの予期せぬ行動によって作業が複雑化しています。例えば、デバイス上でiCloudからログアウトし、新しいユーザーとしてログインするといったことが、状況をさらに複雑にしています。

Appleは自社アプリにドキュメントベースのiCloud同期を実装していますが、Apple自身も子会社のFileMakerも、iCloudと同期したSQLiteデータベースをあまり活用していないようです。Appleがまだ活用していないのであれば、サードパーティ開発者向けにも十分に整備されていないことは間違いありません。

イノベーションのジレンマ

MacとiOSプラットフォームは、Core Dataのアーキテクチャ(およびiCloudとの統合)を活用して、数々の革新的な機能を提供しています。自動保存からバージョン(後述)、Time Machineに至るまで、あらゆる機能が、ユーザーの作業を段階的に保存するという斬新なコンセプトを活用しています。これにより、作業のロールバック、アーカイブ、さらにはデバイス間のリアルタイム同期が可能になります。Appleは過去数年間にわたり、これらの機能(および基盤となるフレームワーク)を展開し、段階的に強化してきました。

ライオンバージョン

その間、Apple の批評家たちは、同社がリリースしたハードウェアの新製品やソフトウェアのアップデートにまったく満足していないと不満を漏らす一方で、新機能の展開に Apple がしばしば積極的に計画した結果生じた変更や成長痛についても不満を漏らしてきた。

Apple の iCloud 問題 (および、より広義には OS X と iOS のすべて) に対する代替解決策としては、あらゆる面でイノベーションを大幅に縮小する (競合他社が追いつくことを可能にし、批評家が Apple は「イノベーションが不十分だ」という苦情を増幅させる)、Google が新しいソフトウェアや機能に対する厳しい批判を避けるために行っているように、新しいソフトウェア機能に「ベータ」警告を出す (Apple が Siri で行ったように、実際には効果はなかった)、または、さまざまなプロジェクトに取り組む大規模なチームを編成する (開発を複雑化し、キャンパスが混雑し、資格と経験のある開発者を雇うのが難しいため、会社がすでに苦労している人員配置と運用の問題を増やす) のいずれかが考えられます。

真の解決策は簡単には見つからない

モバイル開発プラットフォームで唯一提供されるクラウド同期型のリレーショナルデータベースアーキテクチャを完成させるのは、時間のかかる大きな課題です。未完成、あるいは少なくとも未完成な現状のシステムでサードパーティ製アプリを動作させるのもまた容易ではありません。不満を言う方がずっと簡単で、単純な解決策(開発者をもっと雇う!「とにかく動くようにする!」など)を提案するのもほとんど手間がかかりません。これまでのところ、これらの点では大きな進歩が遂げられています。

さらに複雑なのは、Appleが開発者に対し、アプリでCore Dataを採用し、iCloudをサポートすることを強く求めていることです。一部のアプリでは、このことが開発者を限界まで追い詰め、エンドユーザーから使い勝手に関する苦情がさらに増える事態となっています。

この問題の解決は複雑であり、AppleがCore Dataの開発に着手した理由そのものと言えるでしょう。複数のデバイス間でデータベーストランザクションの同期を管理するのは、特にサードパーティ製アプリケーションが非常に特殊なユースケースに遭遇したり、顧客の様々な特殊な状況に対応する必要がある場合、非常に困難です。こうした複雑さこそが、アプリ開発者が多大な労力と費用をかけて独自のカスタムソリューションを開発するのではなく、AppleにiCloudのデータベース同期の問題を修正してほしいと考えている理由です。

アプリ開発者やユーザーが同期の問題に遭遇した場合、解決は困難で費用もかかる可能性があります。さらに、Appleは現在、破損したデータベースやiCloud内で不適切に同期されたデータを復旧するための強力なツールを提供していません。多くの場合、ユーザーにとって唯一の選択肢は、iCloudから既存のデータを削除して最初からやり直すことかもしれません。

解決策は一つ:自分でやる

開発者のスティーブ・ストレザ氏は、「データの同期は現実的に困難であり、ネットワークの可用性は必ずしも安定していたり​​高速だったりするとは限りません(特にモバイル端末の場合)。アップデートや問題に対処するには、分かりにくいコードを大量に書かなければなりません」と書いています。

AppleのiCloudチームについて、彼はこう付け加えた。「彼らの取り組みは非常に困難であり、これほどの規模の問題をあらゆるアプリに適用できる方法で解決しようと努力しているチームには、深い敬意を抱いています。しかし、共感だけではビジネスは成り立ちません。もちろん、DIYソリューションの欠点は、本当に本当に難しいということです。」

ストレザ氏はさらに、独自の同期インフラを構築することとAppleのiCloudを利用することのメリットとデメリットについて、より詳細に議論しました。「iCloudは素晴らしいアイデアではありますが、ほとんどのアプリですぐに使える状態ではなく、終わりのない頭痛の種となり、Apple製品専用のアプリ開発に永遠に縛られてしまうでしょう」と結論付けました。

十分に進歩した技術は魔法と区別がつかない

一部の開発者は、AppleのiCloudにおけるCore Dataデータベース同期へのアプローチ全体に懐疑的な見方を示していますが、同社はこの技術に多額の投資を行ってきました。また、iCloudをホストするための大規模な新データセンターの開発にも数十億ドルを費やしており、iWebや以前のMobileMe機能、あるいはGoogleが最近RSSリーダー、CalDAVカレンダー同期のサポート、ActiveSyncプッシュGmailで行ったようなプロジェクトをAppleが放棄する可能性は低いでしょう。

さらに、Appleの最近の経営陣の再編は、Core Dataに関するiCloudの根本的な問題の解決に焦点を絞るのに役立つ可能性を示唆しています。Core Dataフレームワークは、スティーブ・ジョブズ率いるNeXTが90年代初頭にエンタープライズ・オブジェクト・フレームワーク(EOF)の開発で培った成果を再利用したものです。オリジナルのEOFは、NeXTおよびWebObjectsアプリを大規模データベースと統合することを可能にしました。Core Dataは、この技術を再利用し、デスクトップ開発者が直面する問題を解決するために開発されました。

オリジナルの EOF プロジェクトは、NeXT で Craig Federighi によって管理されていました。彼は 1996 年に Apple が NeXT を買収した際に Apple に入社し、2001 年に Apple が EOF を Java に移植することを決定して事実上 EOF を破壊した後に退社しました。

次のEOF

2009年、AppleがEOFをCore Dataに変換する作業を完了した後、当時AppleのOS X責任者であったBertrand Serlet氏は、Federighi氏をOS Xの開発に復帰させた。2年後の昨年8月、Serlet氏は引退を発表し、後任としてFederighi氏をAppleのOS X開発のリーダーに任命した。

当時、サーレット氏は「クレイグは過去2年間、Mac OSチームのマネジメントで素晴らしい仕事をしてきた。Lionは素晴らしいリリースであり、移行はシームレスに行われるはずだ」と述べた。

3ヵ月後、アップルの最高経営責任者ティム・クックは、スコット・フォーストールをiOSの責任者から解任し、OS XとiOSの両方をフェデリギの指揮下に置くという新たな人事を発表した。

Core Dataの進展を期待する開発者にとって、EOFの元開発者が現在iOSを管理しているという事実は、少なくとも朗報と言えるでしょう。AppleのOSチームがフェデリギ氏の指揮の下、この1年間でどのような成果を上げてきたかはまだ分かりませんが、少なくともWWDCでiOS 7、OS X 10.9、iCloud v3の計画の詳細が発表されるまで、あと数ヶ月しかありません。