来たる 12 月 7 日、「World Usability Day Tokyo」を開催することが決定しました。国内外の専門家と交流できる貴重な機会です。開発者、デザイナー、起業家の皆さま、ご興味のある方はぜひご参加ください。

開催概要
日時:2017 年 12 月 7 日(木) 13:00 - 19:10 (開場  12:30 より)
会場 : グーグル合同会社
定員 : 100 名
ハッシュタグ : #gdewud2017
参加登録 : 事前登録制。こちらのページからご登録ください。
    (※後日、参加いただける方には参加証を送ります。)
プログラム:
 13:00 - 13:20 Welcome Talk
 13:20 - 14:05 How to build an app when usability is our first objective?
                          Joël Schillio, UX / Product Designer
 14:05 - 14:50 Emotions in Motion
                          Alon Chitayat, Sr. UX and Motion Designer, Google
 14:50 - 15:05 Break
 15:05 - 15:50 Seamless Video Ad Experiences
                          Paolo Malabuyo, User Experience Director, Google Video Ads, Google
 15:50 - 16:35 PWA: A fully immersive user experience on the web
                          Abdelrahman Omran, Software Architect at Rinvex
 16:35 - 16:50 Break
 16:50 - 17:35 Creating influence as a designer
                           Niyati Gupta, Interaction Designer, Google
 17:35 - 18:20 調整中
 18:20 - 18:25 Break
 18:25 - 18:55 Panel Discussion
 18:55 - 19:10 Closing

 ※プログラムは変更となる場合があります。


Posted by Takuo Suzuki - Developer Relations Team


Android は、ハイエンドのスマートフォンから飛行機の座席まで、数十億台の端末で動作しています。Android OS は積極的にリソースを管理し、非常に広範囲にわたる端末でうまく動作していますが、安定したアプリを作るのが複雑になってしまう場合もあります。それを簡単にするために、Google I/O では、アプリのアーキテクチャの指針となる Architecture Components のプレビュー版がリリースされました。合わせて、ライフサイクル管理やデータ永続化などの一般的なタスクに使えるライブラリもリリースされました。これらの基礎コンポーネントを合わせると、ボイラープレート コードを減らしつつ、モジュール式のアプリを書くことができます。そのため、デベロッパーは車輪の再発明ではなく、イノベーションに集中することができます。私たちは、今後もこの土台に基づいて開発を進めていきたいと考えています。

本日は、Room および Lifecycle Architecture Components ライブラリが 1.0 の安定版に到達したことをお知らせします。これらの API は、いつでも製品版のアプリやライブラリにご利用いただけます。アプリのアーキテクチャやローカル ストレージに関してサポートを求めているデベロッパーの皆さんにお勧めです(ただし、これは単なる推奨であり、必須ではありません)。現在、Lifecycle はサポート ライブラリにも統合されているので、AppCompatActivity などの標準クラスでも利用できます。

安定版として宣言されたのは本日からですが、ベータ版コンポーネントは既にアプリに利用されており、数十億台にインストールされています。Zappos などのトップ デベロッパーは、Architecture Components のおかげで重要なことに時間をかけられるようになりました。

Android Architecture Components がリリースされる前は、独自の ViewModel 実装を使っていました。設定の変更を行っても ViewModel が保持されるように、ローダや依存性注入を使っていました。最近、Architecture Components の ViewModel 実装に切り替えたところ、そのようなボイラープレートをすべてなくすことができました。すると、ボイラープレートを書く時間や Android のライフサイクルの問題に悩まされる時間が減り、デザイン、ビジネス ロジック、テストに多くの時間をかけられるようになりました。

Activity のライフサイクルに直接フックできる LiveData も使い始めています。ネットワーク データの取得や表示に使うことができるので、ネットワーク呼び出しのサブスクリプション管理に悩まされることもなくなりました。

- Zappos の Android ソフトウェア エンジニア、David Henry 氏

Architecture Components は、いくつかの一般的な問題からデベロッパーを解放する、シンプル、柔軟かつ現実的なアプローチを提供します。そのため、デベロッパーは優れたエクスペリエンスを構築することに専念できます。Architecture Components は、アプリのアーキテクチャに関する指針に従ってまとめられた基本構成要素に基づいています。

Lifecycle

すべての Android デベロッパーは、Activity を起動、停止、破棄するオペレーティング システムに対応しなければなりません。具体的には、ライフサイクルに応じて、UI の更新に使う監視可能オブジェクトなどのコンポーネントの状態を管理する必要があります。Lifecycle は、 ライフサイクル対応コンポーネント の作成を可能にするもので、自身のライフサイクルを管理してリークやクラッシュの可能性を減らすことができます。Lifecycle ライブラリは、LiveData などの他の Architecture Components の基礎となっています。

