Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 © Bitkey Inc. え、 dep ってもう使わないの!? Go に帰ってきた人のキャッチアップ Masatoshi Tsushima Bitkey, Inc.
Slide 2
Slide 2 text
2 © Bitkey Inc. Masatoshi Tsushima 津島 雅俊 2004 ソフトウェア開発との出会い Webサイトや携帯アプリを作って遊んでいました 2018秋 Bitkeyに参画 当初は主にGoでサーバサイドを開発 2019秋 ファームウェアを開発 デバイスのファームウェアの内製化や新規製品の 開発 2024夏 リプレース案件の立ち上げ 社内の各地に点在する重複機能をGo&Flutterでサ ブシステムに抽出 2022夏 Individual contributor (?) Android/iOS/Flutter、デバイスQA用アプリ、社 内仕様の標準化、Makefile職人、CIおじさん
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
ソフトウェアの領域を超えて リアルとデジタルの「分断」を解消する 「分断」は、リアルでもデジタル上でも存在します。だからこそ、 私たちはソフトウェアの領域にはとまりません。ハードウェアも同 時に開発‧共創することで、デジタルで解決されていないリアルの 体験も含めて、シームレスな体験を実現します。
Slide 5
Slide 5 text
5 © Bitkey Inc. Masatoshi Tsushima 津島 雅俊 2004 ソフトウェア開発との出会い Webサイトや携帯アプリを作って遊んでいました 2018秋 Bitkeyに参画 当初は主にGoでサーバサイドを開発 2019秋 ファームウェアを開発 デバイスのファームウェアの内製化や新規製品の 開発 2024夏 リプレース案件の立ち上げ 社内の各地に点在する重複機能をGo&Flutterでサ ブシステムに抽出 2022夏 Individual contributor (?) Android/iOS/Flutter、デバイスQA用アプリ、社 内仕様の標準化、Makefile職人、CIおじさん 約5年
Slide 6
Slide 6 text
6 6 © Bitkey Inc. さて、久々のGoか…
Slide 7
Slide 7 text
7 7
Slide 8
Slide 8 text
8 8
Slide 9
Slide 9 text
9 9 © Bitkey Inc. という人のための “再”入門Go言語 (令和最新版)
Slide 10
Slide 10 text
10 10 © Bitkey Inc. 学び直したやつ & 使ってみた感想
Slide 11
Slide 11 text
11 11 © Bitkey Inc. Outline 1. 依存の管理 dep → go mod 2. API仕様 go-swagger → ogen 3. データベース gorm→sqlc, pq → pgx 4. ログ logrus/zap/zerolog → slog 5. テスト testing → testify, gomock → uber/gomock 6. エラー errors.Is, errors.As +おまけ
Slide 12
Slide 12 text
12 © Bitkey Inc. 依存の管理 dep → go mod
Slide 13
Slide 13 text
13 13 © Bitkey Inc. 感想: もうgoだけで良いんですね! dep → go mod ● よかった!ありがとう! ● go mod init example.com/hello で初期化 ● go get github.com/org/repo で追加 ● go mod tidy で整理 昔はgodep, glide, depってのがあってな…
Slide 14
Slide 14 text
14 © Bitkey Inc. API仕様 go-swagger → ogen
Slide 15
Slide 15 text
15 15 © Bitkey Inc. 感想: 新しいOpenAPIが使える go-swagger → ogen ● v3 のツールが揃ってる ● Redocly CLIが便利 ○ preview/lint/split GraphQL, gRPCもチラ見はした
Slide 16
Slide 16 text
16 © Bitkey Inc. データベース gorm→sqlc, pq → pgx/stdlib
Slide 17
Slide 17 text
17 17 © Bitkey Inc. 感想: そんなに大きくは変わってないかな gorm → sqlc ● gorm v2もあるけどSQL中心の方が好み pq → pgx/stdlib ● 新しく始めるならpgxかな ● とはいえ他と組み合わせるならstdlibが楽 ○ AlloyDB, Cloud SQL, OpenTelemetry go-migrateは健在っすね
Slide 18
Slide 18 text
18 © Bitkey Inc. ログ logrus/zap/zerolog → slog
Slide 19
Slide 19 text
19 19 © Bitkey Inc. 感想: 速さ競ってた気がするけどもうええでしょう logrus/zap/zerolog → slog ● 標準ライブラリにいる! ● zap/zerologは相変わらず速そうだけど Cloud Loggingとの統合に集中します
Slide 20
Slide 20 text
20 © Bitkey Inc. テスト testing → testify, gomock → uber/gomock
Slide 21
Slide 21 text
21 21 © Bitkey Inc. 感想: Copilot便利ですね testing → testify ● 男は黙ってtesting…じゃなくてもええか gomock → uber/gomock ● golangでメンテしなくなったのか でもCopilotには言わないと生成済みmock使ってくれない
Slide 22
Slide 22 text
22 © Bitkey Inc. エラー
Slide 23
Slide 23 text
23 23 © Bitkey Inc. 感想: wrapね… errors.Is ● なるほど errors.As ● まだちょっと使いこなす自信無いかも ● switch err.(type)できないのちょっと不満
Slide 24
Slide 24 text
24 © Bitkey Inc. まとめ
Slide 25
Slide 25 text
25 25 © Bitkey Inc. 昔ほどハッスルしてない…! ● 標準に落ち着いた ○ 依存の管理は go mod ○ ログは slog ● 他も身構えるほど変わってない ● 言語の新機能 ○ ジェネリクスが欲しい場面にまだ出会ってない ○ イテレータはちょっとあるかも Goよりドメインそのものとかクラウドの使い方に時間使えてる気がする
Slide 26
Slide 26 text
26 © Bitkey Inc. おまけ
Slide 27
Slide 27 text
27 27 © Bitkey Inc. go generate → Makefile 参考: Makefileで必要なファイルだけgo generateするレシピ 必要な再生成だけ行いたい OGEN := go run github.com/ogen-go/ogen/cmd/ogen OGEN_COMPONENTS := $(wildcard openapi/components/*/*.yaml) OGEN_TARGET := internal/api/ogen/oas_server_gen.go ogen: $(OGEN_TARGET) clean-ogen: rm -rf $(dir $(OGEN_TARGET))* internal/api/ogen/oas_server_gen.go: spec/config.yaml spec/api.yaml $(OGEN_COMPONENTS) $(OGEN) -package ogen -target internal/api -config spec/config.yaml -clean spec/api.yaml
Slide 28
Slide 28 text
28 28 © Bitkey Inc. go generate → Makefile 参考: Is there a smarter alternative to "watch make"? Watch したい watch: while true; do $(MAKE) -j4 -q || $(MAKE) -j4; sleep 1; done
Slide 29
Slide 29 text
29 29 © Bitkey Inc. End of File