Chrome で 手軽に多国籍な支払いフローを実現する方法

ブラウザ上で支払いを行う際、ユーザーは住所やクレジットカードなど、様々な情報を入力する必要があります。特にワールドワイドに展開されるサービスの場合、見知らぬ国の住所が正確かどうかを確認するのは簡単ではありません。requestAutocomplete を使えば、ユーザーは、予め Chrome 入力しておいた住所を簡単に入力できるようになります。



Chrome Apps: 2014 年まとめ

Manifest v3 や app_shell など Chrome Apps の最新情報をお伝えします。



NaCl アプリを作る

Chrome App を使って、ブラウザ環境内で Native Client アプリケーションの開発を完結するフローを、curl や git、vim、NaCl GDB、ローカルサーバーなどを使ったデモを通してご紹介します。



PNaCl SIMD: ウェブのスピード

CPU の可能性を最大限に引き出す SIMD を Portable Native Client で利用する方法についてご紹介します。



Chrome App の Google Cloud Messaging を深掘りする

Chrome Apps で利用可能になった Google Cloud Messaging (GCM) を使った、メッセージの受信と送信のコンセプトを解説。



Posted by Eiji Kitamura - Developer Relations Team

Android Studio 1.0 のサンプル ウィザード


Android Studio 上に新たにインポートしたサンプル プロジェクト

上記の方法の他に、  デベロッパー向けサイトの  サンプル ブラウザ ã‹ã‚‰æŽ¢ã™æ–¹æ³•もあります。それぞれのサンプルには、Overview(概要説明)、アプリのファイル構造を確認できる Project(プロジェクト)ページ、そのサンプルの zip ファイルを入手できる Download(ダウンロード)リンクが掲載されています。さらに別の方法として、SDK Manager にて Android 5.0(API 21)用の  SDK サンプル ã‚’ダウンロードして、既存のプロジェクトとしてご自分の IDE にインポートする方法もあります。

マテリアル デザイン

遷移アニメーションのサンプル
マテリアル デザインを採用する場合は、以下に挙げるマテリアル要素に特に重点を置いたサンプルコードが参考になるでしょう。
詳しくは、デザイン  チェックリスト、主要 API およびウィジェットのリストガイドラインのドキュメントを参照してください。

上記マテリアル デザイン要素の一部を実装したものを見るには、Google I/O アプリのソースコードを参照してください。

プラットフォーム

Lollipop  では、Android プラットフォーム史上、最大規模のアップデートを行っています。Overview 画面では、複数のタスクを  並んで表示されたドキュメントとして表現できます。高度な通知の導入には、こちらの  サンプル  コードを利用できます。このコードには、lockscreen と heads-up notification API の使い方が示されています。

さらに、新しく Camera API  を導入し、より高度な画像キャプチャ機能と処理能力を提供しています。これらのサンプルでは、カメラ プレビューを使って  写真を撮る方法動画の録画方法、リアルタイム HDR(ハイ ダイナミック レンジ)カメラ ビューファインダーの実装方法を詳しく説明しています。

このほかに、 Project Volta  では、新しい API とツールの提供を通して、アプリのバッテリー使用の効率化を支援しています。こちらの JobScheduler のサンプル  では、バックグラウンド タスクの実行を遅らせたり、特定の条件下で実行させるといったスケジュール設定の方法を説明しています。

エンタープライズ向けデバイス管理の使用事例に興味がある方向けには、  アプリの制限  を設定する方法、および ãƒžãƒãƒ¼ã‚¸ãƒ‰ プロフィールを作成する方法を説明したサンプル アプリがあります。

Android Wear

Android Wear に関しては、ウェアラブル端末の GPS サポートを活用する方法を示した  Speed Tracker のサンプルを用意しています。それ以外の  Android Wear のサンプルもご確認ください。以下に、データの同期、通知、ラウンド ディスプレイ対応など、ウェアラブル端末固有の機能を一部挙げておきます。

Android TV

 Leanback ライブラリ ã‚’使ってアプリを Android TV にも対応させる方法は、こちらの ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚° ガイド  および ã‚µãƒ³ãƒ—ルで説明しています。

Android TV 向けに特化して最適化されたゲームを試してみたい場合は、Google Play から  Pie Noon  をダウンロードしてください。これは  Google で開発したインハウスのオープンソース ゲーム  で、Bluetooth コントローラーまたはモバイル端末のタッチ コントロールを使用する、マルチプレイヤーに対応したゲームです。

Android Auto

DevByte Introduction to Android Auto(Android Auto 入門) ã§å–り上げた使用事例について、2 つのコードサンプルを用意しました。Media Browser のサンプルDevByte)では、新たな Lollipop Media APIを使ってオーディオ アプリを Android Auto に簡単に対応させる方法を、また、 Messaging のサンプル  (DevByte)では、音声認識による返信をサポートした通知を実装する方法をそれぞれ説明しています。

Google Play 開発者サービス

以上、Android プラットフォームおよび各種フォームファクター用のサンプル リソースについて紹介してきましたが、Google Play 開発者サービス関連の既存のサンプルについてもひと言申し上げておきます。Google Play 開発者サービスでは、Maps、Google Fit、Google Cast など、最新の Google API をアプリ開発にご活用いただけます。Google Play 開発者サービス SDK のサンプルにアクセスするか、  デベロッパー向けサイトにある各 API の個別ページにアクセスしてください。ゲーム開発者向けには、成績、スコアボード、マルチプレイヤーサポートをゲームに追加する方法を示した  Google Play Games サービス  のサンプルをご用意しています。

※ なお、今回公開されたコードサンプルには、日本の Developer Relations チームの Developer Programs Engineer である Takeshi Hagikura ã¨ Yuichi Araki ã®ã‚³ãƒ¼ãƒ‰ã‚‚多数含まれています。Developer Relations チームでの仕事にご興味ある方はこちらの記事もご参照ください。


Posted by Ryosuke Matsuuchi - Developer Relations Team

Timothy Jordan による、Android Wear 向けウォッチフェイスの紹介ビデオ

デザインと開発

はじめにウォッチフェイスのデザインについて参照し、次にウォッチフェイス作成のトレーニングクラスをご覧ください。また、オンライン上にあるウォッチフェイスのサンプルや、Android Studio のサンプルマネージャーでも参考になる実例を入手することができるので、すぐにウォッチフェイス開発に取りかかることができるでしょう。また、上記にある Android Wear 向けウォッチフェイスの紹介ビデオで概要をご覧いただけます。

