ページ内ナビ
概要
ViperはGo application向けのconfiguration libraryです。JSON/TOML/YAML/HCL/INI/envfile/Java properties等のconfig file、環境変数、command-line flag、default値、remote key/value storeを1つの設定registryへ統合できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
複数config formatとenv・flag・defaultを同じAPIから読む
config fileを検索・読込・unmarshalし、environment variable、pflag、explicit Set、default値を同じkey spaceから取得できます。config fileのwatch/reloadにも対応します。
出典:[2]
明示的なprecedenceで設定sourceをoverrideする
ViperのprecedenceはSet、flag、env、config、key/value store、defaultの順です。deploymentごとにenvやflagでfile設定をoverrideする12-Factor風構成を実装できます。
出典:[2]
向いている用途
CLI・serverで複数sourceからconfigurationを組み立てるGo applicationに向く
local config fileと環境変数、command-line flagを併用するCLIやbackend serviceで、format差やsource resolutionを共通化したい場合に適します。
出典:[2]
導入前の確認
v1.21.0はGo 1.23。keyはcase-insensitiveで、v2も検討中
v1.21.0のgo.modはGo 1.23を指定します。Viper keyはcase-insensitiveであり、1 instanceにつき基本的に1 config fileを扱います。v1.21.0はconfig type判定修正やBoolSlice/UintSlice/Float64Slice flag supportを含み、READMEではv2 feedbackも募集しているため、global behaviorやupgrade compatibilityをtestで固定してください。
参考にした公式資料
- [1]spf13/viper — GitHub repository(2026-10-06)
- [2]Viper v1.21.0 — README(2026-10-06)
- [3]Viper v1.21.0 — go.mod(2026-10-06)
- [4]Viper v1.21.0 release(2026-10-06)
- [5]Viper MIT license(2026-10-06)
編集部からの補足
file・env・flag・defaultを1つのregistryへまとめられますが、設定sourceのprecedenceとkey case-insensitive挙動はapplication全体の契約になります。設定読み込みをglobal singletonへ寄せすぎず、startup時に型付きstructへunmarshalすると追跡しやすくなります。
3ステップで試す
- 1
ソースを取得
git clone --depth 1 https://github.com/spf13/viper.git - 2
リポジトリへ移動
cd viper - 3
公式手順を確認
READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。
find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
成長
成長の推移 · 直近30日
30,483 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 133
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- minikube32,180 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
手元の端末にKubernetesクラスタを作り、配備前の構成を試す
Go - OpenTofu30,393 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
宣言的な構成をplanで確認してからクラウド基盤へ適用するオープンソースIaC
Go - Helm30,309 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
ChartでKubernetes applicationのinstall・upgrade・rollbackをrelease単位で管理するpackage manager
Go - Gitleaks29,723 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
Git history・files・stdinからAPI keyやpassword等のsecretを検出するsecret scanning CLI
Go - Kustomize12,178 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
元のKubernetes YAMLを保ったまま環境別の差分を宣言的に重ねる構成管理ツール
Go - Lazygit82,894 Stars
共通タグ 1件 · 共通カテゴリ 2件 · 同じ言語
stage・commit・branch・rebase・worktree・reflog操作をkeyboard中心のterminal UIへ集約するGit client
Go
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。