LiveData

LiveData は、ライフサイクル対応の監視可能オブジェクトで、データの保持や更新の提供が可能です。UI コードは、LiveData をサブスクライブして変更を受け取ったり、LiveData に Lifecycle への参照を提供したりできます。LiveData はライフサイクルを認識しているので、Lifecycle が開始または再開すると更新されますが、LifecycleOwner が破棄されると更新は停止されます。LiveData を使うと、安全でパフォーマンスに優れたリアクティブ UI を簡単に作ることができます。

ViewModel

ViewModel は、Activity や Fragment などのライフサイクルにバインドされたエンティティから、ビューのデータとロジックの所有権を分離します。ViewModel は、関連付けられた Activity や Fragment が永久に破棄されるまで保持されます。つまり、回転によって Fragment が再作成されたりしてもビューデータが破棄されることはありません。ViewModel を使うと、一般的なライフサイクルの問題が解消できるだけでなく、モジュール性が高くテストしやすい UI を構築できるようになります。

Room

ほとんどすべてのアプリは、ローカルにデータを格納する必要があります。Android では、バージョン 1 から SQLite がプラットフォームにバンドルされていますが、直接それを使うのは大変な場合もあります。Room は、シンプルなオブジェクト マッピング レイヤーで、少ないボイラープレートで SQlite のすべてのパワーを活用できるようにするものです。コンパイル時のクエリ検証やビルトイン移行などの機能を使うと、確実な永続化レイヤーを簡単に構築できます。さらに、Room は LiveData と統合されているので、データベースを活用した、ライフサイクル対応の監視可能オブジェクトを使うこともできます。Room は、ローカル ストレージ管理にシンプルさとパワー、安定性をもたらします。ぜひお試しください。

アプリ アーキテクチャ ガイドなど

最後に、大切なことをお知らせします。あらゆるデベロッパーに適用される基本原則と、Architecture Components の使用に関する具体的なガイダンスが記載されたアプリ アーキテクチャ ガイドを作成しました。また、一貫性のある明確なガイドが重要だという声が寄せられているので、デベロッパー ドキュメントを更新し、必要に応じて Architecture Components にリンクするようにしています。さらに、Architecture Components サイトでは、豊富な動画、コードラボ、サンプルアプリを入手できます。今後さらに追加していく予定です。

今後に注目

Architecture Components の第 1 弾は安定版となりましたが、やるべきことがまだあります。ここ数か月間は、皆さんのフィードバックに耳を傾けて改善を行ってきました。さらに先日、RecyclerView で大きなデータセットを扱うのが難しいというフィードバックにお応えし、新しい Architecture Component である PagedList のアルファ版をリリースしました。これはほんの始まりにすぎません。今後お知らせしたいと考えている主要な開発中コンポーネントは他にもあります。

Architecture Components が目指しているのは、デベロッパーにモバイル端末で新しい独特なエクスペリエンスを提供することに集中してもらうことです。ようやく実環境で利用できる安定版になったことをお知らせできるのは、私たちのよろこびです。今まですばらしいフィードバックを寄せてくださったコミュニティの皆さんに感謝いたします。また、本投稿のコメントで議論を継続できることを楽しみにしています。最後に、この安定版のリリースを待っていた方は、今すぐ使ってみてください

Reviewed by Yuichi Araki - Developer Relations Team


本日より、Android 8.1 のアーリー プレビューを公開します。この Android Oreo アップデートには、Android Go(メモリが 1GB 以下の端末)の最適化、端末上の人工知能を加速させる新しい Neural Networks API など、いくつかの的を絞った機能拡張が含まれています。また、ユーザーやデベロッパーのフィードバックにお応えし、いくつかの小さな Oreo の機能拡張も含めています。

今回の Developer Preview を提供するのは、皆さんにアプリの準備をしていただくためです。端末メーカーに対しては、この新バージョンを準備するサポートを既に行っています。作業には早めに着手することをおすすめします。最終バージョンは、12 月に公開される予定です。

Pixel や Nexus 端末をお使いの方は、Android 8.1 Developer Preview を簡単に入手できます。Android ベータ プログラムに登録すると、まもなく Android 8.1 ベータ版への OTA アップデートを受信します。登録済みの方は、準備万端です。再登録は必要ありません。Developer Preview は、Pixel 2 および Pixel 2 XL 端末に加え、Pixel、Pixel XL、Pixel C、Nexus 5X、Nexus 6P、そして Android エミュレータでも利用できます。

