この記事は 機械知覚ソフトウェア エンジニア、Hui Fang による Google Research Blog の記事 "Using Deep Learning to Create Professional-Level Photographs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

機械学習(ML)は、目標が明確に定まる用途で数多くの優れた成果を残しています。正解かどうかの答えが存在するタスクでは学習プロセスが比較的容易になり、目標を達成しやすくなります。たとえば、イメージ内の物体を正確に特定したり、ある言語から別の言語に適切に翻訳したりといったタスクです。しかし、結果の客観的評価が難しい分野もあります。たとえば、写真が美しいかどうかは美的感覚によって決まります。これは非常に主観的な概念です。
カナダ、ジャスパー国立公園のプロ級の(?)写真
ML による主観的概念の学習を追求するため、Google はアートコンテンツを生成する ディープ ラーニング システム ...
この記事は 機械知覚ソフトウェア エンジニア、Hui Fang による Google Research Blog の記事 "Using Deep Learning to Create Professional-Level Photographs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

機械学習(ML)は、目標が明確に定まる用途で数多くの優れた成果を残しています。正解かどうかの答えが存在するタスクでは学習プロセスが比較的容易になり、目標を達成しやすくなります。たとえば、イメージ内の物体を正確に特定したり、ある言語から別の言語に適切に翻訳したりといったタスクです。しかし、結果の客観的評価が難しい分野もあります。たとえば、写真が美しいかどうかは美的感覚によって決まります。これは非常に主観的な概念です。
カナダ、ジャスパー国立公園のプロ級の(?)写真
ML による主観的概念の学習を追求するため、Google はアートコンテンツを生成するディープ ラーニング システムの試験版を公開しました。このシステムは、プロの写真家のやり方をまねています。Google ストリートビューのパノラマの景色を見て回って最高の構図を探し、さまざまな後処理を実行して「美しい」イメージを作成します。このいわば仮想の写真家は、アルプス、カナダのバンフやジャスパー国立公園、カリフォルニアのビッグサーやヨセミテ国立公園など、4 万以上のパノラマを旅し、とても印象的な写真を生成して帰ってきました。その中には、プロの写真家からプロ級の品質に近いという評価を受けたものもあります。

モデルのトレーニング
「美しさ」は、 AVA などのデータセットを使ってモデル化できます。しかし、単純にこれを使って写真を加工しようとしても、写真の彩度が上がりすぎるなど、美しさのいずれかの側面が失われることもしばしばです。一方で、教師あり学習によって美しさのさまざまな側面を適切に学習させるには、ラベル付けされたデータセットが必要になるでしょう。これは収集が難しいものです。

私たちのアプローチは、プロ品質の写真のみを集めるというものです。これには、加工前後のイメージのペアや追加のラベルは含まれていません。そして、「美しさ」を自動的に複数の側面に分割し、いくつかのイメージ操作を組み合わせて生成したネガティブ サンプルと合わせて、それぞれの美しさの側面を個別に学習させます。これらのイメージ操作を準「直交」として保持することにより、写真の構図、彩度や HDR レベル、ライティングのドラマチックさを高速かつ分割可能な操作で最適化し、写真の質を高めることができます。
パノラマ写真(a)をトリミングし(b)、彩度と HDR 強度を調整し(c)、ドラマチック マスクを適用する(d)。それぞれのステップは学習した美的感覚の側面の 1 つに沿って実行される。
従来のイメージ フィルタは、彩度や HDR の詳細、構図に関するネガティブ トレーニング サンプルを生成するために使用しました。さらに、ドラマチック マスクという特殊な操作も導入しています。これは、ドラマチック ライティングの概念の学習と合わせて作成したものです。ネガティブ サンプルは、プロの写真にいくつかのイメージ フィルタを適用し、明度をランダムに変えて見栄えを悪くすることによって生成しました。トレーニングには、Generative Adversarial Network(GAN)を使用しています。これは、生成モデルでネガティブ サンプルのライティングを修正するマスクを生成しつつ、識別モデルで加工した写真と実際のプロの写真を見分けようとするものです。ドラマチック マスクは、ビネットのような形が決まったフィルタとは違い、写真の内容を考慮して明度を調整します。GAN のトレーニングでは競い合うようにして学習が進むため、その課程でさまざまなバリエーションの写真が提案されることになります。トレーニングの詳細については、論文をご覧ください。

結果
以下に、このシステムが Google ストリートビューから生成したいくつかの写真を紹介します。トレーニングされた「美しさ」のフィルタを適用することによって、感動的な作品が生まれていることがおわかりいただけるでしょう(本投稿の最初に掲載したイメージも含まれています)。
カナダ、ジャスパー国立公園
スイス、インターラーケン
イタリア、オロビエ・ベルガマスケ公園
カナダ、ジャスパー国立公園
プロによる評価
このアルゴリズムがどの程度成功したかを見極めるため、「チューリング テスト」のような実験を行いました。生成した写真を質の異なる他の写真と混ぜて何名かのプロの写真家に見せ、それぞれの質を点数で評価してもらいました。各評価の意味は以下のとおりです。
  • 1: 構図やライティングなどを考えず、ただ撮影しただけ。
  • 2: 写真の経験がない一般の人にしてはよい写真。ただし、芸術的に卓越した点は認められない。
  • 3: セミプロ級。明らかに芸術的側面が見受けられる優れた写真。このまま行けばプロの写真家になれる。
  • 4: プロ級。
次のグラフのそれぞれの線は、イメージに対して予想される点数の範囲ごとに、プロの写真家の評価点数を示したものです。もっとも高得点が予想された写真では、約 40% が「セミプロ」レベルから「プロ」レベルの評価を受けています。
写真の予測点数とプロの写真家による評価点数
今後の作業
ストリートビューのパノラマは、このプロジェクトの実験材料となりました。いつの日か、皆さんが現実の世界でよい写真をとる際に、この技術が役立つことになるかもしれません。生成した写真の中から、私たちが気に入った写真を集めたショーケースも作成しています。お好みの写真を見つけたら、クリックしてみてください。その近辺のストリートビューのパノラマが表示されます。もしその時あなたがカメラを持っていたら、同じように撮影していたでしょうか?

謝辞
本作品は、Google Research の機械知覚チームの Hui Fang と Meng Zhang によるものです。Inception ネットワークを利用して AVA 点数の予測を行った Vahid Kazemi に感謝いたします。また、Google ストリートビュー パノラマの処理をサポートしてくれた Sagarika Chalasani、Nick Beato、Bryan Klingner、Rupert Breheny にも感謝いたします。有用なレビューやコメントをいただいた Peyman Milanfar、Tomas Izo、Christian Szegedy、Jon Barron、Sergey Ioffe にも感謝いたします。匿名のプロの写真家の皆さんにも、この場を借りてお礼を申し上げます。

この記事は Google Play 製品マネージャー、Fergus Hurley による Android Developers Blog の記事 "Android vitals: Increase engagement and installs through improved app performance " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

多くのユーザーは、アプリのパフォーマンスが悪いと感じたことがあります。アプリのクラッシュ、無応答、遅いレンダリングなどを目にしたときのことを思い出してください。端末の電池の使用量を確認し、電池を使いすぎているアプリを見つけたとき、皆さんはどのように反応したでしょうか。アプリの動作が適切でなければ、ユーザーはそれに気づきます。実際、Google Play のアプリのレビューを社内で分析した結果、星 1 つのレビューの半数で、アプリの安定度が指摘されていました。

逆に、快適に動作するアプリには常に高い評価やレビューが寄せられています。その結果、Google Play のランキングが上がり、インストールも増加します。さらにエンゲージメントも向上し、ユーザーがアプリに費やす時間や金額も増えます ...
この記事は Google Play 製品マネージャー、Fergus Hurley による Android Developers Blog の記事 "Android vitals: Increase engagement and installs through improved app performance " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

多くのユーザーは、アプリのパフォーマンスが悪いと感じたことがあります。アプリのクラッシュ、無応答、遅いレンダリングなどを目にしたときのことを思い出してください。端末の電池の使用量を確認し、電池を使いすぎているアプリを見つけたとき、皆さんはどのように反応したでしょうか。アプリの動作が適切でなければ、ユーザーはそれに気づきます。実際、Google Play のアプリのレビューを社内で分析した結果、星 1 つのレビューの半数で、アプリの安定度が指摘されていました。

逆に、快適に動作するアプリには常に高い評価やレビューが寄せられています。その結果、Google Play のランキングが上がり、インストールも増加します。さらにエンゲージメントも向上し、ユーザーがアプリに費やす時間や金額も増えます。

Google I/O 2017 では、Google Play Console の新しい Android Vitals ダッシュボードについて発表しました。Android Vitals は、適切でないアプリの動作を把握し、分析することを目的に作られているため、アプリのパフォーマンスを改善して、パフォーマンス向上によるメリットを得られます。

Google Play Console の Android Vitals




Android Vitals は、アプリのパフォーマンスを改善する余地を見つけます。ダッシュボードはエンジニアにとってもセールスにとっても便利なものになっています。アプリを監視してパフォーマンスの指標をすばやく参照できるので、データを分析し、改善にしかるべきリソースを割り当てることができます。

Android 端末でユーザーが利用データや診断データを自動的に共有することを選んだ場合、次のようなデータが収集され、確認できるようになります。
  • 安定度: ANR 率 & クラッシュ率
  • レンダリング時間: 遅いレンダリング(16ms)と UI フレームのフリーズ(700ms)
  • 電池使用量: wake locks のスタック、頻繁なスリープ解除

アプリのパフォーマンス改善によって評価が 4.1☆ から 4.5☆ に上昇した Busuu の事例

Busuu は世界屈指の言語学習アプリです。製品責任者の Antoine Sakho から、どのように Busuu がアプリのユーザー評価を上昇させたかをお聞きください。

Android や Google Play のツールを使って高いパフォーマンスを実現するエンジニアリング手法


