Facebook傘下のmBaaS(Mobile Backend as a service)プロバイダであるParseがiOS/OS XおよびAndroidプラットフォーム向けSDKをオープンソース化した。
Parseのエンジニア、Nikita Lutsenko氏が公式発表で書いたところによると、Parse SDKのオープンソース化は、イノベーションを加速化し、コミュニティから学べるようになり、より良いコラボレーションを育てることができると考えて実施されたという。Parse SDKはParseエンジニアがそのサービス構築と課題克服から学んだことすべてを伝えるとLutsenko氏は言う。それを受けて、ParseのエンジニアであるGrantland Chew氏が、Parse SDKの最もチャレンジングなところとその内部動作を掘り下げた一連のブログ記事を発表した。それはいくつかの重要なコンセプトを見ていくところから始まる。
- 非同期API: Parse SDKはBoltsをベースとする非常に非同期なAPIを提供する。BoltsはParseが1年前にオープンソース化したフレームワークで、Future/Promiseの抽象化を提供する。これはオブジェクトの依存チェーンの永続化といった並列非同期処理のシリアライズ化された実行を簡単化するのに使われる。
- 分離アーキテクチャ: Parse SDKパブリックAPIは、その背後にある常に変化する実装に対するファサード(façade)として構成されている。このおかげで、何も壊すことなく、システムを成長させ続け、新機能を追加し続けることができる。Parse SDKのファサードは以下のような抽象化に基づいている。
- オブジェクトインスタンス: APIを安定させ続ける基本の抽象化であり、
ParseObject
プロパティをget/setする手段を提供する。 - ステート: オブジェクトの内部状態を表現する。たとえば
ParseObject
の場合、そのサーバサイド表現、ローカル変更の集合、現在のローカル表現の組み合わせだ。 - コントローラ:
ParseObject
、ParseQuery
、ParseFile
インスタンスで実行されるオペレーションを定義する。またRESTコミュニケーションや、ローカルデータストアのような機能をカプセル化する責務も持つ。
- オブジェクトインスタンス: APIを安定させ続ける基本の抽象化であり、
開発者はParse SDKの実装をのぞくだけでなく、修正したバグをプルリクエストすることができる。