Slide 1

Slide 1 text

未卒 新卒 @upamune

Slide 2

Slide 2 text

うぱみゅん @upamune 18 新( ?) 卒 Go 歴3 年 serizawa.me

Slide 3

Slide 3 text

最近新卒⼊社エントリ書いた 株式会社メルカリに新卒⼊社しました bit.ly/2KSuCTt

Slide 4

Slide 4 text

実は⼤学卒業失敗( なんと卒業失敗が発覚したのが⼊社の1 ヶ⽉前) し て今も⼤学に在籍しているが,こんなんでも⼊社認めてくれてすご い ( 週1 で有給を取得して,半年間⼤学に通うというのを認めていた だいています) “ “

Slide 5

Slide 5 text

まだ卒業できてない

Slide 6

Slide 6 text

2 単位⾜りなかった

Slide 7

Slide 7 text

ソフトウェアなんとか演習

Slide 8

Slide 8 text

3 ⼈1 チームで アプリケーションを開発する

Slide 9

Slide 9 text

ヤバ要件.png

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

結構重くてビビる ( 予定では1 週間で開発)

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

⼤体Go で実装し終えた ので構成の紹介

Slide 14

Slide 14 text

HTTP: twitchtv/twirp A simple RPC framework with protobuf service definitions Protobuf からJSON/Protobuf を受け付けるHTTP のRPC ⾵エンドポイ ントを⽣成してくれる君 POST /twirp/./ 最初はフロントエンドはSPA にする予定だったので,gRPC は避けた 結果 Go を始めとしてJava, JS, TS, Ruby, Rust, PHP 実装などがある Twirp: a sweet new RPC framework for Go - Twitch Blog

Slide 15

Slide 15 text

Database: src-d/go-kallax Kallax is a PostgreSQL typesafe ORM for the Go language. struct からDB のSchema, ORM を⽣成してくれる君 マイグレーションをやってくれるので楽 Production で利⽤するのは厳しそう とにかく楽したかったので利⽤してみた q := models.NewBookReviewQuery(). WithBook(). FindByID(bookReviewID) bookReview, err := s.reviewStore.FindOne(q)

Slide 16

Slide 16 text

Logger: rs/zerolog log.Error(). Err(err). Str("Scale", "833 cents"). Float64("Interval", 833.09). Msg("Fibonacci is everywhere") Uber's zap library pioneered this approach. Zerolog is taking this concept to the next level with a simpler to use API and even better performance. “ “

Slide 17

Slide 17 text

Client SPA Nuxt.js ...

Slide 18

Slide 18 text

Client SPA は1 ⽇で挫折した CLI でも良いらしいのでCLI で実装することに twitchtv/twirp を利⽤しているのでClient が⽣成されているので便利 ちょっとリッチにしたいので,c-bata/go-prompt, manifoldco/promptui を利⽤ 良い感じにリッチにできてかっこいい

Slide 19

Slide 19 text

DEMO

Slide 20

Slide 20 text

今回の合宿で 検索システム PageRank 推薦システム 協調フィルタリング @codehex 先⽣と実装できたのでかなり卒業に近づいた

Slide 21

Slide 21 text

ありがとうございました