この記事は Mike Pegg(Head of developer relations, Google Maps Platform) による Google Maps Platform Blog の記事 "Supporting not-for-profit COVID-19 response efforts with Google Maps Platform credits" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
新型コロナウイルス感染症(COVID-19)の影響が拡大し続ける中、人々を勇気づけようとする取り組みがデベロッパー コミュニティによって行われています。こうした取り組みをサポートするため、Google は、非営利のプロジェクトにて公開予定の COVID-19 関連のウェブサイトやモバイルアプリに対して、Google Maps Platform クレジットの申請に対する手続きを迅速化しました。非営利活動をするデベロッパーや非営利団体がこの取組みを通じてクレジットの利用を申請すると、資格要件を満たすサイトであるかなど Google 担当者が審査します。その地域にとって有効で求められるサービスの提供を早急に開始しようとしているデベロッパーの皆様、こちらのデベロッパー リソースハブにアクセスして詳細をご確認ください。
図 2: MobileNet V2 での処理時間とスピードアップの程度。すべてのバージョンで浮動小数点モデルを使用。CPU Baseline は 2 スレッド TensorFlow Lite カーネルを示す。
* GPU: Core ML は推論に CPU と GPU を使用。NPU: Core ML は推論に CPU と GPU、さらに NPU(Neural Engine)を使用。
Inception V3 での処理時間とスピードアップの程度
図 3: Inception V3 での処理時間とスピードアップの程度。すべてのバージョンで浮動小数点モデルを使用。CPU Baseline は 2 スレッド TensorFlow Lite カーネルを示す。
* GPU: Core ML は推論に CPU と GPU を使用。NPU: Core ML は推論に CPU と GPU、さらに NPU(Neural Engine)を使用。
使ってみたい方へ
必要な処理は、新しいデリゲートのインスタンスを使って TensorFlow Lite の Interpreter を呼び出すことだけです。詳しい説明は、完全版のドキュメントをご覧ください。推論の際には、Swift API(下の例)か C++ API(ドキュメントに記載)を使って TensorFlow Lite デリゲートを呼び出すことができます。
Swift の例
このデリゲートを一般的な Swift アプリケーションから呼び出す方法を示します。必要な処理は、新しい Core ML デリゲートを作成してオリジナルの interpreter の初期化コードに渡すことだけです。
let coreMLDelegate = CoreMLDelegate()
let interpreter = try Interpreter(modelPath: modelPath,
delegates: [coreMLDelegate])
API の呼び出し 1 回につき、最短で 1 日、最長で 1 年課金を延期することができます。新しい課金日になる前に再度 API を呼び出すと、さらに課金を延期することができます。この対応を取る場合は、メールやアプリ内で課金日の変更を通知することをお勧めします。定期購入だけでなく、無料試用ユーザーにも同様に通知することをお勧めします。
Play Console のウェブサイトまたはアプリを使うと、皆さんのアプリでユーザーが購入したアイテムについて、注文の確認、返金の実行、定期購入のキャンセルの管理をすることができます。部分返金は、Play Console のウェブサイトからユーザー単位で実行できます。全額返金は、Play Console アプリや Play Console ウェブサイト、または Google Play Developer API を使ったプログラムから Purchases.subscriptions:refund を呼び出すことで実行できます。
定期購入の一時停止
これを有効にすると、ユーザーは Google Play 定期購入センターまたは定期購入キャンセル フローで定期購入の「一時停止」を選べるようになります。一時停止は、現在の課金期間が終了した後に反映されます。一時停止期間が終了するか、ユーザーが手動で定期購入を再開すると、課金が再開されます。
定期購入の一時停止は、リアルタイム デベロッパー通知(RTDN)を設定しなくても有効化できますが、その場合、ユーザーが定期購入を一時停止または再開した際にバックエンドと同期をとるのが難しくなります(例 : クロスプラットフォーム権限管理など)。アプリからのディープリンクを提供すると、一時停止中のユーザーが Play Store アプリの定期購入センターを簡単に開けるようになります。
RTDN は、定期購入の実行や更新などのイベントを含め、すべての定期購入イベントを正確に記録し保存するためにご利用ください。リアルタイム トラッキングを使うと、個々の定期購入ユーザーの無料試用の登録有無など、Google Play Console では利用できない細かい点まで把握できるので、収益レポートの改善にも役立ちます。
ディープリンクによる課金の再開
先行きの見えない状況のため、Google Play で定期購入をキャンセルするユーザーもいるかもしれません。その場合、デベロッパーの皆さんは、カスタマーサービス リクエストへの応答の中で Google Play Developer API の Purchases.subscriptions:cancel を呼び出すと、定期購入をキャンセルできます。注 : 通常、この API は、ユーザーが [My Orders] ページから返金をリクエストした場合に利用します。詳しくは、定期購入費用の返金をご覧ください。
ユーザーが定期購入をキャンセルしても、現在の課金サイクルが終わるまではコンテンツにアクセスできます。課金サイクルが終了した時点で、アクセスは無効になります。なお、必ずアプリから Play Store アプリの定期購入の管理ページに簡単にアクセスできるように、ディープリンクを提供する必要があります。これにより、ユーザーは再開を含めた定期購入ステータスをいつでも管理できるようになります(こちらのサンプルコードをご覧ください)。
Google Cloud は、インターネットサービス業界で活躍するインフラエンジニア、サーバーアプリケーションエンジニア、テクニカルリーダーの皆様に向けて、"Google Cloud INSIDE Digital" をオンラインで開催します。
業界をリードする方々や、深い専門知識をもつ Google 社員が、注目インターネットサービスの開発の裏側や、Google Cloud Platform を中心としたテクノロジーアップデートをお届けします。この Google Cloud INSIDE Digital をきっかけに新しいサービスやプロダクトが生まれるような会に参加者の皆様と共に育てて行きたいと考えています。今回は、"先進的な企業におけるデータ利活用" をテーマにお送りします。