SlideShare a Scribd company logo
GDG Shikoku #37 徳島テクニカルセッション	




  GOOGLE PLAY SERVICES について	
                      Smartium株式会社 江川 崇
江川 崇(EGAWA Takashi)	




    Smartium株式会社 (http://smartiums.com ) 代表取締役	
    Google Developers Expert (https://developers.google.com/experts/ )	
    (株)カトマック・情報技術開発(株)・(株)トップゲート 技術顧問	
    Androidプログラミング入門 改訂2版	
    IMoNi、L10N	
                                  twitter:@t_egg	
                                                   Google+:t.egawa@gmail.com
Google Android プログラミング入門改訂2版	

    江川崇、神原健一、山田暁通、
    佐野徹郎、郷田まり子 共著

    定価 :3,570円 (本体3,400円)
    発売日:2012年8月31日
    形態 :B5変 (448ページ)
    ISBN :978-4-04-886068-0

    アスキー・メディアワークス
    達人出版会からPDF版もあり

    サンプルを全て詰めたアプリアリマス
    https://play.google.com/store/apps/details?id=jp.asciimw.androidbook
Remote TestKit	
    カトマックが提供するAndroid用リモートテスト環境
      必要な端末を必要な時間だけ借りてリモートでテスト

      ADBが繋がる

      PCから画面の操作も可能



http://appkitbox.com/testkit
Google Play Serviceについてお話しし
ようかと思いましたが…	

    Google Play Services だけだとすぐ終わりそう

    Google Play Services はGoogle APIのプラット
     フォーム

    AndroidにおけるGoogle APIの活用全般のお話し
     します。
GDG Shikoku #37 徳島テクニカルセッション	




 GOOGLE API の活用 FOR ANDROID	
                      Smartium株式会社 江川 崇
Agenda	
    GoogleアカウントとAndroid
             互換/非互換
      Android

      GoogleアカウントとAndroidデバイス

    プログラムからのGoogleアカウントの活用
      OAuth

      Google Plugin for Eclipse
      Google Cloud Endpoints

    Androidクライアントでの利用
      AccountManager

      Googl   Playサービス
GOOGLEアカウントと
ANDROID
Android 互換/非互換	
    世の中の全てのAndroidデバイスは、必ず以下の
     2種類のいずれかに該当する。

         Android互換(“Android compatible” である)

         Android非互換(“Android compatible” ではない)
Android互換	
    Android Compatibility Programに従ったデバイス	
       http://source.android.com/compatibility/index.html	



    Compatibility Definition Document (CDD)に沿って開
     発され、Compatibility Test Suite (CTS)を通過した端
     末	
         Compatibility Definition Document (CDD):仕様	
         Compatibility Test Suite (CTS):テスト

    日本で買えるほぼ全てのスマフォやタブレットは
     Android互換
Android 非互換

    Androidとして公式には認められないデバイス
  ※Compatibility Definition Document (CDD)に従っていな
 いデバイス	
   Google系サービスアプリが利用できない	

   用途を限定したデバイスや安価なデバイスには増え
    つつある
     例)	




ONKYO Internet Stick NT-A1	
 Covia FleadTab CTB-701	
   Kindle Fire HD
Google アカウントとAndroidデバイス	

  多くのGoogleサービスを利用するために必要なID
  Android互換デバイスは、必ずひとつ以上の

   Googleアカウントと紐づいていると見做してよい
      アカウントをアクティベートしないとGoogle   Mapsも
      Google Playも Gmailも使えない
    Google Appsアカウント(独自ドメイン)も可能
Googleアカウント	
    Googleアカウントを軸に様々なサービスを利用可能




                     Androidは、Googleアカウント
                     を使って様々なサービスを利
                     用する入り口となる
アカウントの管理
アカウントへのアクセスリクエスト	
 アカウント認証情報はデバイスが持つ
  アプリ毎に認証情報を管理する必要が無い。
  ユーザーも何度もIDとパスワードを入力する必要が無い。
  アプリから認証済アカウントへのアクセスが容易。
プログラムからの
GOOGLEアカウントの活用
Googleアカウントの利用	
    以前はClientLoginやAuthSubという仕組みを利用。た
     だし2012年の春にdeprecatedに。

     参考)
       ClientLogin	
       https://developers.google.com/accounts/docs/
         AuthForInstalledApps	
       AuthSub	
       https://developers.google.com/accounts/docs/AuthSub


    現在はOAuth 2.0を使うようアナウンス有り