ウォッチフェイスは Android Wear アプリで動作するサービスの 1 種なので、インストールした 1 つのアプリに対し複数のウォッチフェイスを提供することが可能です。ユーザーが 12 時間・24 時間表記を選択できるようにしたり、ウォッチフェイスの背景を変更できるようにしたり、スマートフォンや腕時計などの端末で設定変更を可能にすることもできます。また、OpenGL を利用してスムーズなグラフィックを描写したり、バックグラウンド サービスを利用して天気やカレンダーイベントなどの役立つ情報を入手したりすることも可能です。ウォッチフェイスではアナログ式やデジタル式で時間を表示しても良いですし、まだ誰も見たことがない革新的な方法で時間を表示させることも可能です。すべてはあなた次第です。

既存デバイスへのアップデート

Android 5.0 をベースとして API レベル 21 を提供する最新の Android Wear プラットフォームがユーザーへ提供されます。すべての Android Wear デバイスは OTA(Over-The-Air)方式で Android 5.0 へとアップデートされます。本アップデートによってユーザーは、スマートフォンの Android Wear アプリでウォッチフェイスを管理・設定したり、Google Play からウォッチフェイスをインストールしたりできるようになります。Android 4.3 以上がインストールされた端末は引き続き、すべての Android Wear デバイスに対応します。

ウォッチフェイスをアップグレード

私たちが開発用ドキュメントを公開する前に、すでにウォッチフェイスを作成していた開発者がいたことには大変関心させられましたが、非公式のやり方で Android Wear 向けのウォッチフェイスを作成していた場合には、公式 API へ移行してください。公式 API は統一されたユーザー体験をもたらすと同時に、Android Wear デバイスがアンビエントモードに入ったかどうかがわかったり、システム UI 要素の位置を調節したりといった機能をもたらします。また、Google Play のウォッチフェイス コレクションにフィーチャー掲載されるためには、新しい API の使用が必須となります。

ウォッチフェイスの配信

Android Wear 5.0 API 21 の OTA 方式でのロールアウトが完了したら、すぐに Google Play で配信中の対応アプリをアップデートすることを推奨します。ロールアウトの完了は、Google+ の Android Wear 開発者コミュニティで発表します。API 20 のデバイスでは API 21 を必要とするウォッチフェイスを表示できないため、ロールアウトの完了を待ってアップデートする必要があります。新しい API をインストールすると、ウォッチフェイスが表示されるようになりますが、ロールアウトが完了する前に wearable アプリをアップデートする場合には、OTA 配信を受ける前のユーザーがインストールに失敗しないように minSdkVersion を 20 に設定してください。ロールアウト完了後は、すみやかにウォッチフェイスを新しい API に移行してください。2015 å¹´ 1 月 31 日に、公式 API を用いていないウォッチフェイスのサポートを終了する予定です。

Google Play での Android Wear アプリ

Android Wear への配信に関するガイドラインに従っていただければ、アプリを Google Play 内の「Android Wear 向け」として申請できるようになりました。Wear アプリの品質チェックリストに準拠し、Google Play 内の Wear アプリとして承認されると、Android Wear デバイスのユーザーがアプリを見つけやすくなります。Android Wear レビューにオプトインするためには、Google Play デベロッパー コンソールの価格と配信のセクションをご覧ください。

Android Wear をローンチしてたった数ヶ月で、開発者のみなさまは、カスタム通知、ボイスアクション、他のネイティブな Android 機能を活用した数千ものアプリをリリースしました。みなさまのおかげで、ユーザーは 6 つのデバイス、種類豊富な時計バンド、そして数千のアプリを組み合わせた自分だけのAndroid Wear デバイスを作ることができます。カスタム ウォッチフェイスの提供により、ユーザーは今後さらに細かくカスタマイズすることが可能になります。豊富な選択肢こそが、リッチな Android Wear のエコシステムの根幹です。今後もプラットフォームのコアとなる機能を開発者のみなさまに提供し続けてまいりますが、そこからなにが生まれるのか、楽しみでしかたがありません。

Posted by Yuichi Araki - Developer Relations Team


動画 © 2014 
Nintendo



Google Developer ブログの読者の皆様、こんにちは。任天堂が発売する Wii U の一部のソフトから YouTube にゲームの映像を投稿できることはご存知でしょうか?

例えば、「マリオカート8」の場合、レース後の「ハイライト」や「マリオカートTV」の「ハイライトをアップロード」から、ハイライト映像を YouTube にアップロードすることができます。

今回は、YouTube 開発者の方々の参考になればと思い、この機能の開発の道のりについてお話しさせて頂こうと思います。

ゲームチームからの動画投稿を行いたいというリクエストと、Nintendo European Research and Development SAS (NERD) (※) で進めていたリサーチが出会う形で、Wii U の本体機能として動画のアップロード機能の開発がスタートしました。
動画投稿サービスの中でも、YouTube では、すでに弊社製品プロモーションのためのチャンネルを公開させていただいておりました。加えて、動画の権利を保護するためのシステムが充実していることもあり、アップロード先のサービスとして採用することになりました。
(※) R&D を担当している、フランスのパリにある任天堂の開発子会社。

全体を通じて開発チームが特に心がけたところは、録画、認証、アップロード、伝播という各プロセスにおいて、お客様のつまずきやストレスを少なくし、この機能を様々な層のお客様にお使いいただけるものにすることでした。

録画においては、ゲームプログラムへの負荷が小さい独自コーデックで一度録画を行い、その後、アップロード中に、圧縮率の高い H.264 に変換するということを行っています。また、この一時録画のために、Wii U のシステムの機能を一部強化しています。

認証について YouTube が提供している方法は一般的な OAuth 2.0 に基づくものでした。これに合わせて Wii U のインターネットブラウザーとその他アプリケーションとの連携機能を強化しています。

アップロードにおいては、特に接続や速度の条件の良くない環境においてもアップロードを最後まで行えることを目指しました。ここで切断したセッションを再開できる YouTube v3 API の Resumable Upload API が有効に活用できました。

伝播においては、アップロードされた動画が、興味を持つ方々に観ていただくことができるように、弊社 Miiverse のコミュニティやウェブサイト「マリオカートTV」を活用しています。

現在、実装されているシステムでは、特にアップロード速度においてまだまだ改善が必要だという認識です。引き続き任天堂では、動画とゲームの関わりについて新しい提案をしていきたいと考えております。そのうえで、YouTube が提供する、 API やサーバーインフラや権利処理における強固な基盤は非常に心強い存在です。


Android Wear向けの新しい通知機能

