Quantcast
Channel: Google Developers Japan
Viewing all 2207 articles
Browse latest View live

モバイルウェブ最前線:State of the Union

$
0
0
この記事は Chrome プロダクト マネージメント担当副社長、Rahul Roy-chowdhury による Google Developers Blog の記事 "The Modern Mobile Web: State of the Union" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この 1 年の変化を振り返りましょう。昨年の Google I/O で、モバイルウェブが企業向けに公開されたことを紹介しました。AMP や Progressive Web App(PWA)などの新しいテクノロジーにより、新しい機能が提供され、パフォーマンスが向上し、モバイルウェブへのワークフローが効率化されました。

そして 1 年が経ち、20 億を超える AMP ページが作成され、「PWA」が流行語をはるかに超えた存在になり、今では世界中の多くの企業がモバイル端末向けの開発にこの方式を採用しています。詳細については、最新のモバイルウェブの状況について、Google I/O で配信された動画をご覧ください。また、これらのテクノロジーが最新のモバイルウェブの主流となりつつある現状を、以下でご説明します。

動向
世界中の優れた成功事例をすべて 1 つの投稿にまとめるのは難しいので、ここではいくつか注目すべき事例を取り上げます。

Wego は自社のモバイルサイトのパフォーマンスを改善するため、amp-install-serviceworkerで AMP ページを構築し、PWA の高速環境に移行しました。ページ読み込みの平均時間が 12 秒から 1 秒未満に短縮され、コンバージョン率が 95% 増加しました。
 

Forbes がモバイルサイトを PWA として再構築するとき、スマートフォンの操作環境に似たサイトになるように考え直すことから始めました。Forbes は、基盤となるサイトのアップデートを最小限に抑える代わりに、PWA テクノロジーを統合し、没入型のアプリ風操作環境を実現しました。改善はすぐに数字となって現れ、リリース以降のエンゲージメント率が 2 倍以上になりました。


インドの代表的な配車アプリである Olaは、PWA を構築し、この PWA で予約したユーザーの 20% が、以前このアプリをアンインストールしたことがあることに気付きました。必要なストレージ スペースの量を減らすことで、PWA によってユーザーのリピート率を効率的に高めることに成功しました。

次の成功事例として、Twitter Liteの例を見てみましょう。データ使用量をできるだけ押さえた PWA によって、信頼性の低いモバイル ネットワークにも柔軟に対応し、端末上のスペースは 1MB 未満で十分になりました。Twitter の新しいモバイル操作環境はスピード面についても最適化されており、サイト中のナビゲーションが高速になっただけでなく、起動時間も最大 30% 短縮されました。ユーザーがサイトに滞在する時間が 2.7 倍に増加し、その結果、新しい PWA では、以前のモバイルサイトよりもツイート数が 76% も多くなりました。Android のホーム画面に設置されたアイコンから開始されるセッションが 1 日で 100 万にものぼり、驚くべきリピート率を達成しています。  
 
磨き上げられた操作性
ユーザーはモバイル端末にたくさんのことを期待しています。この 1 年、その要望に応えるべく多くの API を追加してきました。モバイルウェブはより多くのユースケースに対応し、今まで以上に多くのことができるようになりました。代表的な例を示します。  
  • ホーム画面に追加の改善:今年の前半に、ホーム画面に追加の改善を行ったことを発表しました。これで、PWA が Android オペレーティング システムにより深く統合されました。PWA は、ホーム画面に表示されるだけでなく、ネイティブ アプリと一緒にアプリ ランチャーや Android 設定にも表示されるようになりました。さらに、Chrome や他のアプリでもリンクをクリックすれば起動します。
  • 支払い:支払いを行う処理は複雑なものになる可能性があります。ウェブ上の支払いフローを改善するため、Payment Requestと呼ばれるワンタップの支払い API を公開しました。この API を利用すると、ウェブアプリがクレジット カードや Android Pay などの Google の支払い方式に対応できるようになります。この API を追加可能な支払いアプリと統合できるようになったこともお知らせします。
  • メディア消費量:インターネット トラフィックの 70% 以上を占めるのは動画です。優れたモバイルウェブ メディア エクスペリエンスを実現するため、ユーザーが Media Session API による再生を詳細にコントロールできるようにし、Screen Orientation API でフルスクリーンでの再生を改善しました。さらに、Background Fetch を利用したオフライン機能を追加しています。詳細については、モバイルウェブ メディアのベスト プラクティスをご覧ください。また、PWA for Media デモで、API のどのように提供されるかをご確認ください。

ツール

私たちは、ウェブで魅力的なエクスペリエンスを構築する一連のツールの改善と拡張にも取り組んできました。

Lighthouseは、ウェブ エクスペリエンスの品質を測定できる新しい自動化ツールです。ウェブアプリに対して、およそ 100 個の監査を実行し、ページ パフォーマンスからバイト効率、アクセシビリティに至るまですべてを検査し、集計したスコアを提供します。Chrome の DevTools との新たな統合により、ブラウザを離れずに Lighthouse 監査を実行できるようになります。

Polymer 2.0は、基礎から再構築された、Polymer ライブラリの次期メジャー リリースで、最新のウェブ プラットフォームの新機能を最大限に活用できます。このリリースでは、Chrome と Safari で利用できるようになった、新しい Web Components の API を使用します。完全なモジュール型で、スピードが 10% アップし、80% 軽量化されています。

Chrome は、デベロッパーの皆様が開発を容易に進め、ユーザーと交流し、ウェブで成功し続けるビジネスを構築できるよう、サポートいたします。最新のニュースについては、YouTube チャンネルに登録して、Twitter @ChromiumDevをフォローしてください。
 
Posted by Eiji Kitamura - Developer Relations Team

UI コンポーネントを使用した美しいアプリやウェブサイトの開発

$
0
0
この記事は マテリアル デザイン、Adrian Secord および Omer Ziv による Google Developers Blog の記事 "Build beautiful apps and websites with modular, customizable UI components " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
マテリアル コンポーネントはオープンソースで公開されているライブラリです。マテリアルコンポーネントを使うと、Android, iOS, Web でマテリアル デザインのガイドラインに沿った、統一感のあるスタイル、ブランド、インタラクション、モーションを使ったアプリケーションを簡単に開発できます。  
 
これらのコンポーネントは、最新のマテリアル デザインのガイドラインに沿うようにエンジニアとデザイナーのチームにより定期的に更新され、多言語対応やアクセスビリティのサポートなどの基準を満たす高品質な実装を行う事ができます。  

デザインの精度
Android、iOS、ウェブのそれぞれのプラットフォームにピクセル単位で準拠したコンポーネントです。

最新
コンポーネントは常に最新の API と機能が利用できるよう、Google のエンジニアとデザイナーがアップデートを行なっています。

オープンソース
コードは GitHub 上で公開されています。これを利用してマテリアル デザインに貢献したり、必要に応じて要素を使うことも可能です。


業界標準
Google の各種サービスにも使われているこれらのコンポーネントは、多言語化やアクセスビリティなどの業界標準を満たしています。

マテリアル コンポーネントは、Google の Android、iOS、およびウェブのエンジニアおよび UX デザイナーのコアチームにより開発保守されています。以下の取り組みにより、各プラットフォームに向けた最大限のサポートに努めています。
  • 様々な Android OSバージョンのサポート
  • Swift、Objective-C、ストーリーボードなどの業界標準を使った iOS アプリの開発
  • 一般的なフレームワークやライブラリを使用したシームレスな統合

これらのコンポーネントにより、マテリアル デザインを使った優れたユーザー エクスペリエンスを持ったアプリを簡単に開発できます。今後私たちは、最新のマテリアル デザインのガイドラインに合致するコンポーネントを継続的に更新していきます。またオープンソースで公開していますので、開発者の皆さんのチームがこのプロジェクトに貢献することを期待しています。最新のニュースを受け取りたい方や、直接私たちに連絡したい方は、私たちの GitHub リポジトリをチェックするか、Twitter(@materialdesign)をフォローするか、https://material.io/components/をご覧ください。


Posted by Takuo Suzuki - Developer Relations Team

さらなる AMP の高速化

$
0
0
この記事は Google AMP Project マーケティング リード、Matt Ludwig による Accelerated Mobile Pages Project の記事 "Turbocharging AMP" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
ウェブのスピードとユーザー エクスペリエンスの改善は、AMP Project の中核をなす使命です。先日行われた Google I/O では、Google 検索で AMP ページの読み込みが 2 倍速くなったことをお知らせしました。コンテンツのレンダリングに要する時間は、昨年の半分になっています。また、AMP エコシステムに新たなプラットフォームとウェブサイトが追加され、さらに多くのユーザーが超高速な AMP を体験できるようになっています。  
 
Google 検索での AMP の高速化は、いくつかの重要な Google AMP Cache の最適化によって実現されています。たとえば、サーバーサイドで AMP コンポーネントをレンダリングする、認識できる画質に影響を与えずにイメージに必要となる帯域幅を 50% 削減するといった点です。また、Google が数年前に開発した Brotliと呼ばれる圧縮アルゴリズムを利用することによって、サポートされているブラウザでは、ドキュメントのサイズがさらに 10% 減少しています。  
 
AMP は世界中で拡大が続いており、中国最大のソーシャル ネットワークである Tencent Qzone や、第 3 位の Weibo も数億人のユーザーに AMP ページを提供しています。これは、3 月に開催された初回の AMP カンファレンスに続く発表になります。そこでは、Bing と Google に続いて Baidu、Sogou、 Yahoo Japan がそれぞれの検索結果から AMP ページにリンクすることが発表されました。  
 
その他のソーシャル プラットフォームでも AMP の採用が続いています。Google I/O では、Tumblr が 50 万のドメインにある 3 億 4000 万のブログを AMP 対応したことが発表されました。さらに、Twitter が Android と iOS の新しいモバイル ウェブアプリを AMP 対応させ、AMP ページにリンクする作業を行っていることも発表されました。こういったプラットフォームは世界的規模で展開されているため、ウェブ上の 20 億以上の AMP ページと、AMP 対応した 90 万のドメインはさらに拡大してゆきます。  
 
加えて、e コマースサイトも AMP のスピードとユーザー エクスペリエンスによる恩恵を受けています。AMP カンファレンスでは、WompMobileWegoによる初期の成功事例が発表されました。この 2 社は、AMP 対応によってそれぞれコンバージョン率が 95%、105% 増加しました。それ以降も、新たな e コマース ウェブサイトが AMP エコシステムに参加しています。たとえば、eBay はすべての商品ページを AMP 化する予定であることを発表しています。また、Zalando は 25 万の商品ページを AMP 化し、Myntra は新しく追加された強力な amp-bind コンポーネントを活用しています。さらに、中国有数のオンライン マーケットプレイスである AliExpress も AMP ページで成功を収めており、コンバージョン率が 4% 上昇しています。  
 
AMP を利用している e コマース ウェブサイトの一部

 
AMP カンファレンスでは、さまざまな AMP の e コマース機能が紹介されました。現在は amp-bind コンポーネントオリジン トライアルで利用でき、AMP ページ上の要素で新たなインタラクション モデルが実現できるようになっています。詳しくは、5 月 19 日(金)に I/O で行われるインタラクティブ AMP ページ セッションをご覧ください。(訳註:セッションの録画が公開されていますのでご覧ください)また、AMPbyExample.comには amp-bind のデモが掲載されており、ampstart.comでは近日中に e コマースページ用のテンプレートや要素が公開される予定です。  
 
