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
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
910
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
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
170
公共分野での生成AI活用
toru_kubota
1
290
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
820
会社説明資料_最新版
demaecan
0
32k
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
コードレビューをなくして見えたもの
henteko
0
140
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
150
IoTとは〜? 数字で見るSORACOM UG【SORACOM UG Explorer 2026】
soracom
PRO
0
310
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
110
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
1.1k
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
210
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
130
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
121
120k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
550
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
560
ラッコキーワード サービス紹介資料
rakko
5
5.7M
Ruling the World: When Life Gets Gamed
codingconduct
0
430
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
Site-Speed That Sticks
csswizardry
13
1.6k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
340
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/層ごとに独立して設定可能
参考: 今回の開発フロー