Android Wear対応の第一歩は通知の最適化です。本動画ではWearableExtenderクラスを用いて、通知をAndroid Wear向けに最適化する方法とその実装方法をご紹介しています。


Android Wear向けのUIの作成

Android WearではWearableアプリケーションと呼ばれるAndroid Wear専用のアプリケーションを作成することが可能です。Wearableアプリケーションを開発する際には通常のAndroidアプリケーションと異なるUIセットを利用する事となります。本動画では各UIコンポーネントの概念とその利用方法についてご紹介します。


Android Wear向けフルスクリーンアプリケーション

Android Wearでフルスクリーンアプリケーションを開発する際の手順をソースコードレベルでご紹介します。特に角型・丸型の両対応をするための方法など、Android Wear向けアプリケーション特有の注意事項などもご紹介しています。


GoogleがどのようにAndroid Wear対応を行ったか

Gmail、ハングアウト、カメラ、Google マップの各AndroidアプリケーションをどのようにAndroid Wear対応させたかを紹介しています。いずれもAndroidアプリケーションのユーザ体験を変えずに対応しています。通知、DataItem、カスタムカードなどの使用例や実装例をご紹介しています。



Posted by Yoshifumi Yamaguchi - Developer Relations Team

[この記事は Android のプロダクト マネージャー Jamal Eason による Android Developers Blog の記事 "Android Studio 1.0" を元に荒木が翻訳・加筆しました。詳しくは元記事をご覧ください]

本日、ついに Android Studio 1.0 をリリースしました。Android Studio は Android チームが公式に提供する統合開発環境です。元になっているのは Java IDE として人気の高い IntelliJ IDEA(コミュニティー エディション)です。
Android Studio を初めにプレビュー版としてリリースしたのは昨年の I/O のときでした。開発者の皆様からのフィードバックは大変役立ちました。ありがとうございます。Android 1.0 は Android Developers の Web サイトから安定版リリースとしてダウンロードできます。


Android Studio をダウンロード

Android 向けのアプリを開発してくださっている皆様、これから開発しようという皆様、今が Android Studio 1.0 をダウンロード(または以前のバージョンからアップグレード)するときです。Chrome のリリース チャンネルと同様に、Android Studio も複数のリリース チャンネルから更新を受けることができます。Stable(安定版)、Beta(ベータ)、Dev(開発版)そして Canary(最新ビルド版)です。Canary ビルドが開発の最先端で不安定である可能性があり、Stable が十分テストされている安定版です。Android Studio の最新機能をチェックする必要に応じて、これらのリリース チャンネルの中から選んでください。

Android Studio の機能

Android Studio がリリースされたことで、開発の流れを加速する様々な機能が利用できるようになりました。以下に Android Studio の主な機能をいくつか挙げました。完全な機能一覧は Android Studio の Web サイトをご覧ください。

セットアップ

コードとリソースの編集とユーザー インターフェイス デザイン

パフォーマンス解析

統一されたビルド システム

Google Cloud サービスにすぐアクセス

移行と更新

現在 Eclipse をご利用の方は、移行ステップを確認した上でインポート ウィザードでプロジェクトをインポートしてください。




以前のバージョンの Android Studio をご利用の方も、バージョン 1.0 にアップグレードしてください。たくさんの新機能と不具合修正が含まれています。
また、Gradle プラグインのバージョン 1.0 もリリースしました。Android Studio と Gradle プラグインの間の連携も安定しており、一方だけをアップデートすることもできるようになりました。以前のバージョンからの更新について、詳しくは 技術リリース ノートをご確認下さい。

フィードバックを募集しています

我々はいつでも Android の開発環境の改善に努めています。すでにテスト機能の改善やゲーム開発のサポート改善などが予定されていますが、開発者が Android の開発環境に何を求めているのか教えていただきたいのです。
ぜひアンケート(5 分程度)にご協力ください。皆様のお声が次の Android Studio の機能を決めます。

ご質問

Android Studio やその周辺の開発ツールはオープンソースで開発されています。Android のバグ トラッカーにバグを登録していただくこともできます。Android Studio の機能や移行方法についてご質問がある方は、Google+ の日本語コミュニティーでお問い合わせください。


Posted by Yuichi Araki Developer Relations Team
Share on Twitter Share on Facebook


Android でのメディア体験

ビデオの再生や録画、字幕の制御、外部ディスプレイの利用について解説します。


Android で作る没入型のメディア体験

MediaCodec の内部実装にまで踏み込んでメディア関連の低レベル API を解説します。


ExoPlayer: Android で適応的ビデオストリーミング

ExoPlayer はメディア プレーヤーを実装するための基板として利用できる API で、YouTube や Play Movies のアプリでも利用されています。


浮動小数点数オーディオの光と影

オーディオの内部表現が整数から浮動小数点数に変更されたことについての小話です。


サンプル レートとリサンプリング: なんでみんな仲良くできないの?

なぜ様々なサンプル レートが存在するのか疑問に思ったことはあるでしょうか。Android でのサンプル レートとリサンプリングについて紹介します。


あなたのアプリに地図を!

ストリート ビューやインドア マップなど、Google Maps Android API の新機能をご紹介します。


Android Auto の中身

Android Auto のアーキテクチャーについて解説します。


次世代の認証

Lollipop の新しい認証機能をご紹介します。


Android アプリ開発者のための分離

Android アプリで利用できるセキュリティー機能について解説します。


Google Play 開発者サービス 5.0

Google Play 開発者サービス 5.0 に関する紹介です。


パフォーマンス入門: CPU, GPU と Android ゲーム

ゲームのパフォーマンスを改善する上で役立つ CPU や GPU の動作の概念を紹介します。


Share on Twitter Share on Facebook


さらに、「ライト モード(lite mode)」というマップ オプションを新たに追加しました。これは、小さめのマップを複数表示させたいとき、あるいは、リストのサムネイルなどとして小さなマップを表示させるとき(サイズが小さすぎるため詳細な操作を行うことができないマップ)に最適なオプションです。ライト モードのマップは、一定の場所、一定のズーム レベルのマップとなり、ビットマップ画像です。

ライト モードでは、マーカーや図形はクライアント側で静止画像上に描画されたものなので、好きなように管理できます。ライト モードは、すべてのマップ タイプ、My Location レイヤー、そしてフル インタラクティブ マップの機能の一部をサポートします。ユーザーが詳細を見たいときにマップ上をタップすれば、Google マップが起動します。

また、Google Maps Android API では新たに getMapAsync(OnMapReadyCallback) メソッドを MapFragment と MapView が利用できるようにします。これによって、マップの準備ができたまさにその時に通知されるようになります。これは、現在非推奨となっている getMap() メソッドの代わりとして機能します。