ダッシュボードに表示されているデータを理解し、アプリのパフォーマンスと安定度を改善する方法については、Android Vitals のベスト プラクティスに関する記事をご覧ください。Android や Google Play のその他のツールを使って不適切な動作を見つけて修正する方法は、I/O セッションでも紹介しています。

また、Playbook アプリでは、その他の Play Console の機能や、Google Play で成功を収めるための最新ニュースや秘訣を学ぶことができます。ぜひベータ版プログラムに参加し、インストールしてください。

このブログ投稿はどのくらい役に立ちましたか?
Reviewed by Hak Matsuda - Developer Relations Team

この記事は Google Maps API プロダクト マネージャー、Fontaine Foxworth による Google Geo Developers Blog の記事 "Removing Place Add, Delete & Radar Search features" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

このたび、プレイスの追加・削除機能とレーダー検索機能を、Google Places API ウェブサービスと JavaScript ライブラリから削除することになりました。Android と iOS 用の Google Places API でも、プレイスの追加機能のサポートを終了します。なお、これらの機能は、2018 年 6 月 30 日までは利用することができます。それ以降は、Places API へのリクエストに対してエラー メッセージが返されるようになります ...
この記事は Google Maps API プロダクト マネージャー、Fontaine Foxworth による Google Geo Developers Blog の記事 "Removing Place Add, Delete & Radar Search features" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

このたび、プレイスの追加・削除機能とレーダー検索機能を、Google Places API ウェブサービスと JavaScript ライブラリから削除することになりました。Android と iOS 用の Google Places API でも、プレイスの追加機能のサポートを終了します。なお、これらの機能は、2018 年 6 月 30 日までは利用することができます。それ以降は、Places API へのリクエストに対してエラー メッセージが返されるようになります。

2012年、Google Places APIプレイスの追加と削除機能がリリースされ、アプリケーションからユーザーの Google マップ データベースの情報を即座に更新したり、Google マップに追加する新しいプレイスを送信することができるようになりました。さらに、レーダー検索も導入され、ユーザーも導入され、ユーザーが地域内で具体的なスポットを特定できるようになりました。

しかしながら、これらの機能の利用者は一部にとどまっており、プレイスの追加に関しては、地図に載っていない場所を追加するという方法も提供されていることから、今回の機能変更に至りました。

次のステップ

該当する機能を利用されている方は、2018 年 6 月末までに、これらの機能をアプリケーションから完全に削除し、次の方法で対応されることをおすすめします。

レーダー検索機能の代替として、Nearby 検索を利用することができます。rankby=distance を指定し、keyword または name を指定せずに検索をしてみてください。詳細については、ウェブサービスまたは Google マップ JavaScript API のプレイス ライブラリのデベロッパー ガイドをご覧ください。

なお、PythonNode.jsJavaGoGoogle マップ ウェブサービス用クライアント ライブラリでも、この機能のサポート終了を反映するアップデートが行われています。

ご不便をおかけしますが、この代替方法がお役に立てば幸いです。ご質問やフィードバックがある方は、Issue Tracker より登録をお願いします。

さらに、Google Maps APIs の利用に関して、ご質問やご意見のある方は、問い合わせフォームよりご連絡をお願いします。

Reviewed by 丸山 智康 (Tomoyasu Maruyama) - Google Customer Engineer Lead, Japan and APAC

この記事は ソフトウェア エンジニア、Hiranya Jayathilaka による The Firebase Blog の記事 "Accessing Database from the Python Admin SDK" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

昨年 4 月、Firebase Admin SDK for Python が一般公開されたことを お知らせしました。この SDK の最初のリリースでは、Firebase Authentication の 2 つの重要な機能であるカスタム トークンの作成と ID トークンの検証がサポートされました。そして本日(*原文公開当時)、うれしいことに、バージョン 2.1.0 以降の Firebase Admin SDK for Python でデータベースがサポートされることになりました ...
この記事は ソフトウェア エンジニア、Hiranya Jayathilaka による The Firebase Blog の記事 "Accessing Database from the Python Admin SDK" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

昨年 4 月、Firebase Admin SDK for Python が一般公開されたことをお知らせしました。この SDK の最初のリリースでは、Firebase Authentication の 2 つの重要な機能であるカスタム トークンの作成と ID トークンの検証がサポートされました。そして本日(*原文公開当時)、うれしいことに、バージョン 2.1.0 以降の Firebase Admin SDK for Python でデータベースがサポートされることになりました。

Python SDK の実装方法の特徴により、他の Admin SDK(Node.js および Java)のデータベース API とは大きく異なる点がいくつかあります。もっとも顕著な違いは、リアルタイム イベント リスナーがサポートされていない点です。現在の Python Admin SDK では、データベース リファレンスに対してイベント リスナーを追加してリアルタイムに更新通知を受け取る方法は提供されておらず、データ取得操作はすべてブロッキング メソッドとして提供されています。そのような違いはありますが、この API でできることはたくさんあります。

Python Admin SDK のデータベース モジュールを使うと、基本データ操作と高度な問い合わせの両方を行うことができます。Python 環境からデータベースにアクセスするには、Realtime Database の URL を使って SDK を初期化します。
import firebase_admin
from firebase_admin import credentials

cred = credentials.Cert('path/to/serviceKey.json')
firebase_admin.initialize_app(cred, {
    'databaseURL' : 'https://my-db.firebaseio.com'
})

次に、SDK の db モジュールからデータベース リファレンスを取得します。データベース リファレンスは、一般的なデータベース操作を Python メソッドとして提供しています(get(), set(), push(), update(), delete())。
from firebase_admin import db

root = db.reference()
# Add a new user under /users.
new_user = root.child('users').push({
    'name' : 'Mary Anning', 
    'since' : 1700
})

# Update a child attribute of the new user.
new_user.update({'since' : 1799})

# Obtain a new reference to the user, and retrieve child data.
# Result will be made available as a Python dict.
mary = db.reference('users/{0}'.format(new_user.key)).get()
print 'Name:', mary['name']
print 'Since:', mary['since']

Firebase Realtime Database は、すべてのデータの値を JSON として格納しています。Python Admin SDK が JSON と Python のネイティブ データ型との変換をシームレスに行っている点に注目してください。

高度なクエリーを行うには、データベース リファレンスで提供されているいずれかの order_by_* メソッドを呼び出します。すると query オブジェクトが返され、そこに追加パラメータを設定できます。この API を使うと、件数制限や範囲指定、並べ替えた結果の取得ができます。
from firebase_admin import db

dinos = db.reference('dinosaurs')

# Retrieve the five tallest dinosaurs in the database sorted by height.
# 'result' will be a sorted data structure (list or OrderedDict).
result = dinos.order_by_child('height').limit_to_last(5).get()

# Retrieve the 5 shortest dinosaurs that are taller than 2m.
result = dinos.order_by_child('height').start_at(2).limit_to_first(5).get()

# Retrieve the score entries whose values are between 50 and 60.
result = db.reference('scores').order_by_value() \
    .start_at(50).end_at(60).get()

この新しい API の詳細は、Admin SDK ドキュメントGithub レポジトリをご覧ください。また、問題の報告やパッチの提供を通して、Admin SDK の改善にご協力ください。実は、この API をこれほどの短期間で開発してリリースできたのも、皆さんからの絶え間ないフィードバックのおかげです。ぜひ Firebase のコーディングをお楽しみください。


Reviewed by Khanh LeViet - Developer Relations Team

この記事はソフトウェア エンジニア、Amos Yuen、G Suite デベロッパー アドボケート、Wesley Chun(@wescpy)による G Suite Developers Blog の記事 " Google People API now supports updates to Contacts and Contact Groups" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

本日(*原文公開当時)より、 Google People API に連絡先と連絡先グループ用の新しいエンドポイントを追加しました。昨年、古 ...
この記事はソフトウェア エンジニア、Amos Yuen、G Suite デベロッパー アドボケート、Wesley Chun(@wescpy)による G Suite Developers Blog の記事 " Google People API now supports updates to Contacts and Contact Groups" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

本日(*原文公開当時)より、Google People API に連絡先と連絡先グループ用の新しいエンドポイントを追加しました。昨年、古い Contacts API を置き換えることを念頭に、読み取り専用のエンドポイントに対応した Google People API をリリースしました。今回、書き込み用のエンドポイントを追加したことにより、その目的に一歩近づきました。デベロッパーが連絡先を作成、削除、更新できるようになっただけでなく、連絡先グループ用のエンドポイントも追加されているため、連絡先グループの読み書きもできるようになっています。

この API にアクセスするには、まずアプリケーションが認可を受ける必要があるため、Google Developers Console で People API を有効にしてプロジェクトを作成し、サービスにアクセスできるようにします。実行しなければならないステップについては、ここを参照してください。Google API や Developers Console にまだ慣れていない場合は、シリーズの第 1 弾であるこの動画を見て知識を深めておけば、すぐに追いつけます。


認可を受けると、以下のようにして簡単に(Java 向けの Google API クライアント ライブラリを使って)ユーザーの連絡先を作成できます。
Person contactToCreate = new Person();

List names = new ArrayList<>();
names.add(new Name().setGivenName("John").setFamilyName("Doe"));
contactToCreate.setNames(names);

Person createdContact =
    peopleService.people().createContact(contactToCreate).execute();

アプリは、https://www.googleapis.com/auth/contacts のスコープで認可を受けている必要があります。 people.create メソッドの詳細を記述したドキュメントは、ここから参照できます。既存の連絡先は、以下のようにして更新できます。

String resourceName = "people/c12345"; // existing contact resource name
Person contactToUpdate = peopleService.people().get(resourceName)
    .setPersonFields("names,emailAddresses")
    .execute();

List emailAddresses = new ArrayList<>();
emailAddresses.add(new EmailAddress().setValue("john.doe@gmail.com"));
contactToUpdate.setEmailAddresses(emailAddresses);

