INI
INI入門
歴史 / ルール / サンプル / インポート / エクスポート

INIは「軽くて速い設定ファイル」

テキストで読み書きでき、セクション [section]key=value の形で設定をまとめます。 古い文化だけど、今も「小さく済ませたい」場面で現役です。

基本形
; sample.ini (basic)
app_name = "SunStripe"
debug = true
max_items = 50
timeout = 1.25

[db]
host = "localhost"
port = 3306
user = "root"
pass = "secret"
よく使う機能
  • コメント:; または #
  • セクション:[db] のようにグルーピング
  • 配列:colors[] = red
  • 文字列:"..." で安全に
注意: INIは“仕様が厳密に統一されていない”のが弱点。言語・ライブラリによって解釈が違うことがあります。

解説(INIの歴史 / ルール / サンプル / Import & Export)

下のカードは ./data/lesson/ のJSONから読み込みます。

INIの歴史

概要 背景 文化

INIは「設定を人間が読む」文化の中で広まった軽量フォーマット。古いWindows系の慣習を起点に、今も“手軽な設定”として残っています。

詳しく
■起点
・古いWindows環境で、アプリ設定をテキストに保存する慣習が広まる(拡張子 .ini)。

■なぜ残っている?
・手で編集しやすい
・差分管理がしやすい(Git等)
・パースが軽い(小規模なら特に)

■ただし…
・厳密な標準仕様が弱く、言語/実装ごとに挙動差が出る
・複雑な構造(深いネスト、型の厳密指定)には不向き

■現代の代替候補
・TOML(設定ファイル向けの明確さ)
・YAML(表現力が高いが罠もある)
・JSON(厳格だがコメントできないなど)

INIのルール(基本)

ルール 書き方 注意点

セクションと key=value が基本。コメント、配列、引用符の扱いが“実装差の出やすいポイント”です。

詳しく
■基本構文
1) コメント行
・先頭が ; または # の行(実装による)

2) セクション
・[db] のように角括弧でグループ化

3) キーと値
・key = value
・空白は実装によって許容

■よくある注意点
・同じキーが複数回出た時:後勝ち/配列化など実装差
・文字列のクォート:"..." で安全に(中に ; # がある場合など)
・エスケープ:\n などの扱いは実装差

■おすすめ運用
・文字列は必要に応じてクォートする
・配列は key[] を使う(使えない実装もあるので注意)
・共有する設定は“対応する実装の仕様”を先に決める

サンプル集(すぐ使える)

サンプル 実務 テンプレ

実務でよく出る形をまとめます。まずは“読めること”を優先して、複雑にしないのがコツ。

詳しく
■最小
app_name = "SunStripe"

■セクション
[db]
host = "localhost"
port = 3306

■配列(実装が対応している時)
colors[] = red
colors[] = blue

■安全な文字列
message = "hello;world # not comment"

■避けたい例(曖昧になりやすい)
number = 00123 ; 先頭0は文字列か数値か割れる
path = C:\work\test ; バックスラッシュの解釈が割れることも

INIのインポート / エクスポート

変換 ツール 設計

INIを読み込む(import)=パースしてオブジェクトにする。書き出す(export)=オブジェクトをINI文字列へ戻す。

詳しく
■インポート(INI→JSON)
・行単位で読む
・コメント除外
・[section] を見つけたら格納先を切り替える
・key=value を分解して保存
・key[] は配列に push

■エクスポート(JSON→INI)
・トップ階層のプリミティブはそのまま key=value
・トップ階層のオブジェクトは [section] として出力
・配列は key[] を繰り返す

■設計のコツ
・値の型推測(true/false/number/null)は便利だが、曖昧さがある
・共有設定にするなら、ルールを“固定”して運用する(例:文字列は常にクォート)

INI ⇄ JSON ツール(インポート / エクスポート)

ブラウザ内で変換します(サーバー送信なし)。 ただし、変換ルールは“汎用INIの一例”として実装しています。

INI(入力)

INIをDL

JSON(出力 / 入力)

このツールの変換ルール(要点)

  • セクションは [section] → JSONのトップ階層キーになります
  • key=valuevalue は、true/false、数値、null を軽く推測します(完全ではありません)
  • key[] = ... は配列扱いにします
  • コメント行(先頭 ; / #)は読み飛ばします
  • 同名キーの重複は、後勝ち(最後に出た値を採用)です