OSS探訪GitHubでログイン

config file・env・flag・defaultをprecedence付きで統合するGo configuration library

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
30,483
主要言語
Go
ライセンス
MIT
リポジトリ最終更新
2026/01/12
ページ内ナビ

概要

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で固定してください。

出典:[3][2][4]

参考にした公式資料

  1. [1]spf13/viper — GitHub repository(2026-10-06)
  2. [2]Viper v1.21.0 — README(2026-10-06)
  3. [3]Viper v1.21.0 — go.mod(2026-10-06)
  4. [4]Viper v1.21.0 release(2026-10-06)
  5. [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. 1

    ソースを取得

    git clone --depth 1 https://github.com/spf13/viper.git
  2. 2

    リポジトリへ移動

    cd viper
  3. 3

    公式手順を確認

    READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
公式READMEで確認

成長

成長の推移 · 直近30日

30,483 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
133

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
30,483
Forks
2,271
Watchers
272
Open Issues
8
Contributors
170
所有者種別
User
主要言語
Go
ライセンス
MIT
リポジトリ最終更新
2026/01/12

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?