設定ファイル(configファイルとも呼ばれます)は、 アプリケーション、サーバー、オペレーティングシステムなどのソフトウェアシステムを構成するために使用されるデータを保存するファイルです
一部のアプリケーションは、設定ファイルの構文を作成、変更、検証するためのツールを提供しています。グラフィカルユーザーインターフェース(GUI)を使用する場合もあります。例えば、システム管理者はテキストエディタを使用してテキスト設定ファイルを作成および変更することが求められる場合があります。サーバープロセスやオペレーティングシステムの設定には標準ツールがないことがよくありますが、オペレーティングシステムはYaSTやdebconfなどのグラフィカルインターフェースを提供している場合があります。
一部のコンピュータプログラムは、起動時にのみ設定ファイルを読み取ります。他のプログラムは、定期的に設定ファイルの変更をチェックします。ユーザーは、一部のプログラムに設定ファイルを再読み込みして現在のプロセスに変更を適用したり、任意のファイルを設定ファイルとして読み込んだりするように指示できます。明確な標準や厳格な規則はありません。

一般的に、設定ファイルは任意の形式にすることができます。特定のシステムに適用される形式は、そのシステムの設計によって決まります。多くの場合、標準化された形式が使用されます。これは、その形式向けに設計されたツールであれば、たとえその形式を利用するシステム向けに設計されていなくても使用できるためです。特に、JSON、XML、YAMLなどの汎用シリアル化形式は、オープンソースソフトウェアやプラットフォームに依存しないソフトウェアでよく使用されます。これらの形式の仕様は、幅広い使用をサポートするために一般に公開されています。
次の表は、設定データに使用される主要な形式を比較したものです。
構文の型付けの列は、構文がデータ型をサポートしているかどうかを示します。値の型が構文によって指定されている場合、フォーマットには構文の型付けがあります。例: はブール値で、は文字列trueです。値の型がセマンティクスに基づいている場合、フォーマットには構文の型付けがありません。例: と はどちらもブール値で、パーサーがブール値を期待している場合です。構文の型付けの価値に関する意見は様々です。
"true"true"true"
以下は、一般的に使用されるオペレーティングシステム別に整理された設定ファイルの例です。
UnixおよびUnix系オペレーティングシステムでは、さまざまなファイル形式が使用されています。それでも、単純なキーと値のペアを含む、人間が編集可能なプレーンテキスト形式を使用するという強い伝統があります。ファイル名拡張子は.cnf、、、、またはがよく使用されます。
.conf.cfg.cf.ini
多くの形式ではコメントが許可されており、その場合、コメント文字を先頭に追加することで個々の設定を無効にすることができます。多くの場合、デフォルトの設定ファイルには、コメント形式の広範な内部ドキュメントが含まれています[8] [9]。また、利用可能な形式とオプションを文書化するために、 manファイルも通常使用されます
システム全体のソフトウェアは/etc、に保存されている設定ファイルを使用することが多い一方、ユーザーアプリケーションは「ドットファイル」を使用することが多い。ドットファイルとは、ホームディレクトリ内のファイルまたはディレクトリで、先頭にピリオドが付くもので、Unixではファイルまたはディレクトリを偶然のリストから隠すため.configのものである。これは混乱を招くため、新しいユーザーアプリケーションは通常、ホームディレクトリの標準化されたサブディレクトリであるディレクトリ
内に独自のフォルダを作成する。
設定ファイルと同様に、実行コマンド(rc)シェルスクリプトはシェルセッションを構成できる。多くの場合、このようなスクリプトは、、、、のように、rc使用するプログラムの名前に続くサフィックスが付いた名前が付けられる。[10].xinitrc.vimrc.bashrcxsane.rc
By contrast, IBM's AIX uses an Object Data Manager (ODM) database to store much of its system settings.
MS-DOSは主に設定ファイルに依存していましたCONFIG.SYS。設定ファイルは、単純なキーと値のペア(例:)を持つプレーンテキストファイルですDEVICEHIGH=C:\DOS\ANSI.SYS。MS-DOS 6ではINIファイル形式が導入されました。rcファイルと同様に、バッチファイルは起動AUTOEXEC.BAT時にコマンドを実行しました。これらのファイルは両方ともWindows 98SEまで保持され、Windows 98SEもMS-DOS上で動作していました。
CONFIG.SYSの例:
DOS = HIGH,UMB
DEVICE = C:\DOS\HIMEM.SYS
DEVICE = C:\ DOS\EMM386.EXE RAM
DEVICEHIGH = C:\DOS\ANSI.SYS
FILES = 30
SHELL = C:\DOS\COMMAND.COM C:\DOS /E:512 /P
DOSアプリケーションは、多種多様な個別の設定ファイルを使用していました。そのほとんどはバイナリで、独自のものであり、文書化されておらず、共通の規則や形式はありませんでした。[要出典]

初期のWindowsオペレーティングシステムでは、オペレーティングシステムとアプリケーションを構成するための主要なメカニズムとして、プレーンテキストのINIファイルを多用していました。 [11]これらのファイルを読み書きするためのAPIはWindowsにまだ存在しますが、1993年以降、Microsoftは開発者に対し、INIファイルの使用をやめ、Windows NTで導入された階層型データベースであるレジストリに設定を保存するように指示し始めました。後のシステムでは、レジストリの代わりにXMLなどの形式が使用されています。
プロパティリストは、 macOS(およびiOS、NeXTSTEP、GNUstep、Cocoaアプリケーション)の標準設定ファイル形式です。ファイル名拡張子 は.iniです.plist。
IBMのOS/2はバイナリ形式を使用しており、拡張子は.INIですが、Windows版とは異なります。型指定のないキーと値のペアのリストが含まれています。[ 12] システム全体の設定は、OS2.INIとOS2SYS.INIという2つのファイルで制御されます。アプリケーション開発者は、これらのファイルを使用するか、アプリケーション専用のファイルを作成するかを選択できます。
HarmonyOSおよびOpenHarmonyベースのオペレーティングシステムは、.propertiesという名前のJSON設定ファイルを使用しますconfig.json。プラットフォームIDEであるDevEco Studioは、.propertiesを編集するためのメソッドを提供していますconfig.json。[13]