Android 8.1 の新機能

Android 8.1 には、厳選された新機能とデベロッパー API(API レベル 27)、最新の最適化、バグの修正、セキュリティ パッチが含まれています。以下に、新しい API の一部を紹介します。
  • Android Go のメモリ最適化とターゲティング -- Android 8.1 には、Android Go 構成(1GB 以下のメモリ)に対する一連のメモリ最適化が含まれています。新しいハードウェア機能定数が追加されているので、Android 8.1 以降を実行している通常または低 RAM 端末に対してアプリや分割 APK を配布できます。
  • Neural Networks API -- Android で人工知能を実行するための取り組みの一環として、NDK 経由で動作する Neural Networks API が追加されています。これによって、サポートされている端末でハードウェア アクセラレーションを利用した推論操作が行えるようになります。Neural Networks API は、TensorFlow Lite などの ML フレームワークの基礎レイヤーとして設計されています。TensorFlow Lite は、まもなく登場する Google のモバイル用クロスプラットフォーム ML フレームワークで、Caffe2 などと似ています。今後の TensorFlow Lite に関するお知らせにご期待ください。
  • 自動入力の拡張 -- パスワード マネージャなどの Autofill サービスがさらに簡単に Autofill フレームワークを利用できるようになります。たとえば、保存ダイアログの UI のカスタマイズ性が向上しているほか、setAutofillOptions() を設定してユーザーがスピナーを使ってクレジット カードの有効期限を設定できるようになっています。
  • 共有メモリ API -- この新しい API を使うと、アプリで共有メモリを割り当て、よく使うデータに高速アクセスできます。アプリは、SharedMemory API を使って匿名共有メモリをマッピングしたり、保護状態を管理できます。この API は Parcelable で、AIDL と親和性が高く、書き込みパーミッションの削除などの便利な機能も公開されています。
diff レポートアップデートされた API リファレンス ドキュメントなど、詳細については、Android 8.1 のサイトをご覧ください。

Android 8.1 でアプリをテストする

正式リリースが 12 月に迫っているため、現在のアプリのテストをすぐに始めることが重要です。それによって、Android 8.1 が端末に配信されたときに、ユーザーがシームレスな移行を実現できるようになります。

対応端末を Android ベータ版に登録すると、最新のアップデートが配信され、Google Play から現在のアプリをインストールしてテストできるようになります。Pixel や Nexus 端末をお持ちでない方は、テスト用の Android 8.1 エミュレータを設定できます。問題を発見した場合は、修正して、アプリのプラットフォームのターゲットを変更せず、すぐに Google Play のアプリをアップデートしてください。

新機能や新 API を使ってビルドする

準備ができたら、API レベル 27 として既に確定している Android 8.1 の新機能と API を活用してみましょう。新機能の概要については、デベロッパーのための Android 8.1 をご覧ください。既製の Android Oreo の機能を使ってアプリを拡張することもできます。詳しくは、Android Oreo のサイトをご覧ください。

アプリでフォームを使っている場合は、忘れずに自動入力のテストを行っておきましょう。そうすると、ユーザーがこの便利な機能を活用できるようになります。[Settings] で [Autofill with Google] またはそれと同等のサービスを有効にしてフォームの入力をテストし、予想どおり動作することを確認します。その際に、フィールドについて明示的なヒントを提供するとともに、ログインを共有できるようにウェブサイトとモバイルアプリを関連付けることを強くおすすめします。

アプリで Camera2 API を使っており、Pixel 2 端末を持っている場合は、Google 初の消費者製品向けのイメージ処理と機械学習用カスタムデザイン コプロセッサである Pixel Visual Core の初期バージョンを試してみることもできます。Pixel Visual Core で HDR+ のテストを始めるには、新しいデベロッパー オプションである [Camera HAL HDR+] を有効にします(また、CONTROL_ENABLE_ZSL が [true] になっていることを確認します)。

Android Studio で開発をスピードアップ

Android 8.1 でビルドする場合、安定版チャンネルで入手できる Android Studio 3.0 にアップデートすることをおすすめします。Android Studio 3.0 では、新しいアプリのパフォーマンス プロファイリング ツールKotlin プログラミング言語のサポート、Gradle ビルドの最適化が行われているので、Instant AppsXML フォントダウンロード可能フォントアダプティブ アイコンなどの Android Oreo の機能の開発も簡単になります。