OAuthとは	
    WEBに公開しているデータやAPIに対するアクセ
     スの認可を目的として標準化された通信仕様
      OAuth   RFC5849
      OAuth2.0 RFC6749



    他のプログラムから利用者のGoogleアカウントに
     紐づいているサービスやデータに対するアクセス
     を許したり拒否したりする仕組み
OAuthの主な長所	
    クライアント(コンシューマ)側に認証情報を残さな
     い

    全て許可/全て拒否ではなく、アクセス範囲(ス
     コープ)の単位で扱える

    一度許可したものを後から取り消せる
OAuth2.0/ OAuth1.0	
  OAuth2.0は、OAuth1.0の上位規格。
  OAuth1.0は

       WEBサービスアプリを前提としていた

       シーケンスが複雑で、リクエストの署名やリクエストトーク
      ンが必須であるなど、使いにくい面があった。
        特にJavaScriptなどのWEBアプリから

    OAuth2.0は、OAuth1.0の簡略化を目指したもの。
       シーケンスを簡単に
        リクエストをHTTPSに限定することで、改ざんが無いことを担保す
       るため、署名やトークンが必須ではない
       デスクトップクライアントやJavaScriptからの利用も想定
Google Plugin for Eclipse

    Googleの各サービスのAPIや、開発環境を手軽に
     ダウンロード、セットアップできるEclipse Plugin

    最近はADT(Android Development Tools) も含まれ
     ているので、Androidを使った開発や、Androidと他
     のGoogle APIとを組み合わせた開発でも便利に
     使える

https://developers.google.com/eclipse/
Googleライブラリのセットアップ	

    プロジェクトを右クリック
     ->Google->Add Google APIs…
Googleライブラリのセットアップ	

    必要なライブラリを選択
Googleライブラリのセットアップ	

    プロジェクトのビルドバスに追加される
      依存関係のあるJARも含まれる
APIs Consoleでの設定	
    自作のWEB APIか、既にあるAPIかにかかわらず、
     OAuthを介してGoogleサービスを利用する場合、
     プロジェクトを作成し、コンシューマ側にキーを発
     行する必要がある。

    ひとつのプロジェクトに対して20個のクライアント
     IDが発行できる。
APIs Consoleでの設定	
  Google APIs Console( https://code.google.com/
   apis/console ) からプロジェクトを作成
  メニューの「API Access」 ->「Create OAuth 2.0
   Client ID…」を選択
自作公開APIでの利用例
Google Cloud Endpoints	
    AppEngineをバックエンドとして使うクライアントアプリ
     ケーションの開発をより簡単にすることを目的として
     開発されているAppEngineの新機能
       Google
            Plugin for Eclipseで開発可能
       参考)Google I/O 2012でのコードラボ
       http://tictactoe-codelab.appspot.com/


    現状はまだ限定公開
       Trusted Testers ( https://endpoints-trusted-
        tester.appspot.com/ )に申請して利用する(ローカルサー
        バーで試すだけなら申請不要)
       2012年末のAppEngineのアップデートで導入されるかも?
        と言う噂があったが、まだ正式公開されていない
Cloud Endpoints の主な機能	
  サーバー側APIクラスやコンフィグの生成	
  クライアントAPIライブラリの自動生成

      JavaScript、Objective-C,   Java
    OAuthによるAPI認証の標準サポート
Cloud EndpointsでのAPI定義 (Java)	
    公開したいクラスやメソッドにアノテーションを宣言

@Api(name = "tictactoe")

public class BoardEndpoint {