Person updatedContact = peopleService.people().updateContact(contactToUpdate)
    .setUpdatePersonFields("emailAddresses")
    .execute();

 people.update メソッドの詳細を記述したドキュメントは、ここから参照できます。連絡先を変更できるこの新機能を使って皆様が作るアプリを楽しみにしています。People API の詳細については、ここから公式ドキュメントを参照してください。


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は G Suite デベロッパー アドボケート、Wesley Chun(@wescpy)による G Suite Developers Blog の記事 "Modifying events with the Google Calendar API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google Calendar APIメール内のマークアップを使ってユーザーのカレンダーにイベントを登録している方もいるでしょう。うれしいことに、これらのツールを使うとアプリから自動的かつシームレスにイベントを登録でき、ユーザーの時間を大幅に節約できます。しかし、もし予定が変わったらどうなるでしょう。その場合を考慮して、アプリからイベントの変更もできるようにしておく必要があります。

メールによるマークアップでは更新もサポートしていますが、できることは限られます。そこで本日の動画では、Calendar API を使ってイベントを変更する方法を紹介しましょう。合わせて、繰り返しの予定を登録する方法も紹介しています。どうぞご覧ください。

あなたの商品に興味を持っている潜在顧客がいて、1、2 回の打ち合わせを設定する場合を考えてみましょう。顧客の興味が増し、商品が最終候補リストに入ると、定期的な打ち合わせが求められます。CRM では、ユーザーの手を煩わせることなくこのような予定を調整できるようにする必要があります。同じように、「友人とのディナー」イベントも、友人と親しくなるにつれて、「また今度」から隔月になるかもしれません。どちらのイベントも、下のような JSON リクエスト ペイロードで日付を調整したり、繰り返し登録できます ...
この記事は G Suite デベロッパー アドボケート、Wesley Chun(@wescpy)による G Suite Developers Blog の記事 "Modifying events with the Google Calendar API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google Calendar APIメール内のマークアップを使ってユーザーのカレンダーにイベントを登録している方もいるでしょう。うれしいことに、これらのツールを使うとアプリから自動的かつシームレスにイベントを登録でき、ユーザーの時間を大幅に節約できます。しかし、もし予定が変わったらどうなるでしょう。その場合を考慮して、アプリからイベントの変更もできるようにしておく必要があります。

メールによるマークアップでは更新もサポートしていますが、できることは限られます。そこで本日の動画では、Calendar API を使ってイベントを変更する方法を紹介しましょう。合わせて、繰り返しの予定を登録する方法も紹介しています。どうぞご覧ください。

あなたの商品に興味を持っている潜在顧客がいて、1、2 回の打ち合わせを設定する場合を考えてみましょう。顧客の興味が増し、商品が最終候補リストに入ると、定期的な打ち合わせが求められます。CRM では、ユーザーの手を煩わせることなくこのような予定を調整できるようにする必要があります。同じように、「友人とのディナー」イベントも、友人と親しくなるにつれて、「また今度」から隔月になるかもしれません。どちらのイベントも、下のような JSON リクエスト ペイロードで日付を調整したり、繰り返し登録できます。
var TIMEZONE = "America/Los_Angeles";
var EVENT = {
    "start": {"dateTime": "2017-07-01T19:00:00", "timeZone": TIMEZONE},
    "end":   {"dateTime": "2017-07-01T22:00:00", "timeZone": TIMEZONE},
    "recurrence": ["RRULE:FREQ=MONTHLY;INTERVAL=2;UNTIL=20171231"]
};

このイベントは、Calendar API の events().patch() メソッドを 1 回呼び出すだけで更新できます。Python を使う場合は、次のようにして API サービスのエンドポイント GCAL に対して更新する有効な EVENT_ID を指定し、上のリクエスト データを渡します。
GCAL.events().patch(calendarId='primary', eventId=EVENT_ID,
    sendNotifications=True, body=EVENT).execute()

Google カレンダーにイベントを登録する方法を紹介した動画を見逃した方は、こちらをご覧ください。また、公式 API ドキュメントもご覧いただけます。さらに、Google Apps Script を使っている方は、プログラムを利用して Calendar サービスから Google カレンダーにアクセスできます。

ぜひこの情報を活用してアプリを改良し、さらに便利でタイムリーな機能をユーザーに提供しましょう。


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は 広告およびコマース担当上級副社長、Sridhar Ramaswamy による Inside AdMob の記事 "Google I/O: New Ways to Put Users at the Center of Your Apps and Payments" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google I/O は Google の魔法の時間です。毎年、何千人ものデベロッパーが Google のもとに集い、新製品のアイデアを共有したり、コンピューティングにおける最新のイノベーションを学んだりします ...
この記事は 広告およびコマース担当上級副社長、Sridhar Ramaswamy による Inside AdMob の記事 "Google I/O: New Ways to Put Users at the Center of Your Apps and Payments" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google I/O は Google の魔法の時間です。毎年、何千人ものデベロッパーが Google のもとに集い、新製品のアイデアを共有したり、コンピューティングにおける最新のイノベーションを学んだりします。

私たちは、デベロッパー コミュニティが期待に胸を膨らませているタイミングで顔を合わせています。現在のユーザーは、今までになく選択肢を与えられています。たとえば、どこで買い物をするか、何を見るか、どのゲームをプレイするか、友だちや家族とどうコミュニケーションをとるかなどです。皆さんの製品は人目を引かなければなりません。ビジネスの拡大に役立つツールが必要です。そして、ユーザーを幸せにしなければなりません。

私たちはそれをお手伝いできます。

本日午後(*原文公開当時)、私のチームは、デベロッパーにとっての 3 つの新たなイノベーションについてお話しします。ユーザーが皆さんのサービスに対して簡単に支払いをできるようにし、ビジネスの収益化とユーザーベースの拡大につなげることができるものです。こちらから、または本投稿の末尾からライブ ストリームをご覧ください。
Google を活用した支払いを実現

本日より、Google の一連の支払いソリューションが拡張されます。Google Payment API は、ユーザーがクレジット カードやデビットカードを使って Google アカウントに保存されている口座から簡単に支払う方法を実現するもので、販売者やデベロッパーのチェックアウト コンバージョン率の急上昇に貢献します。ユーザーは、以前に Android Pay に保存したクレジット カードやデビットカード、Play ストアでの決済に使った支払いカード、Chrome に保存されている支払いフォームなど、複数の Google 支払いオプションをいつでも使うことができます。さらに、保存した支払いオプションはサードパーティアプリやモバイルサイト、そしてGoogle Assistant からも利用できるようになります。
Google を使って Google Assistant で Panera Bread に支払い

ユーザーにとって、これは購入手続きの高速化につながります。バスの中で身動きがとれないときに、見知らぬ人の前でクレジット カードを取り出したくはないものです。そのようなユーザーが購入をやめることがなくなります。ベッドに入ってクレジット カードが手元にないときに、夜中に終了するセールに出くわして困ってしまうようなこともなくなります。サポート対象のアプリやサイトに Google で支払うオプションがあれば、いつでも Google アカウントに保存してあるクレジット カードやデビットカードを使うことができるので、ユーザーは時間を節約でき、悩むこともなくなります。

この API は、デベロッパーにとって重要なイノベーションです。すばやく購入を行い、コンバージョン率や売上を増やし、カートのキャンセルを削減できます。しかも、組み込みも簡単です。Google Payment API の詳細は、こちらをご覧ください。
新しくなった AdMob でアプリの収益を上げる
人々は、買い物やコミュニケーション、エンターテイメントのために、一日中モバイル端末に向き合っています。デベロッパーにとって、アプリ内課金は収益化の 1 つの方法です。そして、もう 1 つの方法が広告です。
AdMob は、アプリのエコシステムをサポートするために構築されています。iOS と Android の 100 万以上のアプリで、AdMob は 35 億ドル以上広告収益をデベロッパーにもたらしてきました。しかし、私たちには皆さんの成功に向けてまだできることがあります。

本日は、完全に再設計された AdMob を紹介します。AdMob は 1 から再構築されています。さらに簡単に使えるようになり、ユーザーがアプリの中でどんな体験をしているのかについて、豊かなインサイトをもたらしてくれるようになっています。

さらに使いやすく: AdMob のルック アンド フィール全般にわたって、マテリアル デザインが適用されています。これによって、モバイルか PC かを問わず、プラットフォーム全体で直感的で使いやすい操作が実現され、より迅速に多くのことができるようになります。下の図から、管理するアプリの一覧や主要な指標の確認がどれほど簡単であるかわかるでしょう。そして、パフォーマンスをすばやく微調整できます。

再設計された AdMob の操作

豊かなインサイト:
再設計された AdMob のコアには Google Analytics for Firebase が組み込まれているので、もっともビジネスに影響する指標にすばやくアクセスできます。AdMob と Firebase アカウントをリンクさせると、詳しい広告収益データに加え、ユーザーがアプリを使った時間やアプリ内課金などのすべての分析を 1 か所で確認できます。

AdMob の Google Analytics for Firebase ダッシュボード
ユニバーサル アプリ キャンペーンでユーザーを知り、ユーザーを見つける
アプリで収益を上げることは、パズルのピースの 1 つです。どのようにユーザーベースを拡大するかについても考えなければなりません。