また、Android サポート ライブラリ 27.0.0 へのアップデートもおすすめします。これは、Google の Maven レポジトリで公開されています。このバージョンの新機能には、バックグラウンド スレッドで「ページング」されたデータを効率的に読み込む ContentPager ライブラリ、自動入力メソッド用の ViewCompat ラッパー、Wear の常に画面表示モードを改善する AmbientMode ヘッドレス フラグメント、フルスクリーン Trusted Web Activity などが含まれています。詳細については、バージョン情報をご覧ください。

正式な Android 8.1 API でコンパイルするには、プロジェクトの compileSdkVersion を API 27 にアップデートします。また、アプリの targetSdkVersion を API 27 に更新し、互換動作を無効にしてテストを行うことをおすすめします。Android 8.1 でビルドするための環境設定の詳しい手順については、こちらのガイドをご覧ください。

アップデートを Google Play に公開する

Android 8.1 API は既に最終版になっているため、Google Play では、API 27 でコンパイルしたアプリや、API 27 をターゲットにしたアプリを受け付けています。準備ができ次第、APK のアップデートをアルファ版、ベータ版、または本番チャンネルで公開しましょう。Android 8.1 だけでなく、古いバージョンでもアップデートしたアプリが問題なく動作することを確認しておきましょう。まずは、Google Play のベータ版テスト機能を使って、少人数のユーザーを対象にアルファテストを行い、その後、規模を広げてオープンベータ版テストを行うことをおすすめします。アップデートをリリースする準備ができた際には、段階的ロールアウトを利用することもできます。皆さんのアプリのアップデートを楽しみにしています。

フィードバックをお待ちしています!


いつものように、皆さんのフィードバックは重要です。お気づきの点はぜひお知らせくださいAndroid プラットフォームやツールの問題アプリの互換性の問題サードパーティ製の SDK やツールの問題を報告できるさまざまなホットリストが利用できます。Neural Networks API の問題用の新しいホットリストもできました。

12 月に予定している正式リリースに向けて努力してまいりますので、今後も Android デベロッパー コミュニティ、または Android ベータ版コミュニティを通じてフィードバックをお寄せください。

Reviewed by Yuichi Araki - Developer Relations Team




本日より、Android Studio 3.0 をダウンロードできます。Google I/O 2017 で発表された Android Studio 3.0 は、Android アプリの開発を加速することに焦点を当てた大型アップデートです。

今回の Android Studio のリリースには、新しいアップデートが満載されていますが、特に見逃すことができない主な機能が 3 つあります。パフォーマンスの問題をすばやく診断する新たなアプリのプロファイリング ツール一式、Kotlin プログラミング言語のサポート、最新の Android Oreo API での開発を加速する新しいツールやウィザード群です。

Android Studio 全体にわたる多くの部分で、安定性やパフォーマンスの改善にも時間を費やしました。Android Studio 3.0 のプレビュー期間にフィードバックを寄せてくださった皆さん、どうもありがとうございました!安定性を重視したい方、Android Oreo で高品質なアプリを作りたい方、Kotlin 言語で開発したい方、または最新の Android アプリ用のパフォーマンス ツールを使用したい方は、今すぐ Android Studio 3.0 をダウンロードしてください。

Android Studio 3.0 の新機能の詳細については、重要なデベロッパー フローごとに分類された以下のリストをご覧ください。

Android Studio 3.0 の新機能

開発

  • Kotlin プログラミング言語 - Google I/O 2017 でお知らせしたように、Android 開発で Kotlin プログラミング言語が公式にサポートされます。Kotlin は表現力が高い簡潔な言語で、既存の Android 言語やランタイムとの互換性もあります。つまり、アプリの一部だけで使うことも、多用することも自由自在です。Kotlin は、現在 Google Play の多くの人気 Android アプリで実際に利用されている言語です。
    Android Studio の今回のリリースは、IDE に Kotlin 言語サポートがバンドルされた初めてのマイルストーンです。このリリースでは、コード補完や構文ハイライトなど、皆さんのお気に入りの機能の多くが問題なく動作します。また、今後のリリースで、残るエディタ機能についても引き続き改善していく予定です。Kotlin をプロジェクトに追加するには、[Code] → [Convert Java File to Kotlin File] からビルトインの変換ツールを使うか、新規プロジェクト ウィザードから Kotlin を有効にしてプロジェクトを作成します。詳細については、Android Studio での Kotlin 言語のサポートをご覧ください。