  @ApiMethod(name = "board.getmove", httpMethod = "POST")

 	
 public Board getmove(Board board) {

   ・・・

  }

	
 ・・・
Cloud EndpointsでのAPI定義 (Java)	
    通常は認証無しで呼べるが、OAuthをサポートす
     る際もアノテーションで対応
     @Api(

        name = "tictactoe",

        clientIds = {"xxxxx.apps.googleusercontent.com",
         "AndroidのClient ID"},

        audiences = {”your_appid.appspot.com"}

     )
     ・・・
公開APIの確認	
    AppEngineにデプロイしたAPIは、API Explorerで確
     認できる

    URL)
      https://developers.google.com/apis-explorer/?
      base=https://your_appid.appspot.com/_ah/api
公開APIの確認	
    公開API群の一覧
公開APIの確認	
    APIが提供するエンドポイントの一覧
公開APIの確認	
    パラメータを指定してAPIの実行テスト
ANDROIDクライアントでの
利用
Androidクライアントからの利用例	
    AccountManagerからAuthトークンを取得

     AccountManager am = AccountManager.get(this);
        Bundle options = new Bundle();
        am.getAuthToken(myAccount_,	
 
            mScope,	
 
            options,	
 
            this,	
 
            new OnTokenAcquired(),	
 
            new Handler(new OnError()));
Androidクライアントからの利用例	
    Authトークンが得られなかった時は認可画面へ
private class OnTokenAcquired implements
AccountManagerCallback<Bundle> {	
 	
 	
 	
 	
 	
 
	
 	
 @Override	
 
	
 	
 public void run(AccountManagerFuture<Bundle> result) {	
 
	
 	
 	
 	
 ...                      	
 
	
 	
 	
 	
 Intent launch = (Intent)
                                           result.get(AccountManager.KEY_INTENT);	
 
	
 	
 	
 	
 if (launch != null) {	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 
	
 	
 	
 	
 	
 	
 	
 	
 startActivityForResult(launch, 0);	
 
	
 	
 	
 	
 	
 	
 	
 	
 return;	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 
	
 	
 	
 	
 }	
 	
 	
 	
 	
 	
 
	
 	
 }	
 
}
Androidクライアントからの利用例	
     リクエスト時はAuthトークンの他にクライアントID等
      も渡す

URL url = new URL("https://www.googleapis.com/・・・");	
 	
 
URLConnection conn = (HttpURLConnection)
url.openConnection(); conn.addRequestProperty("client_id",
your client id);	
 	
 
conn.addRequestProperty("client_secret", your client
secret);	
 	
 
conn.setRequestProperty(“Authorization”, your auth token);
Google Playサービス	
    AndroidアプリとGoogleの各種サービスとの連携を
     さらに容易に行えるように拡張されたコンポーネント
      現状は、従来のアプリからのGoogleアカウント認証機能
      に加え、OAuth 2.0 を用いて、Google +サービスへの認
      可を行えるように拡張されたもの
Google Playサービス	
    各アプリケーションからライブラリを利用してGoogle
     Playサービスアプリと連携する	
                Android Maps v.2もGoogle Playサービ
                ス前提なので、今後はこの形態で提供
                されるAPIが増えそう。
Google Playサービスが入っているデ
     バイス	
  Google Playサービスアプリは、2.2以上のデバイスが対象
  Google Playアプリの最新版と同時にデバイスにインストー
   ルされる
  2.2以上のAndroid互換デバイスであれば、ほぼ例外無く
   使えると考えておいてよさそう	
  「Google Playサービス」というアプリが入っているかどうか
   で判断
Google Playサービスの使い方	
 現時点ではAndroid SDK Managerで、extras/Google Play
  services をインストールすると、
 「[Android SDK]/extras/google/google_play_services」
 の下に、ライブラリプロジェクトやサンプルプロジェクトがダ
  ウンロードされる

    このライブラリプロジェクトをEclipseにインポートし、アプリ
     のプロジェクトから参照する形で利用する
コード例	
    String authToken = null;

 try {

	
      authToken = GoogleAuthUtil.getToken(mActivity,
t.egawa@gmail.com, “oauth2:https://www.googleapis.com/auth/
userinfo.profile”);

 } catch (GooglePlayServicesAvailabilityException playException) {

     // Google Play Servicesが使えないデバイスの場合

 } catch (UserRecoverableAuthException userRecoverableException) {

     // トークンが得られなかった場合

     // 認可画面へ遷移する

     mActivity.startActivityForResult(userRecoverableException.getInten
t(), 1);

 } catch (GoogleAuthException fatalException) {

     // その他の例外

 }

・・・
認可画面の例	
  認可によってアクセス可能なスコープの例
  自カウントに対するGoogle +APIによるア
   クセス
  oauth2:https://www.googleapis.com/auth/
   plus.me
まとめ	