abe_screens 
AMPbyExample.com とテンプレート

 
いつものことながら、AMP にはまだ高速化できる余地があります。こちらからフィードバックをお寄せいただき、I/O にもご参加ください。I/O にお越しの方は、ぜひモバイルウェブ サンドボックス ブースにお立ち寄りください。(訳註:Google I/O 2017は無事終了いたしました。公式サイトにも多くの窓口が案内されていますので、是非お気軽にご参加ください。)なお、来週には、次の 4 半期の AMP Project の計画がすべて記載されたロードマップの最新アップデートを公開する予定です。(訳註:公開されました。)  
 
 
Posted by Yoshifumi Yamaguchi - Developer Relations Team

Android による Kotlin のサポート

$
0
0
この記事は Android プラットフォーム担当ディレクター、Mike Cleron による Android Developers Blog の記事 "Android Announces Support for Kotlin" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
先月の Google I/O 2017 で Kotlinプログラミング言語のサポートを公式に追加したことをお知らせしました。Kotlin は優れた設計の成熟した言語であり、Android 開発をより速く楽しいものにします。Expedia、Flipboard、Pinterest、Square などの主要なデベロッパーがすでに製品アプリの開発で Kotlin を採用しています。また、Kotlin は Java プログラミング言語とスムーズに連携できます。2 つの言語間で簡単に相互運用できることは、Kotlin の大きな利点の 1 つです。  
 
Android Studio 3.0 には Kotlin プラグインが バンドルされ、すぐにダウンロードできます。Kotlin は IntelliJを作成した JetBrainsのデベロッパーによって開発されていることを考えると、Kotlin の IDE サポートが優れていることも驚くに値しません。IDE のサポートに加えて、Kotlin を非営利組織に移譲するために JetBrains と協力しています(Kotlin は、Apache2 のもとですでにオープンソース化されています)。  
 

Kotlin を使い始める


Kotlin は、Java プログラミング言語を使用しているデベロッパーにはとてもなじみ深いものです。  
 
package helloWorld

fun main(args: Array) {
println("Hello World!")
}

一目見ただけで、波かっこ、クラス、パッケージ、関数、メソッドなど、使い慣れた要素があることがわかります。しかし、詳しく見ていくと、Kotlin はよく知られているコンセプトに基づいていながら、他にない現代的さを持ち、エレガントで実用的な言語であることがわかります。特に Kotlin は、デベロッパーのアイデアとそのアイデアを表現するために入力すべき構文との間の乖離を最小限にする、表現力豊かな言語です。コードを記述するとき、「なぜ(・・・を)しなければいけないのか」という疑問を持ったをしたことがありますか。Kotlin を使うと、こうした疑問の対する多くの答えが「それをする必要はない」となります。  
 
たとえば単純なクラスを実装するときに、なぜ多くのボイラープレート ゲッターおよびセッターを入力したり、equals()hashCode()toString()をオーバーライドしたりする必要があるのかという疑問を持っていたことでしょう。Java プログラミング言語の典型的な例を次に示します(簡略化しています)。  
 
public class Customer {
private String name;
private String email;
private String company;

public Customer(String name) {
this(name, "", "");
}

public Customer(String name, String email) {
this(name, email, "");

}

public Customer(String name, String email, String company) {
this.name = name;
this.email = email;
this.company = company;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getCompany() {
return company;
}

public void setCompany(String company) {
this.company = company;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Customer customer = (Customer) o;

if (name != null ? !name.equals(customer.name) : customer.name != null) return false;
if (email != null ? !email.equals(customer.email) : customer.email != null) return false;
return company != null ? company.equals(customer.company) : customer.company == null;
}

@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (email != null ? email.hashCode() : 0);
result = 31 * result + (company != null ? company.hashCode() : 0);
return result;
}

@Override
public String toString() {
return "Customer{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", company='" + company + '\'' +
'}';
}
}

Kotlin では、これらのコードを入力する必要がありません。次の 1 行が上記のクラス全体に相当します。  
 
data class Customer(var name: String, var email: String = "",
var company: String = "")

歴史とリファレンス


Kotlin はかなり前から使用されています。2011 年に初めて発表され、最初のプレビューが 2012 年にリリースされました。Kotlin 1.0 がリリースされた 2016 年から JetBrains は、Kotlin 1.0 以降における、安定した機能の下方互換性を保証しています。  
 
優れたトレーニング マテリアルとリファレンスについては、https://kotlinlang.org/から入手できます。Android チームが確認したところ、Kotlin スニペットの記述を始める簡単な方法として、Kotlin Koansチュートリアルが特に役立ちます。これらのチュートリアルでは、マテリアルが基本的な Kotlin プログラムからより高度なプログラムに進んでいくため、その内容は簡単なものから最も難易度の高いものに至るまで多岐にわたります。  
 

Kotlin を使う理由


Android チームはなぜ Kotlin をサポートすることにしたのでしょうか。最も重要な点として、Kotlin が優れた言語であり、Android アプリを簡単に楽しく記述できることがあります。
 
Kotlin は、既存の Android エコシステムにもうまく適合します。Java プログラミング言語との完全な互換性があります。必要に応じて、適切な分量の Kotlin コードを既存のコードベースに追加して、同じプロジェクト内で 2 つの言語を自由に混在させることができます。Java プログラミング言語で記述されているコードから Kotlin コードを呼び出すと、問題なく動作します(Just Works™)。通常は、デベロッパーの介入なしに、自動的に適用される変換規則を介して(たとえば、プロパティ ゲッターやプロパティ セッターなどが作成されます)、Kotlin コードから Java コードを呼び出すことも可能です。いくつかの Kotlin アノテーションを使用すると、変換方法をカスタマイズすることもできます。  
 
最後に、多くのデベロッパーが Kotlin 言語を高く評価しています(Android チームに所属している多くのデベロッパーも同様です)。Kotlin を使用している Android デベロッパー熱狂的なコミュニティがすでに存在し、公開イベントでは、Kotlin に関する質問が Android チームに定期的に寄せられています。Android コミュニティがコメントを掲載し、私たちはその内容に耳を傾けています。  
 

クイックツアー


Kotlin に関する熱狂がどこに由来するかを理解するために、ここでは、Kotlin の特に魅力的な側面について、簡単かつ部分的に説明します。  
Nullable 
Kotlin コンパイラーでは、null 値を保持できる変数が明示的に宣言されるため、実行時に NullPointerException がスローされません。  
 
var neverNull: String = "something"
var mightBeNull: String? = null // "?" indicates this can be null

if (neverNull.length > 0) { // This is OK

}

if (mightBeNull.length > 0) { // Compiler catches this error for you

}

名前付きパラメータとデフォルトの引数 
継続的に追跡するにはパラメータが多すぎるメソッドがいくつかあります。次に例を示します。  
fun orderPizza(size: Size, pepperoni: Boolean, mushrooms: Boolean,
ham: Boolean, pineapple: Boolean, pickles: Boolean,
sausage: Boolean, peppers: Boolean, onion: Boolean)
{
...
}

// Wait… did I just order pickles on my pizza?
// Why do we even have that option?
orderPizza(Size.LARGE, true, false, false, false, true,
false, true, false)
名前付きパラメータとデフォルトの引数を使用した同様のシナリオと比較します。
fun orderPizza(size: Size,
pepperoni: Boolean = false,
mushrooms: Boolean = false,
ham: Boolean = false,
pineapple: Boolean = false,
pickles: Boolean = false,
sausage: Boolean = false,
peppers: Boolean = false,
onion: Boolean = false)
{
...
}

orderPizza(Size.LARGE, ham = true, mushrooms = true)

このメソッドでは、ひどい結果を避けることができるだけでなく、コードが読みやすくなります。また、オーバーロードされた関数で記述する必要のあるバリアントの数を削減することができます。  
when ステートメント 
Kotlin には switch ステートメントのバリエーションがあり、任意の式で一致します。  
// Please don't put this in your app!
when {
password.equals("password") -> println("Insecure password!")
password.length < 4 -> println("Too short!")
else -> {
println("Secure password!")
}
}

スマート キャスト 
あるクラスのインスタンスであることをテストした直後に、なぜそれをクラスにキャストする必要があるのでしょうか。Kotlin では、キャストする必要がありません。  
if (obj is String) {
// Compiler casts obj to a String for you.
// (Would work with && instead of nested ifs too.)
if (obj.length > 0) {

}
}
これは、when ステートメントにも適用されます。
// Assume reasonable implementations of Cat and Dog
when (obj) {
is Cat -> obj.meow(...)
is Dog -> obj.woof(...)
else -> {

}
}

拡張関数 
Kotlin を使用すると、新しいメソッドで既存のタイプのメソッドを本質的に修正することができます。多くのデベロッパーは、String クラスに toPigLatinメソッドがあれば便利だと考えていますが、String をラップするために新しいヘルパー クラスを作成したり、プログラミング言語委員会の一員になったりする必要なしに、このメソッドを自分で追加できるようになりました。  
// The "String." prefix indicates that this method should
// extend the existing String class
fun String.toPigLatin() : String {
...
}

val plainOldString : String = "some text"

// Can now call toPigLatin as if were a method on String
println(plainOldString.toPigLatin())

// Or:
println("some text".toPigLatin())

非構造化宣言 
すでに説明したように、シンプルなデータクラスを簡単に定義できます。  
data class Order(val itemCode: String, val quantity: Int,
val price: Float)

これらのいずれかのクラスを戻り値のタイプとして使用する関数は、複数の戻り値をほぼサポートします。  
fun getOrder(...): Order {
...
return Order(itemCode, quantity, price);
}

処理を完了するには、非構造化宣言の構文を使用します。次のステートメントは、Orderオブジェクトを取得し、その 3 つのプロパティを抽出してから、それらのプロパティを 3 つの変数 whathowMany、および howMuchに割り当てます。すべての処理は、Kotlin コンパイラーによって実行されます。また、Kotlin コンパイラーは戻り値の正しいタイプも推測します。  
val (what, howMany, howMuch) = getOrder(...)

ラムダ式 
Kotin には、ラムダ式の非常に簡潔な構文があり、強力な関数プログラミング パラダイムを簡単に表すことができます。ラムダ式を使用して、コレクション内のすべてが String であることをテストする簡単な例を次に示します。  
fun allStrings(collection: Collection)=
collection.all { it is String }

このラムダ式の構文は、Kotlin の最もすばらしい機能の 1 つを構成する要素です。この機能とは、Kotlin でも有効な構文となる JSON のような構文を使用するビルダーを作成する機能です。この例は、こちらの詳細なディスカッションから引用していますが、このスニペットからもビルダーの概要を知ることができます。  
fun generatePage(withEmphasis : Boolean) {
val result =
html {
head {
title { +"Kotlin Builders" }
}
body {
h1 { +"Kotlin Builders" }
p {
+"This is "
if (withEmphasis) b { +"really " }
+"interesting"
a(href = "https://goo.gl/rHwJio") { +"More here" }
}
}
}
println(result)
}

ここでは興味深いことがいくつか示されています。最初の興味深い点は、Kotlin の関数構文の表現力が示されていることです。この例では、「html」、「head」、「body」などはすべて Kotlin で記述されている関数であり、これらの関数に続く波かっこの内容は関数パラメータです(このスニペットでは、HTML タグに一致する名前の関数を使用して、ウェブページの表現を作成していますが、当然ながら、このパターンを使用して、任意の名前が付いた複雑なデータ構造を作成することもできます)。2 番目の興味深い点は、「withEmphasis」条件です。これは、コード(if (withEmphasis)…)とデータ(すべて HTML 風のタグ)が混在しているように見えますが、実際には、これらの「データ」はコードです。データがコードであるため、宣言型構文を使用して複雑なデータ構造を作成できるほか、Kotlin 言語の全機能にインラインでアクセスすることもできます。  

