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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uhzz
May 24, 2026
Technology
940
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
1.9k
MCP調べてみました! / Exploring MCP
uhzz
2
4.1k
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
3k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
360
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
0
890
Goのローカル開発をWorkspacesではじめよう
uhzz
1
1.2k
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
1.2k
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
280
「ウチも、gRPC使えますか?」
uhzz
0
350
Other Decks in Technology
See All in Technology
AI工学特論: MLOps・継続的評価
asei
11
3.1k
GMOフィナンシャルゲートが挑む、「止まらない」決済インフラ構築の裏側【SORACOM Discovery 2026】
soracom
PRO
0
110
オートマトンと字句解析でRoslynを読む
tomokusaba
0
130
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
470
Escolhendo LLMs na Prática: Lições Reais em Busca Agêntica no Mercado Livre —TDC 2026 Floripa
jpbonson
0
110
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
780
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
160
「休む」重要さ
smt7174
7
1.8k
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
1
180
ソフトウェアアーキテクチャ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
1k
データ活用研修 問いの発見と仮説構築【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
700
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
3
290
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
230
Balancing Empowerment & Direction
lara
6
1.2k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Music & Morning Musume
bryan
47
7.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
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/層ごとに独立して設定可能
参考: 今回の開発フロー