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
Bindanのススメ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
wtnabe
August 16, 2025
Programming
49
0
Share
Bindanのススメ
"バックエンドを切り替えつつ設定を集約して書きたい" というタイトルのLTの資料です。
Kanazawa.rb meetup #156 at ビブリオバウム での発表です。
wtnabe
August 16, 2025
More Decks by wtnabe
See All by wtnabe
Rubyでもモノリポしたい - 調査、おわわり編 -
wtnabe
0
39
Ruby de Railway Oriented Programming
wtnabe
0
78
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
66
Effective Jekyll
wtnabe
0
93
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
55
Ruby de Wasm
wtnabe
0
85
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
68
Decoupled System with Turbo Frame
wtnabe
1
160
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
840
Other Decks in Programming
See All in Programming
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
180
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
240
「速くなった気がする」をデータで疑う
senleaf24
0
150
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
2
430
アーキテクチャモダナイゼーションとは何か
nwiizo
17
4.2k
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
110
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
210
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
130
AIエージェントで業務改善してみた
taku271
0
480
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
20260320登壇資料
pharct
0
160
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
250
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
200
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
Exploring anti-patterns in Rails
aemeredith
3
310
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
The Limits of Empathy - UXLibs8
cassininazir
1
290
It's Worth the Effort
3n
188
29k
Transcript
バックエンドを切り替えつつ 設定を集約して書きたい - Bindan のススメ - @wtnabe Kanazawa.rb meetup #156
at ビブリオバウム 2025-08-16 (Sat)
クラウド環境の設定って環境変数に 置くんじゃないんですか?
ENV["FOO"]
実は環境によって都合が悪い
eg) Google App Engine 環境変数の設定方法が設定ファイルのハードコーディング それがイヤならCloud Build で設定ファイルを組み立てる? Cloud Build
の中で扱っている値はログにダダ漏れ
Google 「環境変数に秘密情報置くな」
分かるけど
じゃあsecret から取ってくる? require "google/cloud/secret_manager" secret = Google::Cloud::SecretManaer.new ...
なんかめんどくさい
やっぱこんな感じで書きたい App.configure do |config| config.database.dsn = "sqlite:memory" config.adapter = :grpc
config.pool = 5 config.uploader.bucket = 'production' end この右辺でシュッとsecret 取り出したい
作ったよ https://github.com/wtnabe/bindan
目指した書き味 Bindan.configure(providers: providers) do |c, pr| c.database_host = pr.env["DATABASE_HOST"] ||
"localhost" c.api_key = pr.storage["api_key"] c.feature_flags = pr.firestore["feature_flags_document"] end
もう少し詳しく configure から container と provider が渡ってくる provider が []
メソッドを提供してくれるのでそこで値を取得する pr.env が envvar provider の正体
provider は自分で追加できる Bindan.configure(providers: { env: Bindan::Provider::Envvar.new }) do |container, providers|
今のところ標準で Cloud Storage Cloud Firestore のprovider を提供
NotImplemented SecretManager 対応 configure を複数回に分けて書く
おまけ - 命名について - 名前は最近よくやってる生成AI との議論で 今回はゲルマン祖語で bind みたいな意味 ラテン語だと
vinculum さすがに分かりにくいので ラテン語以降の近い年代、近い地域の言語に置き換え