[go: up one dir, main page]

この記事は Scott Huffman, Vice President, Engineering and Josh Woodward, Senior Director, Product Management による Google Developers Blog の記事 "PaLM API & MakerSuite: an approachable way to start prototyping and building generative AI applications" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


ゲームや対話エージェントからクリエイティブなブレインストーミングやコーディング ツールまで、人々のテクノロジーとの関わり方を変えるジェネレーティブ AI アプリケーションの新しい波が来ています。Google では、ジェネレーティブ AI を使った次世代のアプリケーションを簡単に作れる API やツールをすべてのデベロッパーに提供し、AI を身近なものにしたいと願っています。2023 年 3 月 14 日 (日本時間) 、私たちは、Google の大規模言語モデル(LLM)を簡単かつ安全に試すことができる新しいデベロッパー向けサービスである PaLM API を発表しました。この API と同時に、デベロッパーがすばやく簡単にプロトタイピングを開始できるツール、MakerSuite をリリースします。これらのツールは、プライベート プレビューを通じて一部のデベロッパーに提供される予定で、また近日中にウェイトリストも公開する予定です。


PaLM API を使って Google の大規模言語モデル(LLM)にアクセスする

PaLM API は、Google の大規模言語モデルを簡単に利用できる API です。コンテンツ生成やチャットに最適化された対話型モデルや、要約や分類などに最適化された汎用モデルにアクセスできます。まずはサイズや機能面で効率的なモデルを 2023 年 3 月 14 日より提供し、近日中に他のモデルやサイズも追加する予定です。



すばやく構築できる

私たちはここ数年、Google 検索への MUM の導入や、AI テストキッチン (英語) での LaMDA 導入のトライアルなど、大規模な言語モデルの構築と展開を推し進めてきました。その過程でジェネレーティブ AI の開発ワークフローについて多くを学び、それがすぐに断片化してしまう課題を知りました。プロンプトを組み立てては直すことの繰り返しや、合成データによるデータセットの拡張、カスタムモデルのチューニングなどのために、ばらばらのツールを組み合わせる必要があります。そこで私たちは、このワークフローを簡素化するツール、MakerSuite をリリースすることにしました。MakerSuite を使えば、イテレーティブなプロンプト作成や、合成データによるデータセットの拡張、カスタムモデルのチューニングを簡単に行えます。プロンプトをコードに移す準備ができたら、MakerSuite で Python や Node.js など、お気に入りの言語やフレームワークのコードとして書き出すことができます。



モデルをチューニングする

ジェネレーティブ AI モデルは、デベロッパーがすぐに使える強力な機能を備えています。さらに、個々の用途に応じてモデルのチューニングすることで、より良い性能が得られます。Maker Suite を使えば、デベロッパーがパラメータを効率的に調整する技術 (英語) を活用して、用途に合わせてチューニングされたモデルを作成できます。チューニングしたモデルをブラウザ上ですばやくテストし、繰り返し使用できます。



合成データでデータセットを拡張する

AI を使った開発には高品質なデータが欠かせませんが、すぐに利用できるデータだけでは学習に限界があるケースも少なくありません。MakerSuite では、少数のデータをサンプルとしてデータ拡張用のデータを合成し、新たに作成したデータセットの管理や操作が可能です。この合成データは、モデルのチューニングや評価など、さまざまなシーンで活用できます。



最先端の embedding(埋め込み)を生成する

LLM から得られる embedding は、セマンティック検索からレコメンデーション、分類まで、幅広い応用の可能性が見いだされており、いま大きな期待が寄せられています。PaLM API で生成された embedding を使えば、既存のデータや外部のデータソースを活用したジェネレーティブ AI アプリケーションの構築が可能になります。また、TensorFlow、Keras、JAX、その他のオープンソース ライブラリで構築されたアプリケーションで embedding を使用することも可能です。



責任と安全性を担保した構築

私たちは、Google の AI の基本方針 に従ってモデルを構築し、Responsible AI (責任ある AI)の基礎を提供します。デベロッパーが個々のアプリケーションにおいて責任と安全性の基準を定め遵守するには、それらをコントロールできることが重要です。Google のツールは、デベロッパーがそれぞれのアプリケーションやユースケースに応じて安全性の検証や調整するための簡単な手段を提供します。



ジェネレーティブ AI アプリケーションをスケールさせる

これらのデベロッパー ツールによって、ジェネレーティブ AI アプリケーションのプロトタイピングや構築を簡単に始められるのと同時に、サービスのスケーラビリティが必要になった場合の対応も容易です。PaLM API と MakerSuite は Google のクラウド基盤で提供されており、ホスティングやサービングのスケーラビリティについて心配する必要はありません。自分のアイデアをより大きな規模で展開したり、エンタープライズグレードのサポートや、セキュリティとコンプライアンス、サービスレベル合意(SLA)などが必要なケースでは、Google Cloud Vertex AI を活用し、エンタープライズ向け検索サービスや対話型 AI などの高度な機能の数々との組み合わせで、ジェネレーティブ AI モデルの機能を活用できます。


いまとてもエキサイティングな AI の潮流の中で、Google は、デベロッパーの皆さんの開発作業をより快適にするためのツールを作り続けたいと考えています。新しいデベロッパーを受け入れ、新機能を展開し、この技術をさらに広いデベロッパー コミュニティに提供していく予定です。また同時に、フィードバックに耳を傾け、学習し、デベロッパーが今いる環境でこれらのツールを最大限活用するために改善を続けていきます。


今後の進捗状況については Google Developers のニュースレターでお知らせするので、ぜひ購読をおすすめします。


Reviewed by Kaz Sato, Staff Developer Advocate, Google Cloud & Tamao Imura, Developer Marketing Manager, Google


この記事は Google Maps Platform 担当プロダクト マネージャー Ruchi Choudhary による Google Cloud Blog の記事 "Announcing Quick Start Widget to integrate API key generation into your onboarding" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


多くのデベロッパーはコンテンツ管理システム、プラグイン、他のソフトウェア ソリューションを使用してウェブサイトやアプリを作成します。今までは、こうしたウェブサイト エクスペリエンスへのマッピング機能の追加は分断されたプロセスであったため、多くのユーザーがプロジェクトにマップを追加する前に諦めてしまう原因となっていました。Google はこの度、Quick Start Widget を発表いたします。これによりデベロッパーは、ユーザーが Google Maps Platform を簡単に使い始められるようにし、API キーの生成やウェブサイトやアプリへのマップの埋め込みができるよう支援します。

デベロッパーのエクスペリエンス

Quick Start Widget を使用すると、ユーザーは API キーを取得し、面倒なユーザーフローを経由することなく、サイトやアプリでマップを使用できます。ユーザーが最小限の負担で開始できるようにすることが、ユーザーの導入を促すうえで重要になります。新しいウィジェットでは、ユーザーは Google から API キーを確保するためにデベロッパーの提供する環境を離れる必要がなくなります。ユーザーにはアカウントやプロジェクトを設定する簡単かつ一連の手順が提供されます。なお、キーは自動的に作成され、保護されます。

この記事は Florina Muntenescu による Android Developers - Medium の記事 "WorkManager — Kotlin APIs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


WorkManager — Kotlin API

