Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
「メルカリ アッテ」を支える Google App Engine と Golang
Search
Tatsuya Tsuruoka
June 08, 2016
Programming
12k
18
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「メルカリ アッテ」を支える Google App Engine と Golang
2016年6月8日の appengine ja night #33 の発表資料です。
Tatsuya Tsuruoka
June 08, 2016
More Decks by Tatsuya Tsuruoka
See All by Tatsuya Tsuruoka
GoとGAEによるWebアプリケーション開発(Go Con 2016 Spring)
ttsuruoka
12
8.4k
アッテ開発の技術 : Golang と Google App Engine
ttsuruoka
20
49k
メルカリの超高速開発を支えるPHP (PHPCon2014)
ttsuruoka
17
26k
メルカリ開発の歴史
ttsuruoka
2
2.2k
LT_有給とって温泉に行こう
ttsuruoka
0
270
Other Decks in Programming
See All in Programming
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
210
Groovy as a human and AI friendly programming language
paulk
0
160
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
Modernizing iOS Apps
seyfoyun
0
150
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.7k
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
180
dotNET_vulnclicker_intro.pdf
deka_morita
0
160
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
130
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
170
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
250
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
330
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.4k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
350
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
870
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
600
Become a Pro
speakerdeck
PRO
31
6.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
KATA
mclloyd
PRO
35
16k
Transcript
ʮϝϧΧϦΞοςʯΛࢧ͑Δ 2016/06/08 (PPHMF"QQ&OHJOFͱ(PMBOH
ࣗݾհ 2 Ԭ ୡ • ικ & ϝϧΧϦ • ۀ࣌ͷόοΫΤϯυͷΤϯδχΞϦϯάͱ
։ൃνʔϜͷϚωʔδϝϯτΛ୲ • νʔϜָ͕͘͠ࣄͰ͖ΔΛ࡞Δͷ͕͖
֓ཁ 3 1. ৽ن Web αʔϏεͷΠϯϑϥڥͱͯ͠ GAE/Go Λ࠾༻ͨ͠ͷͳ͔ͥ 2.
GAE/Go ʹΑΔ։ൃͱӡ༻ͲͷΑ͏ͳͷͳͷ͔ɻ ੜ࢈ੑɺεέʔϥϏϦςΟͱύϑΥʔϚϯεɺՄ༻ੑɺ αϙʔτମ੍ɺίετɺଞͷΠϯϑϥڥͱൺֱͯ͠ Ͳ͏͔ͩͬͨ
("&(P࠾༻ͷཧ༝
GAE/Go ࠾༻ͷཧ༝ 5 • ཧ༝1 : GAE ͷεέʔϥϒϧͳࢄγεςϜͷΈ • ཧ༝2
: GCP Γ্͕Γͷஹ͠ͱকདྷͷՄೳੑ • ཧ༝3 : νʔϜ։ൃʹ͍͍ͯΔ GolangɻGAE ʹΑΔਖ਼ࣜରԠ
GAE/Go ࠾༻ͷཧ༝1 : εέʔϥϒϧͳ GAE 6 • લఏɿ৽نࣄۀΞοςͷΠϯϑϥཁ݅ • άϩʔόϧ
• ෳϦʔδϣϯʢUSɺEUɺAPACʣͰαʔϏεΛల։͍ͨ͠ • ڞ௨ͷίʔυ & ͻͱͭͷσʔλϕʔε • େنΞϓϦέʔγϣϯ • DAUઍສਓنɻॠؒతͳΞΫηεສϦΫΤετ/ඵ • ϋΠεέʔϥϒϧ • ػೳվम࣌ͳͲʹαʔϏεແఀࢭʹ͍ͨ͠ • εέʔϧͷͨΊͷ४උ࡞ۀΛͳ͍ͨ͘͠
GAE/Go ࠾༻ͷཧ༝1 : εέʔϥϒϧͳ GAE 7 • Α͋͘ΔΞϓϩʔνͰɺ͏·͍͘͘ͷɿ • ҊA
: աڈʹܦݧͷ͋ΔߏطଘͷΠϯϑϥΛ͏ • ҊB : ৽نઃܭɻকདྷతʹඞཁʹԠͯ͡ઃܭΛੈަͤ͞Δ • → ϝϧΧϦͷͱ͖ҊBɻϦϦʔεޙ3ϲ݄ͰेສϢʔβͱ͍͏ఆΛ͠ ͯɺߴੑೳઐ༻αʔό1ͰߏஙɻߏΛੈަͤ͞Δ͜ͱͰεέʔϧ͞ ͍ͤͯͬͨ • ࠓճͷ৽نࣄۀͷΠϯϑϥཁ݅ϋʔυϧ͕ߴ͘ɺҊAɺҊB ͲͪΒͷΞϓ ϩʔν͏·͋ͯ͘·Βͳ͔ͬͨ
GAE/Go ࠾༻ͷཧ༝1 : εέʔϥϒϧͳ GAE 8 • ผͷΞϓϩʔνɺPaaS ʹ͍ͭͯߟ͑ͯΈΔ •
GAE Ҏ֎ͷ PaaS ʁ • AWS ্ʹߏஙͯ͠ఏڙ͞Ε͍ͯΔ PaaS AWSʢIaaSʣͷ੍Λड͚ͯ ͠·͏ • PaaS ΛӡӦ͍ͯ͠Δاۀͷن͕খ͍͞߹ɺͦ͜ʹΠϯϑϥΛ༬͚Δͱ ϦεΫΛίϯτϩʔϧͮ͠Β͍ • Microsoft Azure Force.com ɺࠓճͷ։ൃཁ݅ʹ߹Θͳ͍
GAE/Go ࠾༻ͷཧ༝1 : εέʔϥϒϧͳ GAE 9 • GAE → ཁ݅ΛຬͨͤΔ
• άϩʔόϧ • US ͔Βੈք͚ʹଟ͘ͷαʔϏε͕ల։͞Ε͍ͯΔ • Google ͱΠϯϑϥΛڞ༻͍ͯ͠Δ GAE વάϩʔόϧରԠ • େنΞϓϦέʔγϣϯ • Snapchat ͷΑ͏ͳDAU1ԯਓنͷࣄྫ • ϋΠεέʔϥϒϧ • ࢄγεςϜΛ࡞ΔͨΊͷΈ͕͍ͬͯΔ • খ͞ͳن͔Βେ͖ͳن·Ͱઢܗʹεέʔϧ
GAE/Go ࠾༻ͷཧ༝2 : GCP Γ্͕Γͷஹ͠ 10 • ཧ༝2 : GCP
Γ্͕Γͷஹ͠ͱকདྷͷՄೳੑ • 20159݄ࠒɺ৽نࣄۀͷٕज़બఆΛ࢝͠Ίͨͱ͖ʹɺ͢Ͱʹ GCP(GKE) Λ ͬͯ։ൃΛ͍ͯͨ͠ΤϯδχΞ͔ΒʮGCP ͕ඇৗʹྑ͔ͬͨʯͱ͍͏Λ ฉ͍ͨ • ͦΕ·Ͱ BigQuery GCE ͘Β͍͔͠৮͍ͬͯͳ͔ͬͨͷͰɺใऩूΛ։ ࢝ɻGoogle ͷ୲ऀΛհͯ͠Β͍ɺ͙͢ʹ࠷৽ͷ GCP ใΛڭ͑ͯ Β͏ • → AWS ͷιϦϡʔγϣϯΞʔΩςΫτͷΑ͏ͳͤΔٕज़୲ऀ͕͍ Δ͜ͱʹ·ͣڻ͍ͨ
GAE/Go ࠾༻ͷཧ༝2 : GCP Γ্͕Γͷஹ͠ 11 • ࠓͰͦ͜ීٴ͍ͯ͠Δ AWS ౦ژϦʔδϣϯ͕ͳ͍͜Ζٕज़୲ऀ͍ͳ
ͯ͘ɺΦϯϥΠϯυΩϡϝϯτΛཔΔ͔͠ͳ͔ͬͨ • ۙ·Ͱ GCP ͦ͏͍͏ঢ়ଶʹͳ͍ͬͯΔͱࢥ͍ͬͯͨ → ͤΔ୲ऀ͕͍ͯɺGCP ʹؔ͢Δٙʹਝˍత֬ʹճΛΒ ͑Δঢ়ଶ • ͞ΒʹΦϯϥΠϯ্ͰɺGoogle ʹΑΔ GCP ͷใΞοϓσʔτසߴ ·͍ͬͯΔ • → Google ͕ GCP ʹରͯ͠ଟ͘ͷϦιʔεΛׂ͍͍ͯΔ͜ͱ͕Θ͔ͬͨɻ αʔϏεΛͷͤΔΠϯϑϥͱͯ͠ेʹ҆શͱஅ
GAE/Go ࠾༻ͷཧ༝3 : Golang αϙʔτ 12 • ࠷ॳʹ Golang ʹ͍ͭͯݕ౼͢ΔΑ͏ʹͳ͖͔͚ͬͨͬɿ
࠾༻ձ৯ʹ͔͏λΫγʔͷத… ࢁాʮ࣍Ͳ͏͍͏ݴޠͰ࡞Δʁʯ ʮϝϧΧϦͱಉ͡ PHP Ͱ͢Ͷʯ ࢁాʮGo ͬͯͲ͏͔ͳʁʯ ʮྑ͍ݴޠͰ͢ͶɻͨͩࠓճPHPͰ࣮֬ʹ࡞Ζ͏ͱࢥ͍·͢ʯ ʢͦͷޙ Golang ʹ͍͍ͭͯΖ͍ΖใΛूΊΔʣ
GAE/Go ࠾༻ͷཧ༝3 : Golang αϙʔτ 13 • Golang ͱ Web
αʔϏε։ൃͷ૬ੑ • CLI ͳͲγεςϜϓϩάϥϛϯάಘҙͳྖҬͱͯ͘͠ΒΕ͍ͯΔ • → ϝϧΧϦࣾͰଟͷ࣮͋Δ Go ϓϩμΫτ͕͋Γɺੜ࢈ੑͷߴ ͞ೝ͍ࣝͯͨ͠ • ࣮ࡍʹ৮ΔͱɺWeb αʔϏε։ൃʹ͓͍ͯඇৗʹڧྗͳ͜ͱ͕Θ͔ͬͯ ͖ͨ • ݴޠࣗମͷಛɿ੩తܕ͚ɺγϯϓϧͳߏจɺgo fmt/doc ͳͲ • ύοέʔδ/ϥΠϒϥϦͷےͷྑ͞ɿnet/http x/net/context • GAE Golang ͷਖ਼ࣜରԠ͕ൃද͞Ε͍ͯͨʢ20157݄ʣ
GAE/Go ࠾༻ͷཧ༝3 : Golang αϙʔτ 14 • ཧ༝1 : GAE
ͷεέʔϥϒϧͳࢄγεςϜͷΈ • ཧ༝2 : GCP Γ্͕Γͷஹ͠ͱকདྷͷՄೳੑ • ཧ༝3 : νʔϜ։ൃʹ͍͍ͯΔ GolangɻGAE ʹΑΔਖ਼ࣜରԠ → ͜ΕΒͷཧ༝Ͱικࣾ GAE/Go ʹܾఆɻ ϝϧΧϦʹର͢Δικͷٕज़తͳҐஔ͚͕ͮϋοΩϦͯ͠ɺ ޙʹͲ͏ͳ͍ͬͯΔ͔૾Ͱ͖ͨͷͰ໎͍ͳܾ͘ఆͰ͖ͨ
("&(P࠾༻ͷ݁Ռ
GAE/Go ࠾༻ͷ݁Ռ 16 • ݁Ռ1 : ੜ࢈ੑ • ݁Ռ2 :
εέʔϥϏϦςΟͱύϑΥʔϚϯε • ݁Ռ3 : Մ༻ੑ • ݁Ռ4 : αϙʔτମ੍ • ݁Ռ5 : ίετ
GAE/Go ࠾༻ͷ݁Ռ1 : ੜ࢈ੑ 17 • ͲΕ͚ͩૉΒ͍͠ͱݴΘΕΔΠϯϑϥ։ൃݴޠͰ͋ͬͯɺ ͔ͦ͜ΒϓϩμΫτ͕ϦϦʔε͞Εͳ͚Εɺҙຯ͕ͳ͍ • ࠓճɺGAE/Go
Λࣗ৴Λ࣋ͬͯબͨ͠ͷͷɺ͜ͷٕज़͕ੈؒ ҰൠͰීٴ͍ͯ͘͠ͷͳͷ͔Α͘ݟۃΊΔඞཁ͕͋ͬͨ • →ʮΞοςʯͷόοΫΤϯυͷ։ൃશһ͕ GAE Golang ະܦݧ͔Β࢝·͍ͬͯΔɻࣾͷৄ͍͠ਓʹ(ҙਤతʹ)૬ஊͤ ͣʹ։ൃ
GAE/Go ࠾༻ͷ݁Ռ1 : ੜ࢈ੑ 18 • ࣮ࡍʹͲ͏͔ͩͬͨɿ • ։ൃணख͔Β2ϲ݄ʹݶఆެ։όʔδϣϯΛϦϦʔεɻ5ϲ݄ ʹਖ਼ࣜ൛ϦϦʔε
• ະܦݧ͔Β࢝·ͬͯԿΒ͔ͷΠϯϑϥͱ։ൃݴޠΛѻ͑ΔΤ ϯδχΞͰ͋Εɺ͙͢ʹϓϩμΫτͷ։ൃʹՃΘΕΔ • → ೖࣾͯ͠1िؒҎʹຊ൪ڥͰಈ͘ίʔυΛॻ͍ͯߩݙɻ 1ϲ݄ʹपғͷίʔυͱḮ৭ͳ͍Ϩϕϧ • ݁Ռ1: ੜ࢈ੑ → ˕ྑ͍
GAE/Go ࠾༻ͷ݁Ռ2 : εέʔϥϏϦςΟͱύϑΥʔϚϯε 19 • ݁Ռ2 : εέʔϥϏϦςΟͱύϑΥʔϚϯε •
GAE ͷΞϓϦɺਖ਼͘͠ઃܭ࣮ͯͨ࣌͠͠Ͱෛՙରࡦ͕ྃ ͍ͯ͠Δ → ྫɿϝοηʔδػೳɻDatastore ʹهͯ͠औಘ͢Δ͚ͩɻ Ϣʔβ͕ͲΕ͚ͩ૿͑ͯϝοηʔδྲྀ௨݅ಡΈऔΓճ͕૿ ͑ͯԿ͠ͳͯ͘ OK
GAE/Go ࠾༻ͷ݁Ռ2 : εέʔϥϏϦςΟͱύϑΥʔϚϯε 20 • ΞοςͰ࣮ࡍʹ͋ͬͨෛՙɿ • ϝϧΧϦͷΞϓϦ্ͷόφʔ͔ΒΞοςͷ༠ಋ •
→ ҰॠͰ App Store ϥϯΩϯά্Ґ • ेສʙඦສ݅ͷ Push ௨ͷҰ੪৴ • → ॠؒతʹΞΫηε͕ेഒʹ • ͜ΕΒͷෛՙ GAE/Go ্ͰαʔϏε͕ಈ͍͍ͯΔ࣌ͰࣗಈͰ εέʔϧͯ͠ରԠͰ͖Δ
GAE/Go ࠾༻ͷ݁Ռ2 : εέʔϥϏϦςΟͱύϑΥʔϚϯε 21 • ϓϩϏδϣχϯάΥʔϜΞοϓෆཁ • ϓϩϞʔγϣϯνʔϜͱΤϯδχΞ͕ࣄલʹෛՙʹ͍ͭͯଧͪ ߹ΘͤΔඞཁͳ͠
• 1Ϣʔβͷͱ͖ʹਖ਼͘͠ಈ͍͍ͯΕɺԿઍສϢʔβʹͳͬͯ ͳ͠ ※ಛఆͷΩʔʹର͢Δߋ৽ॲཧ͕େྔൃੜ͢Δͱ͖ͳͲɺྫ֎͋Γ
GAE/Go ࠾༻ͷ݁Ռ2 : εέʔϥϏϦςΟͱύϑΥʔϚϯε 22 • ͜ͷεέʔϥϏϦςΟ Golang ͷύϑΥʔϚϯεʹΑ࣮ͬͯݱ͞ Ε͍ͯΔ
• GAE ͷΠϯελϯε • Golang ͷ߹ɺेms Ͱىಈ͢Δ • ΞΫηε͕͋Ε૿͑ͯɺͳ͚ΕݮΔ → ΞΫηε͕͋Δͱ͖ʹॠ࣌ʹىಈ͢ΔͷͰΥʔϜΞοϓෆཁ • ݁Ռ2: εέʔϥϏϦςΟͱύϑΥʔϚϯε → ˕ྑ͍
GAE/Go ࠾༻ͷ݁Ռ3 : Մ༻ੑ 23 • ݁Ռ3 : Մ༻ੑ •
Ξος 100% Քಇத → ·ͩӡ༻ظ͕͍ؒͨΊਖ਼֬ͳධՁͰ͖ͳ͍ • ϝϧΧϦͷաڈͷΠϯϑϥϐʔΫλΠϜʹͳΔͱμϯ͢Δ͜ͱ ͕Α͋ͬͨ͘ͷͰɺࣾͷඪઃఆʹՔಇΛೖΕ͍ͯͨ • Ξος100%αʔϏεఏڙͰ͖Δ͜ͱ͕લఏͳͷͰඪઃఆ͠ ͍ͯͳ͍
GAE/Go ࠾༻ͷ݁Ռ3 : Մ༻ੑ 24 • ϝϯςφϯεܭըఀࢭʁ →ΞοςͰϝϯςφϯεܭըఀࢭ༧ఆ͍ͯ͠ͳ͍ɻྫ͑ DB ʹΧϥϜΛՃ͢ΔͨΊʹαʔϏεΛࢭΊͨΓ͠ͳ͍
• GAE + Datastore Ͱ͋Ε؆୯ʹආ͚ΒΕΔ • ͍ͭͰ͑ΔαʔϏεʹ͢ΔͨΊʹɺଟେͳ࿑ྗΛ͍ͬͯΔΘ ͚Ͱͳ͍͕େࣄ • GAE Datastore ͷಛੑʹ߹Θͤͯ࡞Εɺͦ͏ͳΔ • ݁Ռ3: Մ༻ੑ → ˕ྑ͍
GAE/Go ࠾༻ͷ݁Ռ4 : αϙʔτମ੍ 25 • ݁Ռ4 : αϙʔτମ੍ •
ࣄલʹใΛूΊͯαϙʔτମ੍ʹ͍ͭͯΑ͘Θ͔Βͳ͔ͬͨ ͷͰɺݸਓతʹҰ൪ݒ೦ͩͬͨ • Google ͞ΜͱͷϛʔςΟϯάΛ܁Γฦͨ͠ΓɺGCP ͷ༗ঈαϙʔ τʢGoldϓϥϯʣʹೖΔ͜ͱͰɺॆ࣮ͨ͠ମ੍͕ݟ͖͑ͯͨ
GAE/Go ࠾༻ͷ݁Ռ4 : αϙʔτମ੍ 26 • ϝϧΧϦͷͷརɿಉ͡Ϗϧʹ Google ͞Μ͕͍ΔͷͰɺࠔͬͨͱ ͖ʹ͙͢ʹͯ͠ใަͰ͖Δ
→ Ӧۀ୲ऀٕज़୲ऀ͕ͨ͘͞Μ͍ΔͷͰɺଞͷϏϧͷօ͞ ·΄΅ಉ༷ͷαϙʔτड͚ΒΕΔ(ͣ) • GCP ͷ༗ঈαϙʔτɺߴͳٕज़తͳ࣭ʹରͯ͠1࣍ճ ʹདྷͨΓɺͯ͘2Ҏʹ͕ղܾ͢Δ • ଞͷબࢶɿτοϓήʔτ͞ΜͷΑ͏ͳ GCP ύʔτφʔاۀ • ݁Ռ4: αϙʔτମ੍ → ˕ྑ͍
GAE/Go ࠾༻ͷ݁Ռ5 : ίετ 27 • ݁Ռ5 : ίετ •
աڈʹར༻ྉ͕ۚߴֹͩͬͨΛฉ͍ͨΓ͢Δ • աڈҰ୴Εͯɺ͍·͏ͱͲ͏͍͏ֹۚʹͳΔͷ͔ΛΔ • ݱࡏۃΊͯίετʹͳ͍ͬͯΔ
GAE/Go ࠾༻ͷ݁Ռ5 : ίετ 28 • Ξοςͷ GCP ڥɺ5݄ͷར༻ྉۚʢ҆ʣ ։ൃڥ
* αʔόαΠυΤϯδχΞਓ = 0ԁʢ1ԁະຬʣ QA ڥ = 1,100ԁ ຊ൪ڥɺDAU100ສࢉ͢Δͱ200ສԁ • අ༻ͷ༁ ɾDatastore Read Ops 46%ɺSimple Searches 28%ɺ Frontend Instances 17%ɺOut Bandwidth 4%ɺͦͷଞ 4%
GAE/Go ࠾༻ͷ݁Ռ5 : ίετ 29 • ΠϯϑϥઐͷΤϯδχΞ͕͍ͳͯ͘ӡ༻Ͱ͖ΔͨΊɺΠϯϑ ϥΛҡ࣋͢Δਓ݅අ͔͔͍ͬͯͳ͍ • ΦϯϓϨϛεΛؚΊͨଞͷͲͷΑ͏ͳΠϯϑϥڥͰɺ
GCP ΑΓ҆ՁʹαʔϏεΛ࡞Δ͜ͱͰ͖ͳ͍ • ͯ͢ैྔ՝ۚɻϢʔβ͕૿͑Εඅ༻ਖ਼ൺྫ͢ΔɻϦβʔϒ υΠϯελϯεͷΑ͏ͳɺܭըੑ͕ඞཁͳͷͳ͘ɺৗʹ҆Ձ ͳঢ়ଶ • ݁Ռ5: ίετ → ˕ྑ͍
݁ 30 • GAE/Go Λ࠾༻ͨ݁͠ՌɺͲ͏͔ͩͬͨ → ੜ࢈ੑɺεέʔϥϏϦςΟͱύϑΥʔϚϯεɺՄ༻ੑɺ αϙʔτମ੍ɺίετɺތுͰͳͯ͘͢ຬ • ࠓޙͷҊ݅Ͱ
GAE/Go Λ͍͍͔ͨ → Yes!