Google によるアプリのイノベーションによって、広告から 50 億以上のインストールが生まれています。現在私たちのサポートによって、デベロッパーの皆さんは 4 半期ごとに 30 億以上のアプリ内イベントを生み出しています。アプリ内イベントとは、たとえばカートに追加、ゲームのレベル 3 に到達といったイベントです。今、デベロッパーが魅力を感じているのは、「ワンストップ ショップ」型キャンペーンであるユニバーサル アプリ キャンペーン(UAC)です。これは、Google の最大の財産である Google Play、検索、YouTube、Gmail、ディスプレイ ネットワークの全体にリーチを広げ、アプリのインストールを最大化するものです。UAC は、Google の機械学習テクノロジーを活用してさまざまなシグナルをリアルタイムに評価し、もっとも興味を持つユーザーに広告を届けるように微調整します。私たちは UAC への取り組みを倍増させ続けています。UAC にはあらゆる新しいイノベーションが組み込まれつつあり、アプリの宣伝は今まで以上に効率的になります。
Google Play での新たな UAC の配置により、アプリを見つけた瞬間にユーザーを魅了 
Android の月間アクティブ端末数は 20 億台以上に達しており、Google Play は世界中の 190 以上の国で利用できます。ユーザーが新しいアプリやゲームを見つけるためにアクセスする場所が Google Play なのです。ユーザーはアプリを検索して試してみるだけではなく、Play ストアや新しいおすすめアプリを見ることに多くの時間を費やしています。 
皆さんのアプリがもっと見つけやすくなるように、Google Play ストアのホームとアプリの掲載情報ページで、広告の配置が新しくなります。この新しい配置は、UAC のみで利用可能です。これにより、「検出モード」のユーザーが次のお気に入りアプリを探してスワイプ、タップ、スクロールした際に、皆さんのアプリがユーザーの目に触れやすくなります。 
ユーザーの目に触れやすい Google Play の新たな広告の配置

UAC の新たな入札オプションでベストユーザーを増やす 
ビジネス上、他のユーザーよりも価値が高いユーザーもいます。たとえば、ゲームでレベルアップしているプレイヤーや、月に何度もフライトを予約している旅行者などです。そのため、さらなる高価値ユーザーの獲得をサポートできるように、UAC のスマート自動入札戦略が拡張されています。スマート自動入札を利用すると、独自のビジネス目標、すなわち目標コンバージョン単価(tCPA)や目標広告費用対効果(tROAS)に合わせて入札を行うことができます。UAC は、インストールやイベント、そして近日中にサポートされる価値などの目標に応じて、適切なユーザーを割り当ててくれます。このアップデートは、今後数カ月のうちに順次 iOS と Android のデベロッパーや広告主に展開されます。 
新たな計測プログラム、App Attribution Partner の導入 
多くのデベロッパーは、サードパーティの計測プロバイダを使って広告の効果を測定し、ユーザーがどのようにアプリを使っているかを分析しています。こういった分析に基づいてすばやくシームレスなアクションを起こすために、App Attribution Partner を導入します。これは、7 社から得たデータを AdWords に統合する新しいプログラムです。

adjust、Adways、AppsFlyer、Apsalar、CyberZ、Kochava、TUNE の皆さん、ようこそお越しくださいました。皆さんの参加をうれしく思います。

AdWords がこれらのパートナーと統合されることで、一貫性と信頼性のある詳細データでアプリの指標を確認できるようになるので、自信を持ってアクションを行い、ビジネスで最高のパフォーマンスを維持できます。
ユーザーがオンラインで過ごす時間は増えています。今後さらに重要になるのは、デザインするアプリから、提供する体験やユーザーが決済を行う方法に至るまで、あらゆる面でユーザー中心の体験を作り上げることです。それが簡単ではないことはわかっています。だからこそ、Google がサポートいたします。

皆さんとともにこの旅を続けることを楽しみにしています。



Posted by Rikako Katayama - AdMob Team




数あるワークショップはエンジニアだけを対象としたものではなく、マーケッターやプロダクト マネージャー向けのものもあります。下記の詳細をご確認いただき、参加を希望される方は登録フォームよりお申し込みください。

※一部英語(通訳付き)で提供されるコースがあります。
※申し込みが定員を上回ったワークショップは募集を終了する場合があります。










Workshop Day とは別に、Google Play チームでは定期的に Android アプリの品質向上を目的としたプログラム 「Google Play APP DOJO」を実施しており、7 月 27 日(木) に説明会とセミナーを開催します。セミナーの参加にはメンバー登録が必要ですが、見学は誰でも可能です。また、本プログラムにご登録いただくと、Google for Mobile Workshop Day のようなイベントの案内をいち早く受け取ったり、配布していない資料をオンラインで閲覧できるメンバーページにアクセスできるようになります。本プログラムへのご登録は「Google Play APP DOJO」のページから可能です。

7 月のセミナーは「事例で学ぶ アプリの品質向上と成長」をテーマに株式会社 Loco Partners 様、株式会社 LIFULL 様にご登壇いただく予定です。Android アプリの成長や品質向上に興味がある方はぜひ下記リンクから詳細をご確認いただき、お申し込みください。








【Google for Mobile Workshop Day 開催概要】
日時:2017 年 8 月 4 日(金)9:00 - 18:00
   ※ワークショップにより、開始時間・終了時間は異なります。
場所:六本木ヒルズ 森タワー Google 東京オフィス



【ワークショップの詳細】



◾午前の部

9:00 - 11:30
コードラボ 「プログレッシブ ウェブ アプリ(PWA)/ AMP」
参加対象:
エンジニア(HTML や Javascript のコーディング知識が必要です)

概要:
プログレッシブ ウェブ アプリ(PWA)/ AMPのセルフペースなコードラボです。
実際に codelabs.developers.google.com 内のコードラボを実施することによって、ServiceWorkerやAMP-BINDなどの主要フィーチャーを利用したPWA/AMPページが開発できるようになります。質疑応答がその場でできるようGoogle デベロッパーリレーションチームがイベントをサポートさせていただきますので、初心者でも歓迎です。

持参していただくもの:
テキストエディター / IDE がインストールされたノートパソコン

9:00 - 12:00
コードラボ「Daydream - VR アプリを作ろう」

