Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Google Cloud Endpoints
with Golang
@soundTricker318
http://goo.gl/ZpUOs
どこの人?
http://www.bfts.co.jp
何やってる?
https://www.flickr.com/photos/centralasian/ (CC)
電
車
プ
ロ
グ
ラ
マ
話す事
http://creativecommons.org/licenses/by/3.0/us
https://github.com/mholt/golang-graphics/blob/master/official/talks.png
Google Cloud Endpoints
with
Golang
Google
Cloud
Endpoints
https://developers.google.com/appengine/docs/java/endpoints/
What?
Google
Cloud
Endpoints?
https://developers.google.com/appengine/docs/java/endpoints/
What?
Google
Cloud
Endpoints?
AppEngine上に
バックエンドAPIを
簡単に作成する仕組
https://developers.google.com/appengine/docs/java/endpoints/
What?
Google
Cloud
Endpoints?
作成したAPIに対する
クライアントライブラリを
自動生成
使える言語
Google
Cloud
Endpoints?
サーバサイド
使える言語
Google
Cloud
Endpoints?
サーバサイド
Python
Pythonで
Cloud Endpointsの
事例をあまりみないので
どっかLTとかするとウケそう
使える言語
Google
Cloud
Endpoints?
サーバサイド
Java
事例もよく見るので
始めるのは楽かも
JAX-RSに似てる
でも結構違う
http://www.flickr.com/photos/andypiper/
使え…..
Google
Cloud
Endpoints?
サーバサイド
PHP
過去にDeveloper Liveで
簡単なバージョンが実装されるも
その後詳細不明…
https://www.youtube.com/watch?v=yue4
...
使える言語
Google
Cloud
Endpoints?
サーバサイド
Go
Googleが
直接サポートしているわけではなく、
サードパーティフレームワークを
使う(後述) 個人的には好き
http://www.flickr.com/pho...
使える言語
Google
Cloud
Endpoints?
クライアント
クライアント
Google
Cloud
Endpoints?
自動生成ライブラリ
Android
Cloud Endpointsと
触ったことが無い( ー`дー´)キリッ
https://www.flickr.com/photos/etnyk/
クライアント
Google
Cloud
Endpoints?
自動生成ライブラリ
iPhone
持ってない( ー`дー´)キリッ
https://www.flickr.com/photos/reticulating/
クライアント
Google
Cloud
Endpoints?
自動生成ライブラリ
JavaScript
自動生成できる、
Google API client for JavaScript経由で
利用時に作成されたものが使える
感じ?
No
Im...
クライアント
Google
Cloud
Endpoints?
自動生成ライブラリ
Dart
サードパーティ製
Dartを含めて自分で好きな言語の
クライアントLibrary Genは作れる
Google
Cloud
Endpoints
T
サーバサイド
Google
Cloud
Endpoints
T
サーバサイド
Google
Cloud
Endpoints
T
環境
• Appengine Go SDK
• MacユーザはbrewからでもOK
• 最近はGoogle Cloud SDK推奨
$ curl
https://dl.google...
サーバサイド
Google
Cloud
Endpoints
T
ライブラリインストール
• go-endpointsを使います
• Cloud Endpoinsフレームワーク
$ go get github.com/crhym3/go-
end...
サーバサイド
Google
Cloud
Endpoints
T
ライブラリインストール(非必須)
• Datastore周りはgoonがオヌヌメ
• NDBみたいなもの
$ go get github.com/mjibson/goon
※インス...
サーバサイド
Google
Cloud
Endpoints
T
サーバサイド
Google
Cloud
Endpoints
T
実装
• 4段階
1. 通信用構造体を作成
2. サービス(実処理部)を作成
3. サービスを登録
4. app.yamlを登録
• 詳しくは↓ or →
http://goo.g...
サーバサイド
Google
Cloud
Endpoints
T
通信用構造体(struct)を作成
• go-endpointsが自動で
JSON←→Struct変換してくれます。
サーバサイド
Google
Cloud
Endpoints
T
通信用構造体(struct)を作成
Datastore格納兼JSON通信用
サーバサイド
Google
Cloud
Endpoints
T
通信用構造体(struct)を作成
JSON Arrayでやりとりする場合は別の構
造体が必要
サーバサイド
Google
Cloud
Endpoints
T
通信用構造体(struct)を作成
QueryString、URL ParamもStructで表現
注釈を付けれる
サーバサイド
Google
Cloud
Endpoints
T
サービス(実処理)を作成
• 単純なメソッドを定義します。
• go-endpointsが変換したstructを
引数に渡してくれます。
サーバサイド
Google
Cloud
Endpoints
T
サービス(実処理)を作成
サーバサイド
Google
Cloud
Endpoints
T
脇道:goon
• goonはGo版NDBみたいなもの
• GAE/GのDatastore周りを楽にしてく
れる
• Key系の検索は全てin-memory,
Memcacheにキ...
サーバサイド
Google
Cloud
Endpoints
T
脇道:goon
goon無し
type Group struct {
Id int64 `datastore:"-" goon:"id"`
Name string
}
n := goon.NewGoon(r)
g := &Group{Name: "name"}
err :=...
サーバサイド
Google
Cloud
Endpoints
T
サービスを登録
• サービスをgo-endpontsに登録
サーバサイド
Google
Cloud
Endpoints
T
サーバサイド
Google
Cloud
Endpoints
T
app.yamlで設定
• go-endpontsが動くようにします。
application: gpc-ja-night-27-go-endpoints
version: v1
...
サーバサイド
Google
Cloud
Endpoints
T
起動
• appengine go SDK経由
$ goapp serve
サーバサイド
Google
Cloud
Endpoints
T
テスト
• http://localhost:8080/_ah/api/explor
er
とかに行けば試せる
サーバサイド
Google
Cloud
Endpoints
T
テスト
サーバサイド
Google
Cloud
Endpoints
T
リリース
• goapp deployでリリース
$ goapp deploy
Google
Cloud
Endpoints
T
http://goo.gl/248Dh3
使い所?
Google
Cloud
Endpoints
T
メリット
• 爆速スピンアップ
• 処理に集中できる
• テストしやすい気がする
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
Upcoming SlideShare
Loading in …5
×

