4/30 に開催された f8 のキーノートでは、Facebook Platform が今後いかに安定して API を提供していくかについて、1) コア API の動作保証期間、2) API のバージョニング、 3) バグ報告への早期対応、という観点から発表がありましたので紹介します。

API の動作保証期間

これまでも Facebook Platform では頻繁に仕様変更が行われ、そのたびに開発者が悲鳴をあげていました。毎月、次の 90 日以内で対応し無くてはならない仕様変更が発表され、結果として毎月何かしらの対応を強いられていた次期や、そのペースが若干落ち着き、4 半期に一度の発表と翌 90 日間の対応となった時期などです。
2011 年の f8 に参加した際のレポートはここに書きましたが、この時の Open Graph Action と Object の発表によって、Facebook 内外を問わずユーザとその周りのあらゆるものを繋ぐという目標にだいぶ近づいたのではないかと思います。その影響もあってか、それ以前に比べれば仕様変更のペースも落ち着き、ドキュメントも整理され、プラットフォームとして成熟してきたような印象です。
そして昨日の f8 キーノートではついに、コア API は 2 年間動作を保証することが発表されました。 仕様変更の発表から 90 日の猶予期間しかない状態に比べれば、とても安心感があると思います。

API のバージョニング

こうして 2 年間は動作が保証されることになりましたが、その間にも新しい機能が追加されたり仕様が変更されるのは変わりません。それらの異なる仕様が共存できるよう、API がバージョニングされるようになりました。更新ログによれば、今回の f8 以前の仕様で動いているものが Version 1.0 や v1.0 と呼ばれ、それより後のものが Version 2.0 や v2.0 となります。今後は 2.1 や 2.2 などと増えていくようです。API にメジャーな変更があれば新しいバージョンが追加されます。

We're using the term 'Version 1.0' or 'v1.0' to talk about the APIs as they existed before we introduced versions, meaning before April 30, 2014 (the date of f8). 'Version 2.0' or 'v2.0' covers APIs that we are changing or launching at f8 2014. Later versions will be called 'Version 2.1', 'Version 2.2', and so on. They'll be launched whenever we make a breaking change to the API.

現行の v1.0 がサポートされるのは今後 1 年間のみですが、2.0 以降は先述の動作保証期間に従って 2 年間動作します。

10333112_605697729514600_969655318_n


バージョンの指定方法は一般的なもので、これまで /OBJECT_ID/CONNECTION_TYPE といった形式でエンドポイントを指定していたのが、/VERSION/OBJECT_ID/CONNECTION_TYPE 形式に変わるだけです。バージョンが指定されない場合は、その時点で提供されている最も古いバージョンの呼び出しとして扱われますので、既存のアプリを改修して今すぐバージョン指定しなくてはいけないというわけではありません。また、サポート期限の切れたバージョンを指定している場合も、サポートされているバージョンの中で最も古いバージョンの指定として扱われます。

851581_548985311885834_1878986979_n


ただ、ここで気をつけたいのが以下の文章です。

For apps that existed before April 30th 2014, making an API call without specifying a version number ('unversioned') is equivalent to making a call to the v1.0 of the API.
For apps created on or after April 30th 2014, making an API call without a specifing a version number is equivalent to making a call to v2.0 of the API.
2014-04-30 より前に登録されていたアプリであれば、バージョン指定をしない API 呼び出しは v1.0 利用とみなされます。それ以降の登録ならば v2.0 への呼び出しとして扱われます。

つまり、今の時点で新規にアプリ登録すると、呼び出し時にバージョン指定をしなくても v2.0 指定と同等になるということです。v1.0 のサポートが切れるまでの 1 年間は、v1.0 を利用しているつもりが実は v2.0 だった、ということが起こりえます。「バージョン指定がない場合はその時点の最も古いもの(v1.0)」とだけ覚えていると開発者コミュニティで質問していて話が合わないということになるので気をつけましょう。また、誰かの質問している現象が再現できない時など、いつ作成したアプリか聞いてみたら原因がわかるということもあるかもしれません。
新しいログインダイアログの発表にともなって、パーミッション周りや友達周りがすでに v2.0 で変更されているので要注意です。昨日以前に登録したアプリと、今日登録したアプリで /me/friends を叩くと結果が変わっているはずです。(v2.0 からは、アプリをインストールした友達しか返されません。)

バグ報告への早期対応

あともう一つ開発者にとって真新しい発表として、メジャーなバグであれば 48 時間以内に対応するというものがあります。最近バグ報告をした方なら実感があるかもしれませんが、去年や一昨年のバグ報告時よりも対応が早く、なおかつ丁寧になっています。
 以上の 3 つが 4 月中に私が報告したものです。以前であれば、「Thanks for report! We are looking into this.」のままアサインもされずに放置され、半年たってから CLOSE されたり TRIAGE に変えられたりという対応が多かったですが、今回の 3 件は 24 時間以内にレスポンスがあり、それが本当にバグであるか、どのように動作するのが正しいか、などをコメントしてくれています。お陰で、たとえアサインから解決まで数日かかろうとも、正しい挙動を知った上で待てるので少しは気が楽になります。

まとめ

というわけで、動作保証期間の明示や API のバージョニング、バグの早期対応などが整い、今後は今までより安定した環境が整うのではないかと思います。ただ今後 1 年間は、先述の通り、 API バージョンを指定しない場合の動作がアプリ登録時期によって変わるなどの例外があるので気をつけましょう。