他にも、Google Maps for Android アプリのインテントを皆さんのアプリで利用できるようにしました。これにはマップの表示、検索、詳細なナビゲーションの開始、ストリート ビューの開始などが含まれ、端末にすでに搭載されている使い慣れた高性能マップをさらに充実したものにできます。

ドライブ

ドライブ ファイルに、公開ファイル プロパティおよびアプリケーション専用カスタム ファイル プロパティの両方を追加できるようになりました。これによって検索クエリの効率が大幅にアップするとともに、アプリが情報を保存できるようになり、他のアプリによる編集後も情報は維持されます。

また、ネットワーク タイプや充電状況によっていつファイルをアップロードするのかを管理する機能や、保留中のアップロードをキャンセルする機能が加わり、ファイルとドライブの同期がユーザー フレンドリー、そしてバッテリー フレンドリーになりました。

Google ウォレット

Google ウォレットを使用して商品やサービスをすばやく購入できる既存の「Buy with Google」ボタンに加え、今回のリリースでは、同じく簡単操作で寄付を集められる「Donate with Google」ボタンを追加します。

Google Fit

先日 Google Play 開発者サービスの一部として、Google Fit SDK を正式に公開しました。この SDK によって、シンプルな API でフィットネス系アプリをさらに充実させ、センサーとの連動や、活動データの記録、ユーザーのフィットネス データ統計の読み出しができるようになります。

今回のリリースでは、セッションを設定するときに活動セグメント(事前に設定しておくランニングやウォーキング、サイクリングなどの時間)を追加しやすくしました。これによって休憩や、複数のアクティビティを伴うワークアウトのサポートが容易になります。今後、Google Fit をすばやく統合できるよう、サンプルをさらに追加していく予定です。

依存関係の詳細管理

Google は様々なサービスのすべてで API を追加し続けてきましたので、特に、利用可能な API の一部しか使用していない開発者にとっては、スリムなアプリを維持することが難しくなっているかもしれません。今回の Google Play 開発者サービス 6.5 では、最低限の共通ライブラリと、アプリに必要な API だけに依存すればよいようになります。これによって、Google Play 開発者サービスの利用をより気軽に始められます。

SDK は近日公開!

これから数日の間に Google Play 開発者サービス 6.5 を順次配信していき、最新情報をこのブログにてお知らせするとともにドキュメントを公開し、配信が完了した時点で SDK を利用できるようにいたします。

Google Play 開発者サービスとその API について詳しくは、Android デベロッパー向けサイトの Google Play 開発者サービスのセクションをご覧ください。
Share on Twitter Share on Facebook


12 月 8 日(月)の説明会では、本プログラムについて説明するとともに、過去受賞事例より、具体的にどのようなプロジェクトがこれまでに受賞しているのかをご紹介します。また、本イベントでは日本国内の非営利団体の方も多数ご招待しておりますので、社会においてのどのように技術活用できるか、アイディアを交換する場となることを期待しています。参加申込みは下記フォームより、ご登録ください。

Google インパクトチャレンジの詳細は、公式サイトをご確認ください。
https://impactchallenge.withgoogle.com/japan

■イベント詳細
日程:12 月 8 日(月)19:00-21:30(受付 18:30 - 19:00)
会場: Google 東京オフィス (六本木ヒルズ森タワー内)
会費:無料
定員:20 名
主催:Google

■スケジュール
19:00 - 20:00 Google インパクトチャレンジ 概要・過去受賞者講演(逐次通訳あり)
20:00 - 21:00 ブレイクアウト セッション(テーマ毎にグループでディスカッションしていただきます)
21:00 - 21:30 懇親会

■出席予定者
Google インパクトチャレンジ 過去受賞者イギリス/インド/オーストラリアの受賞者各 1 名をハングアウトにて参加予定)
Google インパクトチャレンジ事務局 松下他

※ 本説明会の参加が応募資格や審査に影響を与えるものではございません。

■申し込み方法
応募はこちらのフォームからお願いします。
※ 先着順による受付です。定員は 20 名です。定員になり次第、受付を締め切ります。
※ なお参加証は 12 月 4 日(木)より順次ご登録頂いたメール アドレス宛にお送りする予定です

多くの皆さまのご参加をお待ちしております。

Posted by 鈴木拓生 Developer Relations Team
Share on Twitter Share on Facebook


こんにちは。最近、Android の Google アカウントに関する質問がいくつか寄せられています。そこで、Google が勧めるベスト プラクティスのいくつかを記事にまとめて紹介いたします。今回は、Google Play 開発者サービスの統合によって簡単に実現できる Android ベースの認証に焦点を当てます。では、始めましょう。

固有の識別子

混乱がよく生じるのが、デベロッパーがアカウント名(E メール アドレス)を Google アカウントのプライマリー キーに使用しているケースです。たとえば、ユーザーのログインに GoogleApiClient を使用しているとき、デベロッパーは、登録されている GoogleApiClient.ConnectedCallbacks リスナーに対する onConnected コールバックの中で、下に示すようなコードを使っている場合があります。

[エラーが生じやすい擬似コード]
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
// createLocalAccount() はアプリのローカル ストレージ ストラテジーに固有
createLocalAccount(accountName);

表示やキャッシュのために E メールアドレスを保存することに問題はありませんが、ユーザーは、Google アカウントで自身のプライマリー E メール アドレスを変更する可能性があります。そういったことは様々なタイプのアカウントで起きますが、最も頻繁に発生するのが Google Apps For Work アカウントです。

では、デベロッパーはどうしたらよいのでしょうか。Google アカウントに関連付けられているアプリのデータをキーにするときは、アカウント名ではなく、Google アカウント ID を使用します。つまり、たいていのアプリでは、アカウント ID を保存して、onConnected コールバックが呼び出されるたびに、その値を比較するだけでよく、これによって、そのデータが現在ログインしているユーザーとローカルに合致しているかを確認します。API では、アカウント ID をアカウント名から取得できるメソッドを提供しています。参考用に、スニペット例を示します。

[Google Play 開発者サービス 6.1+]
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
String accountID = GoogleAuthUtil.getAccountId(accountName);
createLocalAccount(accountID);
[Google Play 開発者サービスの以前のバージョン(クライアントをアップグレードしてください)]
Person currentUser = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String accountID = currentUser.getID();
createLocalAccount(accountID);

こうすることで、ローカルデータは Google アカウント ID と照合されることになります。アカウント ID は ユーザーが E メールアドレスを変更した後でも変わらない固有の識別子です。