スタートガイド


Kotlin を使ってみたい方は、こちらですぐにオンラインでコードを操作できます。緑の三角形をクリックして、コードのコンパイルと実行を始めてください。  
アプリで Kotlin を使用するには、次の手順を実行してください。  
  1. Android Studio 3.0 をダウンロードします。
  2. 既存のいずれかの「.java」ファイルを開きます。
  3. [Code] > [Convert Java File to Kotlin File] を呼び出します
その後、IDE で Kotlin 依存関係をプロジェクトに追加し、コードを機能的に同じ Kotlin コードに変換します(IDE では、静的メソッドをコンパニオン オブジェクトに移動する場合など、Kotlin をより慣用的にすることが適切な場合、すべての呼び出し場所を変換済みのクラスに修正することもできます)。  
詳細については、Kotlin の使用を開始する方法(developer.android.com)をご覧ください。  
 

Posted by Yuichi Araki - Developer Relations Team

Android Wear: 新しいコンプリケーション ツール と時計対応の UI ライブラリ

$
0
0
この記事は Android Wear リード デベロッパー アドボケート、Hoi Lam による Android Developers Blog の記事 "Android Wear: New complications tools and watch friendly UI library " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
Android Wear 2.0 は、ユーザーに有用な情報を表示するウォッチフェイスを提供するとともに、デベロッパーに便利なアプリを構築する新たな方法を提供しています。こういった新しいチャンスは、ユーザーにもデベロッパーにも好意的に受け止められています。デベロッパーがそういった新機能のメリットを受けられるように、一連のコンプリケーション用の API ツールがリリースされています。これは、デベロッパーがコンプリケーション サポートや時計対応のユーザー インターフェースを構築できる新たな Wear UI を簡単にウォッチフェイスに追加できるようにするものです。  
 

ウォッチフェイス デベロッパー向けの新たな Complications API ツール


コンプリケーションは、ウォッチフェイス上に直接表示される非常に小さな情報です。また、お気に入りのアプリを起動するショートカットとしても動作します。昨年、 Complications APIが導入され、ウォッチフェイスでユーザーが選択した任意のアプリからデータを受信したり、一貫したスタイルでデータをユーザーに表示したりできるようになりました。本日は、4 つの新しいツールを紹介します。これを使うと、ウォッチフェイス デベロッパーは Complications API を簡単に組み込むことができます。  
  • TextRenderer - テキストのサイズを自動で調整し、ウォッチフェイス メーカーで定義されている境界に収まるようにします。
  • ComplicationDrawable - コンプリケーション用の完全なレンダリング ソリューションで、すべてのスタイル設定を処理し、レイアウトが指定したスペースに収まるように調整してくれます。
  • 便利なウォッチフェイス設定サンプル - 高機能で便利な操作性を提供するコンプリケーション設定を簡単に構築できる再利用可能なサンプルコードです。
  • コンプリケーション テストスイート - ウォッチフェイスがコンプリケーション データを構成するすべてのフィールドの組み合わせに対応できるかどうかのチェックをサポートするサンプルデータ プロバイダです。

コンプリケーションをウォッチフェイスに組み込むのは、今までになく簡単になっています。  
 

Wear デベロッパー用の新しい Wear UI ライブラリ


Android Wear 1.0 のリリース以来、私たちは、時計対応のユーザー インターフェースを構築する Android ビュー コンポーネントを提供してきました。デベロッパーの皆さんからは、これらのコンポーネントのオープンソース化を期待しているという声がよく寄せられます。そのため、Google I/O 以降、一部のコンポーネントをオープンソース化し、さらにいくつかの Android Wear UI コンポーネントを Android サポート ライブラリで提供します。これによって、他のサポート ライブラリとの一貫性が向上した API、リリース頻度のアップ、デベロッパーによるフィードバックへの応答性の向上など、多くのメリットが生まれます。具体的には、以下のことを行います。  
  • ウェアラブル サポートクラスの移行 - WearableRecyclerView などのAndroid Wear 固有のビュー コンポーネントをウェアラブル サポートの android.support.wearable.view から Android サポート ライブラリの android.support.wear.widget に移行し、アップデートします。この新しいパッケージは、オープンソースとして利用できます。デベロッパーへの影響という点では、移行プロセスはシンプルなものになることが想定されています。ただし、既存の Android サポート ライブラリの一貫性向上のため、マイナー API 名は変更される場合があります。
  • Android Wear 機能の Android への統合 - Android Wear コンポーネントには、Android と重複している部分もあります。たとえば、CircledImageViewDelayedConfirmationViewなどです。Android Wear 固有の機能は、Android 版である android.support.v4.widget 以下に統合されます。
  • 古いユーザー インターフェース パターンのサポート終了 - Android Wear 2.0 では、2 つのユーザー インターフェース(カードパターンと多方向レイアウト)パターンのサポートが終了しています。そのため、GridViewPagerCardFragmentなどのすべてのサポートクラスをサポート終了としています。代替機能については、クラスのリファレンス ドキュメントをご覧ください。

この変更の第一段として、WearableRecyclerView、BoxInsetLayout、SwipeDismissFrameLayout の各クラスを 新しい Android Wear UI ライブラリに移行します。移行プロセスは 2017 年の間継続される見込みです。デベロッパーは、2018 年中旬までに新しい UI コンポーネントに移行する必要があります。詳しい情報については、Wear UI ライブラリの使用をご覧ください。  
 

使用を開始してフィードバックをお寄せください


新しいツールは、Android Studio で Android サポート ライブラリと Gradle ビルドファイルをアップデートし、新しいサポート ライブラリをインポートするだけで使い始めることができます。先ほどのドキュメントへのリンクの他に、Google I/O セッション「Android Wear UI 開発のベスト プラクティス」もご確認ください。各ツールのリード エンジニアが自ら詳しい技術について説明いたします。  
 
これらのツールは、皆さんのフィードバックをもとに、今後数か月にわたって継続してアップデートされます。早めにお知らせいただければ、多くのフィードバックを反映できます。お気軽にお知らせください。Android Wear アプリやウォッチフェイス関連の煩雑な作業は、私たちにお任せください。
 
 
Posted by Yoshifumi Yamaguchi - Developer Relations Team

Google I/O 2017:デベロッパーがあらゆるプラットフォームに最適なエクスペリエンスを構築できるようにする

$
0
0
この記事はデベロッパー プロダクト グループ、バイスプレジデント、Jason Titus による Google Developers Blog の記事 "Google I/O 2017: Empowering developers to build the best experiences across platforms" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

世界中のデベロッパーとつながる Google I/O でまたお会いできたことを非常にうれしく思います。Shoreline Amphitheatre には 7,200 名のみなさんにお集まりいただき、さらに何百万人もの方々にライブストリームを通してご参加いただきました。また、80 か国以上で数千人のデベロッパーが、地元の I/O Extendedイベントでデベロッパーの日々の作業を簡単にする Google の取り組みについて耳を傾けました。プロダクトのビルドに関する問題をできるだけ少なくして、デベロッパーが本当に解決する必要のある問題に集中できるようになるはずです。

Google I/O 初日の基調講演で Sundar Pichai(CEO)は、10 億のユーザーが利用する各種プラットフォームについて講演しました。プラットフォームが Android、Chrome、モバイルウェブのいずれであっても、Google の成功はデベロッパー コミュニティの協力なしには実現できませんでした。デベロッパー基調講演では、日々 Google のプラットフォームで開発するデベロッパー向けのツールとサービスに多額の投資を行っていることを説明しました。

続く 3 日間で、さらにたくさんのテーマについてお話ししました。Google I/O で紹介された主なデベロッパー向け情報を振り返ってみましょう。

世界中の何十億ものユーザーとデベロッパーをつなげるプラットフォーム

  • Android O Developer Preview 2— Android をさらに便利にする流れるような操作と、電池の寿命、起動時間、グラフィック レンダリング時間、安定性を最適化するための取り組みに重点を置いた Android O の次のリリースをご覧ください。アーリー アダプターは Android O ベータ版プログラム(android.com/beta)にオプトインし、Android O をすぐに実行できます。
  • Project Treble— Google I/O 開催の前週、新しい Android フレームワークをご紹介しました。これは、端末メーカーがスマートフォンを新しいバージョンの Android へのアップグレードする際にかかる時間や手間を削減することを目的に設計されており、Android O 以降を搭載する端末が対象となります。
  • Android Go— O のリリース以降、エントリレベルの端末でスムーズに実行できるように Android を最適化しています。YouTube Go、Chrome、Gboard などの Google アプリは、メモリやストレージ、モバイルデータの使用量を抑えるように設計されています。
  • Kotlin— Android は Java と C++ に加えて、Kotlin プログラミング言語を公式にサポートします。Kotlin は優れた設計の、成熟した実稼働向けの言語であり、Android 開発をより迅速で楽しいものにします。
  • Android Studio 3.0 Canary— 新しいプレビュー版には、開発フローの高速化を実現する 3 つの主な機能が追加されています。パフォーマンスの問題をすばやく診断する新たなアプリのパフォーマンス プロファイリング ツール一式、Kotlin プログラミング言語のサポート、サイズの大きいアプリのプロジェクトでの Gradle ビルドの高速化です。
  • モバイルウェブ — AMPProgressive Web Apps(PWAs)は、最新のモバイルウェブ環境を再定義します。AMP を利用すると、コンテンツの表示が高速化されます。PWAs は、信頼性が高く、高速で魅力的な、アプリに重点を置いたエクスペリエンスを実現します。いま世界中で成功事例が生まれています。たとえば、旅行会社の Wegoには AMP をベースにした PWA が追加されました。Forbesは PWA のローンチ以降、ユーザー エンゲージメントが 2 倍になりました。現在お使いのウェブ エクスペリエンスの状況を確認したい場合は、ウェブページの品質を自動で測定するツール、Lighthouseをご利用になれます。午後のモバイルウェブ:統合の状況講演で、豊かなモバイルウェブ エクスペリエンスの構築について詳しく説明します。

モバイルアプリとウェブを次のレベルに引き上げるインフラとサービス

  • Firebase— 昨年の I/O で Firebase が拡張され、アプリのビルドとビジネスの成長をサポートする製品を備えたフルモバイル開発プラットフォームとなりました。今では 100 万人以上のデベロッパーが Firebase を利用しており、日々のデベロッパーの課題をよりシンプルにできるよう、取り組みを続けています。ホスティング機能とクラウド機能間にインテグレーションを導入し、電話番号認証のサポートを加え、さまざまな方法で Analytics の改善を進める Firebase Performance Monitoring を通じて、アプリのパフォーマンスを詳しく分析できるようになっています。SDK のオープンソース化も始めました。
  • モバイルウェブ デベロッパー認定— Google I/O 2016 で、Associate Android Developer Certification(アソシエイト Android デベロッパー認定資格)を発表しました。今年は、ウェブ デベロッパー向けに Mobile Sites Certification(モバイルサイト認定)Mobile Web Specialist Certification(モバイルウェブ スペシャリスト認定)という 2 つの認定資格を新たに設けました。

