新しいアプリの公開や既存のアプリのアップデートは、あらゆるデベロッパーにとって胸が高鳴る重要なマイルストーンです。今回は、いくつかの新機能を使った新しい方法で Google Play にアプリを公開できるようになったことをお知らせします。これにより、リリースのプロセスがスムーズでトラッキングしやすいものになっています。今回の変更では、Google Play Developer Console のリリースの管理ページが新しくなっており、アプリのリリース管理の信頼性が向上しています。
今回の新しいスタイルの設定やカスタマイズの方法については、ポリラインおよびポリゴン チュートリアルをご覧ください。罫線パターンなどのドキュメントも参考になるでしょう。なお、これらの新しいスタイル設定機能は、完全な Google Maps Android API のみで利用可能です。ライトモードでは利用できません。
Developer Advocate Firebase Auth は、ユーザーがアプリへのログインやサインアップを行えるようにする安全な認証システムです。Facebook、Twitter、そしてもちろん Google など、フェデレーションに対応した ID プロバイダによるログインも可能です。
ユーザーは高度なエクスペリエンスを期待しています。そして、複雑な ID 管理の問題を解決することによってこれらすべてを実現しているのが、オープンソースの FirebaseUI プロジェクトです。Firebase UI は、多数の新しいツールや革新的な UX を活用して、ユーザーのログインやサインアップのプロセスをサポートします。こういった機能拡張は、長年にわたってログインのコンバージョン率を最大限に高めることに取り組んできた Google ID チームの経験がベースになっています。
次に、アプリに Firebase Authentication を追加するため、アシスタント画面の [Add Firebase Authentication to your app] ボタンをクリックします。[Add Authentication] ダイアログが表示されます。
[Accept Changes] を選択して変更を反映します。Android Studio はリクエストされたライブラリをアプリに追加します。以上で実行する準備が整いました。
FirebaseUI Auth アプリの実行
以上でアプリを実行する準備が整いました。Android Studio のバージョンによっては、Instant Run が動作しないというエラーが表示されるかもしれません。その場合は、[Android Studio] -> [Preferences] -> [Instant Run] メニューから Instant Run を無効化できます。
アプリを実行すると、次のような画面が表示されます。
[Auth UI demo] を選択すると、次の画面が表示されます。
上のように [Google] と [Email] をチェックしたまま、[Start] をクリックして実験してみてください。最初に Android のヒント セレクターが表示され、自動的にユーザーがログインまたはサインアップのフローに進めるようになっています。この例では、2 種類の Google ID で端末にログインしていた(さらに Google Smart Lock で保存していた)ので、[Sign In] をクリックするとその両方が表示されたカードが現れます。これによって、ログイン画面をスキップすることができます。ヒント セレクターには、端末上の他のアカウントや、Smart Lock for Passwords で保存されている他のメールアドレスも含まれます。端末でまだ Google などのアカウントにログインしていない場合、この画面は表示されず、代わりにログイン画面が表示されます。ログイン後にオプションが表示され、アカウントを Smart Lock に追加することができます。
[None of the Above] をクリックすると、ログイン画面が表示され、Google アカウントまたはメールアドレスでログインできます。
この機能を使うと、さまざまなユーザーフローの実装をどれだけ省くことができるかを考えてみてください。
Google アカウントがない場合でも Google でログインしたい場合は、新しいアカウントを作成するオプションが必要。そうでなければ、既存のアカウントを使用。
Google アカウントが 1 つのみ存在し、ログイン済みの場合、以降はそのアカウントを使ってただちにログイン可能。
複数の Google アカウントがある場合は、それを選択できるオプション、既存のアカウントを追加するオプション、新しいアカウントを追加するオプションが必要。
先日、プラットフォームへの新機能の追加とバグの修正を含む Android Things の Developer Preview 2(DP2)をリリースしました。私たちは、約 6~8 週ごとにデベロッパー向けの新しいプレビュー リリースを行うことを目指し、定期的にアップデートを提供できるよう努力を重ねています。Android Things は、Android のパワーを活用して Internet of Things(IoT)製品を構築するための包括的なソリューションです。現在は、Android デベロッパーなら誰でも Android API や Google のサービスを使ってすばやくスマート端末を構築できます。さらに、Google からアップデートが直接提供されるので、とても安全です。これには、Android Studio、Android Software Development Kit(SDK)、Google Play サービス、Google Cloud Platform などのおなじみのツールも含まれています。Android Things は System-on-Module(SoM)アーキテクチャをサポートしています。これによって、まずは開発ボードとコア コンピューティング モジュールを使い、その後、カスタム デザインで簡単に大規模な本番環境に拡大できるようになります。その一方で、Google からの同じボードサポート パッケージ(BSP)を使用し続けることができます。
新機能とバグの修正
Developer Preview 1 でのデベロッパーの皆さんのすばらしいフィードバックのおかげで、Intel Edison および Raspberry Pi 3 用のハードウェア抽象化レイヤー(HAL)に USB オーディオのサポートを追加できました。NXP Pico には、端末のオーディオの直接サポートがすでに含まれています。Peripheral I/O(PIO)に関連する多くのバグも解決されました。Bluetooth サポートなどのその他の機能リクエストは既知の問題ですが、チームはこれらの修正に積極的に取り組んでいます。また、Intel Joule プラットフォームのサポートも追加されています。これは、現在のラインナップで最大のコンピューティング パワーを提供します。
ネイティブ I/O およびユーザー ドライバ
多くのデベロッパーが IoT ソフトウェアの開発にネイティブの C または C++ コードを使っており、Android Things は標準の Android NDK をサポートしています。現在は、Peripheral API(PIO)へのネイティブ アクセスを提供するライブラリがリリースされていますので、デベロッパーは簡単に既存のネイティブ コードを利用できます。新しい API の説明はドキュメントを、使用方法の例はサンプルをご覧ください。
Android Things DP1 で利用できるようになった重要な新機能は、ユーザー ドライバのサポートでした。デベロッパーは APK でユーザー ドライバを作成し、フレームワークにバインドできます。たとえば、ドライバのコードで GPIO ピンを読み出して通常の Android KeyEvent を発行したり、シリアルポート経由で外部 GPS を読み出して Android ロケーション API に提供したりできます。これによって、Linux カーネルや HAL をカスタマイズせずに、任意のアプリケーションでハードウェア イベントをフレームワークに注入できます。私たちは、センサー、ボタン、ディスプレイなど、さまざまな一般的なハードウェア インターフェース用のユーザー ドライバのレポジトリを管理しています。また、デベロッパーが独自のドライバを作成してコミュニティに共有することもできます。
Android Things 向けの TensorFlow
Android Things で特に興味深い機能の 1 つは、機械学習やコンピュータ ビジョンを簡単に導入できる能力です。リクエストの多かった、Android Things 端末で TensorFlow を使用する方法を説明するサンプルも作成しました。このサンプルでは、カメラにアクセスして物体認識とイメージ分類を行い、テキスト読み上げ(TTS)を使って結果を読み上げる方法を説明しています。アーリーアクセス TensorFlow インターフェース ライブラリは、ARM および x86 向けに事前ビルドされています。そのため、build.gradle ファイルに 1 行追加するだけで、任意の Android アプリに簡単に TensorFlow を追加できます。
AMP Cache が提供する検証、ユーザーからの近さなどのさまざまなメリットは、他の方法でも得ることができます。しかし、自身の DNS エントリを管理していない小さなサイトでは、複雑な API 経由でコンテンツをプッシュするエンジニアリング リソースがなかったり、コンテンツ配信ネットワークの費用がまかなえなかったりするため、そのようなテクノロジーを利用できません。
そのため、Google AMP Cache は簡単な URL 「変換」によって動作します。ウェブマスターは、ある URL でコンテンツを利用可能にするだけです。Google AP Cache はそのコンテンツをキャッシュし、オリジナルを反映した変換済みのドキュメントを、全世界に広がる Google のインフラ上の新しい URL で提供します。これはとてもシンプルな方法です。一方で、オリジナルの URL を使って AMP Cache を活用しようとする場合、ウェブマスターが DNS レコードを変更したり、ネームサーバーを再設定したりしなければなりません。実際にそれを行っているサイトもありますが、大多数のサイトでは、URL ベースの方が使いやすいアプローチでしょう。
モバイルウェブは、メディアを表示するために使われることもよくあります。デベロッパーが Chrome for Android の新しい Media Session API を利用すると、ロック画面の UI や通知をメディア コンテンツを使ってカスタマイズできます。デベロッパーは、再生するコンテンツのメタデータをブラウザに設定することで、タイトル、アーティスト、アルバム名、アートワークなどの情報を含む高機能なロック画面を作成できます。さらに、頭出しやスキップなど、通知上でユーザーが行った操作にサイトを応答させることもできます。
TensorFlow 1.0 は使いやすくなりました。tf.layers、tf.metrics、tf.losses モジュールなどのハイレベル API が新たに導入されています。また、新しい tf.keras モジュールの導入も発表されました。これは、ニューラル ネットワーク 設計のための高レベル API として人気のある Keras と完全な互換性があります。
TensorFlow 1.0 はより実運用向けになりました。Python API の仕様がフィックスされ(詳細はこちら)、既存のコードを損なうことなく新機能を簡単に試せます。
[この記事は Vamsee Jasti、AMP Project プロダクト マネージャーによる Accelerated Mobile Pages Project の記事 "New default placeholders for ads in AMP" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
Node.js SDK に、Firebase Cloud Messaging(FCM)経由でメッセージを送信するための Admin API が追加されました。
Java SDK が複数のビルトイン認証情報で初期化できるようになり、とりわけ Google のインフラ上で簡単に使えるようになりました。
Admin Node.js FCM API
新しい Admin Node.js FCM API では、FCM 経由でメッセージを送信するプロセスが簡単になっています。この新しい API は、何の追加設定もしなくても使うことができます。Node.js SDK の認証を行っている既存の認証情報がすべて処理してくれるからです。新しい API には、個々の端末、端末グループ、トピック、条件に対してメッセージを送信するメソッドが含まれています。
たとえば、開催が迫っているスーパーボウル用のアプリを作成し、アトランタ ファルコンズのトピック(/topics/falcons)またはニューイングランド ペイトリオッツのトピック(/topics/patriots)をサブスクライブしているユーザーに通知する場合を考えてみましょう。
var admin = require("firebase-admin");
// Fetch the service account key JSON file contents
var serviceAccount = require("path/to/serviceAccountKey.json");
// Initialize the app with a service account, granting admin privileges
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
// Define who to send the message to
var condition = "'falcons' in topics || 'patriots' in topics";
// Define the message payload
var payload = {
notification: {
title: "Super Bowl LI: Falcons vs. Patriots",
body: "Your team is Super Bowl bound! Get the inside scoop on the big game."
}
};
// Send a message to the condition with the provided payload
admin.messaging.sendToCondition(condition, payload)
.then(function(response) {
console.log("Successfully sent message! Server response:", response);
})
.catch(function(error) {
console.log("Error sending message:", error);
});
各 FCM メソッドには、3 番目の省略可能な引数に、メッセージのオプションを指定することもできます。たとえば、試合までもう 1 週間を切っているので、有効期間が 1 週間のメッセージを優先度 high で送ってみましょう。
// condition and payload are the same as above
var options = {
priority: "high",
timeToLive: 60 * 60 * 24 * 7
};
admin.messaging.sendToCondition(condition, payload, options)
.then(function(response) {
console.log("Successfully sent message! Server response:", response);
})
.catch(function(error) {
console.log("Error sending message:", error);
});
新しい Admin Node.js FCM API を使うと、このようなことができます。詳しいコードサンプルやドキュメントについては、メッセージの送信をご覧ください。 Admin Java 認証情報インターフェース
Google Developer Groups(GDG)というコミュニティをご存知ですか? GDG は、Google のテクノロジーに興味をもつデベロッパーの集まりで、Android、Chrome、Drive、Cloud などのプラットフォームから Google Cast API、Maps API などの製品 API まで幅広い内容を扱っています。
Q: GDG のオーガナイザーをしているのはなぜですか?
気がつけば Google で情報を検索し、Android スマートフォンを使用し、GoogleAppEngine で業務アプリを作っており Google だらけになっていたときに、Google 社員の松尾さんよりGTUG 九州(GDG の前身コミュニティ)を立ち上げたい人の募集を聞き、何か貢献できたらと思ったためです。
Q: 意味や影響が大きかったとご自身が感じる、GDG にまつわる体験談を共有してください。
GDG Organizers Summit で出会った人たち、そしてそこで知った Optimize My life の言葉は自分の中の働く理由を変え、自分の能力を活かしてお金にする手段としての仕事から、自分のやりたいことを達成するために仕事をするように気持ちが変わりました。それまでのサラリーマンとして言われた仕事をやる立場を脱してフリーランスとして独立し、仕様策定や企画まで含めて仕事にすることができるようになりました。
Q: Google が果たした役割とはどのようなものでしょうか?
東日本大震災の津波で家を被災した当時、私は大学生でした。多くの家屋が崩壊するのを目の当たりにし、「物はいつか壊れるかもしれない、しかし頭の中にあるものはずっと残り続ける」と感じました。それから勉学に勤しみ、いつのまにかプログラミングを始めていました。