参加対象:
エンジニア(C++, C# or Javaのうちどれかのコーディング知識が必要ですが、Unity の経験は必要ありません)

概要:
このコードラボでは Unity を使い、2 つのモジュールに挑戦していただきます。モジュール 1 では、Daydream コントローラのモーション、タッチパッド、クリックでインタアクティブに操作できるシンプルな弓と矢を作ります。モジュール 2 では、Daydream 上でビデオを再生する様々な方法をご紹介します。そして実際に再生コントロールが可能なシンプルなビデオ UI を作ります。

持参していただくもの:
Unity (5.6以上、+Android SDK/NDK, +log-in account)、最新の Android Studio、最新のJava Development Kit (JDK) がインストールされた開発用ノートパソコン

10:00 - 12:30
コードラボ「初めての Android Instant Apps」

参加対象:
エンジニア(Java での Android アプリ開発経験が必要です)

概要:
Android Instant Apps は、 URL リンクからインストールさせることなくネイティブアプリの体験を提供することを可能にするテクノロジーです。このコードラボでは ""Topeka"" という既存の Android プロジェクトをベースに、最新の開発ツールを使って Android Instant Apps を実装する演習を行います。

持参していただくもの:
最新の Android Studio 3.0 プレビュー版がインストール済みの開発用ノートパソコン



◾午後の部

13:30 - 14:30
ワークショップ「Play Console ワークショップ:ビジネス解析」

参加対象:
プロダクトマネージャー、マーケター、エンジニア(コーディングの知識は特に必要ありません)

概要:
ビジネス担当者に特におすすめ。このワークショップでは、ビジネス分析に役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

14:45 - 15:45
ワークショップ「Play Console ワークショップ:失敗しないアプリリリース」

参加対象:
エンジニア・プロダクトマネージャー(コーディングの知識は特に必要ありません)

概要:
とりあえず出してから修正していけばというウェブの考えをアプリに持ち込むのは危険です。このワークショップでは、アプリの失敗しないリリースに役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

16:00 - 17:00
ワークショップ「Play Console ワークショップ:アプリ品質計測と改善」

参加対象:
エンジニア・プロダクトマネージャー(コーディングの知識は特に必要ありません)

概要:
Play ストアでの露出やダウンロードを最大化するための一番の近道は高品質アプリを作ること。このワークショップでは、ユーザーレビューや最新機能である Android Vitals など、アプリの品質改善に役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

13:30 - 16:30
コードラボ「Firebase 実践編」

参加対象:
エンジニア(Java Script, Java, Objective-C のうちいずれかのコーディング知識が必要です)
概要:
このコードラボでは、Firebase の Realtime Database, Authentication, Storage, Hosting などの機能を自分のペースに合わせて学ぶことができます。Android アプリだけでなく、iOS アプリやウェブ開発にも役立つ実践的スキルを身に付けることができます。

持参していただくもの:
最新の Android Studio と Firebase がインストール済みの開発用ノートパソコン

14:00 - 17:00
コードラボ「Tango - AR アプリを作ろう」

参加対象:
エンジニア(C++, C# or Javaのうちどれかのコーディング知識が必要ですが、Unity の経験は必要ありません)

概要:
このコードラボでは Unity を使い、2 つのモジュールに挑戦していただきます。モジュール 1 では Motion Tracking や Depth Perception といった Tango の核になるファンクションを使って、簡単な AR のゲームを作ります。モジュール 2 では Natural Target Detection を使った簡単なアプリの作り方をステップバイステップで説明します。

持参していただくもの:
Unity (5.6以上、+Android SDK/NDK, +log-in account)、最新のJava Development Kit (JDK) 、最新の Tango Unity SDK がインストールされた開発用ノートパソコン

14:30 - 17:30
ワークショップ「TensorFlow を Android アプリに実装しよう」


参加対象:
エンジニア(Java のコーディング知識と Android アプリの開発経験が必要です)
概要:
機械学習を組み込んだAndroidアプリ開発に興味のある方におすすめです。TensorFlow を Android に実装し、 Android 端末で手書き数字が認識できるようにします。

持参していただくもの:
最新の Android Studio がインストールされた PC、Android 端末



◾夜の部

18:00 - 20:00
アプリデザイナー Meetup

参加対象:
アプリ UI/UX デザイナー

概要:
こちらは Google ではなく design-jp 主催のイベントです。参加申し込みは、下記の Workshop Day と同じフォームをご利用ください。







Google Play では、Android に関連したテクノロジーや製品の実践的知識を実際に手を動かして学ぶことができるさまざまなワークショップを集めた Workshop Day を 2017 年 8 月 4 日(金)に開催します。

数あるワークショップはエンジニアだけを対象としたものではなく、マーケッターやプロダクト マネージャー向けのものもあります。下記の詳細をご確認いただき、参加を希望される方は登録フォームよりお申し込みください。

※一部英語(通訳付き)で提供されるコースがあります。
※申し込みが定員を上回ったワークショップは募集を終了する場合があります。










Workshop Day とは別に、Google Play チームでは定期的に Android アプリの品質向上を目的としたプログラム 「Google Play APP DOJO」を実施しており、7 月 27 日(木) に説明会とセミナーを開催します。セミナーの参加にはメンバー登録が必要ですが、見学は誰でも可能です。また、本プログラムにご登録いただくと、Google for Mobile Workshop Day のようなイベントの案内をいち早く受け取ったり、配布していない資料をオンラインで閲覧できるメンバーページにアクセスできるようになります。本プログラムへのご登録は「Google Play APP DOJO」のページから可能です。

7 月のセミナーは「事例で学ぶ アプリの品質向上と成長」をテーマに株式会社 Loco Partners 様、株式会社 LIFULL 様にご登壇いただく予定です。Android アプリの成長や品質向上に興味がある方はぜひ下記リンクから詳細をご確認いただき、お申し込みください。








【Google for Mobile Workshop Day 開催概要】
日時:2017 年 8 月 4 日(金)9:00 - 18:00
   ※ワークショップにより、開始時間・終了時間は異なります。
場所:六本木ヒルズ 森タワー Google 東京オフィス



【ワークショップの詳細】



◾午前の部

9:00 - 11:30
コードラボ 「プログレッシブ ウェブ アプリ(PWA)/ AMP」
参加対象:
エンジニア(HTML や Javascript のコーディング知識が必要です)

概要:
プログレッシブ ウェブ アプリ(PWA)/ AMPのセルフペースなコードラボです。
実際に codelabs.developers.google.com 内のコードラボを実施することによって、ServiceWorkerやAMP-BINDなどの主要フィーチャーを利用したPWA/AMPページが開発できるようになります。質疑応答がその場でできるようGoogle デベロッパーリレーションチームがイベントをサポートさせていただきますので、初心者でも歓迎です。

持参していただくもの:
テキストエディター / IDE がインストールされたノートパソコン

9:00 - 12:00
コードラボ「Daydream - VR アプリを作ろう」

参加対象:
エンジニア(C++, C# or Javaのうちどれかのコーディング知識が必要ですが、Unity の経験は必要ありません)

概要:
このコードラボでは Unity を使い、2 つのモジュールに挑戦していただきます。モジュール 1 では、Daydream コントローラのモーション、タッチパッド、クリックでインタアクティブに操作できるシンプルな弓と矢を作ります。モジュール 2 では、Daydream 上でビデオを再生する様々な方法をご紹介します。そして実際に再生コントロールが可能なシンプルなビデオ UI を作ります。

持参していただくもの:
Unity (5.6以上、+Android SDK/NDK, +log-in account)、最新の Android Studio、最新のJava Development Kit (JDK) がインストールされた開発用ノートパソコン

10:00 - 12:30
コードラボ「初めての Android Instant Apps」

参加対象:
エンジニア(Java での Android アプリ開発経験が必要です)

概要:
Android Instant Apps は、 URL リンクからインストールさせることなくネイティブアプリの体験を提供することを可能にするテクノロジーです。このコードラボでは ""Topeka"" という既存の Android プロジェクトをベースに、最新の開発ツールを使って Android Instant Apps を実装する演習を行います。

持参していただくもの:
最新の Android Studio 3.0 プレビュー版がインストール済みの開発用ノートパソコン



◾午後の部

13:30 - 14:30
ワークショップ「Play Console ワークショップ:ビジネス解析」

参加対象:
プロダクトマネージャー、マーケター、エンジニア(コーディングの知識は特に必要ありません)

概要:
ビジネス担当者に特におすすめ。このワークショップでは、ビジネス分析に役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

14:45 - 15:45
ワークショップ「Play Console ワークショップ:失敗しないアプリリリース」

参加対象:
エンジニア・プロダクトマネージャー(コーディングの知識は特に必要ありません)

概要:
とりあえず出してから修正していけばというウェブの考えをアプリに持ち込むのは危険です。このワークショップでは、アプリの失敗しないリリースに役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

16:00 - 17:00
ワークショップ「Play Console ワークショップ:アプリ品質計測と改善」

参加対象:
エンジニア・プロダクトマネージャー(コーディングの知識は特に必要ありません)

概要:
Play ストアでの露出やダウンロードを最大化するための一番の近道は高品質アプリを作ること。このワークショップでは、ユーザーレビューや最新機能である Android Vitals など、アプリの品質改善に役立つPlay Console の各無料ツールの使い方をステップバイステップで解説し、習得いただけます。

持参していただくもの:
Play Console にログインできるノートパソコン(必須ではありません)

13:30 - 16:30
コードラボ「Firebase 実践編」

参加対象:
エンジニア(Java Script, Java, Objective-C のうちいずれかのコーディング知識が必要です)
概要:
このコードラボでは、Firebase の Realtime Database, Authentication, Storage, Hosting などの機能を自分のペースに合わせて学ぶことができます。Android アプリだけでなく、iOS アプリやウェブ開発にも役立つ実践的スキルを身に付けることができます。

持参していただくもの:
最新の Android Studio と Firebase がインストール済みの開発用ノートパソコン

14:00 - 17:00
コードラボ「Tango - AR アプリを作ろう」

参加対象:
エンジニア(C++, C# or Javaのうちどれかのコーディング知識が必要ですが、Unity の経験は必要ありません)

概要:
このコードラボでは Unity を使い、2 つのモジュールに挑戦していただきます。モジュール 1 では Motion Tracking や Depth Perception といった Tango の核になるファンクションを使って、簡単な AR のゲームを作ります。モジュール 2 では Natural Target Detection を使った簡単なアプリの作り方をステップバイステップで説明します。

持参していただくもの:
Unity (5.6以上、+Android SDK/NDK, +log-in account)、最新のJava Development Kit (JDK) 、最新の Tango Unity SDK がインストールされた開発用ノートパソコン

14:30 - 17:30
ワークショップ「TensorFlow を Android アプリに実装しよう」


参加対象:
エンジニア(Java のコーディング知識と Android アプリの開発経験が必要です)
概要:
機械学習を組み込んだAndroidアプリ開発に興味のある方におすすめです。TensorFlow を Android に実装し、 Android 端末で手書き数字が認識できるようにします。

持参していただくもの:
最新の Android Studio がインストールされた PC、Android 端末



◾夜の部

18:00 - 20:00
アプリデザイナー Meetup

参加対象:
アプリ UI/UX デザイナー

概要:
こちらは Google ではなく design-jp 主催のイベントです。参加申し込みは、下記の Workshop Day と同じフォームをご利用ください。





Posted by Takuo Suzuki - Developer Relations Team

この記事はモバイル プロダクト スペシャリスト、Jessica O'Brien による Inside AdMob の記事 "Cheetah Mobile Improves User Ad Experience While Increasing App Performance with AdMob’s Native Video Ads" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
 
 7 年前、Cheetah Mobile は PC 向けのソフトウェアを開発する従業員 10 人の小規模な会社としてスタートしました。現在同社は1000 人を超える従業員を抱え、業界をリードするデベロッパーになっています。同社の人気アプリである Clean Master や Battery Doctor は、全世界の何百万人ものユーザーにダウンロードされ、Clean Master 自体は全世界で 6 億を超える MAU を記録しています ...
この記事はモバイル プロダクト スペシャリスト、Jessica O'Brien による Inside AdMob の記事 "Cheetah Mobile Improves User Ad Experience While Increasing App Performance with AdMob’s Native Video Ads" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
 
 7 年前、Cheetah Mobile は PC 向けのソフトウェアを開発する従業員 10 人の小規模な会社としてスタートしました。現在同社は1000 人を超える従業員を抱え、業界をリードするデベロッパーになっています。同社の人気アプリである Clean Master や Battery Doctor は、全世界の何百万人ものユーザーにダウンロードされ、Clean Master 自体は全世界で 6 億を超える MAU を記録しています。
 
問題  

ユーザー基盤の継続的な拡大に伴い、 Cheetah Mobile は革新的な広告フォーマットを使って、同社のユーザー基盤を全世界に広げながら、アプリを収益化するための方法を見つける必要がありました。同社は多様な高品質の広告を使って収益を改善する一方で、ユーザーにとって使いやすいアプリのエクスペリエンスを維持する必要がありました。  
 
解決策  
 
Cheetah Mobile は Google と協力してAdMob を使用し、同社のアプリのパフォーマンスを向上させる新しい方法を見出しました。Cheetah は、新しくリリースされたネイティブ動画フォーマットを導入して、ネイティブ ディスプレイ広告の使用を拡大しました。このようにすることで、Cheetah は多様な広告のミックスが可能になり、動画のブランド力を利用してユーザー エンゲージメントを向上させています。ディスプレイ広告の他に動画広告も取り入れることで、全体的なパフォーマンスを向上させることができました。  
 
 
結果  
 
これらのシンプルな変更を実装して Google の最新のネイティブ広告フォーマットを利用することで、Cheetah Mobile は eCPM が 34% 増加し、31% の広告収益増加を達成できました。動画広告をアプリのフロー内に適切に配置することで(意図されたユーザー アクションの完了後の結果ページ)、Cheetah は高いエンゲージメント率を維持しながら目障りではない広告エクスペリエンスを実現しました。アプリのルック アンド フィールに一致するように動画広告をカスタマイズすることで、ユーザー エクスペリエンスを阻害しない新しい広告の導入が可能になりました。  
 
「ユーティリティ アプリではネイティブ広告が主流のフォーマットであり、モバイル広告では、動画広告がその次に続く重要な手法です。AdMob は、ネイティブ広告と動画広告の両方に対応した完璧なソリューションを提供しました。AdMob で得られたパフォーマンスは非常に有益であり、すでに増益という結果を得ています。」Cheetah Mobile 上級副社長、Chen Yong

 
その他の成功事例は、AdMob のウェブサイトでご覧いただけます。TwitterLinkedInGoogle+ でお届けする AdMob の最新情報もご覧ください。  
 

Posted by Rikako Katayama - AdMob Team

この記事は Google セキュリティおよびプライバシー チーム、Martin Pelikan、Giles Hogben、Ulfar Erlingssonによる Android Developers Blog の記事 "Identifying Intrusive Mobile Apps using Peer Group Analysis" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

モバイルアプリは私たちに娯楽やサポートを提供してくれます。また、簡単に友人や家族とコミュニケーションをとることができ、地図から電子決済まで、さまざまなツールを提供してくれます。しかし、こういったアプリの中には、必要以上に端末の情報、たとえば、個人データや、カメラ、GPS トラッカーといったコンポーネントのセンサーデータなどを取得しようとするものがあります。

ユーザーを保護し、デベロッパーがこのような複雑な環境に対応できるように、Google は Google Play アプリのプライバシーやセキュリティに関するシグナルを分析し、似たような機能を提供するアプリ群( 機能ピア)と比較しています。ピアグループを作成すると、ユーザーが期待していることを予測できるようになり、安全ではない、または不審な動作に対して妥当な境界線を引けるようになります。このプロセスは、明確なニーズなしにプライベートなデータを収集または送信するアプリを検知する際に役立ち、ユーザーも、プライバシーを尊重しつつ適切な機能を提供しているアプリを見つけやすくなります。たとえば、ほとんどの塗り絵アプリには、ユーザーの厳密なロケーションは不要です。これは、他の塗り絵アプリを分析すればわかります。逆に、地図やナビゲーションのアプリはユーザーのロケーションを知る必要があり、多くの場合、GPS センサーへのアクセスも必要です ...
この記事は Google セキュリティおよびプライバシー チーム、Martin Pelikan、Giles Hogben、Ulfar Erlingssonによる Android Developers Blog の記事 "Identifying Intrusive Mobile Apps using Peer Group Analysis" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

モバイルアプリは私たちに娯楽やサポートを提供してくれます。また、簡単に友人や家族とコミュニケーションをとることができ、地図から電子決済まで、さまざまなツールを提供してくれます。しかし、こういったアプリの中には、必要以上に端末の情報、たとえば、個人データや、カメラ、GPS トラッカーといったコンポーネントのセンサーデータなどを取得しようとするものがあります。

ユーザーを保護し、デベロッパーがこのような複雑な環境に対応できるように、Google は Google Play アプリのプライバシーやセキュリティに関するシグナルを分析し、似たような機能を提供するアプリ群( 機能ピア)と比較しています。ピアグループを作成すると、ユーザーが期待していることを予測できるようになり、安全ではない、または不審な動作に対して妥当な境界線を引けるようになります。このプロセスは、明確なニーズなしにプライベートなデータを収集または送信するアプリを検知する際に役立ち、ユーザーも、プライバシーを尊重しつつ適切な機能を提供しているアプリを見つけやすくなります。たとえば、ほとんどの塗り絵アプリには、ユーザーの厳密なロケーションは不要です。これは、他の塗り絵アプリを分析すればわかります。逆に、地図やナビゲーションのアプリはユーザーのロケーションを知る必要があり、多くの場合、GPS センサーへのアクセスも必要です。

アプリのピアグループを作成する方法の 1 つは、ツール、生産性、ゲームなどの固定カテゴリを作成し、各アプリに 1 つまたは複数のカテゴリを割り当てる方法です。しかし、固定カテゴリはあまりにも大まかな分類で、柔軟性にも欠けるため、変化の早いモバイルアプリの特性をとらえることはできません。このようなカテゴリを手動で整理するのも、退屈でミスが起こりやすい作業です。

これに対処するため、Google は同じような機能を持ったモバイルアプリをクラスタリングで分類する機械学習アルゴリズムを開発しました。このアプローチは、ベクトル エンベディングによるディープ ラーニングを利用して似たような機能を持つアプリのピアグループを決定するもので、テキストによる説明などのアプリのメタデータや、インストール数などのユーザー指標を活用しています。そして、このピアグループを利用し、各アプリがリクエストするパーミッションや監視した動作から、プライバシーやセキュリティに関して変則的または有害な可能性があるシグナルを見つけます。さまざまな Google のチームは、ピアグループ間の相関関係やセキュリティ シグナルから、宣伝すべきアプリや、セキュリティやプライバシーの担当者が注意を払うべきアプリを特定しています。この結果は、デベロッパーがアプリのプライバシーやセキュリティを改善する目的でも活用されています。
アプリは似たような機能を持つグループに分けられます。同じような機能を持つアプリのクラスタ内で、ある一定の基準に従って、プライバシーやセキュリティに関する変則的なシグナルを探します。

これらの技術は、ピアグループを使ったプライバシー関連のシグナル分析、よりよいピアグループを作成する言語モデルのディープ ラーニング、結論を得る際に利用する自動データ分析など、以前から存在していた考え方をもとにしたものです。

このアルゴリズムやその周辺プロセスは、Google の多くのチームの協力のもとに生まれました。Andrew Ahn、Vikas Arora、Hongji Bao、Jun Hong、Nwokedi Idika、Iulia Ion、Suman Jana、Daehwan Kim、Kenny Lim、Jiahui Liu、Sai Teja Peddinti、Sebastian Porst、Gowdy Rajappan、Aaron Rothman、Monir Sharif、Sooel Son、Michael Vrable、Qiang Yan など、欠かすことができないチームメンバーに感謝いたします。

Android で有害な可能性があるアプリ(PHA)を検知して排除する Google の挑戦の詳細については、Google Android セキュリティ チームによる有害な可能性があるアプリの分類をご覧ください。

参考文献


S. Jana, Ú. Erlingsson, I. Ion (2015).Apples and Oranges:Detecting Least-Privilege Violators with Peer Group Analysis. arXiv:1510.07308 [cs.CR].

T. Mikolov, I. Sutskever, K. Chen, G. S. Corrado, J. Dean (2013).Distributed Representations of Words and Phrases and their Compositionality.Advances in Neural Information Processing Systems 26 (NIPS 2013).

Ú. Erlingsson (2016).Data-driven software security:Models and methods.Proceedings of the 29th IEEE Computer Security Foundations Symposium (CSF'16), Lisboa, Portugal.


Reviewed by Yuichi Araki - Developer Relations Team

この記事はプロダクト マネージャー、Ritesh Nayak M による Android Developers Blog の記事 "Semantic Time support now available on the Awareness APIs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この記事はプロダクト マネージャー、Ritesh Nayak M による Android Developers Blog の記事 "Semantic Time support now available on the Awareness APIs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


昨年の I/O で、Awareness API がリリースされました。これは、ロケーション、天気情報、時刻、ユーザー アクティビティなどのシグナルを使ってユーザーの状況に即した体験を提供できるようにする、シンプルで強力な API です。

Awareness API は、Google Play サービス経由で利用でき、2 つの方法によってアプリ内で状況シグナルを活用できます。Snapshot API は、アプリからユーザーの現在の状況に関する情報をリクエストできます。また、Fence API は、ユーザーの状況が変化したときや、ある条件に該当した際にアプリを反応させることができます。たとえば、「ユーザーがヘッドフォンをさしたまま歩いているときは教えてください」というようなリクエストが可能です。

これまでも、Awareness API でタイムフェンス(時間の境界)を指定できましたが、時間を厳密に指定しなければならないという制限がありました。デベロッパーの皆さまからのフィードバックにより、タイムフェンスの作成に関連するこの API の柔軟性は、人々が時間について考えたり話したりする際に用いる高レベルの抽象化に対して対応できていないことがわかりました。「今週末」、「次の休日」、「日没後」といった表現は、日常会話で時間を表す際によく使われます。そこで本日(*原文公開当時)、この API にセマンティック タイムのサポートを追加しました。

たとえば、フィットネス アプリで毎朝のエクササイズの開始をユーザーに通知したい場合や、読書アプリで日没後にナイトモードをオンにしたい場合を考えてみましょう。今までは、ユーザーの現在地での日の出や日没の情報を 3p API に問い合わせ、その時間の値を使って Awareness フェンスを記述する必要がありました。今回の最新のアップデートでは、TIME_INSTANT_SUNRISETIME_INSTANT_SUNSET といった定数を使って、複雑な処理をプラットフォームに任せることができます。

例を見てみましょう。火曜日と木曜日の日の出頃に朝のエクササイズの開始を通知するフィットネス アプリを作成しているとします。このトリガーは、次のコードを使って設定できます。
// A sun-state-based fence that is TRUE only on Tuesday and Thursday during Sunrise 
AwarenessFence.and(
    TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE,
            -10 * ONE_MINUTE_MILLIS, 5 * ONE_MINUTE_MILLIS),
    AwarenessFence.or(
        TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_TUESDAY,
                0, ONE_DAY_MILLIS),
        TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_THURSDAY,
                0, ONE_DAY_MILLIS)));

セマンティック タイムが特にすばらしいのは、祝日に対応している点です。国や地域によって、祝日は異なります。たとえば、近隣で楽しめるハイキングや探検を案内するアプリで、金曜日または月曜日の祝日に楽しむことができるものをユーザーに紹介したい場合、曜日と祝日のフラグを組み合わせれば、世界中のすべてのユーザーに対してこの状況を判別することができます。しかもわずか 3 行のコードで、世界中どこでも動作します。
// A local-time fence that is TRUE only on public holidays in the
// device locale that fall on Fridays or Mondays.
AwarenessFence.and(
    TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_HOLIDAY),
    AwarenessFence.or(
        TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_FRIDAY,
                9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS),
        TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_MONDAY,
                9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS)));