強力なツールで新しいユーザーを獲得し、ビジネスを成功に導く

  • Google Play Console— Play Console に、デベロッパーがアプリのパフォーマンスを高め、リリース管理の信頼性を向上させ、世界中のユーザーにアプローチし、ビジネスを成功に導くためのサポートを提供する、強力な新機能とレポートが追加されました。Play Console に幅広いビジネスの用途を反映した新しい機能が加わった事で、アプリのビジネスを向上させる上で必要な機能をより簡単に検索できるようになります。
  • Android Instant Apps— Android アプリをインストールせずに実行する新しい方法である Android Instant Apps をすべてのデベロッパーに開放しました。これにより、誰でも Instant Apps をビルドして公開できるようになりました。既に、Jet、New York Times、Vimeo、Zillow などのさまざまなブランドが対応しており、Android Instant Apps は 50 以上のアプリで試してみることができます。
  • ペイメント、収益化と広告 — Google Payment API が導入されました。これにより、ユーザーの Google アカウントに保存されているクレジット カードまたはデビット カードを使用して、ユーザーがアプリ内およびオンラインで支払えるようになります。Google Analytics for Firebase と新しい AdMob との統合により、収益の効率が上がり、Universal Apps Campaigns のアップデートにより、ユーザーベースを広げることができます。

機能の限界を押し広げる新しいインターフェース

  • Google Assistant 向けの Actions on Google— スマートフォンに Actions on Google の機能が導入され、SDK がさらに向上しました。新しいデベロッパー コンソールである Actions Console もリリースしました。これにより、デベロッパーがチームで開発し、アプリの使用状況、パフォーマンス、ユーザー検出パターンに基づきデータを収集できるようになります。この新しいコンソールは、Firebase コンソールと Google Cloud コンソールを統合しています。
  • VR and AR at Google— 「VR and AR at Google(Google の VR と AR)」セッションでは、最新の Daydream プラットフォーム機能とデベロッパー ツールについて説明しました。

デベロッパーの皆さまが成功をおさめることは、Google にとって重要なことです。Google は、デベロッパーの課題の解決をサポートする製品を開発するだけでなく、130 以上の国で、Women Techmakersや Google Developer Groups (GDGs)などのプログラムを通じて、デベロッパー コミュニティを育み、拡大しています。Google Developers Certification(Google Developers 認定)などのトレーニング プログラムや、Udacity やその他のパートナーから提供されるコースにも投資しています。これにより、デベロッパーが技術的な機能をさらに深めることができます。また、複数のプロダクトを取り上げるデベロッパー向けの大きなイベントである Google Developer Day が、ヨーロッパ(2017 年 9 月、ポーランドのクラクフ)とインド(2017 年 12 月、バンガロール)の 2 会場で開催される予定です。詳しくは、g.co/gdd2017に登録して最新情報をご覧ください。

Google I/O 期間中は、Android に始まり Assistant や AR まで網羅された、14 のコンテンツ トラックと 140 以上のブレークアウト セッションが参加者と視聴者に用意され、これらの分野について深く学べる機会が提供されました。デベロッパーが最新の API を使いこなすことができるように、70 以上のコードラボも公開しました。

Android、Chrome、Play、VR/AR、クラウド、モバイルウェブのどのプラットフォームでも、Google は世界中の何十億ものユーザーとデベロッパーをつなげるプラットフォームに常に投資しています。デベロッパー コミュニティからの継続的なサポートとフィードバックに感謝します。


Posted by Takuo Suzuki - Developer Relations Team

Firebase SDK のオープンソース化

$
0
0
この記事は Firebase プロダクト マネージャー、Salman Qadri による The Firebase Blog の記事 "Open sourcing the Firebase SDKs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
元の記事は Google オープンソース ブログに投稿されました。 
 
Firebase クライアント ライブラリのオープンソース化に向けた第一歩を踏み出したことをお知らせします。私たちは、SDK をオープンなものにすることを通して、透明性を上げ、デベロッパー コミュニティの強化に貢献したいと考えています。この目的を達成するために、GitHub を通してソースコードを公開し、皆さんにも貢献していただけるようにします。スタイルの不一致からバグまで、コードに問題を発見した方は、GitHub 標準の Issue Tracker から問題を報告できます。また、このプロジェクトは Google オープンソース ディレクトリからも参照できるようになっています。皆さんのプルリクエストをお待ちしています。  
 

オープンソース化の対象


まずは、iOSJavaScriptJavaNode.jsPythonの各 SDK のいくつかの製品をオープンソース化します。Android SDK のオープンソース化も検討予定です。各 SDK には、Apache 2.0ライセンスが適用されます。これは、FirebaseUIなどの既存の Firebase オープンソース プロジェクトと同じ柔軟なライセンスです。  
 
以下では、それぞれのレポジトリについて紹介します。  
 

Firebase iOS SDK 4.0


https://github.com/firebase/firebase-ios-sdk 
 
Firebase iOS 4.0 SDK のリリースに合わせて、Swift ユーザーにとってわかりやすい API 名への変更など、デベロッパーの皆さんが開発をしやすくするためのいくつかの改善が行われています。iOS SDK のオープンソース化によって、各機能のフィードバックが増えることを期待しています。今回の最初のリリースでは、Realtime Database、Auth、Cloud Storage、Cloud Messaging(FCM)の各 SDK がオープンソース化されます。今後もさらに多くの SDK がオープンソース化される予定です。  
 
Firebase にはまだオープンソース化できないコンポーネントもありますので、まだ製品を完全にビルドすることはできません。このレポジトリを使って FirebaseDev pod をビルドすることはできますが、当面の間 CocoaPodsで配布されるライブラリは当面の間静的フレームワークのままとなる予定です。私たちは、組み込みの方法によらず、デベロッパーの皆さんが開発しやすい方法を探し続けています。  
 
GitHub の READMEには、iOS SDK のビルドやテスト、そして貢献を行う方法が詳しく記載されています。  
 

Firebase JavaScript SDK 4.0


https://github.com/firebase/firebase-js-sdk 
 
JavaScript 用の Realtime Database、Cloud Storage、Cloud Messaging(FCM)の各 SDK もオープンソース化されます。近いうちに、Firebase Authentication のオープンソース化など、いくつかの改善を行う予定です。さらに、コンポーネントのソースマップのリリースに向けた準備も進められています。これによって、アプリのデバッグが大幅に改善される予定です。  
 
GitHub レポジトリには、ビルドやテスト、そして貢献を行う手順が記載されています。  
 

Firebase Admin SDK


Node.js: https://github.com/firebase/firebase-admin-node 
Java: https://github.com/firebase/firebase-admin-java 
Python: https://github.com/firebase/firebase-admin-python 
 
うれしいことに、信頼された環境から Firebase にアクセスする Admin SDK は、最近リリースされた Python SDKも含めて 3 つすべてが完全にオープンソース化されます。今後、さらに多くの言語がサポートされる予定ですが、Firebase を皆さんの環境で利用する際には、これらのソースを参考にすることをおすすめします(その場合は、ぜひご報告ください)。  
 
アップデートされた SDK で皆さんが作るものを楽しみにしています。いつものように、フィードバックや質問は Google グループの Firebase-TalkStack Overflow、Firebase サポートチームにお寄せください。今後、SDK の問題やプルリクエストは、GitHubにご連絡ください。また、Google I/O でリリースされたその他の Firebase の改善点について、Firebase ブログhttps://developers-jp.googleblog.com/2017/05/whats-new-from-firebase-at-google-io.htmlをご覧ください。  
 
Reviewed by Khanh LeViet - Developer Relations Team

AMP のスピードを検索と広告の表示に

$
0
0
この記事はプロダクト マネジメント担当副社長、Jerry Dischler による "Bringing the speed of AMP to search & display ads" に翻訳・加筆したものです。元の記事は Inside AdWards に投稿され、Accelerated Mobile Pages Project に転載されました。詳しくは元記事をご覧ください。 
  
モバイルの成功の第一歩は、適切な基礎固めです。人々に選ばれるのは、即座に、そしてシームレスにニーズを満たしてくれるブランドです。どんなにサイトが立派に見えても、読み込みが遅ければユーザーは去ってゆき、チャンスを逃すことになります。  
オープンソースの Accelerated Mobile Pages(AMP)Project は、ウェブを高速化してユーザー エクスペリエンスを向上させるために 1 年半前に開始されました。それ以来、高速に読み込まれる AMP ページは、まずは Google 検索のトップニュースのカルーセルに、続いてオーガニック検索の結果リストに展開されています。  
 
本日は、AMP のスピードを活用して広告のパフォーマンスを向上させる 2 つの新しい方法を紹介します。その 1 つ目は、新たな AdWords ベータ版です。これは、高速に読み込まれる AMP ページを検索広告のランディング ページに使えるようにするものです。2 つ目は、Google ディスプレイ ネットワークで提供される広告の高速化です。これは、AMP ページを高速化しているのと同じ仕組みを利用したものです。  
 

AMP ランディング ページでキャンペーンの ROI を改善


Google 検索の AMP ページでは、ページ読み込み時間の中央値が 1 秒未満であることは以前にもお伝えしました。この速度が十分でないという方のために、先週、Google 検索の AMP ページが 2 倍高速になったことをお知らせしました。AMP がここまで広く採用されているのは驚くことではありません。現在、90 万のドメインで 20 億以上の AMP ページが公開されています。Johnson & Johnson、Toll Brothers、eBay などの広告主は、オーガニック検索結果を開いたユーザーを AMP ページに飛ばすことで、ブランドの価値を向上させています。  
 
新しい AdWords のベータ版を活用すると、検索キャンペーンはさらに高速になったモバイルページのパフォーマンスによるメリットを享受できます。広告主が検索広告を AMP ランディング ページにリンクさせると、Google 検索で AMP ページを開くのと同じような高速なモバイルウェブ体験を提供できます。ベータ版に参加を希望する方は、こちらからお申し込みください。  

「私たちは、効果的な広告キャンペーンにおけるスピードの重要性を理解しています。そのため、AMP のスピードを AdWords の有償キャンペーンに適用できるのはとてもうれしいことです」── Toll Brothers オンライン マーケティング最適化マネージャー、‎Aaron Cocks 氏
「Johnson & Johnson の商品情報ページで行った AMP のテストは大成功でした。10 倍早くなったページもあり、エンゲージメント率は 20% 上昇しています。J&J はさらに AMP を展開したいと考えています」── Johnson & Johnson ヨーロッパ、中東およびアフリカ地域デジタル アナリティクス責任者、Paul Ortmayer 氏

 

 

広告を AMP で表示


広告が高速に読み込まれれば、ユーザーがそれを見る確率は高くなります。つまり、メディア予算の効率が上がり、メッセージング戦略が最大限の効果を発揮することになります。また、高速に読み込まれる広告は、優れたユーザー エクスペリエンスにつながります。  
 
ウェブ広告で高速かつ優れたユーザー エクスペリエンスを提供するために、AMP Project は昨年 AMP Ads Initiativeという取り組みを始めました。これは、AMP ページの高速読み込みを実現しているテクノロジーを広告に適用するものです。  
 
現在 Google ディスプレイ ネットワークの AMP ページに表示されている膨大な数の広告は、新しい AMP 広告フォーマットに自動的に変換されて提供されるものです。こういった広告は、通常の広告と見かけはまったく同じですが、最大 5 秒早く読み込まれます。究極的には、これによって皆さんのメッセージが実際に意図した対象ユーザーに表示されることになります。もちろん、皆さんのブランドでシームレスなユーザー エクスペリエンスを提供できます。  
 

 
スピードは重要です。現在のユーザーのニーズを満たすために、高速化は欠かせません。AMP のスピードとパフォーマンスが広告にも適用されることで、キャンペーンの効率が上がり、増し続けるユーザーの期待に応えられるようになります。 
 
 
Posted by Yoshifumi Yamaguchi - Developer Relations Team

2017 年の Android Security Rewards