Android Studio での Kotlin 言語への変換
  • Java 8 言語機能 - Android Studio 3.0 では、Java 8 言語機能のサポートがさらに改善されています。javac ベースのツールチェーンに移行されているため、プロジェクトで Java 8 言語機能を今まで以上に簡単に利用できます。プロジェクトをアップデートして新しい Java 8 言語ツールチェーンをサポートするのは簡単です。[Project Structure] ダイアログで、 [Source] [Target] の互換性レベルを 1.8 にアップデートします。詳細をご覧ください
  • Layout Editor - Layout Editor のコンポーネント ツリーでドラッグ アンド ドロップによるビューの挿入の操作性が向上しているほか、エラーパネルも新しくなっています。詳細をご覧ください
  • アダプティブ アイコン ウィザード - 新しく追加されたウィザードを使うと、ランチャー アイコン アセットを作成し、さまざまなランチャー画面のアイコンマスクでアダプティブ アイコンがどのように表示されるかをプレビューで確認できます。今回のリリースでは、VectorDrawable レイヤーのサポートが新しく追加されています。詳細をご覧ください
  • XML フォントとダウンロード可能フォント - Android アプリのターゲットが Android Oreo(API レベル 26 以降)である場合、XML と Android Studio 3.0 を使ってカスタム フォントとダウンロード可能フォントを追加できます。
  • Android Things のサポート - Android Studio 3.0 では、新規プロジェクト ウィザードと新規モジュール ウィザードに追加された新しいテンプレート集を使って Android Things プラットフォームの開発を始めることができます。詳細をご覧ください
  • IntelliJ プラットフォーム アップデート - Android Studio 3.0 には、IntelliJ 2017.1 リリースが含まれています。これには、Java 8 言語のリファクタリング、パラメータ ヒント、セマンティック ハイライト表示、ブレークポイントのドラッグ、強化されたバージョン管理検索などの機能が追加されています。詳細をご覧ください

ビルド

  • ビルドの高速化 - 多くのモジュールを含む大規模プロジェクトでさらに Gradle を高速化するため、 Android Gradle プラグインの API を抜本的に変更 し、拡張性の向上とビルド時間の短縮を行っています。バージョン番号が Android Studio 2.4 から 3.0 に進んだ理由の 1 つがこの変更です。以前の Gradle プラグインの API を利用している場合は、新しいプラグインとの互換性を確認し、新しい API に移行する必要があります。テストするには、build.gradle ファイルでプラグインのバージョンをアップデートしてください。詳細をご覧ください
  • Google の Maven レポジトリ - アップデートを小型化、高速化するために、Android Studio 3.0 では、Android Support Library、Google Play Services、Firebase の Maven 依存性のアップデートを探す際に、デフォルトで Android SDK Manager の代わりに Google の Maven レポジトリを使うようになります。最新のコマンドライン SDK Manager ツールGradle を併用する場合は、継続的インテグレーション ビルドにおける今後の Maven レポジトリのアップデートを Google の Maven レポジトリに移行する必要があります。詳細をご覧ください