よって、上述のケースでは、データが ID をキーとしていれば、ユーザーが E メールアドレスを変更したとしても心配する必要はないのです。ユーザーが再びログインするときも、同じ ID を取得しますので、皆さんの側で何らかのデータ処理をする必要はありません。

複数アカウント

アプリが複数のアカウントによる同時接続をサポートしている場合(たとえば、下に示す Gmail ユーザー インターフェースのようなケース)、GoogleApiClients 構築時には、setAccountName を GoogleApiClient.Builder に対して呼び出します。このとき、アプリ内にそのアカウント名と Google アカウント ID を保存する必要があります。しかし、保存したアカウント名は、ユーザーがプライマリー E メール アドレスを変更すると、違ってしまうことになります。これに対処する最も簡単な方法は、ユーザーに再ログインを促すことです。そしてログイン後に、onConnected がコールされたときにアカウント名を更新します。ログインのたびに、こういったコードを使ってアカウント ID を比較し、そのアカウント ID に対してローカルに保存されている E メールアドレスを更新します。

[Google Play 開発者サービス 6.1+]
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
String accountID = GoogleAuthUtil.getAccountId(accountName);
// isExistingLocalAccount(), createLocalAccount(), 
// getLocalDataAccountName()、および updateLocalAccountName() は、
// すべて、アプリのローカル ストレージ ストラテジーに固有のもの
boolean existingLocalAccountData = isExistingLocalAccount(accountID);
if (!existingLocalAccountData) {
    // 新たなログイン
    createLocalAccount(accountID, accountName);
} else {
    // この Google アカウントに関する既存のローカルデータ
    String cachedAccountName = getLocalDataAccountName(accountID);    
    if (!cachedAccountName.equals(accountName)) {
        updateLocalAccountName(accountID, accountName);
    }
}

このシナリオからは、すべてのデータをアプリに保存するのにアカウント ID を使用することの重要性が分かります。

オンライン データ

上記のベスト プラクティスは、アプリのウェブサーバーに Google アカウントのデータを保存する際にも当てはまります。データをこの方法でサーバーに保存し、E メール アドレスをプライマリー キーとして扱っている場合、

ID [プライマリー キー] フィールド 1 フィールド 2 フィールド 3
[email protected] 値 1 値 2 値 3

プライマリー キーを Google アカウント ID とする下記のモデルに移行する必要があります。

ID [プライマリー キー] Email フィールド 1 フィールド 2 フィールド 3
108759069548186989918 [email protected] 値 1 値 2 値 3

ウェブ サーバーから Google API コールを行わない場合は、上述の複数アカウントのサンプルコードで参照している updateLocalAccountName メソッドを実装する場合、プライマリー E メールアドレス変更をウェブ サーバーに通知するのは、Android 向けアプリケーションに任せることができるかもしれません。ウェブ サーバーから Google API のコールを行う場合は、おそらくそれはクロス クライアント認証を使って実装したものなので、ウェブ サーバー上の OAuth2 クライアント ライブラリまたは REST エンドポイントを介して変更を検出することもできます。

まとめ

アプリで Google アカウント認証を使用するとき、ユーザーのデータを識別するには、アカウント名ではなくアカウント IDを使うのがベストな方法です。この記事では、アプリを強化するために変更作業が必要となる 3 つのケースを紹介しました。Google for Work の利用が増加しているなか、ユーザーが E メール アドレスを変更しても、アカウント ID  ã¯åŒã˜ã¾ã¾ç¶­æŒã™ã‚‹ã‚±ãƒ¼ã‚¹ãŒå¢—えてくると予想されます。よって、デベロッパーの皆さんには、できるだけ早急にコードの更新計画を立てることをお勧めいたします。


Posted by Yuichi Araki

Share on Twitter Share on Facebook


Android Work

Lollipop では端末管理 API が大幅に強化されました。個人用アカウントと仕事用アカウントを端末内で完全に切り分け、仕事用アカウントに対してだけポリシーを適用するようなことができます。


Holo から Material へ

Holo テーマを利用した既存のアプリを Material テーマにアップデートする方法を解説しています。


アクティビティー間の遷移

KitKat で登場した Transition(遷移)フレームワークが、Lollipop ではアクティビティー間の遷移にも利用できるようになりました。


Android の JobScheduler を使う

電池消費節約プロジェクトの一環として登場した JobScheduler の解説です。


WebView の新機能

KitKat で Chromium ベースに刷新された WebView は Lollipop でも大きく進化しました。DevTools の強化を中心に解説しています。


Bluetooth Low Energy

低消費電力で利用できる Bluetooth 機能の解説です。


NFC のホスト カード エミュレーションでインタラクティブ体験

ホスト カード エミュレーションの機能は以前からありましたが、Lollipop では AID の動的な登録などがサポートされています。


Share on Twitter Share on Facebook


Google のデベロッパーリレーションズ チームは、Google のサービスやプロダクトが提供している様々な API について、開発者のみなさまに最新の技術情報とベストプラクティスをご案内すると共に、開発者のフィードバックを受けて Google のサービスやプロダクトをより良くしていくために活動するチームです。

Google のデベロッパー プラットフォームの技術領域は、モバイル(Android、Google Play)、Web(Chrome)、メディア(YouTube、Chromecast)、クラウド基盤(Google Cloud Platform)、地理情報(Maps)、ソーシャル(Google+)、ナレッジ(App Indexing、Search)、広告と分析(AdWords、AdSense、AdMob、Analytics)、企業向けサービス(Google Apps、Google for Work)など多岐に渡り、日々進化を続けています。さらなるエコシステムの成長を加速するために、現在デベロッパーリレーションズ チームは Google 東京オフィスで一緒に活躍していただける人材を積極的に募集しています。

下記の情報をご参照いただき、いずれかのポジションにご興味のある方は、ぜひ Google の人材募集ページからの応募をご検討ください。

デベロッパーアドボケイト

Google のデベロッパーアドボケイトは、Google のプラットフォームを利用してアプリケーションやサービスを構築している開発者のために最新の技術情報とベストプラクティスを案内するエバンジェリストとして活動し、また Google 社内に対してはデベロッパーの意見を代弁して Google のプラットフォームを より良くすることに貢献します。

