Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DI コンテナ自動生成ツールを実装してみた / intro-autodi
Search
uhzz
May 24, 2026
Technology
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DI コンテナ自動生成ツールを実装してみた / intro-autodi
uhzz
May 24, 2026
Transcript
16 slides
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/層ごとに独立して設定可能
参考: 今回の開発フロー
More Decks by uhzz
See All by uhzz
Goで実現するGraceful Shutdown ~実運用での課題と解決策~ / Go Conference 2025
uhzz
2
2.1k
MCP調べてみました! / Exploring MCP
uhzz
2
4.2k
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
3.1k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
380
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
0
920
Goのローカル開発をWorkspacesではじめよう
uhzz
1
1.2k
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
1.2k
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
290
「ウチも、gRPC使えますか?」
uhzz
0
360
Other Decks in Technology
See All in Technology
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
110
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
130
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
760
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
120
Kiro IDE 入門 (画面の各部から、頼み方、任せ方、戻し方まで) | 目指せ Kiro マスター 02
inariku
PRO
4
210
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
310
MCPでAIが自分で調べに行く
cdataj
0
150
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
170
Linuxネットワークスタック進化の軌跡: 過去10年の歩みと最新トレンド
orimanabu
1
320
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
220
Featured
See All Featured
Accessibility Awareness
sabderemane
1
290
How to Talk to Developers About Accessibility
jct
2
620
The browser strikes back
jonoalderson
0
1.9k
We Have a Design System, Now What?
morganepeng
55
8.4k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
620
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Into the Great Unknown - MozCon
thekraken
41
2.8k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
Navigating Team Friction
lara
192
16k
Tell your own story through comics
letsgokoyo
1
1.1k