SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

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 2013Takashi EGAWA
 
ECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIAECSU Student Housing - Ken Cooper AIA
ECSU Student Housing - Ken Cooper AIAKen Cooper AIA
 
Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10Python hackathon 2010. 07. 10
Python hackathon 2010. 07. 10Takashi EGAWA
 
Inside the Android AccountManager
Inside the Android AccountManagerInside the Android AccountManager
Inside the Android AccountManagerSamael Wang
 

En vedette (6)

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

Similaire à GDG Shikoku 2013

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 WinterNobuhiro Nakajima
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。Hiroyuki Nozaki
 
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
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービスcch-robo
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without ServersKeisuke Nishitani
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang啓介 大橋
 
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 BigQueryRyo Yamasaki
 
プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携Naohiro Fujie
 
はじめてのAndroid
はじめてのAndroidはじめてのAndroid
はじめてのAndroidhiro nemu
 
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送Google Cloud Platform - Japan
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用tksyokoyama
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようjunichi anno
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~decode2016
 
はじめてのAndroid in 高知
はじめてのAndroid in 高知はじめてのAndroid in 高知
はじめてのAndroid in 高知hiro nemu
 
つ部 Android Studio 勉強会 12/7
つ部 Android Studio 勉強会 12/7つ部 Android Studio 勉強会 12/7
つ部 Android Studio 勉強会 12/7Hikaru Wada
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティKazushi Kamegawa
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioSoichiro Kashima
 
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.FormsThinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.FormsSatoru Fujimori
 

Similaire à GDG Shikoku 2013 (20)

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
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
 
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 対応サービス
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービス
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golanggcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
 
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
 
プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携
 
はじめてのAndroid
はじめてのAndroidはじめてのAndroid
はじめてのAndroid
 
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
 
20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用20111203 gdd2011フィードバック 公開用
20111203 gdd2011フィードバック 公開用
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげよう
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
 
はじめてのAndroid in 高知
はじめてのAndroid in 高知はじめてのAndroid in 高知
はじめてのAndroid in 高知
 
つ部 Android Studio 勉強会 12/7
つ部 Android Studio 勉強会 12/7つ部 Android Studio 勉強会 12/7
つ部 Android Studio 勉強会 12/7
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティ
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
 
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.FormsThinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
 

Dernier

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Dernier (8)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

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+:t.egawa@gmail.com
  • 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, 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) {
      // その他の例外
  }
 ・・・
  • 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 の提供が標準的な形態になると思われる