パートナーシップ担当デベロッパーアドボケイトは、日本において Google プラットフォームを利用してアプリやサービスを開発している企業(大手企業や将来有望なベンチャー企業)の技術者、技術管理職、技術統括職(会社によっては CTO と呼ばれます)、製品企画担当者、UI/UX デザイン担当者と 1:1 の信頼関係(パートナーシップ関係)を構築しながら、日本の企業が高品質なソフトウェア開発を通じて技術イノベーションの推進、ユーザー価値の最大化と事業の成長を実現していけるように支援する役割を担います。社内ではさまざまな部署(ビジネス開発や営業、マーケティングを含む)でパートナーシップ関係の構築に携わっている社員と連携しながら、最新の Google 技術(API)の活用、ソフトウェア設計や品質に関するアドバイスを提供し、Google テクノロジーの素晴らしい応用事例を世に送り出していくことに貢献します。このポジションについてより詳しくは、こちらの募集要項ページをご参照ください。

一方、スケーラブル アドボカシー担当デベロッパーアドボケイトは、「できるだけ多くの人に向けて、Google プラットフォームについての最新の開発者向け情報を発信する」ことを重視します。各企業との個別の関係の構築よりは、より広範囲な情報発信にフォーカスしていくことが この担当者の特徴です。そのための日々の業務の中には、ブログや Google+ を含むソーシャル メディアへの投稿や解説記事の執筆、開発者向け動画コンテンツの制作と YouTube での公開、カンファレンスや開発者向けイベントでの講演などの活動が含まれます。日本においては多くの開発者や企業の方々が Google のテクノロジーを利用しており、パートナーシップ担当者が直接連絡できるのは その中のごく一部に限られてしまうため、スケーラブルな開発者向け情報の提供は日本全国の開発者を支援していく上で重要な活動です。このポジションについてより詳しくは、こちらの募集要項ページをご参照ください。

デベロッパーリレーションズ コミュニティ マネージャー

また、デベロッパーリレーションズ コミュニティ マネージャーは、Google Developer Group を含む日本国内のさまざまな開発者コミュニティのための支援プログラムの企画・運用を担います。開発者コミュニティは、会社の枠や日々の仕事の枠にとらわれずに Google の最新技術について学んだり、経験から得られた知見を共有したり、自分と似た課題に直面している他の開発者と意見交換したりする場として日本全国に存在し、地域の開発者の人たちの日々の仕事や活動を支えている重要な存在です。多くの開発者コミュニティは有志の人たちのボランティアにより自主的に運営されていますので、デベロッパーリレーションズ コミュニティ マネージャーは日本各地の開発者コミュニティのキー パーソンと信頼関係を構築しつつ、Google の立場からの支援活動を行います。このポジションについてより詳しくは、こちらの募集要項ページをご参照ください。

デベロッパー プログラム エンジニア

さらに、デベロッパー プログラム エンジニアも募集中です。最新の Google プラットフォームの API を正しく活用する手法を実例で説明するために、多くの開発者が手本として参照できるような実装例(参照実装)やサンプル コードを企画・設計開発・提供していく役割を担います。この職種の社員により提供・貢献されている領域の代表例としては、各種の Google 製 SDK に含まれているサンプル コード、Google I/O 2014 アプリ(ソース コード)、Android Support Library(概要紹介)、Google Santa Tracker(現在はお休み中)などがあります。これらの参照実装やサンプル コードは、世界中の多くの現場で活躍している開発者に繰り返し参照され、数多くの製品開発プロジェクトに応用されていくため、デベロッパー プログラム エンジニアには高い品質のソフトウェア コードを記述する能力が求められます。また、StackOverflow などのオンライン開発者コミュニティに投稿されている Google の API に関する質問に対して、技術的に的確かつ正確な回答を提供していくことも、この職種の担当者に期待されている活動の一部です。このポジションについてより詳しくは、こちらの募集要項ページをご参照ください。

求められるスキルと募集要項

上にご紹介したポジションのうち、デベロッパーアドボケイト、デベロッパー プログラム エンジニアにご応募いただく候補者の方には、ソフトウェア設計スキル(アルゴリズムやデータ構造の設計に関する知識も含む)、自分でコードを記述するプログラミングスキルが要求されます。一方、デベロッパーリレーションズ コミュニティ マネージャーにご応募いただく場合はプログラミングスキルは必須ではありませんが、コミュニティの運営・支援経験が求められます。いずれのポジションにおいても、世界中の Google 社員と一緒に仕事をすすめるための基本的な英語力は必須となります。

スマートフォンやタブレットを始めとするモバイル環境の急速な普及にともない、現在 Google 東京オフィスには、日本全国の企業や開発者の人からモバイル アプリケーション開発(ウェアラブル端末も含む)に関するご相談やお問い合わせが多く寄せられています。このため、デベロッパーリレーションズ チームの多くのポジションにおいて、Android 向けアプリなどを含むモバイル アプリケーション開発に関する知識と経験が期待されています。

その他の詳しいスキル要件や募集要項については、それぞれの職種の募集要項ページをご確認ください(下記参照)。素晴らしい候補者の方にお会いできることを楽しみにしております。

参考資料

[1] Google Developer Advocate
https://www.google.com/about/careers/search#!t=jo&jid=48525001&
デベロッパーアドボケイト(パートナーシップ担当)の募集要項です。

[2] Google Developer Advocate (Mobile)
https://www.google.com/about/careers/search#!t=jo&jid=66805001&
デベロッパーアドボケイト(スケーラブル アドボカシー担当)の募集要項です。

[3] Developer Relations Community Manager
https://www.google.com/about/careers/search#!t=jo&jid=78255001&
デベロッパーリレーションズ コミュニティ マネージャーの募集要項です。

[4] Developer Programs Engineer
https://www.google.com/about/careers/search#!t=jo&jid=29119&
デベロッパー プログラム エンジニアの募集要項です。 こちらに掲載されているのはアメリカ勤務の募集要項ですが、候補者の人が希望する場合は東京オフィスでの採用も検討いたします。

[5] Google Developer Relations Japan
https://sites.google.com/site/devreljp/
現在の Google 東京オフィスのデベロッパーリレーションズ チームのメンバー紹介です。

Posted by Developer Relations Japan Team
Share on Twitter Share on Facebook

■Design Sprint とは

Design Sprint とは Google Ventures が考案した、アプリケーション/サービスのアイデアを設計からプロトタイプに落とし込む所までを対象としたワークショップです。今回は、Google がこれまでウェアラブル向けのプラットフォームを提供し、数多くのアプリを作り上げてきた経験に基づき、新しいデバイス向けにアプリを開発する際の設計の原則や最良のUX事例をまとめました。Design Sprint では、これらの設計の原則をワークショップを通じて学んでいただきます。

Design Sprint は大きく 3 つのプロセスに分かれます。