どちらの例でも、Awareness API は端末の言語/地域の設定に基づいて、時間や祝日のローカライズという大変な作業を行ってくれます。

皆さまがこの強力な API を使ってどのような問題を解決するか、楽しみにしています。メーリング リストに参加すると、今回の API を含む Google の Context API についてのアップデート情報を受け取ることができます。



Posted by Takuo Suzuki - Developer Relations Team

この記事は IoT デベロッパー アドボケート、Wayne Piekarski による Android Developers Blog の記事 "Android Things Console developer preview" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

本日(*原文公開当時)、 Android Things Console のプレビュー版をリリースいたします。このコンソールを使うと、デベロッパーは一連の Android Things IoT 端末上で動作しているソフトウェアを管理できます。たとえば、ファクトリー イメージを作成したり、オペレーティング システムやデベロッパーが提供する APK をアップデートできます。端末が今後のアップデートを受信するには、近日中に公開される Developer Preview 5 など、Android Things Console からダウンロードしたシステム イメージを実行している必要があります。Google は、すべてのインフラストラクチャに対して OTA(無線)アップデートを提供しています。そのため、デベロッパーは固有のアプリケーションに集中でき、独自の実装を開発する必要もなく、IoT 端末を今まで以上に高速かつ安全にマーケットに出すことができます ...
この記事は IoT デベロッパー アドボケート、Wayne Piekarski による Android Developers Blog の記事 "Android Things Console developer preview" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