WorkManager は、非同期タスクのスケジュールを簡単に設定するための一連の API を提供します。これにより、アプリが閉じられた場合やデバイスが再起動した場合にも実行されることが期待されるタスクを即時実行または遅延実行できます。また、WorkManager は Kotlin ユーザーに最大級のコルーチンのサポートを提供します。この投稿では、WorkManager Codelab の内容に基づいて、WorkManager とコルーチンの基本について説明します。では早速始めましょう。

WorkManager の基本

ユーザーが特定の画面から離れたり、アプリがバックグラウンド状態になったり、デバイスが再起動したりしても実行を続ける必要があるタスクには、WorkManager ライブラリを使うことが推奨されています。一般的には、以下のようなタスクが考えられます。

  • ログのアップロード、データのレポーティング
  • 画像へのフィルタの適用、画像の保存
  • ローカルデータとネットワークの定期的な同期

ユーザーが画面などの特定のスコープを離れたときに即時実行したタスクが終了する可能性がある場合は、直接 Kotlin コルーチンを使うことを推奨します。

WorkManager Codelab では、画像をぼかしてその結果をディスクに保存します。これを実現するために必要なことを確認しましょう。

まず、work-runtime-ktx 依存性を追加しました。

implementation "androidx.work:work-runtime-ktx:$work_version"

そして、独自の Worker クラスを実装します。ここに、バックグラウンドで実行する実際の作業に必要なコードを含めます。Worker クラスを拡張し、doWork() メソッドをオーバーライドします。これは一番重要なクラスなので、のちほど詳しく説明します。最初の実装は次のようになります。

次に、作業のリクエストを作成します。今回の場合は、作業を一度だけ行いたいので、OneTimeWorkRequest.Builder を使います。入力として、ぼかしたい画像の Uri を設定します。

Kotlin のヒント: 入力データを作成するために、workDataOf 関数を使うことができます。この関数は、データビルダーを作成し、キーと値のペアを格納してデータを作成します。

作業のスケジュールを設定して実行するには、WorkManager クラスを使います。その際に、実行するタスクと、タスクへの制約を指定できます。

Worker による作業の実行

Worker を使うと、WorkManager は自動的にバックグラウンド スレッドで Worker.doWork() を呼び出します。doWork() から返される Result は、WorkManager サービスに作業が成功したかどうかと、失敗した場合には作業を再試行すべきかどうかを通知します。

Worker.doWork() は同期呼び出しです。バックグラウンドの作業全体をブロックありで実行し、メソッドが終了するときには完了していることになります。doWork() で非同期 API を呼び出して Result を返すと、コールバックが正しく動作しない場合があります。

非同期作業を行いたい場合

もう少し複雑な例として、ぼかしをかけたすべてのファイルの Uri をデータベースに保存する場合を考えてみましょう。

これを実現するために、以下を作成しました。

  • 単純な BlurredImage エンティティ
  • 画像の挿入と取得を行う dao クラス
  • データベース

実装はこちらをご覧ください。

Kotlin でデータベースへのデータの保存やネットワーク リクエストなどの非同期作業を行う必要がある場合は、CoroutineWorker の利用を推奨します。

CoroutineWorker を使うと、Kotlin コルーチンを使って非同期作業を行えます。

doWork() メソッドは suspend メソッドです。つまり、中断を伴う dao を簡単に呼び出すことができます。

デフォルトで、doWork() は Dispatchers.Default を使います。この動作は必要な Dispatcher でオーバーライドできます。今回は、既に Room が挿入作業を別の Dispatcher に移動させているので、これを行う必要はありません。詳しくは、Room Kotlin API の投稿をご覧ください。

ぜひ CoroutineWorker を使って、ユーザーがアプリを閉じても完了しなければならない非同期作業を実行してみてください。

WorkManager についてもっと詳しく知りたい方は、今後のシリーズで詳しく解説しますので、ご期待ください。それまでの間は、Codelab やドキュメントをご覧ください。


Reviewed by Chiko Shimizu - Developer Relations team

この記事は Mike Cloonan による Google Ads Developer Blog の記事 "Support for v201809 reports in Google Ads Scripts" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google 広告スクリプトに AdWords API v201809 レポートのサポートを追加しました。このリリースの主な変更点は、次のとおりです。
  • DESTINATION_URL_REPORT が削除されました。代わりに FINAL_URL_REPORT を使用してください。
  • 複数のレポートに以下の新しいコンバージョン項目が追加されました。
    • ConversionAttributionEventTypeCAMPAIGN_PERFORMANCE_REPORT のみ)
    • ConversionAdjustment
    • ConversionAdjustmentLagBucket
ここに記載されていない追加機能など、完全な情報については、AdWords API リリースノートをご覧ください。

レポートで API バージョニングを使っている場合は、v201809 を使うようにコードを変更する必要があります。
var report = AdsApp.report(query, {
  apiVersion: 'v201809'
});
API バージョニングを使っていない場合は、コードを変更する必要はありません。この変更と合わせて、デフォルトのレポート バージョンが v201806 にアップデートされています。皆さんのレポートは、自動的にアップグレードされます。

今回の変更や、一般的な Google 広告スクリプトに関する質問がある方は、デベロッパー フォーラムに投稿してください。

Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team

この記事は Google Cloud Platform チーム プロダクト マネージャー、Dan O’Meara による Google Developers Blog の記事 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

私たちは、パフォーマンスやセキュリティを改善し、デベロッパーが API を構築する際に必要な機能を追加するため、API やサービス インフラストラクチャに多くのリソースを投入してきました。変更にあたっては、最新のアーキテクチャやビジネス要件に対応できなくなった機能に対処しなければなりません。

