⚙️ もう「ハードコード地獄」から卒業!設定はファイルに切り出そう
アプリのタイトル、データの保存先パス、デバッグモードのON/OFF――こうした「変わる可能性のある値」をPythonコードの中に直接書き込んでいませんか?コードのあちこちに散らばった設定値は、ちょっとした変更にも修正漏れを生み、本番環境でのトラブルの温床になります😱
そんなモヤモヤを一気に解消してくれるのが、Python標準ライブラリの configparser。.ini ファイルというシンプルな形式に設定をまとめておくことで、コードを書き換えずに挙動を変えられる、保守性の高いアプリが今日から作れるようになります✨
📂 そもそも.iniファイルとは?
.iniファイルは、設定ファイル・定義ファイルとして古くから広く使われてきたフォーマット。config.ini のように .ini という拡張子で保存され、内部はセクション・キー・値という3要素で構成されます。
以前のYAMLファイルと比べると表現力は控えめですが、その分記載がシンプルで分かりやすいのが大きな特徴。「ちょっとした設定を切り出したいだけ」という用途には、むしろYAMLよりも気軽に使えます👌
📝 .iniファイルの基本的な書き方
セクションは角括弧 [ ] で囲んで表します。その下に キー = 値 または キー : 値 の形式で項目を並べていくだけ。
[DEFAULT]
title = サプアプリ
debug = false
[paths]
base_directory = /Users/sap
data_directory = %(base_directory)s/data
✨ 知っておくと便利な記法
- 📌 キーと値の区切りは
=でも:でもOK - 📜 値を複数行にしたいときは改行してインデントすれば続行扱い
- 💬 行頭に
#または;を付けるとコメント行になる - 🔗
%(キー名)sで他のキーの値を埋め込み(Interpolation)できる
特に値の埋め込み機能は強力で、たとえば base_directory を一度定義しておけば、data_directory や log_directory でその値を使い回せます。パス管理がぐっとラクになりますよ📁
こういうケースってよくありますよね。データディレクトリーの中で
%(base_directory)sと書けば、そこに先ほど定義したパスが自動展開されます。
🐍 Pythonからconfigparserで読み込む
.iniファイルを書いたら、次はPythonから読み込んでみましょう。標準ライブラリの configparser モジュールをインポートすれば、追加インストール不要ですぐ使えます🎉
🛠️ 基本の読み込みフロー
import configparser
config = configparser.ConfigParser()
config.read("config.ini")
# セクションを辞書のように扱える
title = config["DEFAULT"]["title"]
print(title) # サプアプリ
このように、config[セクション名][キー名] という辞書ライクな書き方で値が取得できます。直感的で覚えやすいですね😊
📊 一気に複数の値を取得
セクションオブジェクトを経由せず、config["paths"]["data_directory"] のように1行でアクセスすることも可能。コードを短くまとめたいときに重宝します。
⚠️ 注意点:値はすべて「文字列」として読み込まれる
configparserでハマりやすい落とし穴がここ。取得した値はすべて文字列型になります。数値として使いたい場合は int() や float() で明示的に型変換が必要です。
port = int(config["server"]["port"])
timeout = float(config["server"]["timeout"])
✅ Boolean値はgetbooleanで賢く取得
真偽値については、専用の getboolean() メソッドが用意されています。これを使うと、yes / no / true / false / on / off / 1 / 0 といった様々な表記を、自動的にPythonのTrue / Falseに変換してくれます。
debug = config["DEFAULT"].getboolean("debug")
# debug は bool型のFalseとして取得される
同じく getint()・getfloat() もあるので、型に応じて使い分けると安全です🛡️
📖 Pythonの設定管理&実践力を高める書籍5選
configparserの基本を押さえたら、次は「設定管理を含めたアプリ全体の設計力」を磨きたいところ。書籍で体系的に学ぶことで、現場で通用する設計判断ができるようになります📚
1. これからPythonを始める人の安心の入門書
変数・関数・モジュール・標準ライブラリの使い方まで、Pythonの土台を丁寧に教えてくれる定番書。「configparserって何?」というレベルからしっかり積み上げたい人にぴったりです🌱
2. 実務スクリプトをサクサク書きたい人へ
設定ファイルを読み込んでファイル整理やデータ取得を自動化する――そんな実用的なシーンが満載のハンズオン本。configparserで切り出した設定がそのまま現場で活きる感覚を体験できます⚡
3. Pythonらしい設計と標準ライブラリを極める
configparser・logging・argparseといった「縁の下の力持ち」標準ライブラリの本質的な使い方が学べる名著。中級者から上級者へのステップアップに最適な一冊です🚀
4. 堅牢で保守性の高いコードを書きたい人へ
設定管理・例外処理・型ヒント・テストなど、長期運用に耐えるアプリを作るための実践知が詰まった一冊。「設定値をどう外出しするか」の設計判断にも参考になります🛡️
5. プロのPythonエンジニアを目指す本格派へ
パッケージング、配布、設定管理、テスト、CI/CDまで、プロダクション品質のPythonアプリを作るためのノウハウが網羅された決定版。.iniやTOML、YAMLなどの設定形式の使い分けにも踏み込んで解説されています📘
❓ よくある質問(FAQ)
🤔 .iniファイルとYAML、TOMLはどう使い分ける?
シンプルなキー=値の設定なら.iniが最もお手軽。ネスト構造や配列を扱いたいならYAMLが便利。Python公式パッケージ設定(pyproject.toml)で採用されているTOMLは、.iniに似た書き心地と表現力の高さを両立しています。プロジェクトの規模と用途で選ぶのがおすすめです。
📦 configparserは追加インストールが必要?
不要です。configparserはPython標準ライブラリなので、Pythonがインストールされていればすぐに import configparser で使えます。外部依存を増やしたくないプロジェクトに最適です。
✏️ 設定値をPythonから書き換えてファイルに保存できる?
はい、できます。config["section"]["key"] = "新しい値" のように代入し、config.write(open("config.ini", "w")) で保存すればOK。設定値をGUIから変更して保存するアプリなどに便利です💾
🔒 パスワードやAPIキーも.iniに書いていい?
機密情報は.iniに直接書かないのが原則です。代わりに環境変数や、専用のシークレット管理ツール(python-dotenv、AWS Secrets Managerなど)を使いましょう。.iniにはあくまで「公開しても問題ない設定」を書くのが安全です🔐
🔁 値の埋め込み(Interpolation)でハマりやすい点は?
デフォルトの BasicInterpolation では % 記号がエスケープ対象になります。値に % をそのまま含めたい場合は %% と書くか、RawConfigParser を使ってInterpolation機能を無効化しましょう。
🎁 まとめ:設定をファイル化して、しなやかなアプリへ
configparserと.iniファイルを使いこなせば、コードと設定の分離という保守性の高い設計が、追加ライブラリなしで簡単に実現できます。本番環境・開発環境で異なる設定を使い分けたり、エンドユーザーに設定を編集してもらったり――アプリの柔軟性が一気に広がります🌟
動画や記事で得た知識を、書籍で体系的に深めれば、あなたのPythonスキルは一段と頼もしいものになります。今日紹介した5冊から気になる一冊を手に取って、「変更に強いアプリ」を作れるエンジニアへと成長してみてください📘🚀












コメント