  Googleは、様々なサービスを提供しており、それ
   らをGoogleアカウント経由で利用できる
  Google APIは、OAuth2を使って認証・認可する。
   独自のGoogle APIを作成する為の手段として、
   Google Cloud Endpointsなどが出てきている。	
  様々なGoogleサービスと連携するための土台とし

   て、Google Playサービスの導入、提供が開始さ
   れており、今後はGoogle PlayサービスによるAPI
   の提供が標準的な形態になると思われる
ご清聴ありがとうございました




          EGAWA Takashi

More Related Content

Viewers also liked (6)

IMoNi 2010.06.26
IMoNi 2010.06.26IMoNi 2010.06.26
IMoNi 2010.06.26
Takashi EGAWA
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみた
Masakazu Muraoka
 
Mebic Creative Business Forum 2013
Mebic Creative Business Forum 2013Mebic Creative Business Forum 2013
Mebic Creative Business Forum 2013
Takashi EGAWA
 
ECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIAECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIA
Ken Cooper AIA
 
Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10
Takashi EGAWA
 
Inside the Android AccountManager
Inside the Android AccountManagerInside the Android AccountManager
Inside the Android AccountManager
Samael Wang
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみた
Masakazu Muraoka
 
Mebic Creative Business Forum 2013
Mebic Creative Business Forum 2013Mebic Creative Business Forum 2013
Mebic Creative Business Forum 2013
Takashi EGAWA
 
ECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIAECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIA
Ken Cooper AIA
 
Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10
Takashi EGAWA
 
Inside the Android AccountManager
Inside the Android AccountManagerInside the Android AccountManager
Inside the Android AccountManager
Samael Wang
 

Similar to GDG Shikoku 2013 (20)

Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Firebase によるリアルタイム モバイル開発 @gcpug 福岡Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Google Cloud Platform - Japan
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQuery
Ryo Yamasaki
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
Hiroyuki Nozaki
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
Kenichi Kambara
 
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
Shinichiro Takezaki
 
Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築
Naomichi Yamakita
 
Google Product
Google ProductGoogle Product
Google Product
Daisuke Sugai
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげよう
junichi anno
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ
junichi anno
 
Google I/O 2013に行ったついでにラスベガス戦果報告
Google I/O 2013に行ったついでにラスベガス戦果報告Google I/O 2013に行ったついでにラスベガス戦果報告
Google I/O 2013に行ったついでにラスベガス戦果報告
Shoya Tsukada
 
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービスappengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
Nobuhiro Nakajima
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
 
Google+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 WinterGoogle+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 Winter
Nobuhiro Nakajima
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Kenichi Tatsuhama
 
今から始めるGoogle apps scirpt
今から始めるGoogle apps scirpt今から始めるGoogle apps scirpt
今から始めるGoogle apps scirpt
ikikko
 
API提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijpAPI提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御
Takashi Kanamaru
 
Cloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOICloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOI
Tatsuo Kudo
 
Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Firebase によるリアルタイム モバイル開発 @gcpug 福岡Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Firebase によるリアルタイム モバイル開発 @gcpug 福岡
Google Cloud Platform - Japan
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQuery
Ryo Yamasaki
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
Hiroyuki Nozaki
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
Kenichi Kambara
 
Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築
Naomichi Yamakita
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげよう
junichi anno
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ
junichi anno
 
Google I/O 2013に行ったついでにラスベガス戦果報告
Google I/O 2013に行ったついでにラスベガス戦果報告Google I/O 2013に行ったついでにラスベガス戦果報告
Google I/O 2013に行ったついでにラスベガス戦果報告
Shoya Tsukada
 
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービスappengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
Nobuhiro Nakajima
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
 
Google+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 WinterGoogle+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 Winter
Nobuhiro Nakajima
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Kenichi Tatsuhama
 
今から始めるGoogle apps scirpt
今から始めるGoogle apps scirpt今から始めるGoogle apps scirpt
今から始めるGoogle apps scirpt
ikikko
 
API提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijpAPI提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御
Takashi Kanamaru
 
Cloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOICloud Identity Summit 2011 TOI
Cloud Identity Summit 2011 TOI
Tatsuo Kudo
 

Recently uploaded (6)

第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
Matsushita Laboratory
 
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
ChikakoInami1
 
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
Matsushita Laboratory
 
20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf
Ayachika Kitazaki
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptxSecurity-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
TsukasaKomatsubara
 
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
Matsushita Laboratory
 
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
ChikakoInami1
 
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
Matsushita Laboratory
 
20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf
Ayachika Kitazaki
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptxSecurity-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
TsukasaKomatsubara
 

GDG Shikoku 2013

