Dart flightschool cloudendpoint with dart

Post on 22-May-2015

1227 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

Transcript

Google Cloud Endpointswith

Dartlang

誰?

大橋啓介

と申します

@soundTricker318http://goo.gl/ZpUOs

どこの

人?

http://www.bfts.co.jp

何やってる?

https://www.flickr.com/photos/centralasian/ (CC)

電車プログラマ

ぼくと

altjs

GWT

GWT Bootstrap※コミッター

CoffeeScript

←Javaで書ける夢を見た

←ナマの JSツライ※Javascript → Javaのポーティング

←漠然とした不安感※今のところココに落ち着いてる

話す事

Google Cloud Endpointswith

Dartlang

Google CloudEndpoints?

https://developers.google.com/appengine/docs/java/endpoints/

What?Google CloudEndpoints?

https://developers.google.com/appengine/docs/java/endpoints/

What?Google CloudEndpoints?

AppEngine 上にバックエンド API を簡単に作成する仕組

https://developers.google.com/appengine/docs/java/endpoints/

What?Google CloudEndpoints?作成したAPI に対するクライアントライブラリを自動生成

使える言語Google CloudEndpoints?

サーバサイド

PythonPythonでCloud Endpointsの事例をあまりみないのでどっか LTとかするとウケそう

使える言語Google CloudEndpoints?

サーバサイド

Java事例もよく見るので始めるのは楽かもJAX-RSに似てるでも結構違う

http://www.flickr.com/photos/andypiper/

使える言語Google CloudEndpoints?

サーバサイド

GoGoogleが直接サポートしているわけではなく、サードパーティツールを使う (後述 )個人的には好き

http://www.flickr.com/photos/andybons/

クライアントGoogle CloudEndpoints?

自動生成ライブラリ

AndroidCloud Endpointsと触ったことが無い ( ー `д ー ´) キリッ

https://www.flickr.com/photos/etnyk/

クライアントGoogle CloudEndpoints?

自動生成ライブラリ

iPhone持ってない ( ー `д ー ´) キリッ

https://www.flickr.com/photos/reticulating/

クライアントGoogle CloudEndpoints?

自動生成ライブラリ

JavaScript自動生成できる、Google API client for JavaScript経由で利用時に作成されたものが使える感じ?

NoImage

クライアントGoogle CloudEndpoints?

自動生成ライブラリ

Dartココに来てやっと ( ー `д ー ´) キリッただ Googleがサポートしているわけではなくサードパーティ製

Google CloudEndpoints

TRY

Google CloudEndpoints

TRY

Google CloudEndpoints

TRY

Third party Third party

サーバサイドGoogle CloudEndpoints

TRY

環境• Appengine Go SDK• Macユーザは brewからでも OK

$ brew install go-app-engine-64

サーバサイドGoogle CloudEndpoints

TRY

ライブラリインストール• go-endpointsを使います

$ go get github.com/crhym3/go-endpoints/endpoints※インストール時にエラーが出ますが気にしないでください。

サーバサイドGoogle CloudEndpoints

TRY

通信用構造体 (struct)を作成• go-endpointsが自動で

JSON←→Struct変換してくれます。

サーバサイドGoogle CloudEndpoints

TRY

通信用構造体 (struct)を作成

サーバサイドGoogle CloudEndpoints

TRY

サービス (実処理 )を作成• go-endpointsが変換した structを引数に渡してくれます。

サーバサイドGoogle CloudEndpoints

TRY

サービス (実処理 )を作成

サーバサイドGoogle CloudEndpoints

TRY

サービスを登録• サービスを go-endpontsに登録

サーバサイドGoogle CloudEndpoints

TRY

サービスを登録

サーバサイドGoogle CloudEndpoints

TRY

app.yamlで設定• go-endpontsが動くようにします。

application: my-app-idversion: v1threadsafe: true

runtime: goapi_version: go1

handlers:- url: /.* script: _go_app

# ここが絶対に必要- url: /_ah/spi/.* script: _go_app

サーバサイドGoogle CloudEndpoints

TRY

起動• appengine go SDK経由

$ goapp serve

サーバサイドGoogle CloudEndpoints

TRY

テスト• http://localhost:8080/_ah/api/explor

er

とかに行けば試せる

サーバサイドGoogle CloudEndpoints

TRY

テスト

サーバサイドGoogle CloudEndpoints

TRY

リリース• goapp deployでリリース

$ goapp deploy

クライアントGoogle CloudEndpoints

TRY

ライブラリの Generatorをインスコ• Generatorがあるのでそれを

Githubから持ってきます。$ git clone

https://github.com/dart-gde/discovery_api_dart_client_generator

$ cd discovery_api_dart_client_generator

$ pub install

クライアントGoogle CloudEndpoints

TRY

ライブラリを作成• generate.dartを呼び出し• dart_{APIの名前 }のディレクトリが出来る$

URL=‘https://hogehoge.appstop.com/_ah/api/discovery/v1/apis/greeting/v1/rest‘

$ curl -s -o greetings.rpc.discovery $URL

$ bin/generate.dart –I greetings.rpc.discovery –o ../ --no-prefix

使い方Google CloudEndpoints

TRY

設定• pubspec.yamlでローカルライブラリを呼び出し

name: GreetingAppdescription: A sample web applicationdependencies: browser: any greeting_v1_api : path : /path/to/dart_greeting_v1_api_client

使い方Google CloudEndpoints

TRY

Import• {API名 }_browser.dart

{API名 }_client.dartを import

import 'package:greeting_v1_api/greeting_v1_api_browser.dart' as greetingLib;import 'package:greeting_v1_api/greeting_v1_api_client.dart' as greetingClient; 

使い方Google CloudEndpoints

TRY

呼び出し

greetingLib.Greeting greeting = new greetingLib.Greeting(); greeting.greets.list().then( (greetingClient.GreetingsList value)=> print(value) ); 

• {API名 }_client側にある {API名 }のインスタンスを作成し、呼び出し

Google CloudEndpoints

TRY

Demo

使い所 ?Google CloudEndpoints

TRY

使いドコロ• コンソールアプリケーション• Chrome Extension/App• Chrome Appなら cordovaとか経由で Android/iPhoneでも使えるかも ?

• 割りと大規模なプロジェクト ?

End

Appendix

元 GWTTER から見たDart

お願いアンケートにご協力

を!http://goo.gl/98QcPN

top related