はじめに|iniファイルって何に使うの?
Pythonでプログラムを書いていると、
「設定値を毎回コードに直接書くのが面倒…」
「環境ごとに設定を切り替えたい…」
と感じたことはありませんか?
たとえば、次のような情報です。
・データの保存先フォルダのパス
・ユーザー名やAPIキー
・デバッグモードのON / OFF設定
こうした あとから変更したくなる設定値 を、コードにベタ書きしてしまうと、修正のたびにソースコードを触る必要があり、ミスの原因にもなります。
そこで便利なのが iniファイル です。
iniファイルは、シンプルな書式で設定を管理できる設定ファイル形式で、Pythonでは標準ライブラリの configparser を使って簡単に読み書きできます。
[settings]
debug = true
username = my_user
このように「セクション・キー・値」で設定を整理できるため、
設定とロジックを分離した、変更に強いプログラム を作れるのが大きなメリットです。
本記事では、Python標準ライブラリの configparser を使って、
・iniファイルの基本構造
・読み込み方法・値の取得方法
・iniファイルへの書き込み方法
を、初心者の方でもつまずかないように実例付きで解説します。
「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の商品ページをご確認ください。