Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google App Engine入門
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoshi Miura
February 01, 2015
Programming
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Google App Engine入門
Python東海26回勉強会での発表資料です
Satoshi Miura
February 01, 2015
More Decks by Satoshi Miura
See All by Satoshi Miura
MarkdownでもSphinx
mursts
1
460
お金ダッシュボードを作ってみた
mursts
0
350
asyncioを軽くさわってみた
mursts
0
180
FlaskとYomanでHello World
mursts
0
400
Other Decks in Programming
See All in Programming
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
450
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
110
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
400
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
Performance Engineering for Everyone
elenatanasoiu
0
270
自作OSでスライド発表する
uyuki234
1
3.8k
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
180
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
570
継続モナドとリアクティブプログラミング
yukikurage
3
600
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
350
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
KATA
mclloyd
PRO
35
15k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Transcript
Google&App&Engineೖ&+&α 2015.01.31'Python౦ւ'26th
͓લͩΕΑ • Έ͏Β͞ͱ͠(@mursts) • PythonɺAndroid͕͖Ͱ͢ • ࣄJavaɺdosbatch • PythonझຯͰ͢
App#EngineΛ͍ͬͯ·͔͢ʁ ͬͨ͜ͱ͋Γ·͔͢ʁ
App#Engineͱ Googleͷఏڙ͢ΔαʔϏεͷ1ͭͰ͋ΓɺΣϒΞϓϦέʔγϣ ϯΛPythonJavaGoݴޠΛ༻ͯ͠։ൃ͠ɺGoogleͷΠϯϑϥ ετϥΫνϟʔ্Ͱ࣮ߦ͠ɺόʔδϣϯཧ͢Δ͜ͱ͕Ͱ͖Δɻ —"Wikipedia"ʮGoogle"App"Engineʯ PythonɺGoɺJavaɺPHP͕ಈ͖·͢
ࠓApp#EngineͱPythonͰ Hello%WorldΛΓ·͢
App#EngineͷڥΛ࡞Δ
SDKͷΠϯετʔϧ h"ps:/ /cloud.google.com/sdk/ $ curl https://sdk.cloud.google.com | bash # for
Linux / OS X $ gcloud auth login $ gcloud components update ※!WindowsΠϯετʔϥ͕༻ҙ͞Ε͍ͯ·͢ App#Engine͚ͩͷSDK͋Γ·͕͢ɺ͜͜ͰCloud#SDKΛΠϯε τʔϧ͠·͢
webapp2Λ༻ͨ͠ϓϩδΣΫτͷςϯϓϨʔτ͕ҎԼʹ༻ҙ͞Ε͍ͯ·͢ ~/google'cloud'sdk/pla/orm/googleappengine/ new_project_template_ ├── app.yaml ├── favicon.ico ├── index.yaml └──
main.py ※ڥʹΑΓͰύε͕ҧ͏߹͕͋ΔΑͰ͢
main.py import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.write('Hello world!') app
= webapp2.WSGIApplication([ ('/', MainHandler) ], debug=True)
app.yaml application: new-project-template version: 1 runtime: python27 api_version: 1 threadsafe:
yes handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: .* script: main.app libraries: - name: webapp2 version: "2.5.2"
GitHubʹଞͷϑϨʔϜϫʔΫͷςϯϓϨʔτ͋Γ·͢ • Django • flask • bo,le
͜ΜͳγΣϧΛ࡞ͬͯϓϩδΣΫτΛ࡞͍ͬͯ·͢1 create&gae&project@gist #!/bin/sh PROJECT_TEMPLATE_PATH=${HOME}/google-cloud-sdk/platform/google_appengine/new_project_template if [ $# -eq 0 ];
then CMD=`basename $0` echo "usage: ${CMD} projectname" exit 1 fi PROJECT_NAME=$1 cp -R $PROJECT_TEMPLATE_PATH $PROJECT_NAME cd $PROJECT_NAME sed -i '' "s/new-project-template/${PROJECT_NAME}/g" app.yaml echo "New Google App Engine Project Created." echo " ${PROJECT_NAME}"
͜ΜͳγΣϧΛ࡞ͬͯϓϩδΣΫτΛ࡞͍ͬͯ·͢2 create&gae&project&flask@gist #!/bin/sh if [ $# -eq 0 ]; then
CMD=`basename $0` echo "usage: ${CMD} projectname" exit 1 fi PROJECT_NAME=$1 if [ -d ${PROJECT_NAME} ] ; then echo "${PROJECT_NAME} is exists" exit 1 fi git clone https://github.com/GoogleCloudPlatform/appengine-python-flask-skeleton.git "${PROJECT_NAME}" cd "${PROJECT_NAME}" #git remote rm origin rm -rf .git pip install -r requirements.txt -t lib sed -i '' "s/your-application-id-here/${PROJECT_NAME}/g" app.yaml exit 0
ϩʔΧϧͰಈ͔ͯ͠ΈΔ copy template or git clone $ dev_appserver.py ./ >
http://localhost:8080
σϓϩΠ ϓϩδΣΫτΛ࡞ h"ps:/ /console.developers.google.com/ project?hl=ja
σϓϩΠ app.yamlͷΞϓϦέʔγϣϯ໊Λ࡞ͨ͠ϓϩδΣΫτ໊ʹมߋ diff app.yaml.org app.yaml 1c1 < application: new-project-template ---
> application: pythontokai26
σϓϩΠ $ appcfg.py update ./ >!h#p:/ /project(id.appspot.com project-id:"Developers"ConsoleͰ࡞ ͨ͠ID
ؒʹ߹͑͏ͻͱͭ +αͰManagedVMͷΛ͠Α͏ͱࢥ͍·ͨ͠ ͕ؒʹ߹͍·ͤΜͰͨ͠ ࣍ճͷษڧձͰΓ͍ͨͱࢥ͍·͢
͋Γ͕ͱ͏͍͟͝·ͨ͠