SlideShare a Scribd company logo
GAE ハンズオン
GCPUG Beginner Tokyo
2018/11/20
だれぞ
SlideShare
● GCP&モバイルいろいろやるエンジニアです
GAEってなんぞや
メンテ不要でスケールインアウトばりばり
アップロードした後は、だいたい何もしなくてももいいです。
アクセスが多くなってきた場合は、応答不能にならないように
インスタンス(マシンの台数みたいなもん)が勝手に立ち上がり、
落ち着いたら勝手にシャットダウンしていきます。
細かい点はそれなりにあるのですが、割と取っつきやすいしすぐ試せるので、
「サーバーとかちょろいやん」と思ってしまう可能性もあるくらいです。気をつけましょう。
コード書いてアップするだけなのにメンテ不要でスケールインアウトばりばりやってくれちゃう奴、です!
え、どういうこと?
コード書いてアップするだけ
具体的には、言語ごとにある程度決まった構成+GAE用の設定ファイル+サーバー的なコードを用意して、Cloud SDKに含まれる
gcloudなるCLIツールを使って、アップロードを実行します。
今日やること
ハンズオンということなので、とにかく手を動かしていく形で学んでいきたいと思います。
といってもそんなに多くはありません。最低限動かせるところまで行って、時間が余ったら各自遊ぶ感じで!
やる内容は以下の通り
● GAEを準備しよう
● 環境を作ってみよう(今回はズルします)
● デプロイしてみよう
● テストしてみよう
● コードの修正を反映してみよう
● ログを出してみよう
● コンソールを見てみよう
● バージョンってなんぞ
● サービスってなんぞ
● dispatchしてみよう
今日やらないこと
また、やらない内容もあります。Google先生が優しく教えてくれると思います。
● GAEの歴史
● GAEの裏っかわとか2nd Editionとか
● DataStoreとかTaskQueueとか
● 負荷かけてみる
駆け足で喋って10分止まるみたいな感じで進めます。
スライドはconnpassで送ります。
GAEを準備しよう
環境を作ってみよう(今回はズルします)
App Engine スタンダード環境向けの Java8のクイックスタート
git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
cd getting-started-java/appengine-standard-java8/helloworld
立ち上げてみよう
依存モジュールのダウンロードがスタート!それなりに待ちます。
おそろしいことにERRORが発生しました。
mvn appengine:run
ここにあるやつ消しちゃいましょう!
(作者はもう消してしまったので空欄だけどゆるして )
control + cでdevサーバーを止めます。
調べてませんが、テストがこけているエラーのようです。
mvn appengine:run
デプロイしてみよう
mvn appengine:deploy
テストしてみよう
コードの修正を反映してみよう
mvn appengine:deploy
ログを出してみよう
mvn appengine:deploy
右のページを表示してください
ログのコード(コピペ用)
import java.util.logging.Logger;
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(name = "HelloAppEngine", value = "/hello")
public class HelloAppEngine extends HttpServlet {
private static final Logger log = Logger.getLogger(HelloAppEngine.class.getName());
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
log.info("My first Log");
コンソールを見てみよう
バージョンってなんぞ
サービスってなんぞ
mvn appengine:deploy
dispatchしてみよう①
mvn appengine:deploy
dispatch①のコード(コピペ用)
package com.example.appengine.java8;
// [START example]
import com.google.appengine.api.utils.SystemProperty;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.logging.Logger;
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(name = "GoodbyAppEngine", value = "/goodby")
public class GoodbyAppEngine extends HttpServlet {
private static final Logger log = Logger.getLogger(HelloAppEngine.class.getName());
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
log.info("goodby!");
Properties properties = System.getProperties();
response.setContentType("text/plain");
response.getWriter().println("GAE HandsOn!!!! Hello App Engine - Standard using "
+ SystemProperty.version.get() + " Java "
+ properties.get("java.specification.version"));
}
public static String getInfo() {
return "Version: " + System.getProperty("java.version")
+ " OS: " + System.getProperty("os.name")
+ " User: " + System.getProperty("user.name");
}
}
gcloud app deploy dispatch.yaml
dispatchしてみよう②
dispatch②のコード(コピペ用)
dispatch:
- url: "*/hello"
service: myservice
- url: "*/goodby"
service: goodby
dispatchしてみよう③
それぞれ違うサービスの下にあるバージョンで管理されているインスタンスにアクセスしている
https://cloud.google.com/appengine/docs/standard/java/config/appref?hl=ja
dispatchしてみよう④
本日は以上になります。お疲れ様でした!

More Related Content

PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
PDF
Github codespaces すごく良い。もうこれで 十分なんじゃという話
PDF
Webエンジニアのためのプロジェクションマッピング(とりあえず完結編)
PPTX
[社内勉強会]Gradleを使おう
PDF
Session8 - LabVIEW NXG Training Course
PDF
Session1 - LabVIEW NXG Training Course
PDF
Write slides and books in VSCode + Markdown
ODP
HTML5 アプリ開発
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Webエンジニアのためのプロジェクションマッピング(とりあえず完結編)
[社内勉強会]Gradleを使おう
Session8 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training Course
Write slides and books in VSCode + Markdown
HTML5 アプリ開発

What's hot (20)

ODP
今流行りのウェブアプリ開発環境Yeoman
PDF
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
PDF
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PDF
本職のプログラマーが趣味で対戦ゲーム作ってみた Part10
PDF
今すぐブラウザでES6を使おう
PDF
LabVIEW NXG Web Module Training Slide
PDF
The Twelve-Factor (A|M)pp with C#
PDF
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
PDF
久しぶりにWebエンジニアのためのプロジェクションマッピング
PDF
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
PDF
Bicep + VS Code で楽々Azure Deploy
PDF
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
PDF
THETA S でライブストリーミング(途中経過)
PDF
Web frontend performance tuning
PDF
インフラ部門で働くCプログラマの話
KEY
Ipv6+JMeter+GAE
PDF
日曜プログラマーとigoogle先生
PDF
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
PDF
Webエンジニアのための
プロジェクションマッピング
PDF
Webサイトに動きをつける、jQueryプラグインの設置方法 先生:田中 晶子
今流行りのウェブアプリ開発環境Yeoman
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
本職のプログラマーが趣味で対戦ゲーム作ってみた Part10
今すぐブラウザでES6を使おう
LabVIEW NXG Web Module Training Slide
The Twelve-Factor (A|M)pp with C#
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
久しぶりにWebエンジニアのためのプロジェクションマッピング
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Bicep + VS Code で楽々Azure Deploy
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
THETA S でライブストリーミング(途中経過)
Web frontend performance tuning
インフラ部門で働くCプログラマの話
Ipv6+JMeter+GAE
日曜プログラマーとigoogle先生
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
Webエンジニアのための
プロジェクションマッピング
Webサイトに動きをつける、jQueryプラグインの設置方法 先生:田中 晶子
Ad

Similar to Gae hands on (20)

PPTX
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
PDF
Datalab and colaboratory
PPT
Google Product
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
PDF
私たちがGCPを使い始めた本当の理由
PDF
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
PPTX
Tech lounge gcp_20190313
PDF
コンソールゲームを世界展開してみた - JAWS DAYS 2015
PDF
AWS SDK for Go を使って作ってみた話
PPTX
俺とGitHubとcodeシリーズ
PPTX
Google Apps Script 概要
PDF
Serverless on GCP
PPTX
Gcpug begginers #1LT startup scriptとshutdown script
PDF
Gwt+objectifyでラクラクGAEアプリ開発
PDF
RでGPU使ってみた
PDF
組み込みLinuxでのGolangのススメ
PDF
福井スマートフォンハッカソン Titanium Mobileの紹介
PDF
WordCampOsaka2012 開発ツール談義「NetBeans」
PDF
明日から使えるgradle
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Datalab and colaboratory
Google Product
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
私たちがGCPを使い始めた本当の理由
GUIツールで送る快適な Gitライフ@Creators MeetUp #29
Tech lounge gcp_20190313
コンソールゲームを世界展開してみた - JAWS DAYS 2015
AWS SDK for Go を使って作ってみた話
俺とGitHubとcodeシリーズ
Google Apps Script 概要
Serverless on GCP
Gcpug begginers #1LT startup scriptとshutdown script
Gwt+objectifyでラクラクGAEアプリ開発
RでGPU使ってみた
組み込みLinuxでのGolangのススメ
福井スマートフォンハッカソン Titanium Mobileの紹介
WordCampOsaka2012 開発ツール談義「NetBeans」
明日から使えるgradle
Ad

More from Hayato Ito (6)

PDF
Gasライブデモ20210715
PDF
App Makerってなんぞ
PDF
pontemでspannerのバックアップとるぞ
PDF
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
PDF
Wordpress on gae se
PDF
Spannerをrestでつかってみた
Gasライブデモ20210715
App Makerってなんぞ
pontemでspannerのバックアップとるぞ
国内Cloud spanner初事例!「迎車料金無し!新感覚タクシーアプリ「フルクル」」
Wordpress on gae se
Spannerをrestでつかってみた

Gae hands on