1)理解と定義(Understand/Define): 対象ユーザー(ペルソナ)を理解し、求められているサービスを考える 、「ユーザー分析」を行います。
2)発散と決定(Diverge/Decide): ユーザー分析を元にサービスに必要な機能を洗い出し、そのうちユーザーに最も必要とされている機能を選択する「意思決定」を行います。
3)プロトタイプの作成と検証(Prototype/Validate): ユーザーに見せることができる UI のペーパーモックアップの「作成と検証」を行います。


■当日の流れ

<はじめに:60 分>
30 分:Android Wear の概要
20 分:チームビルディング
10 分:Design Sprint の概要の説明

<分析 : 30 分>
10 分:ペルソナについてのチームでの議論
20 分:ペルソナが求めてる機能について発表

<アイデア検討: 30 分>
10 分:ブレスト(個人)
20 分:ブレスト(チーム)

<意思決定 : 5 分>
5 分:投票によって案を決定

<プロトタイプ作成 : 50 分>
10 分:利用シーンを作成(個人)
10 分:ディスカッション(チーム)
15 分:UX フローの作成(個人)
15 分:UX フローの決定(チーム)

<検証 : 20 分>
1 チームあたり 1 分でプレゼンテーションを実施

■イベントの詳細
■名称:Design Sprint for Android Wear
■日程:2014 å¹´ 11 月 26 日 (æ°´)18:00-22:00(受付 17:30 - 18:00)
■場所:Google 東京オフィス (六本木ヒルズ森タワー内)
■定員:40 名
■会費:無料
■主催:Google

■申し込み方法
下記フォームよりお申し込みください。
http://goo.gl/PAQAus
※定員に達したため、受付を終了しました。

お申し込みの受付期間は、11 月 20 日(木)までとなります。ご参加いただける方には、参加証を 11 月 21 日(金)より順次ご登録頂いたメール アドレス宛にお送りする予定です。

開発者のみなさんの参加をお待ちしております。


Posted by 鈴木拓生 Developer Relations Team
Share on Twitter Share on Facebook


マテリアル デザインはマルチスクリーンの世界にむけた、ビジュアル、インタラクション、モーションデザインの包括的なアプローチです。Android 5.0 Lollipop とアップデートされたサポート ライブラリは、マテリアル UI の作成をサポートします。以下にあなたのアプリに導入可能なウィジェットや API、そしてマテリアル デザインの主な要素について説明します。

タンジブル サーフェス

マテリアル デザインにおける UI は、デジタルの紙とインクでできています。サーフェスとそれが落とす影は、触れることができる範囲、触れたらどのように動くか、といったアプリケーションの構造を視覚的に表現しています。このデジタル化されたマテリアルは動いたり、拡張したり、変形したりすることで、柔軟な UI を形成します。

影の描写

サーフェスの位置と深度は、光のあたり具合や影に微妙な影響を与えます。新しい elevation プロパティを使用すれば、ビューの Z 軸における位置を指定できます。位置情報を元に、フレームワークはリアルタイムでそのビューよりも後ろにあるアイテムに影を落とします。レイアウト内で elevation の設定が行えます(単位: dip)。

<ImageView …
    android:elevation="8dp" />

また、ViewCompat の getElevation()/setElevation()(shim を利用)を使用して、コード上で設定することもできます。ビューが落とす影の形は基本的に背景の情報から算出されたアウトラインによって決まります。たとえば円形の drawable を floating action button の背景として設定していた場合、適切な形の影を落とすということです。ビューが落とす影の形をより詳細に制御したい場合は、getOutline() で Outline をカスタマイズできる ViewOutlineProvider を設定することができます。

カード

カードは、特定の情報を持ったサーフェスを作成する一般的なパターンです。CardView サポート ライブラリがアウトラインと影を提供するので、カードの作成は簡単です(旧来のプラットフォームでも同様の挙動です)。

<android.support.v7.widget.CardView
   android:layout_width="match_parent"
   android:layout_height="wrap_content">
   <!--カードのコンテンツ -->
</android.support.v7.widget.CardView>

カードの見た目をプラットフォームをまたいで統一するために、CardView は FrameLayout を拡張しており、elevation と角の丸みの半径のデフォルト値を設定します。これらは必要に応じて cardElevation と cardCornerRadius の属性を更新することでカスタマイズできます。UI に奥行きをもたせる方法はカードだけではないので、カードばかり使いすぎないように気をつけましょう!

印刷物のようなデザイン

コンテンツが主役になるよう、マテリアル デザインは印刷物のデザインの原則にのっとり、すっきりとしたシンプルなレイアウトを実現します。大胆かつ考えぬかれた色の選択、意図的な余白、良質なタイポグラフィと、しっかりとしたベースライングリッドによって階層、意義、焦点が生み出されます。

タイポグラフィ

Android 5.0 ではシステム フォント Roboto がアップデートされ、画面サイズにこだわらずテキストを美しく、クリアに表示します。ミディアムウェイトが追加され(android:fontFamily="sans-serif-medium")、新しい TextAppearance スタイルは推奨されているタイポグラフィ スケールにのっとり、読みやすさとコンテンツの密度のバランスをとります。たとえば、android:textAppearance="@android:style/TextAppearance.Material.Title" と設定するだけで 「Title」のスタイルを適用できます。これらのスタイルは AppCompat サポート ライブラリを通じて、旧来のプラットフォームでも使用できます(“@style/TextAppearance.AppCompat.Title” など)

カラー



アプリのカラーパレットはブランディングや個性をもたらす要素です。下記のようなテーマ属性を用いて UI のコントロール要素を簡単に色付けできるようにしました。
コントロール要素の色付けをよりきめ細かく行うには下記の属性を参照してください: colorControlNormal、colorControlActivated、colorControlHighlight、colorButtonNormal、colorSwitchThumbNormal、colorEdgeEffect、statusBarColor、navigationBarColor

AppCompat は上記の機能の多くを提供し、Lollipop 搭載前のプラットフォームでもコントロール要素の色付けを可能にします。

ダイナミックカラー

マテリアル デザインでは画像にあわせて色を流動的に使い分けることを推奨しています。特に色彩豊かな画像を採用している場合に有効です。新しいパレット サポート ライブラリは、画像からいくつかの色を抽出して UI コントロール要素のスタイルを抽出した色に合わせることを可能にし、ユーザーは没入感を得ることができます。抽出されたパレットには、明るい色、抑えた色、読みやすさを考慮したテキスト色が含まれます。