$
0
0
この記事は Android セキュリティ チーム、Mayank Jain、Scott Roberts による Android Developers Blog の記事 "2017 Android Security Rewards " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
Android Security Rewardsプログラムは、2 年前に開始されました。2 年目を迎えた今年は大いなる飛躍を遂げ、基準を満たす 450 件以上の脆弱性レポートを受領しています。1 人あたりの褒賞金は 52.3% 増加し、合計額も倍増して 110 万ドルになりました。プログラムが開始されてから支払われた褒賞金は、合計 150 万ドル以上にのぼります。  
 
以下に、2 年目を迎えた Android Security Rewards プログラムの概要を示します。  
  • 褒賞額が最大となる TrustZone または Verified Boot の安全性が脅かされる完全なリモート脆弱性チェーンに対する支払いはありませんでした。
  • 褒賞金は 115 名に対して支払われ、平均金額は 1 件あたり 2,150 ドル、リサーチャー 1 人あたり 10,209 ドルでした。
  • トップ リサーチチームの C0RE Teamには、脆弱性レポート 118 件に対して 300,000 ドルを支払いました。
  • 31 名のリサーチャーに 10,000 ドル以上を支払いました。

昨年、完全な脆弱性レポートをお寄せくださったすばらしいリサーチャーの皆様、誠にありがとうございました。  
 

Android Security Rewards プログラムの強化


Google は、Android Security Rewards プログラムの改善を常に検討しており、2017 年 6 月 1 日以降に提出されるすべての脆弱性レポートにはいくつかの変更が適用されます。  
 
Android はリリースを重ねるたびにセキュリティ保護が強化されており、この 2 年間で最高の褒賞金が提供される脆弱性チェーンを発見したリサーチャーはいないため、この最上級の脆弱性に対する褒賞金を増額します。  
  • リモート脆弱性チェーン、TrustZone または Verified Boot の欠陥につながる脆弱性に対する褒賞金は、50,000 ドルから 200,000 ドルに増額します。
  • リモート カーネルの脆弱性に対する褒賞金を 30,000 ドルから 150,000 ドルに増額します。

脆弱性に対する褒賞金と合わせて、広範かつ多様な Android エコシステムとの連携も継続することにより、このプログラムで報告された問題からユーザーを保護します。各メーカーの端末でこういった問題が毎月のセキュリティ アップデートによって修正されるよう、各メーカーとも協力しています。100 以上の端末モデルでは、投入端末の大多数で直近 90 日以内にセキュリティ アップデートが実行されています。次の表は、投入端末の大多数で直近 2 か月以内にセキュリティ アップデートが実行されたモデルを示しています。  

メーカー端末
BlackBerryPRIV
FujitsuF-01J
General MobileGM5 Plus d, GM5 Plus, General Mobile 4G Dual, General Mobile 4G
GioneeA1
GooglePixel XL, Pixel, Nexus 6P, Nexus 6, Nexus 5X, Nexus 9
LGELG G6, V20, Stylo 2 V, GPAD 7.0 LTE
MotorolaMoto Z, Moto Z Droid
OppoCPH1613, CPH1605
SamsungGalaxy S8+, Galaxy S8, Galaxy S7, Galaxy S7 Edge, Galaxy S7 Active, Galaxy S6 Active, Galaxy S5 Dual SIM, Galaxy C9 Pro, Galaxy C7, Galaxy J7, Galaxy On7 Pro, Galaxy J2, Galaxy A8, Galaxy Tab S2 9.7
SharpAndroid One S1, 507SH
SonyXperia XA1, Xperia X
VivoVivo 1609, Vivo 1601, Vivo Y55
出典: Google May 29th, 2017.


昨年、Android の安全性強化に貢献してくださった皆様、どうもありがとうございます。私たちは協力し、あらゆる場所にいる Android ユーザーに役立つセキュリティ リサーチに大きな投資を行いました。来年に向けた改善に参画したいという方は、詳しいプログラム ルールをご確認ください。完全なレポートの送信方法については、Bug Hunter Universityをご覧ください。  
 
 
Posted by Yuichi Araki - Developer Relations Team

Android Instant Apps を全デベロッパーに解放、ぜひご利用ください!

$
0
0
この記事はプロダクト マネージャー、Jonathan Karmel による Android Developers Blog の記事 "Android Instant Apps is open to all developers. Start building today! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

今年初めに、Android アプリをインストールせずに実行する新しい方法、Android Instant Appsのテストを開始しました。すばらしいデベロッパー コミュニティに恵まれたおかげで、この機能のなユーザー エクスペリエンスの改善に役立つ多くのフィードバックをいただきました。

本日(*原文公開当時)より、Android Instant Apps はすべてのデベロッパーに解放され、誰でも Instant App をビルドして公開できるようになります。ユーザーは、HotPads、Jet、New York Times、Vimeo、One Football などのさまざまなデベロッパーが提供する 50 以上の新たなアプリを試してみることができます。こういったアプリはまだ短い間しか利用されていませんが、データから反応が上々であることがわかっています。たとえば、Jet や HotPads は購入が 2 桁の伸びを見せており、見込み客も増加しています。


(左から右に: One Football、Dotloop、Jet、Vimeo、HotPads、New York Times)

本日皆さんに公開する開発ツールは、アーリー パートナーからのフィードバックを直接取り入れたものです。

Instant App の開発を始めるには、developer.android.comにアクセスし、Android Studio 3.0と Android Instant Apps SDK の最新プレビューをダウンロードしてください。開発は 1 つのコードベースを維持したまま進めることができます。必要に応じて各機能がダウンロードされるようにするには、アプリをモジュール化しなければなりません。それに必要なツールは Android Studio が提供してくれます。アプリには 1 つとして同じものはありませんが、最新のツールを使用したアーリー パートナーは、おおよそ 4~6 週間で Instant App を開発しています。

ビルドが完了した Instant App は、Play Console で配布します。インストール可能な APK と一緒に Instant App の APK をアップロードするだけで完了です。

Instant Apps は、40 か国以上において最新の Android 端末で増加を続けています。Instant Apps は Android O とともに進化し、Instant Apps 用の効率的で新しいランタイム サンドボックス、共有可能なサポート ライブラリによるアプリのサイズ削減、ランチャーへの統合のサポートなどの機能が開発されています。

詳細については、g.co/InstantApps をご覧ください。また、先日行われた Google I/O でのセッション、「Introduction to Android Instant Apps(Android Instant Apps の概要)」もご覧いただけます。皆さんが作成した Instant Apps を見るのを楽しみにしています。


Reviewed by Takeshi Hagikura - Developer Relations Team

Google Play の定期購入で収益アップ

$
0
0
この記事は Google Play、George Audi、Tom Grinsted、Larry Yang による Android Developers Blog の記事 "Make more money with subscriptions on Google Play" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

定期購入ビジネスモデルは、Android と Google Play ストアで定期的、安定的に繰り返し収入を得るための優れた方法の 1 つです。実際、定期購入アプリはデベロッパーもユーザーも大いに気に入っており、その消費額はここ 3 年間で 10 倍に、アクティブな定期購入者の数は昨年から 2 倍に増加しています。現在、数千ものデベロッパーが Google Play ストアで定期購入を提供しており、この課金プラットフォームで成功を収めています。この機会を活用してビジネスや Android ユーザーに対する知見を深めていただくため、私たちは努力を続けています。

定期購入ビジネスを促進する新機能


驚くような機能や印象的なコンテンツを持つ優れた製品があっても、最終的にユーザーを獲得できなければビジネスは成功しません。無償トライアル、初回購入価格、柔軟な課金期間などに加え、今回、Google Play ストアの残高による定期購入の支払い機能が追加されました。ギフトカードによる Play コンテンツの支払いはすでに 20 か国以上で可能になっていますが、ラテンアメリカなど、支払い手段として主に現金が使われている地域があるため、ギフトカードによる定期購入の支払いは 15% 増加しています。

ユーザーは単に獲得すればよいのではありません。獲得したユーザーは継続して維持されなければなりません。そこで今回導入されるのが、アカウントのホールド機能です。これによって、現在の手段で支払いに失敗した場合、ユーザーはコンテンツやサービスにアクセスできなくなります。支払いに失敗すると、即座にコンテンツやプレミアム機能にアクセスできなくなるため、ユーザーは新しい支払い手段を選択してくれます。個人の写真や動画を保存する Keepsafe Photo Vaultは、5000 万回以上ダウンロードされています。そのデベロッパーである Keepsafe がアカウントのホールド機能を組み込んだところ、Android での定期購入更新率は 25% 増加しました。現在、10 を超えるデベロッパーがこの機能に対して早期アクセスを行っています。6 月末には、すべてのデベロッパーがこの機能を利用できるようになる予定です。

データはビジネスの死活に関わります。そのため、Play Console の新しい定期購入ダッシュボードと、Android アプリの定期購入者レポートが追加されています。

このダッシュボードには、新たな定期購入者数、キャンセル数、合計定期購入者数などの定期購入データが表示されます。さらに、1 日ごと、30 日ごとの収入データが表示され、もっとも収入の多い製品もわかります。これによって、定期購入製品やそのユーザーの実態に迫ることができ、ビジネスにおける意思決定に役立てることができます。

分析によって定期購入ビジネスを拡大する


定期購入ビジネスを成功に導く上で欠かせないのは、製品や機能だけでなく、ユーザーのニーズを理解することです。私たちは、アメリカとイギリスの 2,000 名の Android アプリの定期購入者に調査を行い、アプリを使う方法と理由について尋ねました。その結果は、「Google Play の定期購入アプリ: デベロッパーに成功をもたらすユーザーの分析」というレポートで公開されています。ここでは、定期購入のユーザー ベースの拡大、価格戦略の設定、ユーザーの維持率の向上に役立つチャンスとなるいくつかの点を紹介します。
  • ユーザー獲得のために、無償のトライアルを活用します。78% のユーザーは最初に無償版のアプリを使っています。有償版を使う理由として、多くの方が割引価格や無償トライアル期間の終了をあげています。
  • ユーザーに支払いを続けてもらえるよう、魅力的なコンテンツの提供やアップデートを続けます。この点は、無償版から有償版へのコンバージョンやユーザーの維持にとって、もっとも重要な動機となります。
  • 定期購入には、収益を上げる大きなチャンスがあります。価格設定の柔軟さはカテゴリによって異なりますが、有償版から乗り換える理由として価格をあげているユーザーは少数です。また、アプリごとに定期購入の予算を割り当てている、あるいは特に予算について考えていないユーザーは 64% です(定期購入アプリ全体に予算を割り当てているユーザーとの比較です)。
Google Play ストアで定期購入ビジネスを拡大する方法についてさらに詳しく知りたい方は、I/O セッションをご覧いただき調査レポート(PDF)をダウンロードしてください。また、Google Play アプリ内課金で定期購入をお試しください。

このブログ投稿はどのくらい役に立ちましたか?


Reviewed by Hak Matsuda - Developer Relations Team

Firebase Performance Monitoring の紹介

$
0
0
この記事は プロダクト マネージャー、Ali Abdelhadi による The Firebase Blog の記事 "Introducing Firebase Performance Monitoring" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

優れたモバイルアプリを作成する上で、エンドユーザーの視点によるパフォーマンスの監視は大きな難題です。これは、アプリのコードのパフォーマンスにも、ネットワークの応答性や信頼性についても言えることです。ユーザーの離脱や否定的なレビューを避けるためには、どこに改善の必要があるかを把握できなければなりません。逆に、Google Play の星 5 つのレビューの 60% では、スピード、デザイン、ユーザビリティについて言及されています。