テストとデバッグ

  • Google Play システム イメージ - Android Oreo のエミュレータ システム イメージがアップデートされ、Google Play Store が含まれるようになります。Google Play ストアがバンドルされることによって、Google Play を用いた包括的なアプリのテストが可能になり、Android Virtual Device(AVD)の Google Play サービスを最新に保つ便利な方法が提供されます。AVD でも、物理端末と同様に Google Play サービスのアップデートを行うことができます。
    Android Emulator の Google Play ストア



    アプリのセキュリティを確保し、物理端末と同様の体験を提供できるようにするため、Google Play ストアがバンドルされたエミュレータ システム イメージは、リリースキーで署名されています。これにより、権限の昇格はできなくなります。アプリのトラブルシューティングに権限の昇格(root)が必要な場合は、Google のアプリやサービスが含まれていない Android オープンソース プロジェクト(AOSP)のエミュレータ システム イメージを使うことができます。詳細をご覧ください
  • Android Emulator での OpenGL ES 3.0 のサポート - 最新版の Android Oreo システム イメージの Android Emulator では OpenGL ES 3.0 がサポートされています。さらに、古いエミュレータ システム イメージでの OpenGL ES 2.0 のグラフィック パフォーマンスが大きく改善されています。詳細をご覧ください
  • Android Emulator の App Bug Reporter - アプリのバグの記録をサポートするために、Android Emulator で再現手順の記録に必要となるすべての設定と領域を含むバグレポートを簡単に生成する方法が追加されています。詳細をご覧ください
  • Android でのプロキシのサポート - インターネットへのアクセスにプロキシを使っている方のために、エミュレータが使用する HTTP プロキシ設定を管理するユーザー インターフェースを追加しています。詳細をご覧ください
  • Android Emulator のクイックブート(Canary)- よく耳にする問題点の 1 つに、エミュレータの起動に時間がかかることがあります。この問題に対処するため、エミュレータの起動時間を大幅に短縮するクイックブートと呼ばれる新機能のプレビューを追加しています。これを有効にすると、最初に AVD を起動するときはコールドブート(端末の電源を入れるのと同じような処理)が行われますが、それ以降は高速に起動し、システムがエミュレータを閉じたときの状態に復元されます(端末のスリープを解除するのと同じような処理)。この機能を試してみたい場合は、Canary アップデート リリース チャンネルを利用していることを確認し、SDK Manager の Android Emulator で v26.2.0 を利用します。詳細をご覧ください
  • APK デバッグ - Android Studio 3.0 では、任意の APK をデバッグできます。この機能は、別の IDE で Android C++ コードを開発し、Android Studio で APK のデバッグや分析を行いたい方にはとりわけ便利です。デバッグ可能なバージョンの APK があれば、新しく追加された APK デバッグ機能を使って、APK の分析、プロファイリング、デバッグを行うことができます。さらに、APK のソースにアクセスできる場合は、ソースを APK デバッグフローにリンクして高度なデバッグを行うことができます。Android Studio のようこそ画面で [Profile or debug APK] を選択するか、メニューから [File] → [Profile or debug APK] を選択すると、この機能を利用できます。詳細をご覧ください
APK デバッグ
  • Layout Inspector - このリリースには、いくつかの Layout Inspector 拡張機能も追加されています。一般的なカテゴリに基づくプロパティのグループ化の改善、ビューツリーとプロパティ パネルの検索機能などです。詳細をご覧ください
  • Device File Explorer - Android Studio 3.0 の新しい Device File Explorer を使うと、Android 端末やエミュレータのファイルとディレクトリの構造を表示できます。これによって、アプリをテストする際に、Android Studio から簡単にアプリのデータファイルを直接プレビューしたり変更したりできるようになります。詳細をご覧ください
  • Android Test Orchestrator のサポート - AndroidJUnitRunner 1.0 以降を使う場合、Android Gradle プラグイン 3.0 で Android Test Orchestrator の利用がサポートされます。Android Test Orchestrator を使うと、アプリのそれぞれのテストを独自の Instrumentation 内で行うことができます。詳細をご覧ください

最適化

  • Android Profiler - Android Studio 3.0 には、アプリのパフォーマンスの問題をデバッグするためのまったく新しいツールセットが含まれています。以前の Android Monitor ツールセットは完全に書き直され、Android Profiler に置き換わっています。アプリをデプロイして端末やエミュレータで実行し、[Android Profiler] タブをクリックすると、一元的かつリアルタイムにアプリの CPU、メモリ、ネットワーク アクティビティを表示するビューにアクセスできます。各パフォーマンス イベントは UI イベント タイムラインにマッピングされます。タイムラインでは、タップイベント、キープレス、アクティビティの変更がハイライト表示されるので、特定のイベントの発生したタイミングや理由がわかりやすくなります。各タイムラインをクリックすると、アプリの各パフォーマンス要素を詳細に分析できます。詳細をご覧ください
Android Profiler と結合されたタイムライン ビュー


CPU Profiler
Memory Profiler
Network Profiler
  • APK Analyzer の改善 - APK Analyzer がアップデートされて機能が追加されており、APK のサイズをさらに細かく最適化できるようになっています。詳細をご覧ください

Android Studio 3.0 に含まれる主な新機能をまとめます。

スタートガイド

ダウンロード
以前のバージョンの Android Studio を使っている方は、すぐに Android Studio 3.0 にアップグレードできます。または、公式の Android Studio プレビューのダウンロード ページからアップデートをダウンロードすることもできます。本ブログで説明したように、Gradle プラグイン API は IDE の新機能をサポートするために大幅に変更されています。そのため、アプリのプロジェクト設定のテストや検証を行うには、現在のプロジェクトの Android Gradle プラグインのバージョンも 3.0.0 にアップデートする必要があります。

気に入った機能や問題点、新機能の提案などのフィードバックは大歓迎です。バグや問題を見つけた方は、ご遠慮なく問題を送信してください。Google+ のページや Twitter で Android Studio 開発チームからの情報を常にチェックしてください。

