Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DI コンテナ自動生成ツールを実装してみた / intro-autodi
Search
uhzz
May 24, 2026
Technology
440
0
Share
DI コンテナ自動生成ツールを実装してみた / intro-autodi
uhzz
May 24, 2026
More Decks by uhzz
See All by uhzz
Goで実現するGraceful Shutdown ~実運用での課題と解決策~ / Go Conference 2025
uhzz
2
1.7k
MCP調べてみました! / Exploring MCP
uhzz
2
4k
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
2.9k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
340
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
0
860
Goのローカル開発をWorkspacesではじめよう
uhzz
1
1.1k
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
1.2k
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
270
「ウチも、gRPC使えますか?」
uhzz
0
330
Other Decks in Technology
See All in Technology
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
1.1k
Claude Code で使える DuckDB Skills を試してみた / DuckDB Skills and Claude Code
masahirokawahara
1
970
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
140
AI-Assisted Contributions and Maintainer Load - PyCon US 2026
pauloxnet
1
180
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
2
140
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
130
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
130
SpeechTranscriber + AIによる文字起こし機能
kazuki1220
0
110
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
2
600
AIのために、AIを使った、Effect-TSからの脱却 〜テストを活用した安全なリファクタリングの進め方〜
bitkey
PRO
0
130
インプロセスQAのための要因から捉えるプロジェクトリスクマネジメントnano #1 開発リソース効率状態への対処 #jasstnano
barus_qa
0
190
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
1
160
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
From π to Pie charts
rasagy
0
180
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
550
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
140
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
200
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
190
Color Theory Basics | Prateek | Gurzu
gurzu
0
310
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
DI コンテナ自動生成ツール を実装してみた 2026/05/17 開発合宿@鳴子温泉 reo(@_uhzz_)
アジェンダ 1. gRPC とは — API 定義の標準化 2. DI とは
— 依存性注入の基本 3. autodi とは — コンセプトと既存ツールとの比較 4. まとめ
gRPC とは Protocol Buffers(proto)を IDL として使う高性能 RPC フレームワーク • 型安全:
クライアント・サーバー両側のコードを proto から自動生成 • 高速: HTTP/2 + バイナリシリアライズ • 多言語対応: Go / Java / Python / TypeScript …
gRPC の開発フロー ステップ 4 の「サーバーへの登録」と依存の組み立てが 毎回手作業 になる。
DI(依存性注入)とは オブジェクトが必要とする依存を「外から渡す」設計パターン
DI あり — 依存を外から注入 依存を外から渡すことで 差し替え・テスト・差分把握 が容易になる。
DI の何が面倒か 問題:層が増えると組み立てコードが肥大化する
DIするまでの作業フロー
autodiとは
一般的なDIフロー
autodiの場合
autodi のコンセプト 「proto の import そのものが依存グラフになる」 depends_on を別途書く必要がない。 import の型情報から依存グラフを自動推論する。
既存 DI ツールとの比較 既存ツールはすべて Go コード上 で依存を宣言する必要がある。 ツール 概要 依存の宣言
依存解決 google/wire Google製フレームワーク 2025/08にアーカイブ Go コード コード生成時 uber-go/fx Uber製フレームワーク Go コード 実行時 samber/do Generics ベースの 軽量ランタイム DI Go コード 実行時 autodi proto import から 依存グラフを自動推論 proto の import コード生成時
オプション: ミドルウェア機能 API/層ごとに任意のミドルウェアを設定することができる
まとめ • proto を書くだけで DI コンテナが自動生成される • import 構造から依存グラフを自動推論 •
リフレクションなし・外部依存ゼロのランタイム • OpenAPI も proto から自動出力 • デフォルトで Connect(connectrpc/connect-go) を採用 (gRPC+HTTP) • ミドルウェアはAPI/層ごとに独立して設定可能
参考: 今回の開発フロー