SlideShare una empresa de Scribd logo
1 de 51
Google Cloud Endpoints
with
Dartlang
@soundTricker318
http://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 Endpoints
with
Dartlang
Google
Cloud
Endpoints
?

Google
Cloud
Endpoints

What?

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

Google
Cloud
Endpoints

What?

AppEngine上に
バックエンドAPIを
簡単に作成する仕組
https://developers.google.com/appengine/docs/java/endpoints/
?

Google
Cloud
Endpoints

What?

作成したAPIに対する
クライアントライブラ
リを

自動生成
https://developers.google.com/appengine/docs/java/endpoints/
?

Google
Cloud
Endpoints

使える言語

サーバサイド

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

Google
Cloud
Endpoints

使える言語

サーバサイド

Java
事例もよく見るので
始めるのは楽かも
JAX-RSに似てる
でも結構違う
http://www.flickr.com/photos/andypiper/
?

Google
Cloud
Endpoints

使える言語

サーバサイド

Go

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

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

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

クライアント

自動生成ライブラリ

No
Image

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

Google
Cloud
Endpoints

クライアント

自動生成ライブラリ

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

Google
Cloud
Endpoints
T

Google
Cloud
Endpoints
T

Google
Cloud
Endpoints

Third party

Third party
T

Google
Cloud
Endpoints

サーバサイド

環境
•

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

$ brew install go-app-engine-64
Google
Cloud
Endpoints

T

サーバサイド

ライブラリインストール
•

go-endpointsを使います

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

Google
Cloud
Endpoints

サーバサイド

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

go-endpointsが自動で
JSON←→Struct変換してくれます。
T

Google
Cloud
Endpoints

サーバサイド

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

Google
Cloud
Endpoints

サーバサイド

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

go-endpointsが変換したstructを
引数に渡してくれます。
T

Google
Cloud
Endpoints

サーバサイド

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

Google
Cloud
Endpoints

サーバサイド

サービスを登録
•

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

Google
Cloud
Endpoints

サーバサイド

サービスを登録
T

Google
Cloud
Endpoints

サーバサイド

app.yamlで設定
•

go-endpontsが動くようにします。
application: my-app-id
version: v1
threadsafe: true
runtime: go
api_version: go1

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

Google
Cloud
Endpoints

サーバサイド

起動
•

appengine go SDK経由

$ goapp serve
T

Google
Cloud
Endpoints

サーバサイド

テスト
•

http://localhost:8080/_ah/api/explor
er
とかに行けば試せる
T

Google
Cloud
Endpoints

テスト

サーバサイド
T

Google
Cloud
Endpoints

サーバサイド

リリース
•

goapp deployでリリース

$ goapp deploy
T

Google
Cloud
Endpoints

クライアント

ライブラリのGeneratorをインス
コ GeneratorがあるのでそれをGithub
•
から持ってきます。
$ git clone https://github.com/dartgde/discovery_api_dart_client_generator
$ cd discovery_api_dart_client_generator
$ pub install
T

Google
Cloud
Endpoints

クライアント

ライブラリを作成
•
•

generate.dartを呼び出し
dart_{APIの名前}のディレクトリが出
$ URL=‘https://hogehoge.appstop.com/_ah/api/discove
ry/v1/apis/greeting/v1/rest‘
$ curl -s -o greetings.rpc.discovery $URL
$ bin/generate.dart –I greetings.rpc.discovery –o ../ -no-prefix
T

Google
Cloud
Endpoints

使い方

設定
•

pubspec.yamlでローカルライブラ
リを呼び出し
name: GreetingApp
description: A sample web application
dependencies:
browser: any
greeting_v1_api :
path : /path/to/dart_greeting_v1_api_client
T

Google
Cloud
Endpoints

使い方

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;
T

Google
Cloud
Endpoints

使い方

呼び出し
•

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

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

Google
Cloud
Endpoints
T

Google
Cloud
Endpoints

使い所?

使いドコロ
•
•

コンソールアプリケーション
Chrome Extension/App
• Chrome Appならcordovaとか経由
でAndroid/iPhoneでも使えるか
も?
• 割りと大規模なプロジェクト?
Appendix
元GWTTERから見た
Dart
お願い
アンケートにご協力
http://goo.gl/98QcPN
を!

Más contenido relacionado

La actualidad más candente

PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化Takashi Okamoto
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能Takayoshi Tanaka
 
