Posted:
[この記事は Ian Lake、デベロッパー アドボケートによる Android Developers Blog の記事 "Android Design Support Library" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Android 5.0 Lollipop は、これまでで最も重要な Android リリースの 1 つです。 それは、少なからず、Android の体験を一新する新しいデザイン言語、マテリアル デザインを採用したためです。詳細な仕様はマテリアル デザインを採用するためのスタート地点として最適ですが、私達は開発者のみなさんにとって、特に下位互換性を気にする開発者にとって、それがいかに難しい課題であるかを理解しています。私達は、新しい Android Design Support Library を使い、たくさんの重要なマテリアル デザインのコンポーネントを全ての開発者、すべての Android 2.1 以上の端末へお届けしたいと思います。その中には、ナビゲーション ドロワー ビュー、テキスト編集のフローティング ラベル、フローティング アクション ボタン、Snackbar、タブ、モーション、そして、それらをつなげるスクロール フレームワークがあります。

ナビゲーション ビュー

ナビゲーション ドロワーは、アプリの独自性やナビゲーションにおいて重要な焦点となります。この部分のデザインの一貫性は、特に初めてアプリを使うユーザーにとって、アプリのナビゲーションのわかりやすさという点で、大きな違いを生み出します。NavigationView はナビゲーション ドロワーに必要なフレームワークを用意することで、これをより簡単に実現できるようにします。また、NavigationView を使うことで、navigation item をメニュー リソースを使ってインフレートすることができます。
NavigationView は、次のようなレイアウトで DrawerLayout のドロワー コンテンツ ビューとして使用します。
<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

    <!-- your content layout -->

    <android.support.design.widget.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
NavigationView: には 2 つの属性があります。app:headerLayout は、ヘッダーに使用されるレイアウト(任意の)をコントロールします。app:menu はアイテムのナビゲーション用にインフレートされるメニュー リソースです(実行時に変更も可能)。 NavigationView は、ステータスバーのスクリム保護を処理します。 これにより、API 21 以上の端末では NavigationView はステータスバーと適切にやりとりすることができます。

最もシンプルなドロワー メニューとは、チェック可能なメニュー アイテムの集合体です。
<group android:checkableBehavior="single">
    <item
        android:id="@+id/navigation_item_1"
        android:checked="true"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_1"/>
    <item
        android:id="@+id/navigation_item_2"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_2"/>
</group>
チェックがオンにされたアイテムは、ナビゲーション ドロワーでハイライト表示され、どのナビゲーション アイテムが現在選択されているのかをユーザーにわかりやすく表示します。

また、メニュー内でアイテムのグループごとにサブヘッダーを使うこともできます。
<item
    android:id="@+id/navigation_subheader"
    android:title="@string/navigation_subheader">
    <menu>
        <item
            android:id="@+id/navigation_sub_item_1"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_1"/>
        <item
            android:id="@+id/navigation_sub_item_2"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_2"/>
    </menu>
</item>
setNavigationItemSelectedListener() を使って OnNavigationItemSelectedListener を設定すると、選択したアイテムのコールバックを受けることができます。クリックされた MenuItem が渡され、選択イベントを処理したり、チェック状態を変更したり、新しいコンテンツを読み込んだり、ドロワーをプログラムを使って閉じたり、どんな操作でも処理できます。

テキスト編集のフローティング ラベル

地味な EditText でさえも、マテリアル デザインでは改良の余地はあります。EditText だけの場合は、最初の文字を入力したあとはヒントテキストが非表示になりますが、TextInputLayout で囲むことでヒントテキストが EditText の上に表示される フローティング ラベルになり、ユーザーが入力中のコンテキストを見失うことを防ぐことができます。
ヒントの表示に加えて、 setError() を呼び出すことで EditText の下にエラー メッセージを表示させることもできます。

フローティング アクション ボタン

フローティング アクション ボタンは、インターフェイス上のメイン アクションを示す丸いボタンです。Design ライブラリの FloatingActionButton は、デフォルトではテーマの colorAccent 色を使った一貫した 1 つの実装を提供します。
通常サイズのフローティング アクションボタン以外にも、他の重要なエレメントとの視覚的な連続性を保持するためのミニサイズ(fabSize="mini")もサポートされています。FloatingActionButtonImageView を拡張するため、android:srcsetImageDrawable() などのメソッドを使って、FloatingActionButton 内に表示されるアイコンを制御します。

Snackbar

操作に関する簡単なフィードバックを送るには、Snackbar を使用するのが最適です。Snackbar では、テキストと1 つの操作(任意)が画面下部に表示され、一定時間の経過後、自動的に画面からアニメーション付きで消えます。また、タイムアウト前にユーザーがスワイプして消すこともできます。
スワイプしたり、操作を実行できる点で、Snackbar はトーストや他の軽量フィードバック の仕組みよりもはるかに強力です。しかし、みなさんはこの API がとてもよく知っているかたちをしています。
Snackbar
  .make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
  .setAction(R.string.snackbar_action, myOnClickListener)
  .show(); // Don’t forget to show!
Viewmake() の 1 つ目の引数になっています。Snackbar はきちんと下部に固定されるよう、適切な Snackbar のビューの親を見つけようとします。

タブ

タブを使ってアプリ内の異なるビューを切り替えることは、マテリアル デザインにとって新しい概念ではなく、ユーザーはトップレベルのナビゲーション パターンとして、あるいはアプリ内のコンテンツを異なるグループへまとめるために、とても慣れ親しんでいます(例えば、音楽のジャンル)。
Design ライブラリの TabLayout では、ビューの横幅をタブ間で均等に割り振った固定タブと、タブのサイズが均等ではない、スクロール可能なタブの両方があります。タブは、プログラムからも追加することができます。
TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
しかし、タブ間の横方向のページングに ViewPager を使用している場合は、PagerAdaptergetPageTitle() から直接タブを作成し、setupWithViewPager() を使って 2 つをつなげることができます。これにより、タブ選択イベントが ViewPager を、ViewPager のページ変更が選択されているタブを、それぞれ更新することを保証します。

CoordinatorLayout、モーション、スクロール

独特の外観だけがマテリアル デザインの特徴ではありません。モーションもまた、マテリアル デザインを用いたアプリを作成するうえで重要な要素です。マテリアル デザインには、タッチ リップル意味のあるトランジションなど多くのモーションがありますが、Design ライブラリでは新たに CoordinatorLayout を導入しました。CoordinatorLayout を使うことで、子ビュー間のタッチ イベントをより高度にコントロールすることができます。Design ライブラリ内の多くのコンポーネントが CoordinatorLayout を利用しています。

CoordinatorLayout とフローティング アクション ボタン

わかりやすい例は、 CoordinatorLayout の子として FloatingActionButton を追加し、その CoordinatorLayout を引数に Snackbar.make() を呼び出した場合です。 Snackbar が  FloatingActionButton と重なるように表示されてしまうかわりに、FloatingActionButtonCoordinatorLayout から受け取った追加のコールバックを使って、Snackbar がアニメーションで表示されるときには上部に、消えるときには元の位置に自動的に戻ります。これは、 Android 3.0 以上の端末で、追加のコードなしで実現できます。
CoordinatorLayout では layout_anchor 属性も提供され、layout_anchorGravity と共に使用すると FloatingActionButton などのフローティング ビューを他のビューと相対的に配置できます。

CoordinatorLayout とアプリバー

CoordinatorLayout の他の主な使用例には、アプリバー(以前のアクションバー)とスクロール テクニックがかかわってきます。アプリの象徴的な部分とレイアウトの残りの部分の見た目と統合をより簡単にカスタマイズできる Toolbar をレイアウトで既に使用している方もおられると思いますが、Design ライブラリでは、さらに高度な実装が可能になります。AppBarLayout を使って Toolbar と他のビュー(TabLayout で提供されるタブなど)が ScrollingViewBehavior とマークされた兄弟ビューのスクロール イベントに反応するようにできます。これにより、次のようなレイアウトが作成できます。
 <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
     
     <! -- Your Scrollable View -->
    <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
   <android.support.v7.widget.Toolbar
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">

        <android.support.design.widget.TabLayout
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">
     </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
これで、ユーザーが RecyclerView をスクロールすると、AppBarLayout はイベントに応答することができます。その際、画面に入る方法(スクロールオン)と、画面から出ていく方法(スクロールオフ)をコントロールするためには、子のスクロール フラグを使います。フラグには、次のようなものがあります。
  • scroll: このフラグは、画面からスクロールオフするすべてのビューに設定する必要があります。このフラグを使用しないビューは、画面上部に固定されたままになります
  • enterAlways: このフラグを使うと、下方向へスクロールしたときにこのビューが表示されます。このフラグを使うことで、クイック リターンのパターンを実現できます。
  • enterAlwaysCollapsed:ビューで minHeight を宣言し、このフラグを使用すると、ビューは最小の高さ(つまり、折りたたまれた状態)で画面に入り、ビューを最上部までスクロールしたときのみ完全な高さに再展開されます。
  • exitUntilCollapsed: このフラグでは、ビューが折りたたまれる(minHeight になる)までスクロールオフされます。
注: scroll フラグを使用するすべてのビューは、このフラグを使用しないビューの前に宣言される必要があります。これで、すべてのビューが上部から出ていき、固定エレメントが残るようになります。

ツールバーの伸縮

Toolbar を直接 AppBarLayout に追加すると、enterAlwaysCollapsed スクロール フラグと exitUntilCollapsed スクロール フラグにアクセスできますが、異なるエレメントが伸縮にどう反応するかを細かく制御できません。そこで、CollapsingToolbarLayout を使うことができます。
<android.support.design.widget.AppBarLayout
        android:layout_height="192dp"
        android:layout_width="match_parent">
    <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <android.support.v7.widget.Toolbar
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>
        </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
この設定では、CollapsingToolbarLayoutapp:layout_collapseMode="pin" を使って、ビューを縮めてもツールバー自体は画面上部に固定されるようにしています。さらに、CollapsingToolbarLayoutToolbar を一緒に使用すると、レイアウト全体が表示されている状態では、自動的にタイトルは大きなサイズで表示され、縮められた際には、デフォルトのサイズになります。この場合、setTitle() はツールバーのものではなく、CollapsingToolbarLayout のものを呼び出す必要があることに注意してください。
ビューの固定に加えて、app:layout_collapseMode="parallax"(さらに任意でapp:layout_collapseParallaxMultiplier="0.7" でパララックス乗数を設定) を使用して、パララックス スクロールを実装できます(CollapsingToolbarLayout 内の ImageView の兄弟のようなもの)。この使用例は、CollapsingToolbarLayoutapp:contentScrim="?attr/colorPrimary" と上手く組み合わされ、ビューの折りたたみ時にフルブリードのスクリムを追加します。

CoordinatorLayout とカスタムビュー

1 つの重要な注意点は、CoordinatorLayout には FloatingActionButtonAppBarLayout の動作を理解する能力はなく、Coordinator.Behavior という形で追加の API を提供するだけだということです。この API により、子ビューはタッチ イベントやジェスチャへより細かい制御を行ったり、お互いの依存関係を宣言し、onDependentViewChanged() 経由でコールバックを受けたりすることができます。

ビューは、CoordinatorLayout.DefaultBehavior(YourView.Behavior.class) アノテーション、または、レイアウト ファイル内で app:layout_behavior="com.example.app.YourView$Behavior" 属性を設定することで、デフォルトの Behavior を宣言することができます。このフレームワークによって、どんなビューでも CoordinatorLayout と統合できるようになります。

今すぐ使えます!

Design ライブラリはすでに利用可能です。SDK Manager の Android Support Repository を今すぐアップデートしましょう。新しい依存関係を 1 つ追加するだけで、Design ライブラリの使用を開始できます。
 compile 'com.android.support:design:22.2.1'
Design ライブラリは Support v4 と AppCompat のサポート ライブラリに依存するため、Design ライブラリの依存関係の追加時にこれらも自動的に含まれることになります。それらの新しいウィジェットも、Android Studio Layout Editor の Design ビュー(CustomView 内)で使用可能になったため、新しいコンポーネントを簡単にプレビューできます。

Design ライブラリ、AppCompat、その他すべての Android サポート ライブラリは、最新の洗練された外観を持つ Android アプリを開発するために必要な部品を提供する、重要なツールです。これにより、開発者はすべてをゼロから作成する必要がなくなります。

Posted by Ryuichi Hoshi - Developer Relations Team

Posted:
[この記事は Adam Dawes、プロダクト マネージャーによる Google Developers Blog の記事 "Introducing the Google Identity Platform" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

アイデンティティはアプリを構成する重要な要素のひとつです。新しい機能を開発する際、最優先ではないにしろ、認証を適切に備えることは極めて重要なことです。多くの開発者が、ユーザーがパスワードを忘れてアプリを使用できなくなるような事態に対処するよりも、効率的で安全に製品を使ってもらいたいと望んでいます。 Google Identity Platform は、ユーザーがサインインするあらゆるステップを円滑にするためのデベロッパー ツール集です。Smart Lock for Passwords、Google Sign-In、Identity Toolkit をご紹介します。

新規機能: Smart Lock for Passwords で自動的にサインイン

SmartLock はご利用の Google アカウントに備わったパスワード マネージャーです。Android アプリに自動的にサインインできるようになり、Chrome で閲覧するウェブサイトのクレデンシャルを自動的に入力してくれます。これを使うことで、パスワード クレデンシャルを思い出して入力する必要はなくなります。

Google はまず Android で、この SmartLock を API にして、アプリ開発者やパブリッシャーに提供します。Android 開発者は、プログラムでクレデンシャルを保存、取得し、複数の端末で、また Chrome で閲覧するウェブサイトで、ユーザーが自動的にサインインできるようにします。Eventbrite、Orbitz、Netflix、Instacart、New York Times、そしてまもなく LinkedIn、といった企業が Smart Lock for Passwords を採用し、自動サインイン機能を提供開始します。

新しいアカウントのサインアップや初回のサインインの際、SmartLock にパスワードを保存する選択肢がユーザーに提示されます。ここで保存するとその次から自動的にサインインできるようになります。
Smart Lock for Passwords はどのように自分のアプリやサイトで機能するのでしょうか。あらゆる端末でログイン情報が認識され、事前入力されたものとして扱われます。ユーザーがサインインしたり情報を入力してサインアップしたりすると、その後使用するためにパスワードを保存するかを確認するメッセージが表示されます。これを許可すると、使用している Android アプリや Chrome のウェブサイトでパスワードをまた入力する必要がなくなります。結果として、新規ユーザー、既存ユーザーどちらもアプリやサイトへのサインアップやサインインの割合が増えます。

またこれは、ユーザーが新しいデバイスを購入したりアクティベートしたりした際に、簡単にアプリをダウンロードして適切なアカウントでサインインできるようになるということを意味します。アカウントを再度取得したり、パスワードを忘れた場合の手続きをしたりする必要がなくなります。

Smart Lock for Passwords を導入すると、ユーザーがパスワードを保存すれば、他の端末で自動的にサインインできるようになります。

既に Smart Lock for Passwords をご活用いただいているパートナーの実例を次に示します。Android アプリや Chrome で表示したウェブサイトの例をご確認ください。
  • Eventbrite では、SmartLock を容易にアプリに導入してテストを行い、サインイン済みユーザーの数を増やしています。Eventbrite のシニア プロダクト マネージャーの Atul Kakkar 氏は、これはサインインが「パーソナライズされたイベントの発見と、シームレスなチケットの購入を可能にしてくれる」ためだ、と述べています。
  • Instacart の Android エンジニア、Maksim Golivkin 氏は、「SmartLock によってサインインが非常に早くなり、ユーザーがあらゆる端末で情報を入力する手間が省けています。多くの人々が Instacart についてモバイルやデスクトップのウェブで見て、それからアプリをダウンロードしています。サインイン情報が保存されることで、ユーザーが食料品をさらにすばやく注文できるようになっています。SmartLock の導入は、お客様の時間の節約にとても有効で、その時間を買い物に使っていただけます」と述べています。
  • Netflix では Smart Lock for Passwords を活用することで、ユーザーのサインイン時間を増やし、リビングの Android TV などを含めあらゆるデバイスでコンテンツをさらに楽しんでいただけるようになっています。パートナー エンゲージメント ディレクターの Rob Caruso 氏は次のように述べています。「さまざまなデバイスでユーザーを認証する際の手間を極力省きたいと考えています。SmartLock は大画面で特に有効です。というのも、大画面でのサインイン情報の入力はモバイルや PC よりもはるかに面倒だからです」
  • 定期購読者のためにサインインを簡単にする以外にも、 New York Times ではSmartLock を使ってデバイスをまたいだ操作性の向上に取り組んでいます。Android マーケティング マネージャーの Rachel Kirscht 氏は次のように述べています。「私たちにとってこれはリピート率向上の施策であり、アプリの登録やサインイン使用率を向上させる取り組みの一環といえます。Smart Lock for Passwords はユーザーの利便性を劇的に向上できます。ログインしたり登録したりしていただける読者は定期購読もしていただける傾向にあります。複数のプラットフォームで閲覧いただくとこの傾向がさらに高くなります」
  • Orbitz にサインインしていただくと、多くのメリットがあります。 たとえば、別のデバイスで行ったトラベル検索にすぐにアクセスできたり、最小限の入力で効率よく予約できたりします。旅行中、サインインしていただいているユーザーにはフライトの遅延やゲートの変更などを知らせるプッシュ通知が送信されます。Orbitz.com にデスクトップでサインインしていただくと、こうしたメリットをアプリで自動的に受けることができます。SmartLock をお使いいただくことで、サインインの手間が省かれ、サインインすることのメリットを実感していただけます」と Orbitz の製品戦略シニア ディレクターの Ryan Kowalczyk 氏は述べています。
  • ベータ パートナー LinkedIn のビジネス デベロップメント副社長 Bob Rosin 氏は次のように述べています。「Google の SmartLock 導入パートナーとしてご一緒でき、わくわくしています。LinkedIn の既存メンバーにとってもログインがさらに簡単になりますし、新規ユーザーのサインアップ プロセスが効率化されます」
今年の後半には、 同期パスフレーズのサポートや、他のプラットフォームでの Smart Lock for Passwords API のサポートなど、新しい機能を提供していく予定ですので、ご期待ください。

Google Sign-In を使った信頼性の高い登録システム

Google Sign-In は、ご自分のアプリやサイトに、Google のユーザーやサービスをつなげる安全なゲートウェイです。ユーザーが既に Gmail、Google Play、Google+ などの Google サービスで使用している Google アカウントを使ってサインインできるようになるため、ログインの手間が省かれます。New York Times では、Google Sign-In を実装した直後に新規登録ユーザー数が月ベースで 20% も増加しています。

Identity Toolkit で認証ツールをまとめて実装

Identity Toolkit は、堅固でさらに安全な認証システムで、アプリに応じて適切なサインインをサポートします。Identity Toolkit は電子メールとパスワードの認証だけでなく、Google や Facebook などの Identity Provider もサポートされます。技術的な複雑さもなく、簡単な設定の変更だけで今後のサインインのオプションを追加したり、既存ユーザーを移行したりできます。Identity Toolkit をご活用いただけば、ご利用の認証システムをプラットフォームに応じて簡単に適用できます。

Google Identity Platform をお使いいただくことで、ユーザーのサインインをシンプルにし、アプリやサイトをさらにパーソナライズされた魅力あるものにしていただければ幸いです。ドキュメントは developers.google.com/identity をご覧ください。

Posted by Eiji Kitamura - Developer Relations Team

Posted:
[この記事は Jonathan Beri、プロダクト マネージャーによる Google Developers Blog の 5 月 28 日の記事 "Add Google to your iOS Apps with CocoaPods" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google は 5 月 28 日、iOS で Google SDK を入手する主要 チャネルを CocoaPods とすることを発表いたしました。 CocoaPods は人気の高い無料の iOS 向けの依存関係マネージャーで、ライブラリやフレームワークを Xcode にインポートするプロセスを大幅に簡素化し、Google のさまざまなライブラリの依存関係を管理することができるようになります。

これまで、他の iOS 開発者が制作した Pod に加え、徐々に増えつつある Google 公式 Pod も存在するなか、適切な SDK を探し出すことは難しい状況にありました。今回のアナウンスにより、 Google Cloud MessagingGoogle Maps SDK for iOS などの主要なライブラリは、公の CocoaPods サービス上で見つけることができるようになりました。今後、新しい iOS SDK は Pod としてパッケージ化・ドキュメント化され、cocoapods.org で公開されます。Google Pod の完全なリストとすべてのサポート ドキュメントは developer.google.com/ios/cocoapods でご確認いただけます。

もしまだ CocoaPods を使ったことがなければ、ぜひお試しください。GoogleAnalytics を Podfile に追加すれば、新規ユーザー数をカウントすることができます。pod install で AdMob 広告をアプリに追加することもできます。デモ プロジェクトを簡単に起動できる CocoaPods プラグイン、pod try もぜひお試し下さい。

さまざまな iOS 開発 Tips や、Google の iOS SDK の詳細については、 Todd KerpelmanRoute 85 video series をご覧ください。皆さんが Google の機能を盛り込んだすばらしい iOS アプリを作成してくださることを楽しみにしています。

Posted by Yoshifumi Yamaguchi - Developer Relations Team

Posted:
[この記事は Taylor Savage、Polymer プロダクト マネージャーによる Google Developers Blog の記事 "Polymer 1.0 Released!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

[このブログの元記事は Google I/O 2015 が開催される前の 5 月 28 日に投稿されています。]
5 月 28 日、Google は Polymer ライブラリの 1.0 バージョンをリリースしました。Polymer はウェブ アプリケーション構築についての新しい考え方です。Web Components の上部にシュガーとなるレイヤーを置き、双方向性のあるカスタム要素を簡単に作成することができます。こうした要素を集めて使うことで、ウェブ上でネイティブアプリのような臨場感のあるアプリを作成することができるようになります。

Google では “Developer Preview” リリース後、開発者にとっての使いやすさをそのままに、クロスブラウザのパフォーマンスを向上させるため、ライブラリをゼロから作成しなおしました。新しいライブラリでは、Chrome では約 3 倍、Safari では約 4 倍のスピード改善を実現し、コード量は Developer Preview と比較して 3 分の 1 程度に減らすことができした。

新しいライブラリを使いはじめる

今回、1.0 リリースに合わせて、ドキュメントを含む polymer-project.org サイトをアップデートしました。主な新機能やアップデートは次のとおりです。
  • まったく新しく、簡単に使えるデータ バインド システム
  • カスタム CSS プロパティを使った要素のテーマ化とスタイル化
  • サポート外ブラウザ向けの軽くて迅速な Shadow DOM シミュレータ
  • 要素間で動作を共有する “Behaviors” メカニズム
Polymer を使うと、高品質な要素をこれまでにないほど簡単に作成できるようになり、アプリで使用したり、他の開発者と共有したりすることができます。

Polymer チームが製作した新しい要素の使い方

Polymer チームが製作した数多くの新しい要素プロダクト ラインを Polymer elements catalog でご確認ください。ご自分のウェブアプリの製作や機能追加に役立つ要素をブラウズすることができます。要素にはボタン、レイアウト、Google マップ、プッシュ通知などがあります。ウェブで解決したいどんな問題にでも、そのための要素があります(There's an element for that)。

Polymer Starter Kit でアプリを作り始める

Polymer を使ってウェブ アプリケーションを作り始める早くて簡単な方法をお探しであれば、 Polymer Starter Kit をお試しください。Polymer Starter Kit は最新の要素、すぐに使えるボイラープレート、E2E のツール チェインなど、開発からプロダクションの展開まで、さまざまな場面で活用できるため、開発者のみなさんは機能の追加に集中できます。

皆さんがこのリリースを活用し、すばらしいアプリの構築に役立てていただくことを楽しみにしています。

Posted by Eiji Kitamura - Developer Relations Team

Posted:
Google の AdMob チームでは、アプリ開発者の皆さまの成功をサポートするため、アプリ向けモバイル広告ネットワークを通じた収益化ソリューションの提供、アプリ開発にお役立ていただけるさまざまなノウハウの紹介に積極的に取り組んでいます。 Google のモバイル広告ネットワークがグローバルに展開しているという強みを活かし、世界中の多くの地域でアプリのプロモーションと収益化に成功していただくことも、AdMob チームのゴールのひとつです。そしてこのたび、App Developer Business Kit を日本語を含む各国の言語に翻訳¹し、皆さまにお使いいただけるようにしました。


このサイトでは、アプリの開発からユーザーの拡大、収益化など、包括的なヒントをご紹介しています。例えば、グローバル市場でのアプリ展開を検討している方に向けては、11 カ国²のマーケット レポートを用意しています。

統計データの一例:
  • ブラジルのスマートフォン ユーザーは、アメリカや日本よりも頻繁に広告を認知
  • フランスのスマートフォン ユーザーの約 ⅔ は無料アプリをダウンロード
このような各マーケットの統計データを、日本国内だけではなく、世界中のユーザーに皆さまのアプリを広めるヒントとしてご活用いただければ幸いです。

マーケットの統計データ以外にも、モバイル アプリ ビジネスで成功されている各社のキーパーソンのインタビュー記事、アプリ開発やマーケティングのベスト プラクティス、ユーザー調査もご覧いただけます。
アプリの収益化やプロモーションにご興味のある方は、Google+Twitter (英語)から、AdMob に関する最新情報をぜひご確認ください。

¹ 対応言語: フランス語、ドイツ語、イタリア語、日本語、韓国語、ポルトガル語、中国語(簡体字・繁体字)、スペイン語、英語
² マーケット レポート対応国:アメリカ、イギリス、イタリア、スペイン、ドイツ、フランス、ブラジル、ロシア、日本、韓国、中国


Posted by Maiko Fujita - オンライン パートナーシップ グループ

Posted:
[この記事は Ian Lake、デベロッパー アドボケートによる A Closer Look at Google Play services 7.5 の記事 "Making a performant watch face" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google は 5 月の Google I/O で、さまざまな Android エコシステムを通じて端末に新しい機能を追加し、端末を最適化する Google Play サービス 7.5 のリリースを発表しました。Google Play サービスでは、Google がユーザーのために提供する最新の機能を使ってビルドが可能なことと、v 7.5 が Android 2.3 以降の端末で正しく動作することを確認しています。

Smart Lock for Passwords、インスタンス ID、Google Cloud Messaging や Google Cast 向けの新しい API、Android Wear 端末で動作する Google Maps API など数々の新しい機能が含まれます。

Smart Lock for Passwords

特にモバイル端末において、パスワードの入力はわずらわしく感じます。多くの場合、ユーザーはウェブや別の端末で過去既にログインしています。ログイン プロセスに、この情報は保存されるべきではないかと Google は考えました。Chrome のパスワード マネージャー上に構成される Smart Lock for Passwords は、新しく CredentialsApi API や Android の UI を追加し、ログイン プロセスの一部として、保存されたクレデンシャルの取得、別の Android 端末や Chrome ブラウザでの後の使用に備えた新しいクレデンシャルの保存を行います。パスワード ベースでも Identity Provider(Google Sign-In のような IDP のこと)でも、クレデンシャルの保存がサポートされます。ユーザーが複数の端末を使い分けたり、新しい端末を使ったりしてもログイン状態を保ちます。これにより、何度もログインしなおしてイライラしたり、複数アカウントを持つことになったりする事態を回避することができます。

Smart Lock for Passwords の詳細については、デベロッパー サイトをご覧ください。

インスタンス ID、アイデンティティと認証

インスタンス ID(IID)では、アプリのインスタンスごとに一意の識別子を取得できます。アプリでユーザーの登録やアカウントを求めていない場合でも、認証と承認メカニズムが提供されます。たとえば、インスタンス ID トークンを付けることで、リクエストを送信しているアプリ インスタンスを一意に特定できます。有効なインスタンス ID トークンが付けられるよう、エッジケースの処理も簡単に行えるようにしています。

Google Cloud Messaging

Google Cloud Messaging(GCM)では、ユーザーに情報を送信する際や、端末からご利用のサーバーにアップストリーム メッセージを送信する際にバッテリー効率の優れたメカニズムを提供します。

Google Cloud Messaging とインスタンス ID

以前は GCM では固有の登録 ID を使って各端末を参照していました。この方法はそのまま使用できますが、新たに GCM 用のインスタンス ID トークンも活用できるようになります。エラー ケースの処理にかかわるインスタンス ID の利点を最大に生かすことができます。インスタンス ID トークンはユーザー通知と完全に互換しているため、ユーザーの複数の端末に通知を送信できます。

トピック ベースのサブスクリプション

GCM でインスタンス ID を用いる際、別の新しい機能も使用できます。トピック ベースのサブスクリプションです。この機能を使うと、適切な対象に簡単にメッセージを発行できるようになります。すべてのサブスクリプション インスタンスに対する送信は GCM で処理されます。アプリで複数のトピックをサブスクライブできるようになり、ご自分のアプリのメッセージで必要な最適な処理を一連のトピックから作成できるようになります。

GCM でメッセージを受信

当然、受信メッセージのサブスクライブで終わりではありません。GCM メッセージの受信が GcmReceiverGcmListenerService のサブクラスを使ってできるようになります。この 2 つのクラスによって、端末のスリープが何度も解除されるような場面でもアプリでメッセージが確実に処理できるようになります。

GCM Network Manager

アプリでは、新しい情報が発生するとたびたびそのデータをサーバーに同期する必要が生じます。GCM ではこのモデルを “send to sync” と呼んでいます。GCM Network Manager API を用いることで、この処理がとてもシンプルになります。ネットワーク接続の待機、端末の確認、接続の再試行、切断、など多くの共通の実行パターンが API で処理されます。GcmNetworkManager によって、バックグラウンド タスクが適切なタイミングでスケジュールされ複数タスクがバッチ処理されることで、Android 5.0+ 端末で最もパフォーマンスに優れたJobScheduler API を使っているときであっても効率性が高まりバッテリーが節約できます。この API は 1 度きりのタスクと定期的なタスクどちらもサポートしており、数多くの異なる運用タイプで用いることができる柔軟なフレームワークとして活用できます。

App Invites ベータ版

App Invites は現在ベータ版ですが、ユーザーがコンタクトにアプリのインストールをお勧めできる標準 UI を Android と iOS どちらにも提供できる新しい機能です。オプションで選択したコンタクトにディープリンクを送ることもできます。ユーザーの端末と Google のコンタクトをソースとして用いて、アプリのユーザー増加につながる照会に対応します。
SMS や電子メールで招待を送る機能を供え、ユーザー ベースを増大し、紹介したい人たちに適切にアプリを紹介する統一的な方法をユーザーに提供し、招待がどの程度有効だったかを確認できる優れたメカニズムを活用できます。

App Invites の目的は、ユーザーの獲得や登録プロセスに多くの労力をかける必要をなくすことで、開発者の皆さんがアプリの機能や使い心地などに集中して取り組めるようにすることです。App Invites の詳細については、デベロッパー サイトをご覧ください。

Google Cast

Google Cast は、ご利用のモバイル端末やノートパソコンから TV やスピーカーにコンテンツを簡単にキャストできるテクノロジーです。あらゆる Android、iOS、Chrome アプリでリモート ディスプレイを使用する新しい機能や、より優れたメディア サポート、ゲーム サポートによって、Google Cast のメリットを存分に発揮できる環境が整っています。

Remote Display API

モバイル開発者が画面密度の濃いアプリやゲームを作成し、Android や iOS 向けの Google Cast Remote Display API を使って Google Cast レシーバーに簡単に送ることができるようにしています。新しい Remote Display API を使うと、モバイル端末と Google Cast 端末で同一コンテンツをミラーリングすることなく、調整され統合されたセカンド スクリーンをビルドできるようになります。

Remote Display のさらに詳細については、Google Cast Developers Site をご覧ください。

Autoplay and Queuing API

Chromecast でのメディア項目 1 つの再生はRemoteMediaPlayer(またはCastCompanionLibraryVideoCastController)でこれまで問題なく処理されていました。このリリースでは RemoteMediaPlayer によってフル メディア キューが追加され、自動再生がサポートされるため、シームレスなメディア再生が実現します。これで接続されたすべての端末で、キューに並んでいるメディア アイテムの同期されたキューを容易に保つことができるようになり、Google Cast メディアを協力して作成する新しい可能性が開かれます。

Google Cast 向け Game Manager API

Google Cast でゲームすれば、モバイル端末を自分のゲーム コントローラとして使い、TV でアクションを表示することですばらしいマルチプレイヤー体験を楽しむことができます。接続されたすべてのクライアントやキャスト レシーバーにメッセージや状態の変化を簡単に送信できるようにするため、Google Play services 7.5 では Google Cast 向けに GameManagerClient や Game Manager API が導入されました。これらは Android、iOS、Chrome、レシーバーで使用できます。

Android Wear

時計は時間を確認できるすばらしい端末です。ただ、時間の確認に加えて場所を簡単に確認できたとしたらどうでしょうか。今回の新しいリリースで、おなじみの Maps API を Android Wear 端末で使用できるようになりました。
完全にインタラクティブなマップやライトモードのマップを Android Wear 端末で直接表示できます。インタラクティブ マップではスクロールやズームができ、ユーザーの現在地とその他の情報が表示されます。サポートされる機能の完全なリストをデベロッパー ドキュメントでご確認いただき、さらに詳細については Geo Developers blog をご覧ください。

Google Fit

Google Fit はフィットネス アプリを作成できるオープン プラットフォームです。現在位置や移動するスピードなどのセンサーデータを取得したり、アクティビティ データを集めて保存したり、データを自動的に集積してユーザーのフィットネス データを 1 つのビューに表示したりできます。

今回のリリースで、RecordingApi を使って移動した推定距離や燃焼カロリーのデータを集めて、HistoryApi を使ってご自分のアプリや別の Google Fit 対応アプリで表示できるようになります。

アクティブに動き回ればさまざまな形態への対応が必要になります。ある種の運動は歩数や距離で簡単に計測できますが、筋力トレーニングはその種類、反発力、繰り返した数などで計測されます。今回、数多くの workout exercises を新しくサポートしたことで、このようなデータを Google Fit に保存できるようになり、運動を包括的に確認できるようになりました。

SDK をご利用ください

Google Play サービス 7.5 をご利用いただけます。アップデートされた SDK を今すぐお試しください。

Google Play サービスや利用可能な API の詳細については、Google APIs for Android サイトをご覧ください。

Posted by Yuichi Araki - Developer Relations Team

Posted:
[この記事は Nathan Camarillo と David Allison、Google Cast プロダクト マネージャーによる Gogole Developers Blog の記事 "Announcing new Google Cast APIs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google Cast を使うと、モバイルアプリを大きい画面やスピーカーで簡単に使えるようになります。Chromecast や最初の Google Cast 端末の開始以来、多くのユーザーに愛されてきました。1700 万もの Chromecast 端末が購入され、15 億回も Cast ボタンがタッチされ、TV を見る方法が変わりつつあります。米国では Chromecast のアクティブ ユーザーが 1 日あたりに見るコンテンツは 2013 年 7 月の開始時点と比べて 66% 増加しています。Chromecast のアクティベートで YouTube の視聴時間は 45% 増加しました。

Google Cast のエコシステムは成長し続けています。Google Cast が組み込まれた新しいエンターテイメント端末で、Chromecast や Android TV 端末からスピーカーやサウンドバーまで、売れ行きは好調です。

Google I/O で公開された、モバイルアプリやゲーム開発者に TV 向けの新しい機能を提供するデベロッパー ツールを紹介します。

Google Cast Remote Display API(ベータ版)

モバイル開発者が画面密度の濃いアプリやゲームを作成し、Android や iOS 向けの Google Cast Remote Display API を使って Google Cast レシーバーに簡単に送ることができるようにしています。

Android 画面のキャストはユーザーにとって目新しいものではありませんが、新しい Remote Display API を使うと、モバイル端末と Google Cast 端末で同一コンテンツをミラーリングすることなく、調整され統合されたセカンド スクリーンをモバイル開発者がビルドできるようになります。

Remote Display は iOS と Android どちらでも使用できます。アプリには同じ Google Cast アイコンが表示され、ユーザーが Google Cast 端末を選ぶことができます。Android では CastRemoteDisplayLocalService ヘルパークラスを使って端末に接続し、その後 CastPresentation サブクラスを作成し、 setContentView() をコールしてご希望のコンテンツを表示できます(SurfaceView での直接描画も含め)。 その後 CastPresentation のコンテンツが、接続された Google Cast 端末に送られ、表示されます。iOS では、コアの Google Cast SDK を使ってレシーバーを検出して 1 つに接続し、GCKRemoteDisplayChannel で新しい Remote Display セッションを確立します。その後、アプリでセッションを経由して動画と音声フレーム レートが送られます。Remote Display と既存のレンダリング コードとの統合をサポートするため、OpenGL ES や Metal のアダプターが提供されます。

Remote Display API はすべての Google Cast レシーバーでネイティブにサポートされるため、レシーバー アプリを記載する必要はありません。ただし、Google Cast SDK Developer Console を使って Remote Display App ID を登録する必要はあります。

Driver® Speedboat Paradise の実際の Remote Display について、下図をご覧ください。

Autoplay and Queuing API

Autoplay and Queuing API を使うと、コンテンツ キューを作成し、最初の動画が再生終了しつつあるタイミングで 2 つめの動画のバッファリングを開始できます。これで再生が継続的に行われ、視聴時間を大幅に増やすことができます。セッションごとの視聴時間は 10% ~ 20% 以上の増加が見込まれます。

Chromecast でのメディア項目 1 つの再生は RemoteMediaPlayer(または CastCompanionLibraryVideoCastController)でこれまで問題なく処理されていました。このリリースでは RemoteMediaPlayer によってフル メディア キューが追加され、複数の MediaQueueItems をキューに並べることができ、あるアイテムをスキップしたり、繰り返しモードを設定したり、キューを並べ替えたり、 自動再生を可能にしたりできるため、シームレスなメディア再生が実現します。返される MediaStatus は現在のアイテムのキューや新しい OnPreloadStatusUpdatedListener によって補完されるため、次に再生されるコンテンツを表示できるようになります。これで接続されたすべての端末で、キューに並んでいるメディア アイテムの同期されたキューを容易に保つことができるようになり、Google Cast メディアを協力して作成する新しい可能性が開かれます。

Google Cast 向け Game Manager API

昨年 11 月以降、TV 画面にゲーム(ゲームボード、レース場、ダンスフロア、トリビアクイズなど)を Cast で表示できるようになりました。皆でリビング ルームに集まってモバイル端末を自分のゲーム コントローラとして使い、ゲームを楽しめるようになっています。今回、開発者がマルチプレイヤー ゲームを作成するプロセスを簡略化する新しい Game Manager API をリリースします。大勢が集まるような場合に全員の端末でゲームの状態を簡単に同期できるようにするため、Google Play サービス 7.5 で Cast Game Manager API が導入されます。この API は GameManagerClient クラスから Android で使用でき、iOS、Chrome、その他のレシーバーでも使うことができますが、メッセージを送信したりすべての接続されたクライアントやレシーバーで状態を変更したりできます。すべての送信メソッドには特定のプレイヤー ID を含むメソッドがあり、複数のプレイヤーが 1 つの送信デバイスを共有できるようにします。

上記すべての API は Android では既に使用でき、iOS、Chrome SDK アップデートでは近日中に使えるようになる予定です。

Google Cast API のさらに詳細については、Google Cast Developers Site をご覧ください。 リビングルームでモバイルを活用する皆さんのアイデアを楽しみにしています。

Posted by Yoshifumi Yamaguchi - Developer Relations Team