はじめに|iniファイルって何に使うの?
Pythonでプログラムを作っていると、「この設定、毎回コードに書くの面倒だな…」と思うこと、ありませんか?
たとえば…
- データの保存先フォルダのパス
- 使用するユーザー名やAPIキー
- デバッグモードのON/OFF設定
こういった**「あとから自由に変えたい情報」**は、コードとは別に管理したほうが便利です。そこで活躍するのが「iniファイル」です。
iniファイルは、古くから使われているシンプルな設定ファイル形式です。拡張子は .ini。Windowsのシステム設定やゲームのコンフィグでもおなじみですね。
書き方もとっても簡単で、
[settings]
debug = true
username = my_user
のように、セクション・キー・値のセットで情報を整理できます。
このファイルをPythonで読み込めば、「設定をコードにベタ書きする必要なし」「あとから値を変えてもOK」という便利な仕組みが手に入ります。
本記事では、Python標準ライブラリのconfigparserを使って、iniファイルを読み書きする方法をやさしく解説していきます。
「設定ファイルってなんか難しそう…」と感じている方も、これを読めばあっという間に使いこなせるようになりますよ!
それではさっそく、iniファイルの基本構造から見ていきましょう。
1. iniファイルの基本構造を理解しよう
まずは、iniファイルがどんな構造になっているのかを見てみましょう。
iniファイルは、以下のような3つの要素で構成されています。
- セクション(section)
- キー(key)
- 値(value)
🔸 セクションは「[]」で囲む
セクションは、設定をグループ化するための見出しのようなものです。[general] や [user] など、角括弧 [ ] で囲んで記述します。
[database]
このセクションの中に、具体的な設定項目を入れていきます。
🔸 キーと値は「=」か「:」でつなぐ
セクションの中では、キーと値を = または : でつないで書きます。
[database]
host = localhost
port = 3306
どちらの区切り方でもOKですが、=を使うケースが多いです。
🔸 コメントは「#」か「;」で書ける
設定ファイルには「この行は何を意味するのか?」を書いておきたくなりますよね。そんなときは行の先頭に # または ; を付けることでコメントを追加できます。
# これはホストの設定
host = localhost
; ポート番号は3306
port = 3306
🔸 値は複数行にもできる
長い文字列を複数行に分けたいときは、2行目以降をインデントして書くことで対応できます。
[description]
text = これは複数行にわたる説明です。
インデントすれば続きとして認識されます。
🔸 他の値を参照することもできる!
なんと、一度定義した値を使い回すこともできるんです。%(キー名)s という書き方で参照できます。
[paths]
base_dir = /home/user/project
data_dir = %(base_dir)s/data
この例では、data_dir の中で base_dir の値 /home/user/project を使っています。こうすれば、一括変更もしやすくなりますね!

次は、いよいよこのiniファイルをPythonから読み込んで使う方法を見ていきましょう!
2. Pythonでiniファイルを読む|configparserの基本
iniファイルの書き方がわかったら、次はそれをPythonプログラムの中で使えるようにする方法を見ていきましょう。
Pythonでは、設定ファイルを読み込むために標準モジュールの configparser を使います。追加でインストールする必要はないので、すぐに使い始められます!
🔸 基本の流れはこの3ステップ!
import configparser
# 1. ConfigParserオブジェクトを作成
config = configparser.ConfigParser()
# 2. iniファイルを読み込む
config.read('setting.ini')
# 3. 値を取り出す
host = config['database']['host']
port = config['database']['port']
簡単ですよね?
🔸 まずはconfigparserをインポート
標準ライブラリなので、以下のようにインポートするだけです。
import configparser
🔸 ConfigParserオブジェクトを作る
設定ファイルを操作するための「操作ユニット」のようなものを用意します。
config = configparser.ConfigParser()
🔸 ファイルを読み込む
読み込むファイルのパスを、read()メソッドで指定します。
config.read('setting.ini')
このとき、相対パスや絶対パスどちらでもOKです。
🔸 セクション・キーでアクセスする
設定値は、辞書のようにしてアクセスできます。
config['セクション名']['キー名']
たとえば、setting.iniの中身がこうだったとします:
[database]
host = localhost
port = 3306
これをPythonで読み込むと…
host = config['database']['host'] # 'localhost'
port = config['database']['port'] # '3306'(文字列)
すべての値は文字列として取得されるので、数値として使いたいときは変換が必要です。これについては次の章で詳しく解説します。
🔸 セクションだけを取得したいときは?
セクションごとに辞書のようにまとめて扱いたいときは、次のように書けます:
db_config = config['database']
print(db_config['host']) # localhost
セクションをひとまとめにできるので、使い勝手がよくなります。