オープンソースで始めるオフラインアプリケーション開発入門
オープンソースで始めるオフラインアプリケーション開発入門オープンソースで始めるオフラインアプリケーション開発入門
オープンソースで始めるオフラインアプリケーション開発入門Fumio SAGAWA
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTakayoshi Tanaka
 
Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923Staffnet_Inc
 
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたHayashi Yuichi
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managersHayashi Yuichi
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おうhirooooo
 
Swaggerのさわりだけ
SwaggerのさわりだけSwaggerのさわりだけ
SwaggerのさわりだけMasakazu Muraoka
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うことAkira Inoue
 
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話雅也 山本
 
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?啓介 大橋
 
React native vol3
React native vol3React native vol3
React native vol3dcubeio
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project TyeYuta Matsumura
 
GraphQLについての5分間
GraphQLについての5分間GraphQLについての5分間
GraphQLについての5分間Matsuo Obu
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 

La actualidad más candente (20)

PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
 
オープンソースで始めるオフラインアプリケーション開発入門
オープンソースで始めるオフラインアプリケーション開発入門オープンソースで始めるオフラインアプリケーション開発入門
オープンソースで始めるオフラインアプリケーション開発入門
 
LIGでのDocker活用
LIGでのDocker活用LIGでのDocker活用
LIGでのDocker活用
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
 
Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923
 
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managers
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう
 
Swaggerのさわりだけ
SwaggerのさわりだけSwaggerのさわりだけ
Swaggerのさわりだけ
 
Gae hands on
Gae hands onGae hands on
Gae hands on
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うこと
 
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
 
Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?Google Apps Scriptとは? Add-onとは?
Google Apps Scriptとは? Add-onとは?
 
Espruinoの紹介
Espruinoの紹介Espruinoの紹介
Espruinoの紹介
 
React native vol3
React native vol3React native vol3
React native vol3
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
 
GraphQLについての5分間
GraphQLについての5分間GraphQLについての5分間
GraphQLについての5分間
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 

Destacado

12 2 panel_bechauf
12 2 panel_bechauf12 2 panel_bechauf
12 2 panel_bechaufmitusap
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン啓介 大橋
 
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啓介 大橋
 
Cassandra 2.0 better, faster, stronger
Cassandra 2.0   better, faster, strongerCassandra 2.0   better, faster, stronger
Cassandra 2.0 better, faster, strongerPatrick McFadin
 
Toronto jaspersoft meetup
Toronto jaspersoft meetupToronto jaspersoft meetup
Toronto jaspersoft meetupPatrick McFadin
 

Destacado (6)

12 2 panel_bechauf
12 2 panel_bechauf12 2 panel_bechauf
12 2 panel_bechauf
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Bricks to Clicks
Bricks to ClicksBricks to Clicks
Bricks to Clicks
 
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
 
Cassandra 2.0 better, faster, stronger
Cassandra 2.0   better, faster, strongerCassandra 2.0   better, faster, stronger
Cassandra 2.0 better, faster, stronger
 
Toronto jaspersoft meetup
Toronto jaspersoft meetupToronto jaspersoft meetup
Toronto jaspersoft meetup
 

Similar a Dart flightschool cloudendpoint with dart

リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール WeinerをつかってみたMasakazu Muraoka
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHong Chen
 
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来Akira Inoue
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリーTakuya Oikawa
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービスcch-robo
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideYusuke Tochigi
 
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤Google Cloud Platform - Japan
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
Html5 canvasとgoogle maps apiで遊んでみた
Html5 canvasとgoogle maps apiで遊んでみたHtml5 canvasとgoogle maps apiで遊んでみた
Html5 canvasとgoogle maps apiで遊んでみた真吾 森
 
モバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみるモバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみるSatoshi Noda
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniYoshifumi Kawai
 

Similar a Dart flightschool cloudendpoint with dart (20)

リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App Inventor
 
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービス
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
 
CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発CordovaでAngularJSアプリ開発
CordovaでAngularJSアプリ開発
 
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 
GDG Shikoku 2013
GDG Shikoku 2013GDG Shikoku 2013
GDG Shikoku 2013
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Html5 canvasとgoogle maps apiで遊んでみた
Html5 canvasとgoogle maps apiで遊んでみたHtml5 canvasとgoogle maps apiで遊んでみた
Html5 canvasとgoogle maps apiで遊んでみた
 
モバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみるモバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみる
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
 

Dart flightschool cloudendpoint with dart