gcp ja night #27 Google Cloud Endpoints with Golang

1,923 views

Published on

gcp ja night #27 Google Cloud Endpoints with Golang

Published in: Technology

gcp ja night #27 Google Cloud Endpoints with Golang

  1. 1. Google Cloud Endpoints with Golang
  2. 2. @soundTricker318 http://goo.gl/ZpUOs
  3. 3. どこの人?
  4. 4. http://www.bfts.co.jp
  5. 5. 何やってる?
  6. 6. https://www.flickr.com/photos/centralasian/ (CC) 電 車 プ ロ グ ラ マ
  7. 7. 話す事 http://creativecommons.org/licenses/by/3.0/us https://github.com/mholt/golang-graphics/blob/master/official/talks.png
  8. 8. Google Cloud Endpoints with Golang
  9. 9. Google Cloud Endpoints
  10. 10. https://developers.google.com/appengine/docs/java/endpoints/ What? Google Cloud Endpoints?
  11. 11. https://developers.google.com/appengine/docs/java/endpoints/ What? Google Cloud Endpoints? AppEngine上に バックエンドAPIを 簡単に作成する仕組
  12. 12. https://developers.google.com/appengine/docs/java/endpoints/ What? Google Cloud Endpoints? 作成したAPIに対する クライアントライブラリを 自動生成
  13. 13. 使える言語 Google Cloud Endpoints? サーバサイド
  14. 14. 使える言語 Google Cloud Endpoints? サーバサイド Python Pythonで Cloud Endpointsの 事例をあまりみないので どっかLTとかするとウケそう
  15. 15. 使える言語 Google Cloud Endpoints? サーバサイド Java 事例もよく見るので 始めるのは楽かも JAX-RSに似てる でも結構違う http://www.flickr.com/photos/andypiper/
  16. 16. 使え….. Google Cloud Endpoints? サーバサイド PHP 過去にDeveloper Liveで 簡単なバージョンが実装されるも その後詳細不明… https://www.youtube.com/watch?v=yue4 rcGJU
  17. 17. 使える言語 Google Cloud Endpoints? サーバサイド Go Googleが 直接サポートしているわけではなく、 サードパーティフレームワークを 使う(後述) 個人的には好き http://www.flickr.com/photos/andybons/
  18. 18. 使える言語 Google Cloud Endpoints? クライアント
  19. 19. クライアント Google Cloud Endpoints? 自動生成ライブラリ Android Cloud Endpointsと 触ったことが無い( ー`дー´)キリッ https://www.flickr.com/photos/etnyk/
  20. 20. クライアント Google Cloud Endpoints? 自動生成ライブラリ iPhone 持ってない( ー`дー´)キリッ https://www.flickr.com/photos/reticulating/
  21. 21. クライアント Google Cloud Endpoints? 自動生成ライブラリ JavaScript 自動生成できる、 Google API client for JavaScript経由で 利用時に作成されたものが使える 感じ? No Image
  22. 22. クライアント Google Cloud Endpoints? 自動生成ライブラリ Dart サードパーティ製 Dartを含めて自分で好きな言語の クライアントLibrary Genは作れる
  23. 23. Google Cloud Endpoints T
  24. 24. サーバサイド Google Cloud Endpoints T
  25. 25. サーバサイド Google Cloud Endpoints T 環境 • Appengine Go SDK • MacユーザはbrewからでもOK • 最近はGoogle Cloud SDK推奨 $ curl https://dl.google.com/dl/cloudsdk/release /install_google_cloud_sdk.bash | bash
  26. 26. サーバサイド Google Cloud Endpoints T ライブラリインストール • go-endpointsを使います • Cloud Endpoinsフレームワーク $ go get github.com/crhym3/go- endpoints/endpoints ※インストール時にエラーが出ますが気にしないでください。
  27. 27. サーバサイド Google Cloud Endpoints T ライブラリインストール(非必須) • Datastore周りはgoonがオヌヌメ • NDBみたいなもの $ go get github.com/mjibson/goon ※インストール時にエラーが出ますが気にしないでください。
  28. 28. サーバサイド Google Cloud Endpoints T
  29. 29. サーバサイド Google Cloud Endpoints T 実装 • 4段階 1. 通信用構造体を作成 2. サービス(実処理部)を作成 3. サービスを登録 4. app.yamlを登録 • 詳しくは↓ or → http://goo.gl/gBrZAD
  30. 30. サーバサイド Google Cloud Endpoints T 通信用構造体(struct)を作成 • go-endpointsが自動で JSON←→Struct変換してくれます。
  31. 31. サーバサイド Google Cloud Endpoints T 通信用構造体(struct)を作成 Datastore格納兼JSON通信用
  32. 32. サーバサイド Google Cloud Endpoints T 通信用構造体(struct)を作成 JSON Arrayでやりとりする場合は別の構 造体が必要
  33. 33. サーバサイド Google Cloud Endpoints T 通信用構造体(struct)を作成 QueryString、URL ParamもStructで表現 注釈を付けれる
  34. 34. サーバサイド Google Cloud Endpoints T サービス(実処理)を作成 • 単純なメソッドを定義します。 • go-endpointsが変換したstructを 引数に渡してくれます。
  35. 35. サーバサイド Google Cloud Endpoints T サービス(実処理)を作成
  36. 36. サーバサイド Google Cloud Endpoints T 脇道:goon • goonはGo版NDBみたいなもの • GAE/GのDatastore周りを楽にしてく れる • Key系の検索は全てin-memory, Memcacheにキャッシュ/検索
  37. 37. サーバサイド Google Cloud Endpoints T 脇道:goon goon無し
  38. 38. type Group struct { Id int64 `datastore:"-" goon:"id"` Name string } n := goon.NewGoon(r) g := &Group{Name: "name"} err := n.Put(g) サーバサイド Google Cloud Endpoints T 脇道:goon goon有り
  39. 39. サーバサイド Google Cloud Endpoints T サービスを登録 • サービスをgo-endpontsに登録
  40. 40. サーバサイド Google Cloud Endpoints T
  41. 41. サーバサイド Google Cloud Endpoints T app.yamlで設定 • go-endpontsが動くようにします。 application: gpc-ja-night-27-go-endpoints version: v1 runtime: go api_version: go1 handlers: - url: /.* script: _go_app # ここが絶対に必要 - url: /_ah/spi/.* script: _go_app
  42. 42. サーバサイド Google Cloud Endpoints T 起動 • appengine go SDK経由 $ goapp serve
  43. 43. サーバサイド Google Cloud Endpoints T テスト • http://localhost:8080/_ah/api/explor er とかに行けば試せる
  44. 44. サーバサイド Google Cloud Endpoints T テスト
  45. 45. サーバサイド Google Cloud Endpoints T リリース • goapp deployでリリース $ goapp deploy
  46. 46. Google Cloud Endpoints T http://goo.gl/248Dh3
  47. 47. 使い所? Google Cloud Endpoints T メリット • 爆速スピンアップ • 処理に集中できる • テストしやすい気がする

×