次は、**取得した値をどう扱うか?型の変換はどうする?ブール値の扱いは?**といった点を詳しく見ていきます!
3. 型変換と便利な取得メソッド
前の章で、iniファイルから値を読み込む方法を紹介しましたが、**取得した値はすべて「文字列(str)」**として扱われます。
でも実際のアプリでは、数値や真偽値など、型に合わせて使いたい場面が多いですよね。ここではそのための便利な方法を解説します。
🔸 数値を使いたいときは int() や float()
たとえば、ポート番号をiniファイルから読み込んだとき:
[server]
port = 8080
Pythonでそのまま取得すると…
port = config['server']['port']
print(type(port)) # <class 'str'>
→ 文字列ですね。
このままだと数値として比較したり計算したりできないので、int()関数で変換して使います:
port = int(config['server']['port'])
小数点を含む数値なら float() を使いましょう。
🔸 真偽値(ブール値)を扱いたいときは getboolean()
Pythonでは True や False を使って条件分岐することが多いですが、文字列としての 'true' や 'false' はそのままでは使えません。
そんなときは、セクションオブジェクトの getboolean()メソッド を使えばOK!
[feature]
enabled = true
enabled = config.getboolean('feature', 'enabled')
print(enabled) # True(ブール型)
次のような文字列はすべて True として認識されます:
true,yes,on,1
逆に以下は False になります:
false,no,off,0
🔸 他にも便利な取得メソッド
configparserでは、他にも次のようなメソッドが用意されています:
| メソッド名 | 戻り値の型 | 説明 |
|---|---|---|
get() | str(文字列) | 通常の取得(これが基本) |
getint() | int(整数) | 整数として取得 |
getfloat() | float(小数) | 小数として取得 |
getboolean() | bool(真偽値) | 真偽値として取得(yes/noなど) |
これらを使えば、毎回int()やfloat()で変換する手間が省けてコードもすっきりします。
timeout = config.getint('server', 'timeout')
🔸 値が存在しない場合の扱いに注意!
設定ファイルに存在しないキーを読み込もうとすると、例外(KeyError)が発生します。
print(config['server']['not_exist']) # ← エラー!
安全に扱いたい場合は、get()にデフォルト値を渡すような工夫をすると安心です(独自関数で包むなど)。