Palette.generateAsync(bitmap,
        new Palette.PaletteAsyncListener() {
    @Override
    public void onGenerated(Palette palette) {
         Palette.Swatch vibrant =
                 palette.getVibrantSwatch();
          if (swatch != null) {
              // 明るい色があるときは
              // タイトルの TextView を更新する
              titleView.setBackgroundColor(
                  vibrant.getRgb());
              titleView.setTextColor(
                  vibrant.getTitleTextColor());
          }
    }
});

リアリティのある動き

タンジブル サーフェスは映画の場面切り替えのように突然どこからともなく現れるものではなく、継続性を保ちます。その動きはユーザーの注意を促し、空間的な関係性を構築します。マテリアルはユーザーのタッチに反応し、もたらされる変化はタッチされた箇所を起点として広がります。ユーザーが理解しやすいように、すべての動きはなじみがあり意味あるものになっています。

Activity と Fragment の遷移


2 つの画面で共通する 「shared elements」(共有要素) を宣言することで、異なる状態への遷移をスムーズに行うことができます。

album_grid.xml
…
    <Imageview 
      …
     android:transitionname="@string/transition_album_cover" />
album_details.xml
…
    <Imageview
      …
      android:transitionname="@string/transition_album_cover" />

AlbumActivity.java
Intent intent = new Intent();
String transitionName = getString(R.string.transition_album_cover);
…
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
    albumCoverImageView,   // 遷移がはじまるビュー
    transitionName    // 遷移先のビューの transitionName
    );
ActivityCompat.startActivity(activity, intent, options.toBundle());

ここでは2つの画面で同じ transitionName を定義します。新しい Activity が開始されると、この遷移は自動的に処理されます。また、要素を共有する以外にも、遷移開始時と終了時の演出を行うことが可能です。

リップル効果


マテリアルは ink ripple surface reaction でユーザーのタッチに反応します。Theme.Material を使用するか継承する場合、Button などのコントロールはデフォルトで ink ripple の反応をみせます(?android:selectableItemBackground も同様です)。drawable にリップル効果を追加するには、下記のようにRipple 要素を設定します。

<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/accent_dark">
    <item>
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

タッチポイントからリップル効果がはじまるよう、カスタムビューでは View#drawableHotspotChanged コールバックにて、drawable にタッチ位置を伝える必要があります。

StateListAnimator

また、マテリアルは磁石がユーザーの指に吸いつくように持ち上がります。このような効果を実現するためには、translationZ 属性を活用します。これは elevation と似ていますが、一時的な効果をもたらすために利用します(Z = elevation + translationZ というように)。新しい stateListAnimator 属性を活用すれば、ユーザーのタッチに反応して translationZ を簡単に調整することが可能です(Buttons はデフォルトでこのように動作します)。

layout/your_layout.xml
<Imagebutton ...
    android:statelistanimator="@anim/raise" />
anim/raise.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_pressed="true">
        <objectAnimator
         android:duration="@android:integer/config_shortAnimTime" 
         android:propertyname="translationZ" 
         android:valueto="@dimen/touch_raise" 
         android:valuetype="floatType" />
    </item>
    <item>
        <objectAnimator 
         android:duration="@android:integer/config_shortAnimTime" 
         android:propertyname="translationZ" 
         android:valueto="0dp" 
         android:valuetype="floatType" />
    </item>
</selector>

Reveal

新しいコンテンツを表示させる際、マテリアル デザインの特徴を生かした遷移方法の 1 つが、拡大する円形マスクを利用したものです。この方法は、タッチした位置から外に向かって放射状に広がるので、ユーザーのタッチポイントがすべてのトランジションの始点であることを補強しています。これを実現するためには次の Animator を使用します。

Animator reveal = ViewAnimationUtils.createCircularReveal(
                    viewToReveal, // Reveal するための新しいビュー
                    centerX,      // マスク中心の x 座標
                    centerY,      // マスク中心の y 座標
                    startRadius,  // 開始時のマスクの半径
                    endRadius);   // 完了時のマスクの半径
reveal.start();

Interpolator

モーションは計算しつくされ、俊敏で正確であるべきです。ゆっくりと始まり、ゆっくりと終わる典型的な遷移とは異なり、マテリアル デザインにおけるオブジェクトは素早く動き始め、ゆっくりと最終位置につきます。オブジェクトは遷移動作時間のうち、より長い時間、最終位置付近に存在します。結果としてユーザーは遷移動作が終わるのを待つ必要がなくなり、モーション化によるマイナス効果は最小限に抑えられます。このような動作を可能にするのは、新しく追加された fast-in-slow-out interpolatorです。

要素が画面を出たり入ったりする場合、ピーク速度で行うのが好ましいですが、要素が画面外に出る際には fast-out-linear-in interpolator を、画面内に入る際には linear-out-slow-in interpolator を参考にしてください。

適応性の高いデザイン

マテリアル デザインにおける最終的な核となるコンセプトは、時計から大型テレビまでのさまざまな形・大きさのデバイスに適応するデザインを作ることです。このデザインのテクニックによって、それぞれのデバイスが共通のシステムを異なるビューで具現化するというビジョンの実現が可能になりました。各デバイスの画面の大きさや操作方法に適応するように各ビューを調整する一方で、色、アイコン、階層構造、各要素の空間的関係性には統一感をもたせます。マテリアル デザイン システムは、拡張可能なデザインを作成するのに役立つ柔軟なコンポーネントとパターンを提供します。

Toolbar

Toolbar は Action Bar を一般化させたもので、同様の機能を備えつつ、より高い柔軟性を提供します。通常の Action Bar と異なる点は、Toolbar は階層内のビューの 1 つであるということです。そのため、Toolbar のインスタンスは好きなところに配置することができ、他のビューと共存します。さらに、動きを与えたり、スクロール イベントに反応させたりもできます。Activity.setActionBar() をコールすることで、Toolbar を Activity の Action Bar として機能させることもできます。

上記の例では、青い Toolbar は高さが拡張され、コンテンツがオーバーレイしており、ナビゲーションボタンを提供しています。また、リスト部分と詳細ビューには、さらに 2 つの toolbar が使われていることにも注目してください。

Toolbar の導入については、こちらの記事を参照してください。

マテリアル化を進めましょう

マテリアル デザインは理解しやすく、美しく、適応性の高い、モーションにあふれたアプリを作ることを支援します。この記事が、みなさまがこれらの原則をアプリに適用されるきっかけとなり、その実現のために新しい API と互換用の API を活用するための手がかりとなることを願っております。

Posted by è’木佑一 Developer Relations Team
Share on Twitter Share on Facebook