ネイティブ アプリのパフォーマンスの監視における最大の難題は、状況を把握することです。ユーザーの体感速度が遅くなったり、アニメーションがスムーズに動作しないことがわかるだけでは不十分です。そのような現象がアプリのどこで発生しているかを把握する必要があります。また、さまざまな国や端末、OS レベルなどによって現象がどのように異なるかを把握することも重要です。

これこそが、iOS と Android 向けの Firebase Performance Monitoringが開発された理由です。このツールは、本番環境でのパフォーマンス指標を取得して計測する SDK と、SDK が取得したデータを分析できるコンソールを提供します。



Firebase Performance Monitoring には、トレースとネットワーク アクティビティ監視という 2 つの主な機能があります。まずは、トレースについて説明しましょう。トレース機能を使うと、アプリの特定の操作にかかる時間を把握したり、「カウンター」API を使って操作にカスタムの指標を追加できます。たとえば、イメージの読み込みが始まってから画面でイメージのレンダリングが終わるまでの時間をトレースしたり、カウンターを使ってイメージ読み込み時のキャッシュのヒット回数やミス回数をトラッキングすることができます。

アプリの起動は SDK をインストールするだけで自動でトレースできるので、アプリのコールド スタートにかかる時間を監視できます。


Firebase Performance が提供するもう 1 つの機能は、ネットワーク アクティビティの監視です。アプリが実行する HTTP/S リクエストは、送信されてから応答を受信するまで、自動的に監視されます。URL のパターンごとに、応答時間、ペイロード サイズ、成功率を確認できます。


リクエストに失敗した場合は、原因となったレスポンス コードについて 400 番台と 500 番台の内訳を確認できます。



収集されるトレースおよびネットワーク関連の全指標では、国、端末、アプリのバージョン、OS のバージョンの内訳を確認できます。これによって問題の原因を絞り込めるので、修正が簡単になります。



現在、Firebase Performance Monitoring はベータ版として公開されています。詳しくはこちらのドキュメントまたは I/O セッションをご覧ください。



Reviewed by Khanh LeViet - Developer Relations Team

Firebase 電話番号認証

$
0
0
この記事は デベロッパー アドボケート、Laurence Moroney による The Firebase Blog の記事 "Firebase Phone Auth" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 

初めてリリースされたときから、Firebase はさまざまな認証スキームを提供しています。  
ユーザーが基本情報を提供するメールとパスワード認証(iOSAndroidウェブ)を使ったアプリを構築することができます。この場合、Firebase はこれらを ID として利用し、ログインを管理します。また、フェデレーション IDを使うこともできます。この場合、ユーザーがアプリにユーザー登録するのではなく、GoogleFacebookTwitterGitHubなどのサードパーティが提供する認証情報を使ってログインします。加えて、登録していないユーザーにセキュリティ ルールを提供する匿名認証を使うこともできます。  
多くのデベロッパーからリクエストされていた認証タイプに、電話番号を使ったログイン機能があります。それを受けて、本日は Firebase Auth で電話番号認証がサポートされたことをお知らせします。現在 Digits SDK を使って電話番号認証を行っている方は、Firebase Auth への移行の詳細が記載されているこちらのお知らせをご覧ください。  
Firebase 電話番号認証は、次のように動作します。  
 
 

ログイン画面


ここに示すのは、Google と Facebook によるフェデレーション ID、メールとパスワードによる基本認証に加えて、電話番号認証をサポートするアプリの例です。  
このアプリは、FirebaseUIを使って構築されています。そのため、本記事で説明するフローの多くは、FirebaseUI を組み込むことによって自動的に実装されます。  
画面の下部を見ればわかるように、電話番号でログインする [Sign in with Phone] オプションが表示されています。  
では、ユーザーがこのボタンをタップするとどうなるかを詳しく見てみましょう。  
 

ログインフロー

ユーザーは、[Sign in with Phone] ボタンを初めてタップした後、端末の電話番号を入力します。[Verify] を押すと番号が Firebase に送信され、6 桁のコードが生成されて SMS 経由で端末に送られます。  

ユーザーが正しいコードを入力すると、Firebase がそれを確認し、ユーザーとして認識します。以降のセッションでは、ログイン状態が維持されます。  
ログイン済みのユーザーは、Firebase コンソールで次のように表示されます。  

Firebase Authentication の詳細は、Firebase デベロッパー サイトをご覧ください。  
Firebase UI は、ログインやユーザー登録のフローのベスト プラクティスをすばやく簡単に実装できるオープンソース ライブラリです。現在、Firebase UI の電話番号認証は iOSウェブで利用できます。近日中に Androidにも対応する予定です。  
Firebase と Firebase Authentication の拡大と開発は今後も続いていきます。皆さんのフィードバックをお待ちしていますので、ぜひ firebase.google.com/supportまでご連絡ください。  

Reviewed by Khanh LeViet - Developer Relations Team

さよなら PNaCl、こんにちは WebAssembly

$
0
0
この記事は NaCl、PNaCl、WebAssembly ソフトウェア エンジニア、Brad Nelson による Chromium Blog の記事 "Goodbye PNaCl, Hello WebAssembly!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

かつて、ウェブでネイティブ コードを実行するにはブラウザのプラグインが必要でした。しかし、2013 年に PNaCl サンドボックスが導入され、安全、ポータブル、かつ高性能なアプリをプラグインなしで構築する手段が提供されました。これは Chrome ではうまく動作しましたが、すべてのブラウザでシームレスに動作するソリューションではありませんでした。

その後ウェブ コミュニティでは、コードを高速に実行するクロスブラウザのソリューションとして、WebAssembly への注目が高まってきました。WebAssembly は、既存の標準ベースのウェブ プラットフォーム API を活用して、ブラウザ内動画編集ツールを作成したり、Unity ゲームを高フレームレートで実行するために必要なスピードを提供します。WebAssembly を使ったアプリケーションは、すでにさまざまなブラウザで実行されています。Chrome と Firefox はネイティブで WebAssembly をサポートしており、Edge と Safari でもプレビュー版の WebAssembly がサポートされています。

クロスブラウザ サポートにおけるこの勢いを考え、私たちはネイティブ コード関連の作業については、今後 WebAssembly に集中する予定です。Chrome アプリと拡張機能の内部を除き、PNaCl のサポートはすべて 2018 年の第 1 四半期に終了します。WebAssembly 関連のエコシステムは、新しいものも既存のものも含め、高性能ウェブアプリに適したものになります。また、PNaCl の利用率が低いことも、サポート終了の十分な理由となっています。

このテクノロジーの移行は、難易度の高い作業になる可能性があることは認識しています。これを簡単にするために、既存の PNaCl 実装をウェブ プラットフォームに移行する際の推奨事項の一覧と、WebAssembly の機能ロードマップを作成しました。移行プロセスを始めるにあたって、難しい問題が発生した場合は、ぜひお知らせください。できる限りスムーズな移行ができるよう、サポートいたします。

WebAssembly の導入によって、ウェブ プラットフォームにはどんなブラウザでも実行できる高速かつ迫力のある新世代ウェブアプリの基盤ができました。皆さんが次に作成するアプリを楽しみにしています。


Reviewed by Eiji Kitamura - Developer Relations Team

Android デベロッパー ストーリー: Google Play でユーザー エクスペリエンスとエンゲージメントを改善した LIFULL

$
0
0
「LIFULL HOME’S(ライフルホームズ)」は、パソコン、モバイル、アプリに対応した、日本の不動産販売・賃貸情報を扱う検索プラットフォームです。ユーザー エクスペリエンスの改善に向けて、LIFULL チームがどのようにユーザー重視のアプローチを行ったか、また、レビューやアプリ内 A/B テストなどの機能をどのように活用して Google Play でのエンゲージメントを向上させたか、ご覧ください。





Posted by Takuo Suzuki - Developer Relations Team

Google I/O のセッションを振り返る: App Maker を使ったカスタムアプリの作成方法

$
0
0
この記事は App Maker プロダクト マネージャー、Geva Rechav による Google Apps Developer Blog の記事 "Google I/O session recap: how to build custom apps with App Maker" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

業務や顧客、社員に特有のワークフローやプロセスはあらゆる企業に存在します。多くの場合、そのようなワークフローやプロセスは、マクロやスクリプトとともに大きなスプレッドシートやその場しのぎのデータベースに保存されています。しかし、そういったスプレッドシートやデータベースがカスタムの業務アプリになったらどうでしょう。便利な UI やユーザー個別の役割が提供され、データの入力エラーを最小限にとどめつつ生産性を向上させるアプリがあったらどうなるでしょうか。

今年の Google I/Oでは、企業が App Makerを使うべき理由を説明しました。App Maker は、コードをほとんど書く必要がないアプリ開発ツールです。これを使うと、企業は G Suite でカスタムアプリをすばやく構築できます。以下をご確認ください。


さらに詳しく知りたい方のために、以下にプレゼンテーションの概要をまとめました。

App Maker で企業の「アプリのギャップ」を埋める 

多くの企業が、実際に「アプリのギャップ」に悩まされています。この点は、主要な SaaS 製品を導入している企業も変わりありません。テリトリープランニングやアセットのパフォーマンス トラッキングなど、標準 CRM では対応できない極端な例を考えてみるとよいでしょう。

Google も、同じギャップを経験しました。数年前、人材募集担当者は月に何千名も面接して、複数の面接官が長いフィードバックを作成していました。あまりに膨大な量だったため、採用委員会が候補者を精査してタイムリーな判断を行うのは難しく、対応が遅れていました。この問題を解決するため、IT チームが自社インフラのさまざまな要素を活用してアプリを作成することにしました。

やがて、他の部門からもアプリを作ってほしいという要望が寄せられたため、App Maker を作成しました。そして、Google 社内の数個のアプリから始まったこの仕組みは、数千名が利用する 400 近い内部アプリに進化したのです。さらに、こういったアプリの大半は、IT 部門以外のエンジニアでない人々が構築したものです。

現在では、App Maker を使って、ソフトウェア エンジニアや専門家以外のデベロッパー(ビジネス アナリスト、コーディング愛好家など)がアプリをすばやく構築して導入し、ワークフローの課題を解消できるようになりました。

機能の仕組み 

App Maker を使うと、簡単にデータ バインディングを行い、ドラッグ アンド ドロップで UI を設計できるため、数か月どころか数日でアプリを構築できます。アプリには、さまざまなデータソース、Google のサービスや API を組み込むことができるので、以前の資産も活用できます。作成したすべてのアプリは G Suite のドライブの一部になるので、データがドメインの外に出ることはありません。

App Maker アプリは、次の 3 段階で作成できます。
  1. データモデルを定義します。これは、既存の Google スプレッドシートを App Maker にインポートする、Google Cloud SQL インスタンスに接続する、フィールドごとにカスタム オブジェクトを手動で定義する、のいずれかの方法で行います。
  2. UIを構築します。それには、データ入力フォームなどのビルド済みのコンポーネントやレポート テンプレートを追加します。イベント トリガーやアプリのフローも簡単に作成できます。 
  3. オプションで、クライアント UI やアプリサーバーで実行されるオープンソースの HTML、CSS、JavaScript を追加し、そのままでは提供されないカスタム機能を実装します。
現在、App Maker はアーリー アダプター プログラム(EAP)となっており、G Suite Business のユーザー全員が利用できます。使ってみたい方は、こちらから申請してください

考えられる活用事例 

