Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Sansan Builders Box o Ih P 6 Agenda

Slide 3

Slide 3 text

& 2 y6 6yo 2 o y6 4 10 6 o 6 to

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Sansan Builders Box M Sansan Eight DSOC CSIRT CTO / CPO 150

Slide 6

Slide 6 text

B2B t o t 1 4

Slide 7

Slide 7 text

Sansan Builders Box PdM: Product Manager

Slide 8

Slide 8 text

Sansan Builders Box TypeScript , Next.js, React, Redux BFF (Backend for Frontend) Python, Django Kotlin, Ktor

Slide 9

Slide 9 text

Sansan Builders Box o / n App Engine Frontend App Engine BFF App Engine Backend Cloud SQL Cloud Storage Cloud Tasks Cloud Functions a d Stackdriver Cloud Build CI / CD / ConvertAPI

Slide 10

Slide 10 text

4

Slide 11

Slide 11 text

Sansan Builders Box 6 6 ID:1 6 ID:2 6 Ih 2 ID:1 6 S o 6 6 S 3,000 6 Ih n

Slide 12

Slide 12 text

Sansan Builders Box h 2 h n

Slide 13

Slide 13 text

Sansan Builders Box 2019-10 2019-04 2018-12 1 4 6 o

Slide 14

Slide 14 text

Sansan Builders Box 1 4 o he 2 Ih 6 2 6

Slide 15

Slide 15 text

Sansan Builders Box o Facebook 6e

Slide 16

Slide 16 text

M

Slide 17

Slide 17 text

Sansan Builders Box 1. 6 r6 6 2. CI 3. 8Kotlin9 4. I 5. App Engine o M

Slide 18

Slide 18 text

Sansan Builders Box 6 r6 6 r6 6 n 6 r6 Ih 1 1.

Slide 19

Slide 19 text

Sansan Builders Box TypeScript Prettier Python Black Kotlin IntelliJ IDEA r6 6

Slide 20

Slide 20 text

Sansan Builders Box VS Code .vscode/settings.json IntelliJ IDEA Save Actions Plugin .idea/saveactions_settings.xml n { "editor.formatOnSave": true, "python.pythonPath": ".venv/bin/python", "python.formatting.provider": "black", "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true }

Slide 21

Slide 21 text

Sansan Builders Box r6 IhPR 6 o Ih r6 6 6 h 6 S

Slide 22

Slide 22 text

Sansan Builders Box 1. 6 r6 6 2. CI 3. 8Kotlin9 4. I 5. App Engine o M

Slide 23

Slide 23 text

Sansan Builders Box h I Cloud Build 8TypeScript9 1 2. CI

Slide 24

Slide 24 text

Sansan Builders Box GCP CIy6 YAML o Ih Docker Cloud Build

Slide 25

Slide 25 text

Sansan Builders Box cloudbuild.yaml next.config.js Cloud Build o t steps: - dir: frontend-service name: 'gcr.io/cloud-builders/nodejs/yarn' args: ['install'] - dir: frontend-service name: 'gcr.io/cloud-builders/nodejs/yarn' args: ['build'] const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') ... webpack(config, options) { // TypeScript Ih if (process.env.NODE_ENV === 'production' && options.isServer) { config.plugins.push(new ForkTsCheckerWebpackPlugin()) } return config },

Slide 26

Slide 26 text

Sansan Builders Box Cloud Build h : https://cloud.google.com/cloud-build/docs/run-builds-with-github-checks PS 2 I

Slide 27

Slide 27 text

Sansan Builders Box 1. 6 r6 6 2. CI 3. 8Kotlin9 4. I 5. App Engine o M

Slide 28

Slide 28 text

Sansan Builders Box y6 6yo 6 S1 o y6 Kotlin Python → Kotlin 1 + 3. Kotlin K

Slide 29

Slide 29 text

Sansan Builders Box S Ih P Ih eh 6 S h h Python Web t

Slide 30

Slide 30 text

Sansan Builders Box Standard 2 o Google App Engine o Java 11 (Beta) Java Kotlin Scala Go 1.12 Go Node.js TypeScript Kotlin • 6 h • • https://cloud.google.com/appengine/docs/standard/runtimes?hl=ja

Slide 31

Slide 31 text

Sansan Builders Box a Python → Kotlin App Engine Frontend App Engine BFF (Python) App Engine Backend (Kotlin) App Engine Frontend App Engine Backend (Python) o Kotlin S 2 Python BFF S a Before After

Slide 32

Slide 32 text

Sansan Builders Box 6 P

Slide 33

Slide 33 text

Sansan Builders Box 1. 6 r6 6 2. CI 3. 8Kotlin9 4. I 5. App Engine o M

Slide 34

Slide 34 text

Sansan Builders Box →DB→ Ih 6 6 h 6 S Ih aJSON Ih o 1 4. o 4

Slide 35

Slide 35 text

Sansan Builders Box o Home Controller Test User Controller Test Admin Controller Test DB (PostgreSQL) tenant_homecontrollertest tenant_usercontrollertest tenant_admincontrollertest

Slide 36

Slide 36 text

Sansan Builders Box CI oID Home Controller Test Home Controller Test DB (PostgreSQL) tenant_e04168c-homecontrollertest tenant_de7fbf4-homecontrollertest e04168c de7fbf4

Slide 37

Slide 37 text

Sansan Builders Box json-fuzzy-match o P #uuid #string e 6s6 I JSON JsonStringAssert.assertThat(response.content).jsonMatches(""" { "id": "#uuid", "title": "Example Book", "price": "9.99", "currency": "USD", "amount": 10, "timestamp": "#string" } """.trimIndent()) https://github.com/orangain/json-fuzzy-match

Slide 38

Slide 38 text

Sansan Builders Box h S h

Slide 39

Slide 39 text

Sansan Builders Box 1. 6 r6 6 2. CI 3. 8Kotlin9 4. I 5. App Engine o M

Slide 40

Slide 40 text

Sansan Builders Box 6 h S h 6 eh h GitHub pushIh 2 oIhe 1 5. App Engine n

Slide 41

Slide 41 text

Sansan Builders Box GitHub pushIh 2 o 2 n n https://buildersbox.corp-sansan.com/entry/2019/10/01/110000

Slide 42

Slide 42 text

Sansan Builders Box 6 n h 2 h

Slide 43

Slide 43 text

Sansan Builders Box GCP o 3

Slide 44

Slide 44 text

Sansan Builders Box App Engine Flexible oIh Flexible 2 n S 1o 8 r 2o 9 h o n Ih 2 o S h S P 6 S 8 9 PS h e Ih

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Sansan Builders Box h 2 PS h e Ih PS S 8 9 2 h S h

Slide 47

Slide 47 text

Sansan Builders Box 6 Ih S M

Slide 48

Slide 48 text

Sansan Builders Box P h Ih

Slide 49

Slide 49 text

Pt P

Slide 50

Slide 50 text

Sansan Builders Box We are hiring!! https://jp.corp-sansan.com/recruit/midcareer#engineer

Slide 51

Slide 51 text

No content