Slide 1

Slide 1 text

KessokuでDIでもgoroutineを活用する @mazrean Go Connect #6

Slide 2

Slide 2 text

mazrean ■ Goでツール等を作っている ● SQL Builder GenORM ● DIツールKessoku ■ DeNA @mazrean22 マズリーン 2

Slide 3

Slide 3 text

mazrean ■ Goでツール等を作っている ● SQL Builder GenORM ● DIツールKessoku ■ DeNA @mazrean22 マズリーン 今日はこの話 3

Slide 4

Slide 4 text

目次 4 1 GoのDIとgoogle/wire 2 並行DIツールKessoku 3 まとめ

Slide 5

Slide 5 text

Dependency Injection(DI) ■ 依存を外部から注入する設計パターン ■ ツール・ライブラリで自動化可能 ● uber-go/dig ● google/wire 5

Slide 6

Slide 6 text

google/wire DIコードを生成するツール ■ 実行時のオーバーヘッドがない ■ コンパイル前 にミスがわかる 6

Slide 7

Slide 7 text

google/wireがアーカイブされた リポジトリがアーカイブ ■ 8月7日(約2週間前) ■ かなり前から開発は停止していた ● 最後の機能追加は2021年1月 7

Slide 8

Slide 8 text

google/wireは完成した? 8

Slide 9

Slide 9 text

本当に?

Slide 10

Slide 10 text

google/wireの課題 10 The Power of PowerPoint - thepopp.com ■ buildタグが必要 → 補完が効かない ■ go toolが使えない 開発体験の悪さ 割と初期化では通信が多い (例:DBコネクション) → goroutine使いたい goroutineが使えない 10

Slide 11

Slide 11 text

目次 11 The Power of PowerPoint - thepopp.com 1 GoのDIとgoogle/wire 2 並行DIツールKessoku 3 まとめ

Slide 12

Slide 12 text

mazrean/kessoku 次世代のgoogle/wire ■ buildタグ不要 ■ 並行処理が可能 12

Slide 13

Slide 13 text

使い方 1. インストール 2. 設定記述 3. コード生成 13

Slide 14

Slide 14 text

1. インストール go getでインストール ■ toolディレクティブがおすすめ 14

Slide 15

Slide 15 text

2. 設定を記述 DI対象の設定を記述 ■ wireとほぼ同じ ■ buildタグは不要 15

Slide 16

Slide 16 text

3. コード生成 並行処理でDIするコードを生成 Cache DB App 16

Slide 17

Slide 17 text

並行処理の効果 起動時の処理の高速化に繋がる → コールドスタートの高速化 起動時間短縮! 17

Slide 18

Slide 18 text

目次 18 1 GoのDIとgoogle/wire 2 並行DIツールKessoku 3 まとめ

Slide 19

Slide 19 text

まとめ ■ google/wireはアーカイブされた ■ mazrean/kessokuを作った ● google/wireと使い方は類似 ● 並行初期化が可能 19

Slide 20

Slide 20 text

mazrean 使ってみてください! ■ starよろしくお願いします 20 https://github.com/mazrean/kessoku