どのようなものを作ることができるのか、よくわからないという方もいらっしゃるでしょう。以下に、ユーザーの事例に基づいたいくつかの着手点を紹介します。
  • 比較的多くのユーザーが定期的にアップデートする大きなスプレッドシートがある場合:通常、スプレッドシートにはその元となるワークフローがあります。App Maker アプリを使うと、よりよい UI を提供できるので、ワークフローの視覚化、アクションの確認、データ入力エラーの削減などが可能です。 
  • カレンダーや Gmail で一括操作を何度も行っている場合:たとえば、社員が部署を異動する場合、App Maker アプリを作成して数クリックで必要な一括操作を行うことができます。 
  • すでに Apps Script や BigQueryを利用している場合: この場合、すでにワークフローのカスタマイズに投資を行っていることになります。App Maker は、カスタムアプリ開発を加速させます。
G Suite の App Maker で独自のアプリを作成しましょう。早速 EAP にお申し込みください



Posted by Eiji Kitamura - Developer Relations Team

Cloud Functions for Firebase によるコンテンツの無害化

$
0
0
この記事は デベロッパー プログラム エンジニア、Nicolas Garnier による The Firebase Blog の記事 "Content Moderation with Cloud Functions for Firebase" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 
 
掲示板、ソーシャル ネットワーク、ブログ プラットフォームなど、ユーザーがコンテンツを投稿できるアプリでは、常に不適切なコンテンツが公開されるリスクが存在します。本投稿では、Firebase アプリで Cloud Functionsを使って自動的に不適切なコンテンツを無害化する方法について紹介します。  
 
コンテンツを無害化するもっとも一般的な戦略は、「受動的な無害化」です。通常は、ユーザーに不適切なコンテンツを報告してもらうためのリンクを追加し、ルールに従っていないコンテンツを手動で確認して削除します。しかし、受動的な無害化を補完するために自動的な無害化の仕組みを追加すると、不適切なコンテンツが公開されることを防ぐ仕組みをさらに強化できます。Cloud Functions を使うと、Firebase アプリでユーザーが公開した不適切なテキストや写真などのコンテンツに対する自動チェックを簡単に行うことができます。どのくらい簡単にできるのか、早速見てみましょう。  
 
ここでは、2 種類の自動コンテンツ無害化を実行します。  
 
テキストの無害化では、汚い言葉やシャウト(「SHOUTING!!!」など、すべて大文字の言葉)をすべて削除します。  

画像の無害化では、アダルト コンテンツや暴力的なコンテンツにぼかしをかけます。  

本質的に、自動的な無害化は信頼できる環境(つまり、クライアント以外)で行う必要があります。そのため、Cloud Functions for Firebase はまさに適任です。2 種類の無害化を行うには、2 つの機能が必要です。  
 

テキストの無害化


テキストの無害化では、Firebase Realtime Database をトリガーとして moderatorという名前の機能を実行します。ユーザーが Realtime Database に新しくコメントや投稿を追加すると、bad-words npm パッケージを使って汚い言葉を削除する機能が実行されます。続いて、capitalize-sentence npm パッケージを使って、大文字が多用されているメッセージ(通常は、ユーザーによるシャウト)を小文字に修正します。最後のステップでは、無害化したメッセージを Realtime Database に書き戻します。  
 
実例として、ユーザーがチャットルームに書き込んだメッセージのリストを表す単純なデータ構造を考えてみましょう。メッセージは 1 つの text属性を含むオブジェクトで、/messagesリストに格納されています。  
 
/functions-project-12345
/messages
/key-123456
text: "This is my first message!"
/key-123457
text: "IN THIS MESSAGE I AM SHOUTING!!!"

新しく追加されたメッセージに対して機能が実行されると、2 つの属性が追加されます。無害化機能によってメッセージが検証された際に trueになる sanitized属性と、メッセージで不適切なコンテンツが検知され、修正された場合に trueになる moderated属性です。たとえば、上の 2 つのメッセージに対して無害化機能が実行されると、次のようになります。  
/functions-project-12345
/messages
/key-123456
text: "This is my first message!",
sanitized: true,
moderated: false
/key-123457
text: "In this message I am shouting."
sanitized: true,
moderated: true

 
moderator機能は、メッセージが書き込まれるたびに実行されます。これは、functions.database().path('/messages/{messageId}').onWrite(...)トリガールールを使用して設定します。ここでは、メッセージを無害化し、そのメッセージを Realtime Database に書き戻しています。
exports.moderator = functions.database.ref('/messages/{messageId}')
.onWrite(event => {
const message = event.data.val();

if (message && !message.sanitized) {
// Retrieved the message values.
console.log('Retrieved message content: ', message);

// Run moderation checks on on the message and moderate if needed.
const moderatedMessage = moderateMessage(message.text);

// Update the Firebase DB with checked message.
console.log('Message has been moderated. Saving to DB: ', moderatedMessage);
return event.data.adminRef.update({
text: moderatedMessage,
sanitized: true,
moderated: message.text !== moderatedMessage
});
}
});

 
moderateMessage関数では、まずユーザーがシャウトしているかどうかをチェックし、シャウトしている場合は文を小文字に変換します。次に、bad-wordsパッケージ フィルタを使って汚い言葉をすべて削除します。  
 
function moderateMessage(message) {
// Re-capitalize if the user is Shouting.
if (isShouting(message)) {
console.log('User is shouting. Fixing sentence case...');
message = stopShouting(message);
}

// Moderate if the user uses SwearWords.
if (containsSwearwords(message)) {
console.log('User is swearing. moderating...');
message = moderateSwearwords(message);
}

return message;
}

// Returns true if the string contains swearwords.
function containsSwearwords(message) {
return message !== badWordsFilter.clean(message);
}

// Hide all swearwords. e.g: Crap => ****.
function moderateSwearwords(message) {
return badWordsFilter.clean(message);
}

// Detect if the current message is shouting. i.e. there are too many Uppercase
// characters or exclamation points.
function isShouting(message) {
return message.replace(/[^A-Z]/g, '').length > message.length / 2 || message.replace(/[^!]/g, '').length >= 3;
}

// Correctly capitalize the string as a sentence (e.g. uppercase after dots)
// and remove exclamation points.
function stopShouting(message) {
return capitalizeSentence(message.toLowerCase()).replace(/!+/g, '.');
}

注: bad-words パッケージは badwords-listパッケージの汚い言葉のリストを使いますが、これには 400 個の言葉しか含まれていません。ご存じのように、ユーザーの想像力は無制限なので、これはすべてを網羅したリストではありません。そのため、汚い言葉の辞書を拡張する必要があるかもしれません。  
 

画像の無害化


画像の無害化を行うために、Cloud Storage にファイルがアップロードされるたびに実行される blurOffensiveImages機能を設定します。これは、functions.cloud.storage().onChange(...)トリガールールを使用して設定します。ここでは、Google Cloud Vision APIを使って画像に暴力的なコンテンツやアダルト コンテンツが含まれているかをチェックしています。Cloud Vision API には、画像内の不適切なコンテンツを検知することに特化した機能があります。画像が不適切だった場合は、画像にぼかしをかけます。  
exports.blurOffensiveImages = functions.storage.object().onChange(event => {
const object = event.data;
const file = gcs.bucket(object.bucket).file(object.name);

// Exit if this is a move or deletion event.
if (object.resourceState === 'not_exists') {
return console.log('This is a deletion event.');
}

// Check the image content using the Cloud Vision API.
return vision.detectSafeSearch(file).then(data => {
const safeSearch = data[0];
console.log('SafeSearch results on image', safeSearch);

if (safeSearch.adult || safeSearch.violence) {
return blurImage(object.name, object.bucket, object.metadata);
}
});
});

Cloud Storage に格納されている画像をぼかすには、まず Cloud Functions インスタンスのローカルに画像をダウンロードします。そして、ImageMagick で画像をぼかし、Cloud Storage に再アップロードします。ImageMagick はすべてのインスタンスにデフォルトでインストールされています。  
 
function blurImage(filePath, bucketName, metadata) {
const filePathSplit = filePath.split('/');
filePathSplit.pop();
const fileDir = filePathSplit.join('/');
const tempLocalDir = `${LOCAL_TMP_FOLDER}${fileDir}`;
const tempLocalFile = `${LOCAL_TMP_FOLDER}${filePath}`;
const bucket = gcs.bucket(bucketName);

// Create the temp directory where the storage file will be downloaded.
return mkdirp(tempLocalDir).then(() => {
console.log('Temporary directory has been created', tempLocalDir);
// Download file from bucket.
return bucket.file(filePath).download({
destination: tempLocalFile
});
}).then(() => {
console.log('The file has been downloaded to', tempLocalFile);
// Blur the image using ImageMagick.
return exec(`convert ${tempLocalFile} -channel RGBA -blur 0x8 ${tempLocalFile}`);
}).then(() => {
console.log('Blurred image created at', tempLocalFile);
// Uploading the Blurred image.
return bucket.upload(tempLocalFile, {
destination: filePath,
metadata: {metadata: metadata} // Keeping custom metadata.
});
}).then(() => {
console.log('Blurred image uploaded to Storage at', filePath);
});
}

 
Cloud Functions for Firebaseは、ユーザーの操作に応答して自動的に無害化ルールを適用できる優れたツールです。テキストの無害化画像の無害化のサンプルはオープンソースです。自由にご覧ください。  
 
Posted by Khanh LeViet - Developer Relations Team

Android O API 最終版が登場、今こそアプリの準備を!

$
0
0
この記事は エンジニアリング部門副社長、Dave Burke による Android Developers Blog の記事 "Android O APIs are final, get your apps ready!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

先月の Google I/O では、Android O の 2 回目のデベロッパー プレビューについて発表し、合わせて、主なテーマ、Fluid ExperiencesVitalsや、モジュール ベースの仕組みを目指す Project Trebleの取り組みについてもお知らせしました。これは、最初のベータ版品質のリリース候補として重要なマイルストーンともなるものです。基調講演や分科会では、Android の新機能を詳しく取り上げました。ライブストリーミングを見逃した方は、こちらからセッションのアーカイブをすべてご覧いただけます。

すでに Android O API の最終版が搭載された Developer Preview 3 と最新のシステム イメージ、そして Android Studio のアップデートがリリースされています。これらによって、今夏の終わり頃に予定されている正式リリースの準備を行うことができます。7 月には再度プレビューのアップデートが行われ、ほぼ最終となるシステム イメージが提供される予定です。

すでに Android ベータ版プログラムに端末を登録している方には、間もなく Developer Preview 3 へのアップデートが配信されるはずです。

アプリを Android O に対応させる


正式リリースが来月以降に迫る中で、最初の重要なステップとなるのが、現在のアプリを Android O に対応させることです。これによって、新しいプラットフォームがユーザーの端末に配信される際に、シームレスな移行が可能になります。

まだアプリの互換性をテストしていない方でも、始めるのは簡単です。サポートされている端末を Android ベータ版に登録すると、最新のアップデートが OTA で配信され、Google Play から現在のアプリをインストールしてテストできるようになります。アプリは適切な見栄えで動作し、Android O の動作の変更点に問題なく対応できるはずです。特に、バックグラウンドでの制限と、ネットワークセキュリティ識別子に関する変更点に注意してください。

必要なアップデートを終えた後は、アプリのプラットフォームのターゲットを変更せず、すぐに対応したバージョンのアプリを Google Play で公開することをおすすめします。

Android O の機能と API を使用してアプリを強化する


Android O の機能でアプリを強化すると、エンゲージメントを高め、新しいインタラクションを提供することができます。ユーザーはより多くのことを制御できるようになり、セキュリティも強固になります。さらに、アプリのパフォーマンスも向上させることができます。