そのような機能の例として、JSON-RPC プロトコル(http://www.jsonrpc.org/specification)と Global HTTP Batch(Javascript のサンプル)の 2 つがあげられます。これらの機能は、単一の共有プロキシがすべての API リクエストを受信するというアーキテクチャをベースにサポートしてきました。しかし今後、リクエストを適切な API サーバーに向わせる分散型の高パフォーマンス アーキテクチャに移行していくため、このようなグローバル エンドポイントはサポートは難しくなります。

そこで来年、2019 年 3 月 25 日をもって、両機能のサポートを終了します。

この変更によってお客様が影響を受けることは認識していますので、移行手順をできる限り明確にするための作業を行ってきました。移行に役立つ以下のガイダンスをぜひお読みください。

行うべきこと

Google API クライアント ライブラリは刷新され、Global HTTP Batch エンドポイントに対するリクエストを行わなくなりました。クライアントでこのライブラリを使っている場合、最新版にアップグレードする必要があります。Google API クライアント ライブラリを使っていないクライアントや、JSON-RPC エンドポイントまたは HTTP Batch エンドポイントに対してカスタム呼び出しを行っているクライアントでは、以下の変更を行う必要があります。

JSON-RPC

JSON-RPC を使っているかどうかを判断するには、https://www.googleapis.com/rpchttps://content.googleapis.com/rpc にリクエストを送っているかどうかを確認します。該当する場合、移行が必要になります。
  1. JSON-RPC エンドポイントを利用するクライアント ライブラリ(Google が公開しているライブラリまたはその他のライブラリ)を使っている場合は、API の REST エンドポイントと通信するクライアント ライブラリに切り替えます。

  2. Javascript のサンプルコード

    変更前
    // json-rpc request for the list method
    gapi.client.rpcRequest('zoo.animals.list', 'v2',
      name:'giraffe'}).execute(x=>console.log(x))

    変更後
    // json-rest request for the list method
    gapi.client.zoo.animals.list({name:'giraffe'}).then(x=>console.log(x))

    または
    1. クライアント ライブラリを使っていない場合(直接 HTTP をリクエストしている場合):
      1. REST URL を使い、
      2. リクエストの生成方法とレスポンスの解析方法を変更します。

    サンプルコード

    変更前
    // Request URL (JSON-RPC)
    POST https://content.googleapis.com/rpc?alt=json&key=xxx
    // Request Body (JSON-RPC)
    [{
      "jsonrpc":"2.0","id":"gapiRpc",
      "Method":"zoo.animals.list",
      "apiVersion":"v2",
      "Params":{"name":"giraffe"}
    }]

    変更後
    // Request URL (JSON-REST)
    GET https://content.googleapis.com/zoo/v2/animals?name=giraffe&key=xxx

    HTTP Batch

    同じ API を指定した内部リクエストの場合、バッチ リクエストの構造はすべて同じです。同じ API の異なるメソッドで処理される場合でも、同じ構造です。それぞれ異なる API を指定した内部リクエストの場合、異なる構造が混在します。Global HTTP Batch エンドポイントが終了すると、異なる構造が混在したバッチはサポートされなくなります。構造が均一なバッチは引き続きサポートされますが、 API 固有 のバッチ エンドポイントによるサポートとなります。
    1. 現在、複数の構造が混在したバッチ リクエストを行っている場合:
      1. クライアントのコードを変更し、同じ構造のバッチ リクエストのみを送信するようにします。

    サンプルコード

    次のサンプルは、2 つの API(urlshortener と zoo)に対する構造が異なるバッチ リクエストを、構造が均一な 2 つのバッチ リクエストに分割する例を示しています。

    変更前
    // heterogeneous batch request example.
    
    // Notice that the outer batch request contains inner API requests
    // for two different APIs.
    
    // Request to urlshortener API
    request1 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"});
    
    // Request to zoo API
    request2 = gapi.client.zoo.animals.list();
    
    // Request to urlshortener API
    request3 = gapi.client.urlshortener.url.get({"shortUrl": "https://goo.gl/XYFuPH"});
    
    // Request to zoo API
    request4 = gapi.client.zoo.animal.get("name": "giraffe");
    
    // Creating single heterogeneous batch request object
    heterogeneousBatchRequest = gapi.client.newBatch();
    // adding the 4 batch requests
    heterogeneousBatchRequest.add(request1);
    heterogeneousBatchRequest.add(request2);  
    heterogeneousBatchRequest.add(request3);
    heterogeneousBatchRequest.add(request4);
    // print the heterogeneous batch request
    heterogeneousBatchRequest.then(x=>console.log(x));

    変更後
    // Split heterogeneous batch request into two homogenous batch requests
    
    // Request to urlshortener API
    request1 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"});
    
    // Request to zoo API
    request2 = gapi.client.zoo.animals.list();
    
    // Request to urlshortener API
    request3 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"})
    
    // Request to zoo API
    request4 = gapi.client.zoo.animals.list();
    // Creating homogenous batch request object for urlshorterner
    homogenousBatchUrlshortener = gapi.client.newBatch();
    
    // Creating homogenous batch request object for zoo
    homogenousBatchZoo = gapi.client.newBatch();
    // adding the 2 batch requests for urlshorterner
    homogenousBatchUrlshortener.add(request1); homogenousBatchUrlshortener.add(request3); 
    
    // adding the 2 batch requests for zoo
    homogenousBatchZoo.add(request2); 
    homogenousBatchZoo.add(request4);
    // print the 2 homogenous batch request
    Promise.all([homogenousBatchUrlshortener,homogenousBatchZoo])
        .then(x=>console.log(x));



    または
  3. 現在、構造が均一なバッチ リクエストを実行しており、
    1. Google API クライアント ライブラリを使っている場合は、最新版にアップデートするだけです。
    2. Google 以外の API クライアント ライブラリを使っている場合、またはクライアント ライブラリを使っていない場合(直接 HTTP をリクエストしている場合):
      • エンドポイントを www.googleapis.com/batch から www.googleapis.com/batch/<api>/<version> に変更します。
      • または、単純に API のディスカバリ ドキュメントで「batchPath」の値を確認し、その値を使います。

移行のサポートが必要な方は、API ドキュメントを確認するか、「google-api」タグを付けて Stack Overflow で質問してください。



Reviewed by Eiji Kitamura - Developer Relations Team

この記事は G Suite デベロッパーアドボケート、Wesley Chun による G Suite Developers Blog の記事 "Using field masks with Google APIs for partial response" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google API(G Suite API だけでなく、YouTube や Google Cloud Platform API を含むほとんどの Google API)を使ってアプリを作成する場合、API 呼び出しの応答ペイロードで返されるデータを意識することが重要になります。そうしないと、必要以上のデータが返され、モバイルかサーバー バックエンドかを問わず、アプリのパフォーマンスに影響が出る場合があります。

そのため、ほとんどの Google API では、フィールド マスクを使って応答ペイロードに必要なデータだけを含めることが可能です。フィールド マスクを思い通りに使いこなしていただくために、さまざまな Google API でのフィールド マスクの使い方を説明する動画(英語)を公開しました。
API を呼び出す際にフィールド マスクを使って fields または part パラメータを指定すると、応答ペイロードに含めるフィールドを厳密に指定することができます。多くの場合、必要なデータを絞り込めば、API が応答データの作成にかかる時間も短くなります。次に、Gmail API を使って送信者のアドレスを取得する Python 呼び出しの例を示します(サービス エンドポイントが GMAIL である場合)。
     addresses = GMAIL.users().settings().sendAs().list(
             userId='me'
     ).execute().get('sendAs')

Client Libraries(Python 呼び出しなど)を使う場合でも、HTTP で直接 GET https://www.googleapis.com/gmail/v1/users/userId/settings/sendAs を使う場合でも、API からは次のペイロードが返されます。
     {
       "sendAs": [{
         "sendAsEmail": string,
         "displayName": string,
         "replyToAddress": string,
         "signature": string,
         "isPrimary": boolean,
         "isDefault": boolean,
         "treatAsAlias": boolean,
         "smtpMsa": {
           "host": string,
           "port": integer,
           "username": string,
           "password": string,
           "securityMode": string
         },
         "verificationStatus": string
       }, ...]
     }

この sendAs 配列には、各送信者アドレスについてすべての情報が格納されています。では、Gmail API を使って、上記のすべてのデータを取得せずユーザーのメールの署名を変更できることはご存じでしょうか。これは、1 つのフィールド、最大でも 2 つのフィールドを使って実行できます。必要になるのは sendAsEmail で、必要に応じて isPrimary フラグを使います。フィールド マスクで sendAs の属性名を指定すると、不要なフィールドはすべて除外できます。次の Python コードでは、フィールド マスクを太字で強調しています(フィールド マスクを指定していない上のコードと比べてみてください)。
     addresses = GMAIL.users().settings().sendAs().list(
             userId='me', fields='sendAs(sendAsEmail,isPrimary)'
     ).execute().get('sendAs')
フィールド マスクは、Google API 呼び出しの応答から不要なデータを除外します。