本日(*原文公開当時)、Android Things Console のプレビュー版をリリースいたします。このコンソールを使うと、デベロッパーは一連の Android Things IoT 端末上で動作しているソフトウェアを管理できます。たとえば、ファクトリー イメージを作成したり、オペレーティング システムやデベロッパーが提供する APK をアップデートできます。端末が今後のアップデートを受信するには、近日中に公開される Developer Preview 5 など、Android Things Console からダウンロードしたシステム イメージを実行している必要があります。Google は、すべてのインフラストラクチャに対して OTA(無線)アップデートを提供しています。そのため、デベロッパーは固有のアプリケーションに集中でき、独自の実装を開発する必要もなく、IoT 端末を今まで以上に高速かつ安全にマーケットに出すことができます。

それでは、このコンソールが提供する機能を紹介しましょう。

プロダクトの作成と設定


デベロッパーは、最初にプロダクトを定義します。ここでは、名前の設定、端末の SoM(System-on-Module)タイプの選択などを行います。多くのデベロッパーは、IoT 端末を開発する際に Google Play Services を利用します。これはオプション機能となっており、この画面で設定できます。OEM パーティションのサイズも設定できます。この値は、今後の APK の増加分も含めて格納できる十分な大きさにする必要があります。

ファクトリー イメージ


今後、端末がコンソールからプロダクトに向けた適切なアップデートを受信するには、初期基本ファームウェアが必要です。最初は、[Create Build Configuration](ビルド設定の作成)を使い、プロダクト用に設定された空のバンドルを含むデフォルトのファクトリー イメージをビルドします。すると、このファクトリー イメージをダウンロードして端末に書き込めるようになり、端末に APK を読み込ませて、開発を始めることができます。

その後、プロダクトで利用するすべての端末にデプロイするアプリケーションの準備ができた段階で、バンドルをコンソールにアップロードします。このバンドルは ZIP ファイルで、この中にはメイン APK ファイル、APK 内でサービスとして動作するユーザー空間ドライバ、メイン APK によって起動される追加の APK が含まれています。bootanimation.zip ファイルもサポートされています。これは、起動時に表示されます。続いて、アップロードしたバンドル ZIP ファイルから完全なシステム イメージが生成され、それが端末にデプロイされます。バンドル ZIP ファイルの内容について詳しくは、ドキュメントに記載されています。

OTA アップデート


このタブでは、一連のプロダクト用端末にプッシュするシステム イメージを選択できます。デベロッパーがシステム イメージを 1 つ選択し、[Push to Devices](端末にプッシュ)を押すと処理が開始されます。アップデートはすべての端末に安全にプッシュされ、A/B パーティションのどちらかにインストールされて、端末が再起動した際にアクティブになります。何らかのエラーが検出されると、端末は以前に動作していたバージョンに自動的にロールバックされるので、アップデートをやり直すこともできます。デベロッパーは、Android Things の新しいリリースを事前にテストしてから、端末の自動アップデートの可否を決定できるようになる予定です。

フィードバック


現在の Android Things Console はプレビュー版で、さらに多くの機能やカスタマイズを追加するための作業が続けられています。Android Things デベロッパーの皆さんは、ぜひ Android Things Console を確認してフィードバックをお寄せください。バグレポート機能リクエストからフィードバックを送信できます。質問は、どんなものでもかまいませんので、Stack Overflow にお寄せください。Android Things Console の詳細については、詳しいドキュメントもご覧ください。Google+ の Google IoT デベロッパー コミュニティにも参加できます。これは、最新情報を入手したりアイデアを話し合うことができるすばらしいリソースです。



Reviewed by Yuichi Araki - Developer Relations Team

この記事は Android セキュリティ チーム、Xiaowen Xin、Renu Chaudhary による Android Developers Blog の記事 "What’s new in WebView security" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。  
 
アプリのとても重要な機能の 1 つに、信頼できない外部コンテンツの処理があります。ニュースリーダーはトップニュース記事を表示し、ショッピング アプリは商品のカタログを表示します。こういった操作には、リスクを伴います。信頼できないコンテンツの処理は、攻撃者がアプリのセキュリティを侵害する、つまり悪意のあるコンテンツを渡す主要な方法の 1 つだからです。  
 
多くのアプリは、信頼できないコンテンツの処理に WebView を使っています。Android では、WebView やアプリをセキュリティ侵害から保護するため、ここ数年で多くの改善が行われています。重要な修正をいち早くユーザーに提供できるように、Android Lollipop 以降では WebView が独立した APK として配布され、Play ストアで 6 週間ごとにアップデートされるようになっています。最新の WebView では、いくつかの重要なセキュリティ強化が行われています ...
この記事は Android セキュリティ チーム、Xiaowen Xin、Renu Chaudhary による Android Developers Blog の記事 "What’s new in WebView security" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。  
 
アプリのとても重要な機能の 1 つに、信頼できない外部コンテンツの処理があります。ニュースリーダーはトップニュース記事を表示し、ショッピング アプリは商品のカタログを表示します。こういった操作には、リスクを伴います。信頼できないコンテンツの処理は、攻撃者がアプリのセキュリティを侵害する、つまり悪意のあるコンテンツを渡す主要な方法の 1 つだからです。  
 
多くのアプリは、信頼できないコンテンツの処理に WebView を使っています。Android では、WebView やアプリをセキュリティ侵害から保護するため、ここ数年で多くの改善が行われています。重要な修正をいち早くユーザーに提供できるように、Android Lollipop 以降では WebView が独立した APK として配布され、Play ストアで 6 週間ごとにアップデートされるようになっています。最新の WebView では、いくつかの重要なセキュリティ強化が行われています。  
 

Android O でのレンダラー プロセスの分離


Android O 以降では、WebView のレンダラーはホストアプリとは別の独立したプロセスで実行されるようになります。そのため、他のアプリが利用する Android 提供のプロセスとは分離されているというメリットを活用できます。  

Chrome と同様に、WebView でも 2 つのレベルで分離されるようになります。  
  1. レンダリング エンジンは別のプロセスとして分割されます。これにより、ホストアプリはレンダラー プロセスのバグやクラッシュから切り離され、悪意のあるウェブサイトがレンダラーの脆弱性を利用してホストアプリを攻撃することは難しくなります。
  2. さらなる封じ込めとして、レンダラー プロセスは限られたリソースセットしか使えない独立したプロセス サンドボックス内で実行されます。たとえば、レンダリング エンジン単独では、ディスクへの書き込みやネットワーク通信を行うことはできません。
    Android 版 Chrome で使われているものと同じ seccomp フィルターもバインドされています(seccomp については、近日中にブログに投稿します)。seccomp フィルタは、レンダラー プロセスがアクセスできるシステムコールの数を減らし、さらにシステムコールで許可する引数も制限します。

セーフ ブラウジングの導入


最新版の WebView には、危険性があるサイトを検知してユーザーに警告する Google のセーフ ブラウジング保護が導入されています。正しい設定が行われている場合、WebView は URL と不正なソフトウェアやフィッシングに関するセーフ ブラウジングのデータベースを突き合わせてチェックし、ユーザーが危険なサイトにアクセスする前に警告メッセージを表示します。Chrome では、この有用な情報は月間 2 億 5,000 万回以上表示されています。この機能が Android の WebView でも利用できるようになります。  
 

セーフ ブラウジングの有効化


アプリ内のすべての WebView でセーフ ブラウジングを有効化するには、マニフェスト タグに以下を追加します。  
<manifest>
     <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
                android:value="true" />
      . . .
     <application> . . . </application>
</manifest>

WebView は個別の APK として配布されているため、現在のところ、WebView のセーフ ブラウジングは Android 5.0 以降を実行している端末で利用できます。マニフェストに 1 行追加してアプリをアップデートするだけで、多くのユーザーのセキュリティを即座に改善できます。
 
 
Reviewed by Yuichi Araki - Developer Relations Team

この記事は Google Play ソフトウェア エンジニア、Maximilian Ruppaner による Android Developers Blog の記事 "Ending support for Android Market on Android 2.1 and lower" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google は 2017 年 6 月 30 日に、Android 2.1 Eclair 以前の端末の Android Market のサポートを終了します。この変更後、これらの端末のユーザーは Android Market にアクセスできなくなり、Android Market からアプリをインストールすることもできなくなります。Android Market アプリの技術的な制約により、この変更は端末に通知することなく行われます ...
この記事は Google Play ソフトウェア エンジニア、Maximilian Ruppaner による Android Developers Blog の記事 "Ending support for Android Market on Android 2.1 and lower" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Google は 2017 年 6 月 30 日に、Android 2.1 Eclair 以前の端末の Android Market のサポートを終了します。この変更後、これらの端末のユーザーは Android Market にアクセスできなくなり、Android Market からアプリをインストールすることもできなくなります。Android Market アプリの技術的な制約により、この変更は端末に通知することなく行われます。