次は、実際の現場で使えるiniファイルの活用例と運用のベストプラクティスを紹介します。ここまでの知識をどう活かせるのか、ぜひチェックしてみてください!
4. iniファイルの活用例とベストプラクティス
ここまでで、iniファイルの基本的な構文や、Pythonからの読み込み方法が分かってきましたね。
では実際にどんな場面で役立つのか、活用例やベストな使い方のコツを見ていきましょう!
🔸 活用例①:アプリの設定ファイルに使う
小〜中規模のPythonスクリプトやデスクトップアプリで、環境や動作を外部から制御するのにiniファイルはとても便利です。
たとえば次のような設定ファイルを用意しておくと…
[app]
theme = dark
language = ja
[paths]
base_dir = /home/user/myapp
log_dir = %(base_dir)s/logs
ユーザーが設定を自由に書き換えられるようになりますし、アプリの再起動なしで反映することも可能です。
🔸 活用例②:複数環境(開発・本番)を切り替える
WebアプリやAPIを開発していると、開発環境と本番環境で設定を分けたいことがあります。
[development]
debug = true
db_host = localhost
[production]
debug = false
db_host = db.prod.example.com
Pythonのコード内で 環境名 を切り替えることで、設定を柔軟に読み替えられます。
env = 'development' # ここを 'production' に変えるだけで切り替えOK
config = configparser.ConfigParser()
config.read('setting.ini')
db_host = config[env]['db_host']
🔸 ベストプラクティス①:定数はまとめておこう
複数の値で共通になるパスや定数は、変数として定義して再利用すると便利です。
[common]
base_dir = /app/data
[log]
log_dir = %(base_dir)s/logs
あとでパスを変更したくなっても、1箇所だけ直せばOKなので、保守性が高くなります。
🔸 ベストプラクティス②:iniファイルはバージョン管理しよう
設定ファイルは、Gitなどのバージョン管理に含めておくことが大切です。
ただし、パスワードやAPIキーなど機密情報を含む場合は、別ファイルに分けるか .gitignore で除外しておくと安全です。
🔸 ベストプラクティス③:YAMLやJSONとの使い分け
最近はYAMLやJSON形式の設定ファイルもよく使われます。それぞれの特徴をまとめてみると…
| 形式 | 特徴 | 向いているケース |
|---|---|---|
| INI | シンプル、軽量、見やすい | 小規模設定、ユーザー編集が前提 |
| YAML | 階層構造、可読性が高い | 中〜大規模設定、複雑な構造が必要な場合 |
| JSON | 機械処理向き、他言語と互換性◎ | Webアプリ、APIレスポンス |
iniファイルは「とにかく簡単に設定したいとき」にピッタリなんです!

ここまでで、iniファイルの基礎から活用法までバッチリ理解できましたね。
5. まとめ|iniファイルは「軽い設定管理」に最適!
ここまで、Pythonでiniファイルを使う方法を見てきました。
おさらいすると、iniファイルは…
- 設定をコードの外に出して管理できる
- セクション・キー・値のシンプルな構造で分かりやすい
- Python標準の
configparserで簡単に読み込める - 型変換や変数参照も柔軟にできる
というメリットがあります。
とくに、小規模なスクリプトやツール、設定の多くないデスクトップアプリなどでは、「ちょうどいい」設定管理の方法として活躍してくれます。
もちろん、もっと複雑な設定が必要なら、YAMLやJSONといった別のフォーマットに移行してもOK。その前のステップとして、まずはini形式から始めてみるのがオススメです。

これで、あなたも設定ファイルマスターの第一歩を踏み出しました!
設定の記述と読み込みができるようになれば、アプリやスクリプトの使い勝手もグッと良くなります。ぜひ、今回の知識をあなたのプロジェクトに活かしてみてくださいね。
🧩 あわせて読みたい
- 🔗 【Python入門】YAMLファイルの書き方と使い方|設定ファイルの操作をわかりやすく解説!
YAMLファイルの読み書きを行う方法を、PyYAMLを使って丁寧に解説。iniとの使い分けにも注目。 - 🔗 【Python入門】jsonモジュールの使い方|JSONの読み書きと変換をやさしく解説!
設定ファイルとしてもよく使われるJSON形式の扱い方を、標準ライブラリで学べます。 - 🔗 【Python入門】pathlibの使い方を完全解説|フォルダー・パス操作が簡単になる方法
ファイルやフォルダのパスを扱うならこれ!設定ファイルとの組み合わせにも便利です。
よくある質問(Q&A)
- Qiniファイルはどんなときに使えばいいの?
- A
プログラムの「設定」や「構成情報」を、コードとは別に管理したいときに便利です。たとえば、フォルダのパス、ログレベル、使用モード(テスト/本番)などを記録しておくのに最適です。
- QPythonの
configparserで取得した値がすべて文字列になるのはなぜ? - A
iniファイルの仕様上、すべての値は「文字列」として扱われます。そのため、数値や真偽値として使いたい場合は、
int()やgetboolean()などで明示的に変換する必要があります。
- Q値を他のキーの値で参照できるってどういう意味?
- A
一度定義した値を別の場所で再利用できる仕組みです。たとえば:
[base]
root = /app
[log]
log_dir = %(root)s/logsこのように書くと、
log_dirには「/app/logs」が自動で代入されます。パスの一括管理などでとても役立ちます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。