この動画シリーズのパート 2(近日公開)では、アップデートを行う API 呼び出しでフィールド マスクを使う事例について紹介する予定です。また、いくつかの活用法や、読み取りとアップデートの両方の呼び出しにおけるフィールド マスクの使い方を説明する予定です。さらに、1 回の API 呼び出しで両方を使えることも紹介します。ご期待ください。

フィールド マスクを使って API ペイロードの部分的な応答を取得する方法の詳細については、Client Libraries のドキュメントのこちらのセクションをご覧ください。両方(読み取りおよびアップデート)のユースケースに関する総合的な記事については、Google Slides API ドキュメントのガイドをご覧ください。


Posted by Eiji Kitamura - Developer Relations Team

[この記事は Israel Shalomプロダクト マネージャーによる Google Developers Blog の記事 "Key Improvements for Your API Experience" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google は、100 以上の API をデベロッパーに提供しています。いずれも、デベロッパーがすばらしいエクスペリエンスを作成するリソースとなるものです。また、デベロッパーが未来を作ることに集中できるよう、できる限りシンプルな形で信頼できるインフラを提供しています。このことを考慮し、柔軟なキー、開始時の操作の効率化、簡単な監視など、API エクスペリエンスにいくつかの改善を行っています。

高速で柔軟なキー生成

キーは、API が呼び出し元を特定する標準的な方法で、初期段階で Google API とやり取りを行う必要があるものの 1 つです。Google API では、毎日何万ものキーが作られています。そのため、キーの生成手順をシンプルにし、何段階も必要だった昔の手順を簡素化して、1 回のクリックで生成が完了するようにしました。


キーの作成時に、プラットフォームやさまざまなその他の制限を選択する必要はなくなります。ただし、ベスト プラクティスとしてスコープ管理を行うことは依然として推奨しています。


効率的な開始フロー

多くのデベロッパーは、直接キーを作成したいと考えており、必ずしもコンソールに入りたいとは思っていません。そこで、デベロッパー ドキュメントの中に直接埋め込まれているフローを用いてクレデンシャルを設定できる手順を導入しました。


「Get a Key」ボタンをクリックし、プロジェクトを選択するか作成します。その後の API の有効化やキーの作成はお任せください。



現在、この機能を Google Maps API 向けにロールアウトしており、今後数か月間で残りのドキュメントにも反映する予定です。

API ダッシュボード

使い始めだけでなく、継続利用も簡単になっています。1 つまたは複数の API を頻繁に使うデベロッパーのために、使用状況や割り当て状況を簡単に参照できる新しい API ダッシュボードを作りました。

何らかの API を有効化している場合、ダッシュボードが API コンソールのフロントかつ中心となり、使用しているすべての API の使用状況、エラー、レイテンシとともに参照できます。



API をクリックすると詳細レポートにジャンプし、メソッド、クレデンシャル、バージョン、レスポンス コード(選択した API で利用できるもの)ごとにトラフィックを参照できます。




今回紹介した新機能によって、API の利用が簡単になることを願っています。皆様が次に作り出すものを見るのが待ちきれません。



Posted by Eiji Kitamura - Developer Relations Team

[この記事は Dan Ciruli、Google Cloud Platform チーム担当プロダクト マネージャーによる Google Developer Blog の記事 "Announcing turndown of the Google Feed API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google Feed API は、2007 年に初めて発表された Google オリジナルの AJAX API の 1 つで、好評をいただいてきました。しかし、この API に向けられる関心や API の利用数は時間とともに低下しているだけでなく、現在は 2 世代前の Google の API インフラ上で動作しているという状況になっています。

2012 年 4 月には、その他多くの無料 API とともに、今後 3 年以内に廃止する予定であることをお知らせいたしました。2015 年 4 月に、廃止猶予期間は終了しています。今まで暫定的に API の運用を続けてきましたが、提供の終了をお知らせいたします。

Google Feed API の運用は 2016 年 9 月 29 日に終了いたします。しかし、デベロッパーの皆様への最後のお礼として、それまでの間は API の運用を継続する予定です。それまでに、アプリケーションでこの API を使用しないように対応してください。

Google は、API やデベロッパーの信頼がどれほど重要であるかを認識しており、このような決断は決して軽々しく行っているものではありません。今後も、Google が優れたサービスの提供に尽力し、その状況についてオープンであり、情報提供に務めてゆくことに変わりありません。

ワークフローで RSS が欠かせない要素となっているデベロッパーの皆様は、さまざまな商用製品の中からユースケースに合致するものをご利用いただくことができます。



Posted by Eiji Kitamura - Developer Relations Team

[この記事は Dan McGrathGoogle Drive プロダクト マネージャーによる Google Developers Blog の記事 "A leaner and faster Google Drive API を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google ドライブ API のバージョン 3(v3)が先月リリースされました。デフォルトでより無駄がなく高速、かつ一貫性のある Google ドライブとのインターフェースをデベロッパーに提供します。この最新アップデートは、初めて Google ドライブと連携しようとしているデベロッパーが、簡単に実装できるよう設計されています。

Google ドライブ SDK の最初のバージョンをリリースして以来、デベロッパーがどのように API を使用しているのか、どのような問題に遭遇したかなどに関して多くの情報を得ました。このバージョンでは、次のような方法で API をシンプルにしています。
  • デベロッパーが理解する必要があるコレクション数の削減
  • 重複の削除
  • メソッドやプロパティの名前に一貫性を持たせるよう整理
  • 高速かつ効率的なデフォルト値を設定
たとえば、files.list の呼び出しには、デフォルトで、効率的にサービスを提供する最も一般的に使用されるフィールドだけが含まれ、その他のフィールドは fields パラメータによって追加することができるようになり、v3 ではデフォルトの呼び出しが v2 の 6 倍ほど高速化されました。



API の将来のバージョンでは機能の追加が中心となる予定ですが、今回のリリースでは旧バージョンの API(v2)のパフォーマンスや使いやすさを改善しました。v2 を使用する既存のアプリを変更することなく使用できる(デベロッパーはアップグレードする必要がない)よう、新旧両方のバージョンのサポートを継続する予定です。新しいバージョンの利用を考えている v2 アプリのデベロッパー向けに、移行に関する簡単な虎の巻を用意しました。

API の新バージョンの使用を開始するには、デベロッパー ドキュメントを参照してください。また、ご質問がある場合は、StackOverflow で google-drive-sdk タグを使用して検索してください。新しい API を使ってみなさんがどんなアプリを構築されるか、楽しみにしています。

Android Wear 向けの公式 Watch Face API の用意ができたことを開発者のみなさまにご報告いたします。ウォッチフェイスの登場によって、ユーザーが個性を発揮する場が増えただけではなく、開発者が時計のメイン UI であるウォッチフェイスをカスタマイズできるようになりました。これまでにユーザーと開発者のどちらからも、もっとも多く寄せられた要望がウォッチフェイスの機能でした。今回の API 提供で、みなさまがなにを作り出すのか、楽しみにしています。

Timothy Jordan による、Android Wear 向けウォッチフェイスの紹介ビデオ

デザインと開発

はじめにウォッチフェイスのデザインについて参照し、次にウォッチフェイス作成のトレーニングクラスをご覧ください。また、オンライン上にあるウォッチフェイスのサンプルや、Android Studio のサンプルマネージャーでも参考になる実例を入手することができるので、すぐにウォッチフェイス開発に取りかかることができるでしょう。また、上記にある Android Wear 向けウォッチフェイスの紹介ビデオで概要をご覧いただけます。

ウォッチフェイスは Android Wear アプリで動作するサービスの 1 種なので、インストールした 1 つのアプリに対し複数のウォッチフェイスを提供することが可能です。ユーザーが 12 時間・24 時間表記を選択できるようにしたり、ウォッチフェイスの背景を変更できるようにしたり、スマートフォンや腕時計などの端末で設定変更を可能にすることもできます。また、OpenGL を利用してスムーズなグラフィックを描写したり、バックグラウンド サービスを利用して天気やカレンダーイベントなどの役立つ情報を入手したりすることも可能です。ウォッチフェイスではアナログ式やデジタル式で時間を表示しても良いですし、まだ誰も見たことがない革新的な方法で時間を表示させることも可能です。すべてはあなた次第です。

既存デバイスへのアップデート

Android 5.0 をベースとして API レベル 21 を提供する最新の Android Wear プラットフォームがユーザーへ提供されます。すべての Android Wear デバイスは OTA(Over-The-Air)方式で Android 5.0 へとアップデートされます。本アップデートによってユーザーは、スマートフォンの Android Wear アプリでウォッチフェイスを管理・設定したり、Google Play からウォッチフェイスをインストールしたりできるようになります。Android 4.3 以上がインストールされた端末は引き続き、すべての Android Wear デバイスに対応します。

ウォッチフェイスをアップグレード

私たちが開発用ドキュメントを公開する前に、すでにウォッチフェイスを作成していた開発者がいたことには大変関心させられましたが、非公式のやり方で Android Wear 向けのウォッチフェイスを作成していた場合には、公式 API へ移行してください。公式 API は統一されたユーザー体験をもたらすと同時に、Android Wear デバイスがアンビエントモードに入ったかどうかがわかったり、システム UI 要素の位置を調節したりといった機能をもたらします。また、Google Play のウォッチフェイス コレクションにフィーチャー掲載されるためには、新しい API の使用が必須となります。

ウォッチフェイスの配信

Android Wear 5.0 API 21 の OTA 方式でのロールアウトが完了したら、すぐに Google Play で配信中の対応アプリをアップデートすることを推奨します。ロールアウトの完了は、Google+ の Android Wear 開発者コミュニティで発表します。API 20 のデバイスでは API 21 を必要とするウォッチフェイスを表示できないため、ロールアウトの完了を待ってアップデートする必要があります。新しい API をインストールすると、ウォッチフェイスが表示されるようになりますが、ロールアウトが完了する前に wearable アプリをアップデートする場合には、OTA 配信を受ける前のユーザーがインストールに失敗しないように minSdkVersion を 20 に設定してください。ロールアウト完了後は、すみやかにウォッチフェイスを新しい API に移行してください。2015 年 1 月 31 日に、公式 API を用いていないウォッチフェイスのサポートを終了する予定です。

Google Play での Android Wear アプリ

Android Wear への配信に関するガイドラインに従っていただければ、アプリを Google Play 内の「Android Wear 向け」として申請できるようになりました。Wear アプリの品質チェックリストに準拠し、Google Play 内の Wear アプリとして承認されると、Android Wear デバイスのユーザーがアプリを見つけやすくなります。Android Wear レビューにオプトインするためには、Google Play デベロッパー コンソールの価格と配信のセクションをご覧ください。

Android Wear をローンチしてたった数ヶ月で、開発者のみなさまは、カスタム通知、ボイスアクション、他のネイティブな Android 機能を活用した数千ものアプリをリリースしました。みなさまのおかげで、ユーザーは 6 つのデバイス、種類豊富な時計バンド、そして数千のアプリを組み合わせた自分だけのAndroid Wear デバイスを作ることができます。カスタム ウォッチフェイスの提供により、ユーザーは今後さらに細かくカスタマイズすることが可能になります。豊富な選択肢こそが、リッチな Android Wear のエコシステムの根幹です。今後もプラットフォームのコアとなる機能を開発者のみなさまに提供し続けてまいりますが、そこからなにが生まれるのか、楽しみでしかたがありません。

Posted by Yuichi Araki - Developer Relations Team

Google Developers Blog(英語)にて、既にご案内している利用規約の変更内容(2014 年 12 月 5 日より発効)について、日本語でもご案内いたします。



Google API の利用規約の一部変更についてお知らせいたします。

変更後の規約の全文はこちらでご確認いただけます。また、主な変更内容はこちらの記事にまとめています。

主な大きな変更点は以下のとおりです:
  • データ移植性について:Google API を通じて取得したユーザー データを利用または保管する間は、Google API を現在も使用しているかどうかに関わらずデータ移植性の要件に従う義務が存続すること、また、この義務を順守していない第三者によるデータの利用を許可しないことに同意することを明記しています。すなわち Google は、エンド ユーザー自身によってデータが管理されることを尊重しており、Google API の利用者の方々もそれを尊重するべきです。
  • デベロッパーの皆さんに対して、他のすべての Google サービスの利用規約についても違反しないよう求めます。
  • Google は API をより良いものにするため、API を通じて送信されたコンテンツを使用する場合があります。Google はこの権利を保有しますが、API(およびそれに関連するサービス)を提供、保証、改善する目的で、かつ  Google のプライバシー ポリシーに沿った場合にのみ使用します。
その他にも次のような変更点があります:
  • Google のサービスを利用するデベロッパーの皆さんに対し、連絡先情報を常に最新の状態にしておくようお願いしています。
  • ITAR データあるいは HIPAA で保護された医療情報を扱うようなリスクの高い活動には、API を使用すべきではないことを明記しています(ただし、Google からの書面による同意がある場合を除きます)。
  • デベロッパーに対し、各自のプライベート キーの安全を守り、オープンソースのプロジェクト内に埋め込むことのないよう、合理的な努力をするようお願いをしています。
  • API の使用量に対して Google が制限を設けることを明記しています。使用量を増やしたい場合は、Google からの同意を得る必要があります。
  • 利用規約の修正の多くは、その内容を発表した 30 日後に有効になります(以前は 7 日後)。

Posted by Developer Relations Team

Posted by 山崎富美 Developer Relations Team

[本記事は、Google Developer チームの Antonio Fuentes と John Moshenko が 5 月 23 日 に Google Developers Blog に投稿した 「The Google APIs Explorer has a new look」という記事を元に、翻訳したものです。詳しくは元記事をご覧ください。 - 山崎]

昨年 3月、「Google API Explorer」という Google API を試したり、メソッド検索が簡単に行えるツールをご紹介しました。(日本語記事)ローンチした時は 7 種類の API をサポートしていました。

このたび、この API Explorer のUI を変更しました。新しい UI で、API を簡単に、楽しく探すことができます。また、API コールのインデックス化された履歴、リクエストのボディを編集するエディタ、API とメソッドを簡単に検索できる検索ボックスなどの新しい機能が追加されました。


また、サポートしている API も追加しました。 現在、Explorer は 28 種類の API をサポートしており、増え続けています。さらに、認証が必要なメソッドを識別するためのインジケーターを追加しました。

以下は、API Explorer で試すことができるサンプルリクエストの 例です。

API Explorer を使えば、Google API を簡単に使い始めることができます。API Explorer に関する詳細はこの資料をご覧ください。皆さまからのフィードバックは、こちらのフォーラムにお願いします。

Posted by 山崎富美 Developer Relations Team

[「ハングアウト」とは、最大10人が参加できるビデオチャット機能で、昨日、ハングアウトを一般公開でライブ配信できるオプション「ハングアウト オンエア 」機能がすべての方にお使い頂けるようになりました。それに先立ち、先日開発者の皆さん向けの Hangouts API が正式版としてリリースされています。本記事は、Google+ ハングアウトの Product Manager である Amit Fulay が The Google+ Developers Blog で書いた"Moving the Google+ Hangouts API Out of Preview"を元に翻訳・再構成しました。-山崎]

人がつながる最も重要な方法の一つは人と人が対面することです。Google+ ハングアウトがなぜ面白いのか、そして、Google がなぜ数カ月も前に Hangouts API のプレビューを開始したかの理由がここにあります。先日、この API がプレビュー版から正式版となり、皆さんが作るハングアウトアプリを Google+ コミュニティ全体に公開し、共有することが可能となりました。

ハングアウトアプリは、一般的なウェブアプリであり、ハングアウトの UI 内の大きなウィンドウで動作します。ユーザーにリアルタイムな対話性を与えるために、共有された API を利用することに加えて、以下のような機能も利用できます。

  • 最大 10 人までのグループビデオチャットを行う
  • ハングアウトのマイク、カメラ、スピーカーや音量をコントロールする
  • 音響効果を加えたり、画面にイメージを重ね合わせる
  • ビデオフィード、チャットウィンドウ、通知といった UI 要素をセットする

始めるのは簡単です。ドキュメントを読んで、アプリを作って公開し、ユーザーにお知らせください。お知らせの方法は 2つあります。Google+ 上でそのリンクをポストすること、そしてウェブサイトに「ハングアウトボタン」を追加することのいずれかです。どちらにしても、クリックするだけで、あなたのアプリが動いているハングアウトを始めることができます。なお、動かしたアプリは「最近」という名前のタブに追加されます。

また、Google+ ハングアウトページには、新たに「アプリ」というエリアを設けました(画面左上の「アプリ」をクリックします)。ここには以下のアプリが既に提供されています。

なお、この オンラインドローイングツール「+Cacoo」は、日本発のサービスです。

これをきっかけに、ぜひ新しいアプリを考えてみてください。

Posted by 山崎富美 Developer Relations Team

[本記事は、API の Product Manager の Adam Feldman が書いた"Changes to deprecation policies and API spring cleaning"を元に翻訳・再構成しました。-山崎]

技術進歩のスピードがますます速くなっている中、Google も開発者向けに革新的な製品を迅速に提供したいと考えています。製品開発のペースを市場にどのように合わせていくべきかを考える中で、Google では、提供する API の非推奨ポリシーを慎重に分析しました。その結論として、Google は、いくつかの API に関しては 1 年間とし、これ以外の API のポリシーを削除し、ポリシーをシンプルでわかりやすくしました。API についての Google の考え方を変えたわけではありません。Google は、これまで通り、開発者コミュニティへ安定した適切な API を提供することをお約束します。 

これらの変更のほとんどは、今ではなく今後数年にわたって起こる予定のことですが、本日は事前のお知らせをしたいと思います。いつものことですが、変更は最小限​​とし、タイムリーな方法で発表していきたいと考えています。 

API の非推奨期間を 1 年に 

Google API の利用規約にもあるように)開発者プラットフォームを進化させていく取り組みの一環として、Google はいくつかのサービスに対する非推奨ポリシーを 1 年間に変更します。これは、同様の API では、一般的です。このポリシーの変更が影響するサービスは次の 4 つです。

Google App Engine、Google Maps/Earth API、YouTube API の現在の非推奨ポリシーは 3 年間ですが、2014 年 4 月より 1 年間となります。Google Cloud Storage は、現在 1 年間のポリシーですので、変更はありません。なお、API 自体を非推奨にするという意味ではありませんので、誤解のないようお願いします。

Google App Engine のポリシー変更に関しては「App Engine and Google’s new Deprecation Policy」に、Google Maps/Earth API に関しては「Update to the Google Maps API deprecation policy and Terms of Service」に、YouTube に関しては「An Update to our Deprecation Policy」に詳細が書かれていますので、それぞれご覧ください。

非推奨ポリシー言語をより明確にする 

上記の API に関して、Google は非推奨ポリシーをより明確かつ簡潔にするために短縮しました。新しいポリシーでは、Google が重大な変更を行う際には、1 年前に通知することと述べています。詳細は、Google Maps/Earth API などそれぞれの API の利用規約をご覧ください。たとえば、Google Maps/Earth API の利用規約はこちらとなります。

非推奨ポリシーの削除

他の API に関しては、非推奨ポリシーを削除します(API を削除するわけではありません)。ほとんどの場合、この変更は 2015 年 4 月までは有効になりません。詳細は、この変更が影響する API のそれぞれの利用規約をご覧ください。Accounts APIAdSense Host APIChart Tools APICheckout APIContacts APICustom Search APIDocuments APIDoubleclick for Publishers APIFeed APIGoogle Apps Admin APIsLibraries APIOrkut APIPicasa Web Albums APIPrediction API

非推奨期間の残りの間、これらの API は明確に非推奨ポリシー言語の恩恵を受けることができます。基礎となる API に対する Google のコミットメントは変わりません。Google は非推奨ポリシーに関係なく、API を変更する際には先行してその変更内容をお伝えするよう、努めます。 

古い API のサポートを廃止

いくつかの古い API やバージョンを非推奨にすることにしました。詳細は、各 API のドキュメントをご覧ください。


開発者に対するコミットメント

今回のポリシーの変更は、Google が使いやすくてスケーラビリティに優れたテクノロジーを皆さんにより簡単にお届けし、皆さんがユニークなアプリケーションを構築することに注力できるようにするものです。今後も、Google はパワフルで新しいテクノロジーを開発者向けプラットフォームに取り入れるとともに、現在提供している API に対してもコミットし続けます。






Google+ プロジェクトは、 現実世界でのコミュニケーションの細やかさと豊かさをソフトウェアで再現しようとするものです。そして、Google+ プラットフォームは、このニュアンスと豊かさをウェブ全体にもたらします。このプロジェクトでは、まず Google 自身のプロダクトから開始し、サイトオーナーやコンテンツパブリッシャー向けに +1 ボタンを追加し、パートナーが作ったゲームを導入しました。ただし、これは始まりに過ぎません。アプリケーション開発者の皆さんが、リッチな共有、アイデンティティ、会話などをアプリの中に取り込めるようにしたいと考えています。そして、先日 Google+ API をローンチし、Google+ は次のステップへ踏み出しました。

情報をパブリックに


Google+ では、ユーザーが自分の情報(家族との会話からパブリックなショーケースや議論まで)を完全にコントロールできるようになります。今回の最初の API リリースではパブリックな情報のみを対象とし、Google + 上でパブリックに共有された情報のみを見ることができます。たとえば、people.get メソッドを使って以下のような HTTP リクエストを送信すると、私のプロフィールを見ることができます。

GET https://www.googleapis.com/plus/v1/people/108189587050871927619?key=yourAPIKey


上記の場合は以下の JSON データを返します。

{
"kind": "plus#person",
"id": "108189587050871927619",
"displayName": "Chris Chabot",
"image": {
"url": "https://lh5.googleusercontent.com/-cQNLOQzkGpE/AAAAAAAAAAI/AAAAAAAAEjo/M9_pXL-ra4Q/photo.jpg"
},
"organizations": [
{
"name": "Google+ Developer Relations",
"title": "Developer Advocate & Manager",
"type": "work"
}
]
}


同様に, 最近のパブリックな記事は activities.list メソッドを使用して取得することができます。

GET https://www.googleapis.com/plus/v1/people/108189587050871927619/activities/public?key=yourAPIKey

なお、パブリックなデータのみを対象としているため、リクエストを送信する前にアプリケーションの登録が必要です。もし、どの Google+ ユーザーがアプリケーションを実行しているかが不明な場合(たとえば、ユーザーが初めてインストールする場合)、 新しい plus.me OAuth2 スコープ経由でユーザーの確認を行うことができます。



アプリケーションがこのスコープをリクエストすると、長い認証用の文字列ではなく、特別な「me」という文字列を使用することができます。

GET https://www.googleapis.com/plus/v1/people/me

ベストプラクティスとライブラリ

Google+ API では、あらゆるところで既存の標準とベストプラクティスを使用しています。
  • API メソッドは RESTful HTTP リクエストを送信し、JSON でレスポンスが戻ってきます。
  • payload フォーマットは 標準のシンタックスを使用しています(たとえば、人の情報は PoCo ベース、活動の情報は ActivityStrea.ms ベース )。
  • ユーザーデータにセキュリティ上安全にアクセスする場合は OAuth2 を使用しています。


さらに、最近は、HTTP リクエストをそのままでは使わないことから、よく利用される言語(Java, GWT, Python, Ruby, PHP, Objective-C, と.NET.)用のライブラリも公開しました。これらのライブラリはすべてオープンソースです。皆さまのフィードバックとご協力をお待ちしております。

developers.google.com

今回発表したパブリックデータにアクセスする新しい API も含めて、Google+ プラットフォームに関する情報は、developers.google.com/+ と新しい Google Developers site をご覧ください。本サイトでは、 ドキュメント利用規約ポリシー開発者同士のディスカッション、Google+ プラットフォーム上の開発を容易にし、楽しくするためのツールなどを提供しています。または、最新のニュースやリリース情報も本サイトで発表する予定です。


ポリシーには、Google の製品でも考慮しているシンプルなガイドラインが含まれています。「ユーザーをまず考える、透明性がある、ユーザーのデータを尊重する(put the user first, be transparent, and respect user data)」。Google+ 上で開発されるすべてのアプリケーションでも、ぜひ守って頂きたいと思います。開発者の皆さんと共にユーザーに喜んでもらえるアプリケーションを作りたい、そんな思いがこのポリシーに込められています。

そして。。。


開発者の皆さん、お待たせしました。Google+ API を使って、ぜひアプリケーションをお作りください。フィードバック やアイデアもお待ちしております。いよいよこれからです。皆さんのインプットにより、 Google+ はさらに成長し、前進するでしょう。

このトピックについては Google+ でフォローしてください。



[本記事は、The official Google Code blog にて、Google Developer Team の Anton Lopyrev と Jason Hall が投稿した Introducing the Google APIs Explorer を翻訳したものです]

Google では開発者の皆さんが Google が提供する API をもっと簡単に使い始められるようにする新しい方法を常に探しています。新しい Google API を偶然見つけたとき、皆さんは手間をかけずに試してみたいと思うのではないでしょうか? こうした背景から、ブラウザから Google の API を簡単に試すことのできるインタラクティブツールとして、Google APIs Exploler を発表しました。当初は、7 つの API をサポートすることからはじめ、今後使える API をどんどん増やしていきたいと考えています。



使ってみたい API を選択することにより、その API のすべてのメソッドとパラメータをインラインドキュメンテーションと共に見ることができます。試したいメソッドのパラメータを埋めて、「Execute」ボタンをクリックするだけで、Explorer はそのリクエストを組み立てて実行し、リアルタイムに結果を戻します。プライベートデータにアクセスする API に対しては、「Switch to Private Access」というリンクをクリックして、Google APIs Explorer に権限を与える必要があります。

では、最初にいくつかの例を紹介しましょう。それぞれのリンク先をアクセスし、「Execute」ボタンをクリックします。


Google APIs Explorer を使えば、Google が提供する API にどんなものがあるかを探したり、API をすぐに使い始めることができます。質問やコメントがありましたら、ヘルプページサポートフォーラムをご覧ください。皆さんのフィードバックをお待ちしています。



[先日「Google Person Finder API のドキュメンテーションの翻訳について」というブログ記事を公開しましたが、引き続きデータモデルの各フィールドの説明を中心に、ソフトウェアエンジニアの花岡 俊行が翻訳をしてくれました。なお、正式版の翻訳については code site に掲載されるのをお待ちください-山崎]

Data Model

2 つのタイプの record があります。PERSON record は静的な情報、NOTE record は動的な情報のための record です。NOTE は特定の PERSON に属し、PERSON はいくつでも NOTE を持つことができます。一度 record が作られたら、それは変化しません。ある PERSON に関してのデータが変化したことを示すには、時刻情報を付加した NOTE をその PERSON に関連付けて加えてください。

PERSON record は、行方不明者を探している人、行方不明者について情報を持っている人のどちらからも作られる可能性があります。ある人に対する PERSON record はすべての関係情報の集合点を表します。そして、その人に対する NOTE record は共有する情報を蓄積していくものです。

PERSON records

ある人に対する PERSON record は複数あるかもしれません。複数の source からデータをインポートするアプリケーションではある人に対する PERSON record が複数あるということが起こり得ます。それらの record を関連付けるかどうかはアプリケーションに任せられます。アプリケーションがすべての record のコピーを持ち、どの record が同じ人を指すかをそれとは別に追跡するという方法が推奨されます。

■メタ情報

人々が探しているデータの信頼性を調べられるようにするためのメタ情報です。

person_record_id (string):
あるレコードに対するユニーク ID であり、ドメイン名と、それにスラッシュとローカル ID が続く。ドメイン名はこのレコードに対して権限を持つホームレポジトリを示す。ローカル ID のフォーマットはホームレポジトリに任せられる。person_record_id が、そのアプリケーション自身と異なるドメインから始まっている場合、その record は他の source から得られたクローンであることを意味する。

entry_date (string in the form "yyyy-mm-ddThh:mm:ssZ"):
この record のコピーが保存された UTC 時刻。PFIF レポジトリは、record が追加時のこの値が単調増加することを保証しなければならない。それにより、クライアントは最後に受け取った entry_date 以降の entry_date をもつ record を要求することによってレポジトリのコピーを更新することができる。
author_name (string):
情報提供者のフルネーム。
author_email (string):
情報提供者のメールアドレス。
author_phone (string):
情報提供者の電話番号。
source_name (string):
この record のホームレポジトリの名前(情報元のサイト名)。
source_date (string in the form "yyyy-mm-ddThh:mm:ssZ"):
この record がホームレポジトリ内で作成された UTC 時刻 (情報元の投稿日)。
source_url (string):
この record のホームレポジトリにおける URL(情報元の URL )。

■識別情報

これらのフィールドは人の識別情報用の変化しないデータです。これらは検索に使われます。

first_name (string):
探している人、見つかった人のファーストネーム。スペースに続けてミドルネームも追加できる。
last_name (string):
探している人、見つかった人のラストネーム。
home_city (string, city name):
探している人、見つかった人の市。
home_state (string):
探している人、見つかった人の都道府県。
国の行政区域を大文字 ISO 3166-2 形式で表現します。
訳注: http://ja.wikipedia.org/wiki/ISO_3166-2:JP を参照
home_neighborhood (string):
探している人、見つかった人の近隣の場所。
home_street (string):
探している人、見つかった人の町名。
home_postal_code (integer):
探している人、見つかった人の郵便番号。
photo_url (string):
探している人、見つかった人を識別する写真への URL。
other (large string):
自由形式のテキストデータで、他の source から持ち込まれた静的なデータに使われます(他の source からインポートされた動的なデータは NOTE record に保存されるべきです)。短いフィールドは一行で、フィールド名、コロン、値で表現されます。長いフィールドは、フィールド名とコロンの行に続いてインデントされた文字列で表現されます。機械的な処理で他の形式から PFIF 形式に record が変換された場合は、"automated-pfif-author"フィールドが存在すべきです。このフィールドは PFIF を作成したプログラム名を表します。PFIF レポジトリから record がエクスポートされた場合には"automated-piff-author"フィールドは付加されません。人に対する自由形式テキストの説明も"description"のフィールド名でここに表されます。たとえば、自由形式文字列フィールドを持つ PFIF 以外のフォーマットから record を取得するプログラムは other フィールドを含み、それは次のようになるでしょう:

description:
    Dark hair, in her late thirties.
    Also goes by the names "Kate" or "Katie".
automated-pfif-author: ScrapeMatic 0.5

他のアプリケーションからインポートされたフィールドに対する名前はドメイン名とスラッシュを始めに付加されるべきです。例えば、ICRC record から生年月日がインポートされた場合は次のようになります:
(訳注:この例は PFIF 1.1 当時のもの。実際には PFIF 1.2には生年月日専用のフィールドが用意されています)

icrc.org/birthdate: 1976-02-26
sex (string):
探している人、見つかった人の身体的性別。femalemaleother の 3 つのうち 1 つで指定されます。性別不明の場合はこのフィールドを省略してください。
date_of_birth (string):
探している人、見つかった人の正確な生年月日(YYYY-MM-DD)またはだいたいの生年月日(YYYY, YYYY-MM)。
age (string):
探している人、見つかった人のだいたいの年齢。source_date 時点での、生年月日からの年数。このフィールドの値はひとつの 10 進数整数か、2 つの 10 進整数をハイフンでわけた包含範囲を取る。source_date が指定されていない場合、このフィールドは定義されません。(訳注: 27 歳→ "27", 25 から 30 歳→"25-30")
home_country (string):
探している人、見つかった人の母国。大文字 2 文字の ISO 3166-1 country code で指定されます。

NOTE records

NOTE record はちょうどひとつの PERSON record に属します。ある PERSON record には任意の数の NOTE record が関連付けられます。すべての note はタイムスタンプと note の著者情報を持ちます。アプリケーションはタイムスタンプを、フィールドの最新情報を決定するのに使えます。ユーザーは著者情報をフィールドの信頼性を確かめるために使うことができます。

これらのフィールドは時間とともに変化する情報を保存します。これらのフィールドが NOTE record に現れたときは、この record はこれらのフィールドに対する新しい値を定めます。source_date フィールドは新しい値が効力を持つ日付を示します。例えば、最新の場所情報を表示したいアプリケーションは、last_known_location フィールドを持っていてるもののうち最新の source_data を持つ NOTE を参照すればいいことになります。

note_record_id (string):
この record のユニーク ID であり、ドメイン名にスラッシュ、ローカル ID が続きます。ドメイン名はこの record の権限を持つホームレポジトリの識別子です。ローカル ID のフォーマットはホームレポジトリに任されています。note_record_id がアプリケーションのドメインと異なったドメインから始まっている場合、この record は他の source からのクローンであることを意味します。
entry_date (string in the form "yyyy-mm-ddThh:mm:ssZ"):
この record のコピーが保存された UTC 時刻。PFIF レポジトリは、record が追加時のこの値が単調増加することを保証しなければなりません。それにより、クライアントは最後に受け取った entry_date 以降のentry_date をもつ record を要求することによってレポジトリのコピーを更新することができます。
author_name (string):
情報提供者のフルネーム。
author_email (string):
情報提供者の e-mail address。
author_phone (string):
情報提供者の電話番号。
source_date (string in the form "yyyy-mm-ddThh:mm:ssZ"):
この record がホームレポジトリ内で作成された時刻(情報元の投稿日)。ほとんどのケースで、note はこのフィールドでソートして表示されるべきでしょう。
found (boolean string, "true" or "false"):
行方不明者に連絡が取れた場合、会えた場合は"true", さもなくば"false"の値をとります。この note の text フィールドで、いつどこで連絡が取れたか、会えたかを説明するべきです。
email_of_found_person (string):
見つかった人の連絡先 e-mail です。このフィールドは人物が見つかった場合のみ存在します。この note の text フィールドでどのように連絡先情報が決定されたか説明するべきです。
phone_of_found_person (string):
見つかった人の連絡先電話番号です。このフィールドは人物が見つかった場合のみ存在します。この note の text フィールドでどのように連絡先情報が決定されたか説明するべきです。
last_known_location (string):
捜索されている人を最後に見かけた場所を述べた自由形式説明であり、市や都道府県など、できるだけ詳細に述べた情報です。この note の text フィールドはどのように所在地が決定されたか述べるべきです。
text (large string):
自由形式の文字列であり、人物の状態や状況、最後に目撃された所在地の詳細の説明です。他の情報の訂正であることもあるでしょう。
status (string):
探している人、見つかった人の状態で次の 5 つの文字列のうちの 1 つを取ります。
information_sought
情報提供者は対象の person の情報を探しています。
is_note_author
情報提供者は対象の person 自身です。
believed_alive
情報提供者は対象の person が生きているという情報を入手しました。
believed_missing
情報提供者には対象の person が行方不明と判断した理由があります。
believed_dead
情報提供者は対象の person が亡くなっているという情報を入手しました。

person_record_id (string):
この NOTE record が関連づいている PERSON record の person_record_id です。
linked_person_record_id (string):
この NOTE record が、同一人物に対する重複 record であると主張している他の PERSON record のperson_record_id です。
ユーザーがある 2 つの PERSON record を重複だと示すときには、NOTE record をそれら両方の PERSON record に付加し、それぞれに linked_person_record_id フィールドを持たせ、相互に指し示します。これらの NOTE record はこれらを重複だと示した関係者を示す author_name フィールドを持ち、text フィールドに重複だと判断するにいたった理由を付加します。

Notes

String fields は non-ASCII character を含められます。

PFIF 1.2 では person 要素の外にトップレベルの note 要素を許します。正しい PFIF ドキュメントはひとつの pfif 要素からなり、それはひとつ以上の person か note 要素を持ちます。

note 要素が person 要素の外に現れる場合、note は person_record_id をもつ必要があります。それ以外の場合には person_record_id フィールドは任意ですが、存在する場合には note を含んでいる person の person_record_id と一致する必要があります。

person 要素の中では、 必須の person_record_id がはじめにくる必要があり、note 要素は最後に来る必要があります。note 要素の中では、note_record_id が最初に来る必要があり、もし存在するときには person_record_id がそれに続くべきです。残りのフィールドは任意の順番であらわれることができます。