Android 2.1 Eclair はリリースされてから 7 年が経過しています。対象端末にインストールされているアプリの割合は少なく、ほとんどのデベロッパーはこれらの Android バージョンをサポートしていません。

これよりも新しいバージョンの Android Market は、今後もできる限り長期間サポートする予定です。Android Market の後継である Google Play は、Android 2.2 以降で利用できます。


Reviewed by Hak Matsuda - Developer Relations Team

この記事は Google Brain チーム上級科学研究者、Łukasz Kaiser による Google Research Blog の記事 "Accelerating Deep Learning Research with the Tensor2Tensor Library" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

ディープ ラーニング(DL)によって、 機械翻訳音声認識物体検知など、数多くの便利なテクノロジーが急速に発展しています。研究コミュニティでは、作者がオープンソース化したコードを見つけてその成果を利用し、さらに高度なディープ ラーニングに発展させることができるようになっています。ただし、こういった DL システムのほとんどは、技術的に大きな労力を伴う特殊な設定が利用されており、特定の問題やアーキテクチャにしか効果がない場合もあります。そのため、新しい実験を行って結果を比較するのは困難です ...
この記事は Google Brain チーム上級科学研究者、Łukasz Kaiser による Google Research Blog の記事 "Accelerating Deep Learning Research with the Tensor2Tensor Library" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

ディープ ラーニング(DL)によって、機械翻訳音声認識物体検知など、数多くの便利なテクノロジーが急速に発展しています。研究コミュニティでは、作者がオープンソース化したコードを見つけてその成果を利用し、さらに高度なディープ ラーニングに発展させることができるようになっています。ただし、こういった DL システムのほとんどは、技術的に大きな労力を伴う特殊な設定が利用されており、特定の問題やアーキテクチャにしか効果がない場合もあります。そのため、新しい実験を行って結果を比較するのは困難です。
そこで本日(*原文公開当時)、TensorFlow でディープ ラーニング モデルのトレーニングを行うオープンソース システムの Tensor2Tensor(T2T)をリリースします。T2T は、翻訳、解析、イメージのキャプション生成など、さまざまな分野の ML に応用できる最新のモデルの作成をサポートし、いろいろなアイデアを以前よりもはるかに早く試すことができるようにするものです。このリリースには、データセットとモデルのライブラリや、DL 研究に弾みをつけることができる最新の論文(Attention Is All You NeedDepthwise Separable Convolutions for Neural Machine TranslationOne Model to Learn Them All)に掲載された優れたモデルも含まれています。

翻訳モデル
トレーニング時間
BLEU(基準点との差)
Transformer(T2T)
8 GPU で 3 日間
28.4(+7.8)
SliceNet(T2T)
32 GPU で 6 日間
26.1(+5.5)
64 GPU で 1 日間
26.0(+5.4)
ConvS2S
1 GPU で 18 日間
25.1(+4.5)
GNMT
96 GPU で 1 日間
24.6(+4.0)
32 GPU で 8 日間
23.8(+3.2)
MOSES(フレーズベースの基準点)
該当せず
20.6(+0.0)
標準 WMT 英独翻訳タスクの BLEU スコア(高いほどよい)
T2T を機械翻訳タスクに適用した例を上に示します。この表からわかるように、2 種類の T2T モデル(SliceNet と Transformer)がこれまでのベストの成果だった GNMT+MoE を超えています。標準 GNMT モデルは、基準となるフレーズベースの翻訳システムである MOSES を 4 点上回っていますが、最高の T2T モデルである Transformer はそれをさらに 3.8 点上回っています。注目すべきは、T2T では以前の最新技術による結果を 1 日あたり 1 つの GPU で実現することに近づいている点です。小さな Transformer モデル(上には記載されていません)は、1 つの GPU で 1 日トレーニングを行っただけで、BLEU スコア 24.9 点を達成しています。つまり、GPU があれば、誰でも優れた翻訳モデルを利用できます。詳しい手順は github レポジトリをご覧ください。

モジュール式のマルチタスク トレーニング
T2T ライブラリは、おなじみの TensorFlow ツールを使って構築されており、ディープ ラーニング システムに必要なデータセット、モデル アーキテクチャ、オプティマイザー、学習率減衰スキーム、ハイパーパラメータなど、さまざまなパーツが定義されています。特に重要なのは、こういったすべてのパーツ間で標準インターフェースの利用が強制されていること、さらに現在の ML のベスト プラクティスが実装されていることです。そのため、任意のデータセット、モデル、オプティマイザー、ハイパーパラメータ セットを選んでトレーニングを実行し、その成果を確認できます。アーキテクチャはモジュール化されているので、入力データと予測結果となる出力をつなぐパーツはすべてテンソル変換機能です。モデル アーキテクチャのアイデアが新たに浮かんだ場合でも、設定全体を置き換える必要はありません。埋め込んだパーツや損失などはすべてそのまま使うことができるので、テンソルを入力として受け取りテンソルを返す独自の機能でモデル本体を置き換えるだけで済みます。

これが T2T の柔軟さを実現しています。トレーニングが特定のモデルやデータセットに固定されることはありません。使い方はとても簡単で、有名な LSTM Sequence to Sequence モデルなどのアーキテクチャでも数十行のコードで定義できます。また、別のドメインの複数のタスクで 1 つのモデルをトレーニングすることもできます。究極的には、1 つのモデルに対してすべてのデータセットを使って同時にトレーニングすることも可能です。そのようにトレーニングを行った MultiModel(T2T に含まれています)は、ImageNet(イメージ分類)、MS COCO(イメージのキャプション生成)、WSJ(音声認識)、WMT(翻訳)、Penn Treebank 解析コーパスと合わせてトレーニングを行った場合でも、多くのタスクで優れた結果を残しています。単一のモデルでこういったすべてのタスクを同時に行えることが証明できたのは初めてです。

ベスト プラクティスの組み込み
この初回リリースでは、研究コミュニティで広く利用されているさまざまなデータセットを生成するスクリプト1、いくつかのモデル2、さまざまなハイパーパラメータ設定、その他の重要なポイントがうまく動作するように実装されたものが提供されています。ここですべてを紹介するのは困難ですが、T2T でモデルを実行する場合は、適切なシーケンスのパディング、対応する交差エントロピー損失、Adam オプティマイザー用に適切にチューニングされたパラメータ、アダプティブ バッチング、同期分散トレーニング、適切にチューニングされたイメージデータ拡張、ラベルのスムージング、最適な動作を提供するさまざまなハイパーパラメータ設定などを無償で使うことができます。上で説明したような翻訳で優れた結果を出す最新技術も含まれており、そこからもよい結果が得られるかもしれません。

例として、英語の文を解析して文法的な構文木で表現するタスクを考えてみましょう。この問題はすでに何十年にもわたって研究されており、多大な労力をかけて多くの方法が生み出されています。これはシーケンス変換問題としてニューラル ネットワークで解決することもできますが、それには多くのチューニングが必要でした。T2T を使うと、わずか数日で解析データセット生成ツールを追加できるので、この問題のトレーニングを行う変換モデルに集中することができます。これはうれしい驚きでしたが、わずか 1 週間でよい結果が得られました。

解析モデル
F1 スコア(高いほどよい)
Transformer(T2T)
91.3
Dyer など
91.7
Zhu など
90.4
Socher など
90.4
Vinyals & Kaiser など
88.3
標準テストセット、WSJ セクション 23 の解析 F1 スコア。Penn Treebank WSJ トレーニング セットのみでトレーニングしたモデルで比較。詳しい結果は論文を参照。

Tensor2Tensor に貢献する
既存のモデルやデータセットを使うだけでなく、Tensor2Tensor に独自のモデルを定義したり、独自のデータセットを追加するのも簡単です。同梱されているモデルは多くの NLP タスクで優れた動作をするはずなので、データセットを追加するだけで興味深い結果が得られるでしょう。T2T がモジュール化されたことによって、独自のモデルを提供して、さまざまなタスクで動作を確認することも非常に簡単になりました。このように、コミュニティ全体がベースラインとなるライブラリによる恩恵を受け、ディープ ラーニングの研究を加速することができます。早速 github レポジトリにアクセスして新しいモデルを試し、皆さんのモデルでコミュニティに参加してください。

謝辞
Tensor2Tensor をリリースできたのは、多くのエンジニアや研究者の皆さんと幅広く共同作業ができたおかげです。ここで、貢献していただいた主なチームにお礼を申し上げます(アルファベット順)。Samy Bengio、Eugene Brevdo、Francois Chollet、Aidan N. Gomez、Stephan Gouws、Llion Jones、Łukasz Kaiser、Nal Kalchbrenner、Niki Parmar、Ryan Sepassi、Noam Shazeer、Jakob Uszkoreit、Ashish Vaswani




1 イメージ分類(MNIST、CIFAR-10、CIFAR-100、ImageNet)、イメージのキャプション生成(MS COCO)、翻訳(英独と英仏を含む複数言語 WMT)、言語モデリング(LM1B)、解析(Penn Treebank)、自然言語推論(SNLI)、音声認識(TIMIT)、アルゴリズム問題(逆転、加算、乗算から代数まで、10 以上のタスク)などに利用できる多数のデータセットが含まれています。今後さらに追加される予定で、皆さんのデータセットも歓迎します。

2 LSTM Sequence to Sequence RNN、分割可能なものを含む畳み込みネットワーク(例: Xception)、ByteNet や Neural GPU などの最新研究モデルのほか、レポジトリのアップデートが精力的に行われている本投稿で紹介した最新モデルなどが含まれています。





Reviewed by Kaz Sato - Staff Developer Advocate, Google Cloud