Google Cloud Endpoints with Dartlang
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