DartのエンジニアであるSøren Gjesse氏が今週Google API向けの新しいパッケージを発表した。
この新しいパッッケージについて氏はDart News & Updatesで次のように書いている。すなわち、このAPIジェネレータはDartのクライアントライブラリがYouTubeやAnalytics、Google+などGoogleのサービスへアクセスするために作られている。
googleapisとgoogleapis_betaのふたつの新しいパッケージはGDEのAdam Singer氏とGerwin Sturm氏の仕事をベースにしている。
Gjesse氏は次のように言う。
googleapisパッケージには安定バージョンで使えるすべてのAPIを含んでいます。一方、googleapis_betaパッケージには現時点でベータ版のAPIを含んでおり、限定のプレビュー版でのみ利用できます。月に1度はパッケージのアップデートを行い、新しいサービスが使えるようになったら、アクセスできるようにするつもりです。
APIとともに、googleapis_authパッケージをリリースしました。これは、すべての認証モデルを扱い、異なる環境からAPIへアクセスできるようにします。googleapis_authを使うとスタンドアロンのアプリケーションでも、Google Compute Engineのインスタンスからでも、ブラウザからでもクライアントライブラリを簡単に使えるようになります。
公式のDart Newsの記事へのフィードバックは好意的で、コミュニティはチームに感謝を伝えている。しかし、異議を唱える意見もある。
この発表に対するコメントで、Dart MiscGoogleグループで、Günter Zöchbauer氏は次のように書いている。
すばらしいパッケージですね。
データストアにProtobufとJSONを使ってアクセスするのをサポートしないのはなぜでしょうか。これをサポートしている他のコミュニティパッケージもある見たいですが、私は試していません。
Gjesse氏は次のように答えている。
現時点では、これらのパッケージはDiscovery Documentから作られており、これらのドキュメントで定義されているJSONスキーマで定義されたJSONをサポートしています。Cloud Datastore v1beta2のDiscovery Documentは次の情報を通じてProtobufのレスポンスをサポートします。
"alt": {
"default": "proto",
"description": "Data format for the response.",
"enum": [
"json",
"proto"
],
"enumDescriptions": [
"Responses with Content-Type of application/json",
"Responses with Content-Type of application/x-protobuf"
],
"location": "query",
"type": "string"
},protobufのボディのサポートをするかもしれませんが、APIに問題を引き起こします。異なるリクエスト/レスポンスオブジェクトを扱う必要があるからです。関連するprotobufの定義ファイルから生成されたオブジェクトです。
しかし、Dartコミュニティのすべての人がこのパッケージに乗っているわけではない。
Bob Nystrom氏はGjesse氏に"ひとつのパッケージでまかなう利点はなんでしょうか。小さなパッケージを混ぜ合わせてて使う方が良いと思いますが。"と質問している。
この視点はNathan Weizenbaum氏にも共有されている。氏は"こ他の分離されたパッケージに依存している、"ワンストップ"のひとつのパッケージを提供するのと同様に、分離されたパッケージを提供するのことについてどう思いますか。"と質問している。
氏は次にのように返答している。
その方法については私たちも議論しました。分割したものを提供しながら、バンドルを維持して使い始めやすくするということを実現できる方法だと思っています。
プライベートパッケージを持つというのはこの議論から生まれました。外から使われることを意図しない共通パッケージをすべてのパッケージが共有することができるからです(そうしないとすべてのパッケージが共通パッケージと同じコードを持つことになります)。
このやり方の場合、共通のパッケージを破ったら同じバージョンによる制約の問題が生まれるかもしれません。
ライブラリを使い始めるには、ユーザはGitHubのgoogleapis_examplesリポジトリを見るといいだろう。
Dartチームはこの件についてInfoQの読者をディスカッショングループに招いており、どのような質問やコメントも受け付けている。バグはGitHubのgeneratorパッケージ、googleapis_authパッケージに記録されている。