Skip to content
Latchkey

INIフォーマットとは? シンプルな設定ファイルの解説

INIフォーマットは、key = valueのペアを含む角括弧のセクションから構築される、シンプルで長年使われてきた設定スタイルです。

INIファイルは、最も古く最もシンプルな設定フォーマットの1つです。git config、Pythonのsetup.cfg、tox、そして多くのツールで今も見かけます。読むのは簡単ですが、単一の標準がないため、正確な振る舞いはファイルを読んでいるparserに依存します - CIで知っておく価値のある微妙な点です。

INIフォーマットとは

INIファイルは設定をセクションにまとめ、各セクションは角括弧内の名前で導入され、その後にkey = valueの行が続きます。フラットで読みやすいです。セクションの1レベルを超えるネストはなく、これによりシンプルに保たれますが、表現できるものが制限されます。

公式の標準がない

TOMLやJSONと違って、INIには正式な仕様がありません。parserはコメント文字(セミコロンかハッシュ)、値を引用符で囲むかどうか、大文字小文字の区別、重複キーの振る舞いについて食い違います。そのため、あるツールで動くINIファイルが、別のツールでは異なる振る舞いをすることがあります。

INI対TOML

TOMLはINIを正しくやり直すために設計されました: 同じ読みやすいセクションとキーのスタイルですが、本物の仕様、型付きの値、配列、ネストしたtableを備えています。プロジェクトが予測可能な解析を伴うINIのようなシンプルさを必要とするとき、今日では通常TOMLに手を伸ばします。

CIとツールにおけるINI

CIが実行するツールチェーン全体で、INIスタイルのファイルに出会います: .gitconfig、Pythonのsetup.cfgやtox.ini、flake8やpytestの設定、そして多くのlinter。CIではruntimeにINIを手で書くことはめったにありませんが、setupのstep中にテンプレートで値を挿入することはあるかもしれません。

An INI-style tox config
# tox.ini consumed by a CI test step
[tox]
envlist = py310,py311

[testenv]
deps = pytest
commands = pytest

生き残る理由

INIが生き残るのは、可能な限り最もシンプルな構造化設定だからです: 誰でも読んで編集でき、基本的なparserを書くのは簡単です。型やネストが不要なフラットな設定には、今も完全に使えます。

重要なポイント

  • INIファイルは、key = valueのペアを含む角括弧のセクションからなるフラットな設定です。
  • 公式の標準がないため、コメント構文、引用符、大文字小文字の扱いがparserによって異なります。
  • TOMLは本質的に標準化された型付きの後継です。INIは今もgit configやPythonのツールに生きています。

関連ガイド