  • 1. GDG Shikoku #37 徳島テクニカルセッション GOOGLE PLAY SERVICES について Smartium株式会社 江川 崇
  • 2. 江川 崇(EGAWA Takashi)   Smartium株式会社 (http://smartiums.com ) 代表取締役   Google Developers Expert (https://developers.google.com/experts/ )   (株)カトマック・情報技術開発(株)・(株)トップゲート 技術顧問   Androidプログラミング入門 改訂2版   IMoNi、L10N twitter:@t_egg Google+:[email protected]
  • 3. Google Android プログラミング入門改訂2版   江川崇、神原健一、山田暁通、   佐野徹郎、郷田まり子 共著   定価 :3,570円 (本体3,400円)   発売日:2012年8月31日   形態 :B5変 (448ページ)   ISBN :978-4-04-886068-0   アスキー・メディアワークス   達人出版会からPDF版もあり   サンプルを全て詰めたアプリアリマス   https://play.google.com/store/apps/details?id=jp.asciimw.androidbook
  • 4. Remote TestKit   カトマックが提供するAndroid用リモートテスト環境  必要な端末を必要な時間だけ借りてリモートでテスト  ADBが繋がる  PCから画面の操作も可能 http://appkitbox.com/testkit
  • 5. Google Play Serviceについてお話しし ようかと思いましたが…   Google Play Services だけだとすぐ終わりそう   Google Play Services はGoogle APIのプラット フォーム   AndroidにおけるGoogle APIの活用全般のお話し します。
  • 6. GDG Shikoku #37 徳島テクニカルセッション GOOGLE API の活用 FOR ANDROID Smartium株式会社 江川 崇
  • 7. Agenda   GoogleアカウントとAndroid 互換/非互換  Android  GoogleアカウントとAndroidデバイス   プログラムからのGoogleアカウントの活用  OAuth  Google Plugin for Eclipse  Google Cloud Endpoints   Androidクライアントでの利用  AccountManager  Googl Playサービス
  • 9. Android 互換/非互換   世の中の全てのAndroidデバイスは、必ず以下の 2種類のいずれかに該当する。   Android互換(“Android compatible” である)   Android非互換(“Android compatible” ではない)
  • 10. Android互換   Android Compatibility Programに従ったデバイス   http://source.android.com/compatibility/index.html   Compatibility Definition Document (CDD)に沿って開 発され、Compatibility Test Suite (CTS)を通過した端 末   Compatibility Definition Document (CDD):仕様   Compatibility Test Suite (CTS):テスト   日本で買えるほぼ全てのスマフォやタブレットは Android互換
  • 11. Android 非互換   Androidとして公式には認められないデバイス   ※Compatibility Definition Document (CDD)に従っていな いデバイス  Google系サービスアプリが利用できない  用途を限定したデバイスや安価なデバイスには増え つつある 例) ONKYO Internet Stick NT-A1 Covia FleadTab CTB-701 Kindle Fire HD
  • 12. Google アカウントとAndroidデバイス   多くのGoogleサービスを利用するために必要なID   Android互換デバイスは、必ずひとつ以上の Googleアカウントと紐づいていると見做してよい  アカウントをアクティベートしないとGoogle Mapsも Google Playも Gmailも使えない   Google Appsアカウント(独自ドメイン)も可能
  • 13. Googleアカウント   Googleアカウントを軸に様々なサービスを利用可能 Androidは、Googleアカウント を使って様々なサービスを利 用する入り口となる
  • 16. Googleアカウントの利用   以前はClientLoginやAuthSubという仕組みを利用。た だし2012年の春にdeprecatedに。 参考)   ClientLogin https://developers.google.com/accounts/docs/ AuthForInstalledApps   AuthSub https://developers.google.com/accounts/docs/AuthSub   現在はOAuth 2.0を使うようアナウンス有り
  • 17. OAuthとは   WEBに公開しているデータやAPIに対するアクセ スの認可を目的として標準化された通信仕様  OAuth RFC5849  OAuth2.0 RFC6749   他のプログラムから利用者のGoogleアカウントに 紐づいているサービスやデータに対するアクセス を許したり拒否したりする仕組み
  • 18. OAuthの主な長所   クライアント(コンシューマ)側に認証情報を残さな い   全て許可/全て拒否ではなく、アクセス範囲(ス コープ)の単位で扱える   一度許可したものを後から取り消せる
  • 19. OAuth2.0/ OAuth1.0   OAuth2.0は、OAuth1.0の上位規格。   OAuth1.0は   WEBサービスアプリを前提としていた   シーケンスが複雑で、リクエストの署名やリクエストトーク ンが必須であるなど、使いにくい面があった。   特にJavaScriptなどのWEBアプリから   OAuth2.0は、OAuth1.0の簡略化を目指したもの。   シーケンスを簡単に   リクエストをHTTPSに限定することで、改ざんが無いことを担保す るため、署名やトークンが必須ではない   デスクトップクライアントやJavaScriptからの利用も想定
  • 20. Google Plugin for Eclipse   Googleの各サービスのAPIや、開発環境を手軽に ダウンロード、セットアップできるEclipse Plugin   最近はADT(Android Development Tools) も含まれ ているので、Androidを使った開発や、Androidと他 のGoogle APIとを組み合わせた開発でも便利に 使える https://developers.google.com/eclipse/
  • 21. Googleライブラリのセットアップ   プロジェクトを右クリック ->Google->Add Google APIs…
  • 22. Googleライブラリのセットアップ   必要なライブラリを選択
  • 23. Googleライブラリのセットアップ   プロジェクトのビルドバスに追加される  依存関係のあるJARも含まれる
  • 24. APIs Consoleでの設定   自作のWEB APIか、既にあるAPIかにかかわらず、 OAuthを介してGoogleサービスを利用する場合、 プロジェクトを作成し、コンシューマ側にキーを発 行する必要がある。   ひとつのプロジェクトに対して20個のクライアント IDが発行できる。
  • 25. APIs Consoleでの設定   Google APIs Console( https://code.google.com/ apis/console ) からプロジェクトを作成   メニューの「API Access」 ->「Create OAuth 2.0 Client ID…」を選択
  • 26. 自作公開APIでの利用例 Google Cloud Endpoints   AppEngineをバックエンドとして使うクライアントアプリ ケーションの開発をより簡単にすることを目的として 開発されているAppEngineの新機能   Google Plugin for Eclipseで開発可能   参考)Google I/O 2012でのコードラボ http://tictactoe-codelab.appspot.com/   現状はまだ限定公開   Trusted Testers ( https://endpoints-trusted- tester.appspot.com/ )に申請して利用する(ローカルサー バーで試すだけなら申請不要)   2012年末のAppEngineのアップデートで導入されるかも? と言う噂があったが、まだ正式公開されていない
  • 27. Cloud Endpoints の主な機能   サーバー側APIクラスやコンフィグの生成   クライアントAPIライブラリの自動生成  JavaScript、Objective-C, Java   OAuthによるAPI認証の標準サポート
  • 28. Cloud EndpointsでのAPI定義 (Java)   公開したいクラスやメソッドにアノテーションを宣言 @Api(name = "tictactoe")
 public class BoardEndpoint {
   @ApiMethod(name = "board.getmove", httpMethod = "POST")
   public Board getmove(Board board) {
    ・・・
   }
 ・・・
  • 29. Cloud EndpointsでのAPI定義 (Java)   通常は認証無しで呼べるが、OAuthをサポートす る際もアノテーションで対応 @Api(
    name = "tictactoe",
    clientIds = {"xxxxx.apps.googleusercontent.com", "AndroidのClient ID"},
    audiences = {”your_appid.appspot.com"}
 ) ・・・
  • 30. 公開APIの確認   AppEngineにデプロイしたAPIは、API Explorerで確 認できる   URL)  https://developers.google.com/apis-explorer/? base=https://your_appid.appspot.com/_ah/api
  • 31. 公開APIの確認   公開API群の一覧
  • 32. 公開APIの確認   APIが提供するエンドポイントの一覧
  • 33. 公開APIの確認   パラメータを指定してAPIの実行テスト
  • 35. Androidクライアントからの利用例   AccountManagerからAuthトークンを取得 AccountManager am = AccountManager.get(this); Bundle options = new Bundle(); am.getAuthToken(myAccount_, mScope, options, this, new OnTokenAcquired(), new Handler(new OnError()));
  • 36. Androidクライアントからの利用例   Authトークンが得られなかった時は認可画面へ private class OnTokenAcquired implements AccountManagerCallback<Bundle> { @Override public void run(AccountManagerFuture<Bundle> result) { ... Intent launch = (Intent) result.get(AccountManager.KEY_INTENT); if (launch != null) { startActivityForResult(launch, 0); return; } } }
  • 37. Androidクライアントからの利用例   リクエスト時はAuthトークンの他にクライアントID等 も渡す URL url = new URL("https://www.googleapis.com/・・・"); URLConnection conn = (HttpURLConnection) url.openConnection(); conn.addRequestProperty("client_id", your client id); conn.addRequestProperty("client_secret", your client secret); conn.setRequestProperty(“Authorization”, your auth token);
  • 38. Google Playサービス   AndroidアプリとGoogleの各種サービスとの連携を さらに容易に行えるように拡張されたコンポーネント  現状は、従来のアプリからのGoogleアカウント認証機能 に加え、OAuth 2.0 を用いて、Google +サービスへの認 可を行えるように拡張されたもの
  • 39. Google Playサービス   各アプリケーションからライブラリを利用してGoogle Playサービスアプリと連携する Android Maps v.2もGoogle Playサービ ス前提なので、今後はこの形態で提供 されるAPIが増えそう。
  • 40. Google Playサービスが入っているデ バイス   Google Playサービスアプリは、2.2以上のデバイスが対象   Google Playアプリの最新版と同時にデバイスにインストー ルされる   2.2以上のAndroid互換デバイスであれば、ほぼ例外無く 使えると考えておいてよさそう   「Google Playサービス」というアプリが入っているかどうか で判断
  • 41. Google Playサービスの使い方  現時点ではAndroid SDK Managerで、extras/Google Play services をインストールすると、  「[Android SDK]/extras/google/google_play_services」  の下に、ライブラリプロジェクトやサンプルプロジェクトがダ ウンロードされる   このライブラリプロジェクトをEclipseにインポートし、アプリ のプロジェクトから参照する形で利用する
  • 42. コード例 String authToken = null;
  try {
  authToken = GoogleAuthUtil.getToken(mActivity, [email protected], “oauth2:https://www.googleapis.com/auth/ userinfo.profile”);
  } catch (GooglePlayServicesAvailabilityException playException) {
      // Google Play Servicesが使えないデバイスの場合
  } catch (UserRecoverableAuthException userRecoverableException) {
      // トークンが得られなかった場合
      // 認可画面へ遷移する
      mActivity.startActivityForResult(userRecoverableException.getInten t(), 1);
  } catch (GoogleAuthException fatalException) {
      // その他の例外
  }
 ・・・
  • 43. 認可画面の例   認可によってアクセス可能なスコープの例   自カウントに対するGoogle +APIによるア クセス   oauth2:https://www.googleapis.com/auth/ plus.me
  • 44. まとめ   Googleは、様々なサービスを提供しており、それ らをGoogleアカウント経由で利用できる   Google APIは、OAuth2を使って認証・認可する。 独自のGoogle APIを作成する為の手段として、 Google Cloud Endpointsなどが出てきている。   様々なGoogleサービスと連携するための土台とし て、Google Playサービスの導入、提供が開始さ れており、今後はGoogle PlayサービスによるAPI の提供が標準的な形態になると思われる