Reviewed by Yuichi Araki - Developer Relations Team

そこで、広告戦略を iPhone X に対応させるための手助けとして、ガイドをまとめました。ここには、バナーやネイティブ広告を iPhone X の「セーフエリア」に配置する方法についての説明などが掲載されています。

さらに、ポリシーもアップデートされました。たとえば、iPhone X のホームインジケーターの下など、ユーザーが広告やアプリに対して行う一般的なインタラクションを妨げる場所に広告を配置してはいけないことが明記されています。

ポリシーのアップデートや推奨実装ガイドを確認し、11 月 20 日までに準拠するようにしてください。

質問がある方は、AdMob ヘルプセンターを参照するか、Google アカウント チームまでご連絡ください。

Reviewed by Rikako Katayama - AdMob Team


本投稿で紹介するコードでは、まずユーザーに電話番号選択画面を提示します。次に、SMS 取得 API を利用してサーバーから確認コードをリクエストします。ユーザーが何も入力しなくても Android 端末が SMS を自動的に受信し、解析できます。

注: 利用するにあたって、SMS を受信できる電話番号があり、Google Play Services 10.2.x 以上が搭載されている端末でビルドおよびテストする必要があります。

Phone Selector を使って番号を取得する


最初の手順として、ユーザーにアプリから SMS 確認機能を起動してもらいます。次のようなコードを使うと、ユーザーに電話番号の入力を促す際に、Phone Selector を使って入力の手間を減らすことができます。
// Construct a request for phone numbers and show the picker
private void requestHint() {
    HintRequest hintRequest = new HintRequest.Builder()
           .setPhoneNumberIdentifierSupported(true)
           .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
            apiClient, hintRequest);
    startIntentSenderForResult(intent.getIntentSender(),
            RESOLVE_HINT, null, 0, 0, 0);
}

HintRequest ビルダーは、電話番号による識別子が必要であることを Play Services に伝えます。その後、これを使って intent を作成して開始します。すると、Play Service のダイアログが表示され、選択された電話番号がアプリに共有されます。この API には、何のパーミッションも必要ありません。表示される選択肢は、スマートフォンまたは Google アカウントで利用できる電話番号です。

最新版の Play Services を実行している端末では、ユーザーが選んだ電話番号がアプリの onActivityResult に返されます。その際の形式は、E164 フォーマットです。なお、スマートフォンによっては、電話番号を取得できない場合もありますので、資格情報が null でないことを確認するようにしてください。電話番号がない場合は、ユーザーが手動で入力できる方法を提供する必要があります。
// Obtain the phone number from the result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == RESOLVE_HINT) {
      if (resultCode == RESULT_OK) {
          Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
          // credential.getId(); <-- E.164 format phone number on 10.2.+ devices
      }
  }
}

この時点で、ユーザーの電話番号を文字列で入手することになります。これは便利な方法ですが、ユーザーが実際にこの番号を所有しているかどうかを確認したいこともあるでしょう。たとえば、他のユーザーとのメッセージの送受信を許可したり、電話番号を使って身分証明を行う場合などです。

SMS Verification API を使って番号を確認する


電話番号を所有しているかどうかを確認する簡単な方法として、その番号にワンタイムの確認コードを含む SMS を送り、それをアプリに入力してもらう方法があります。SMS Verification API は、アプリで着信する SMS を監視し、自動で解析してコードを取得します。

これを使うには、次のようなコードでアプリに SmsRetrieverClient を追加します。
SmsRetrieverClient client = SmsRetriever.getClient(this /* context */);

Task<Void> task = client.startSmsRetriever();

task.addOnSuccessListener(new OnSuccessListener<Void>() {
  @Override
  public void onSuccess(Void aVoid) {
    // successfully started an SMS Retriever for one SMS message
  }
});

task.addOnFailureListener(new OnFailureListener() {
  @Override
  public void onFailure(@NonNull Exception e) {
  });
);

とてもシンプルで、SMS Retriever クライアントを取得してタスクを開始するだけです。タスクには成功と失敗のリスナーがあり、オーバーライドできるようになっています。SMS Retriever を開始すると、ユーザーの電話番号がサーバーに送信され、サーバーでワークフローが開始されます。その中でメッセージが生成され、指定された電話番号に送信されます。

このメッセージは、特殊な方法で作成する必要があります。SMS メッセージに収まらなければならないため、140 バイトを超えてはいけません。さらに、「<#>」または 2 文字のゼロ幅スペース(U+200B)という特殊な接頭辞で始める必要があります。詳細については、ドキュメントをご覧ください。また、末尾はアプリを識別できる 11 文字のハッシュにする必要があります。