通知チャンネル通知ドットは、新しいコンテンツを通知してユーザーをアプリに呼び戻す新たな方法です。ピクチャ イン ピクチャは、別のタスクの実行中でもアプリを画面に表示したままにできる機能です。自動入力は、フォームデータの入力を簡単にしつつ、安全にデータを保管します。さらに、アダプティブ アイコンXML フォント リソースダウンロード可能フォント絵文字TextView の自動サイズ変更AAudio APIや、その他の機能もご確認ください。また、バックグラウンド実行の制限など、O アプリでの重要なシステム動作の変更点のサポートも計画するとよいでしょう。

新機能や API、それをアプリに組み込む方法については、O Developer Preview サイトにアクセスしてご確認ください。
ユーザーが別のタスクを実行しながらアプリを使えるようにするピクチャ イン ピクチャモード(上)。ユーザーのアプリ利用率を向上させ、直接アプリの中心機能にジャンプできるようにする通知ドット(下)。

Developer Preview 3 を使ってみる


本日のプレビュー アップデートには、最新版の Android O プラットフォームが含まれています。これは API レベル 26 の最終版で、たくさんのバグの修正や最適化が行われています。最終となる API 26 SDK は、Android Studioの SDK Manager からダウンロードできます。また、Android Support Library 26.0.0 ベータ 2 は Google の Maven レポジトリからダウンロードできます。

これらには、公式な Android O API に対応したアプリを開発およびテストするために必要な機能がすべて備わっています。最終版の SDK をインストールすると、プロジェクトの compileSdkVersionを API 26 にアップデートして公式 Android O API でコンパイルできるようになります。また、アプリの targetSdkVersionを API 26 に更新して、オプトインし、Android O に固有の動作の変更についてアプリをテストすることをおすすめします。Android O でビルドするための環境設定の詳しい手順については、移行ガイドをご覧ください。

API は 2 回目のデベロッパー プレビューから変更されています。既存のコードで Android O プレビュー API を利用している方は、差分レポートでコードに影響が出る可能性がある場所を確認してください。

Android O 向けに開発を行っている方は、Canary チャンネルから利用できる最新版の Android Studio 3.0にアップデートすることをおすすめします。Android Studio 3.0 では、アプリのパフォーマンス プロファイリング ツールの改善、Kotlin プログラミング言語のサポート、Gradle ビルドの最適化などの新機能だけでなく、Instant Appsビルドのサポート、アダプティブ アイコン ウィザードXML フォントダウンロード可能フォントのサポートも利用できます。
Android Studio 3.0 には、アプリの XML フォント リソースをプレビューできる Android O の機能を使って開発するためのツールが含まれています。

こういった機能を使う予定がない方は、Android O 安定版チャンネルの Android Studio 2.3.3を使って開発することもできます。ただし、アダプティブ アイコン、ダウンロード可能フォント、XML フォント関連の作業を行うツールは、Android Studio 2.3.3 では利用できない点に注意してください。

Google Play のアルファ版、ベータ版、または製品版チャンネルにアプリを公開する


API は最終版なので、API 26 を使用しコンパイル(オプションで、API 26 をターゲットに指定することもできます)した APK のアップデートを、Google Play のアルファ版、ベータ版、または製品版チャンネルに公開できます。プレビュー期間中に O をターゲットにしたアプリを公開すると、Android ベータ版プログラムに登録しているユーザーなどを対象に、既存の端末での互換性のテストや API 26 を実行している端末へのアップデートの送信を行うことができます。

アップデートしたアプリが Android O だけでなく旧バージョンでも動作することを確かめるには、通常、Google Play のベータ版テスト機能を使って、デベロッパー プレビューのユーザーを含む少人数のユーザーから初期段階でのフィードバックを入手し、その後、アップデートしたアプリを段階的にユーザー全員にリリースします。

プレビュー アップデートの入手方法


Developer Preview 3 は、近日中に Android ベータ版プログラムを通して世界中のデベロッパーやアーリー アダプターに配信されます。まだ登録していない方は、android.com/betaにアクセスして、対象の Android スマートフォンまたはタブレットをオプトインしてください。通常どおり、このアップデートを手動でダウンロードして端末に書き込むこともできます。O Developer Preview は、Pixel、Pixel XL、Pixel C、Nexus 5X、Nexus 6P、Nexus Player で利用いただけます。

いつもフィードバックにご協力いただき、ありがとうございます。今夏の終わり頃に予定している正式リリースに向けて努力してまいりますので、今後もフィードバックやリクエストをお寄せください。Android O に対応した皆さんのアプリを楽しみにしています。



Posted by Yuichi Araki - Developer Relations Team

Google Play Console からアプリの翻訳を依頼して新たなユーザーを獲得する

$
0
0
この記事は Google Play プロダクト マネージャー、Rahim Nathwani による Android Developers Blog の記事 "Request a professional app translation from the Google Play Console and reach new users" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

アプリやゲームのローカライズは、世界中の潜在的なユーザーを獲得するための重要なステップで、ダウンロード数の増加やユーザー エクスペリエンスの向上に役立ちます。
Google Play では、これをサポートするアプリの翻訳サービスが提供されています。これはプロの翻訳者によるサービスで、アプリのユーザー インターフェース文字列、Play ストアのテキスト、アプリ内製品、ユニバーサル アプリ キャンペーン広告などを翻訳できます。アプリの翻訳サービスは Google Play Console から直接利用でき、簡単に始めることができます。
  • 翻訳ベンダーを選択します。
  • Play Console の中だけで、注文、受領、翻訳の適用を行えます。
  • 支払いは、Google ウォレットを使ってオンラインで行います。
  • 以前に注文したことがある場合、その翻訳は再利用されるので同じ翻訳に対して 2 重に支払いを行う必要はありません。新版を頻繁にリリースする方にはうれしい機能です。
アプリ翻訳サービスを使って 1 つのアプリとストアの説明を 1 つの言語に翻訳する場合、一般的な価格は約 5500円(50 米ドル)になります(費用は、テキストの量と言語によって異なります)。
ぜひ、アプリ翻訳サービスの詳細をご覧いただき、実際にお試しください。

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

第 2 四半期の AMP ロードマップのアップデート

$
0
0
この記事は AMP Project プロダクト マネージャー、Rudy Galfi による Accelerated Mobile Pages Project の記事 "AMP Roadmap Update for Q2 – Accelerated Mobile Pages Project" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
 
AMP ロードマップがアップデートされました。新しいプロジェクトが追加され、既存の優先事項の進捗が反映されています。とりわけ、フォーマット、アナリティクス、広告の改善に重点が置かれています。以下に、これらの分野について主な点を記載します。  
 

フォーマット


この四半期には、e コマース、エンゲージメント、デベロッパー ツールに特に注力します。この 3 つの分野すべてで、6 月末までに大きな機能を完成させる予定です。  
 
現在、amp-bindオリジン トライアルとして利用できます。これは、AMP のインタラクティブ性を向上させる柔軟なイベント バインディング システムで、この四半期の後半に正式リリースされる予定です。amp-bind に追加された最新機能は、amp-listの src パラメータにバインドする機能です。これによって、並べ替え、フィルター、ページ切り替え、任意のサーバーからの検索結果の取得といった操作を再読み込みやページのナビゲーションなしにインプレースで行うなど、さまざまな機能が実現できるようになります。さらに、クライアントサイドでの並べ替えとフィルター操作をサポートするメソッドを実装しています。この機能と、現在進行中である 2 つの機能(非同期フォーム検証フォーム入力のオートコンプリート)を合わせれば、AMP で強力な e コマースページをはるかに簡単に作成できるようになります。  
 
また、AMP で豊かで魅力的なユーザー エクスペリエンスを提供するための作業も続けています。まず、AMP で美しいイメージのサポートを強化するために、amp-image-lightboxの改善に再び取り組んでいます。これによって、amp-carouselと連携した迫力あるライトボックスを簡単に実装して体験してもらえるようになります。次に、スクロール時のバウンド動作の改善も続けています。ここでは少しアプローチを変えており、スクロール時のバウンド アニメーション用の柔軟なフレームワークを公開する方向としています。これが完成すると、この汎用ソリューションを視差スクロール状況依存で表示されるヘッダーにも利用できるようになります。  
 
最後に、さまざまな業種のデベロッパーが見栄えのよい AMP を短時間で作成できるように、AMP Startの新しいテンプレートをいくつか作成しています。また、サイトのテンプレートをカスタマイズしやすくするために AMP Start 設定ツールを開発し、コードを直接編集しなくても AMP Start ページを簡単に設定できるようにしました。  
 

アナリティクス


いくつかの最近の改修によって、AMP 広告のサポート要件を中心に amp-analytics 機能が拡張されています。他の可視性トリガー パラメータとともに指定できる waitForプロパティの導入によって、要素の可視性トラッキングにおける柔軟性が向上しています。また、可視性データの報告タイミングを指定できる機能(仮に「reportWhen」と呼ばれています)のサポートを追加する予定です。これは、情報(ページ ライフサイクル全体で蓄積され、1 度だけ報告されるデータ)をまとめる際に便利です。  
 
ページを参照する状況に応じてクライアント ID を変えるメカニズムは、すでに導入されています。これは、まもなくリリースされる Google アナリティクスの変更点に関するお知らせにも含まれていましたが、サイトオーナーのドメインから提供される AMP ページと非 AMP ページをまたいでユーザー数を正しくカウントできるようにするものです。これは、別のアナリティクス ベンダーでも同様に有効になります。  
 
この四半期の残りの期間は、amp-analytics を利用したデータ収集を行う AMP 拡張機能の準備に重点的に取り組む予定です。さらに、アナリティクスのヒット リクエストの一部として送信する前に AMP 変数を変換するフィルターのサポートも追加する予定です。  
 

広告


この四半期では、収益を向上させるためのオプションの追加など、既存の広告の UX 動作の改善を重点的に実施します。また、引き続き DoubleClick for Publishers による AMP 広告提供機能のサポートにも注力します。  
 
現在のデフォルト広告プレースホルダは、私たちが意図していたよりも目立つというフィードバックを受け、いくつかの別のオプションを試した上で、以前のバージョンよりも目立たないものを決定しました。これは近日中にリリースされる予定です。また、広告プレースホルダが表示される時間を最小限にとどめるために、AMP ページで表示される非 AMP 広告の読み込みを最適化する方法も模索しています。  
 
サイトオーナーの収益を向上させるための作業も恒常的に行っています。来月には、IMA SDK を使ってブラウザのビルトイン動画プレーヤーでプリロール広告を表示する amp-ima-video コンポーネントをリリースする予定です。ユーザーがしばらくページに滞在している場合、広告を別の広告に差し替えると効果的でしょう。現在、最低限のインターバル後に自動リフレッシュされる広告の準備を進めています。これによって、サイトオーナーは同じページ数で多くの広告から収益を得られるようになります。  
 
DoubleClick チームは、1 つのページ内での広告リクエストの対応付け作業を行っています。この機能を使うと、競合他社の広告の除外やブロックをリクエストする広告を配信できるようになります。さらに、DoubleClick フォーマット チームは、カスタム クリエイティブ タイプを使った AMP クリエイティブの配信機能の準備も進めています。これは、7 月までにリリースされる予定です。  
 
* * *

作業を行ったり、フィードバックを寄せてくださっている AMP 開発コミュニティの方々に感謝いたします。いつものように、問題や機能リクエストがありましたら遠慮なくお知らせください。  
 
Reviewed by Yoshifumi Yamaguchi - Developer Relations Team
Viewing all 2207 articles
Browse latest View live