次に例を示します。

<#> Use 123456 as your verification code in Example App!
FA+9qCX9VSu

ワンタイム確認コードは、任意の文字列で構いません。単純に乱数を生成することもできます。メッセージの末尾は、こちらの手続きにしたがって決まるハッシュにする必要があります。Google Play Services は、このハッシュを使って確認メッセージがどのアプリのものかを判断します。ハッシュは、アプリのパッケージと署名証明書を使って一度だけ生成します。これは変更されることはなく、クライアント アプリで提供してはいけません。

サーバーは、既存の SMS インフラストラクチャやサービスを利用してスマートフォンにメッセージを送信します。メッセージを受信すると、Google Play Services がメッセージのテキストを含む intent をブロードキャストします。次にコードを示します。
public class MySMSBroadcastReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    if (SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
      Bundle extras = intent.getExtras();
      Status status = (Status) extras.get(SmsRetriever.EXTRA_STATUS);

      switch(status.getStatusCode()) {
        case CommonStatusCodes.SUCCESS:
          String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
          break;
        case CommonStatusCodes.TIMEOUT:
          break;
      }
    }
  }
}

ブロードキャスト レシーバーの onReceive でエクストラを取得し、そこからステータスを取得しています。ステータスがメッセージの受信が成功したことを示す場合、エクストラからメッセージを取得できます。そこから確認コードを解析してサーバーに送り返し、電話番号の所有権を確認します。

詳しくは、完全版のドキュメントや今年の Google I/O セッションをご覧ください。

アーリー アダプターの証言


既にこれを利用しているアーリー パートナーは、この API をとても気に入っています。そのいくつかの声を紹介しましょう。

Twilio は、ここまで簡単な Android SMS 確認はこれまでなかったとブログに書いています。

「Android で電話番号を使ってユーザー アカウントを登録、確認するモバイルアプリを開発しているデベロッパーの皆さんは、ぜひ Twilio Verification SDK for Android をご利用ください。スムーズで安全かつ簡単なサインアップ フローを提供するという問題を、最短の時間で解決できます」 - Twilio プロダクト オーナー、Simon Thorpe 氏

Authy は、彼らの既存 SMS インフラストラクチャを大きく変更しなくてもこの API が動作する点を気に入っています。

「Phone Selector + SMS Retriever を Authy 2FA アプリと組み合わせれば、魔法のような UX をユーザーに提供できます。さらに、アプリに必要な高度なセキュリティも維持できます」 -- Authy Engineering 責任者、Serge Kruppa 氏

Telesign は、同じバックエンド フレームワークを使いつつ、UX の進化、向上したセキュリティ、そして高いコンバージョン率を実現できました。

「この確認モードの大きなメリットは、負担が少なく、サインアップや登録の際のユーザーのコンバージョン率の向上が見込めることです。

Google Play Services が SMS メッセージ内にあるハッシュに基づいて対象のアプリのみにアクセスを提供しているので、高度なセキュリティを実現できることも魅力です」 -- Priyesh Jain 氏(記事投稿者)



Reviewed by Yuichi Araki - Developer Relations Team
Share on Twitter Share on Facebook

Googleでは、Google Brain チームを率いるエンジニアを招き、機械学習や TensorFlow の最新情報のシェアや意見交換を行う場として、11 月 29 日 (水) 13:00 より、「Machine Learning Developer Meetup」 を開催します。

本イベントでは、Google のスピーカーに加えて、TensorFlow User Group などのデベロッパーコミュニティの紹介なども行います。

Machine Learning に興味のあるエンジニアの方はぜひご参加ください。

イベント概要

イベント名: Machine Learning Developer Meetup
日程: 2017 年 11 月 29 日(水) 13:00 - 14:45 (開場: 12:30)
場所:グーグル合同会社
定員 :200 名
タイムテーブル:

 12 : 30 受付開始
 13:00 - 13:10 開会のご挨拶
 13:10 - 13:40 AI at Google
 13:40 - 14:10 TFUG Community session
 14:10 - 14:40 Fireside Chat (Q&A)
 14:40 - 14:45 閉会のご挨拶


申込方法

本イベントへの申し込み、詳細につきましてはこちらのサイトをご覧ください。
 ※ 参加可能な方には後日参加証を送付いたします。


Posted by Takuo Suzuki - Developer Relations Team

Share on Twitter Share on Facebook