設定ファイル(構成ファイルとも呼ばれる)は、アプリケーション、サーバー、オペレーティングシステムなどのソフトウェアシステムを構成するために使用されるデータを格納するファイルです。
アプリケーションによっては、設定ファイルの作成、変更、構文検証を行うためのツールが用意されている場合があります。場合によっては、グラフィカルユーザーインターフェース(GUI)を介して操作できます。システム管理者は、テキストエディタを使用してテキスト設定ファイルを作成および変更することが求められる場合があります。サーバープロセスやオペレーティングシステムの設定に関しては、標準的なツールは存在しないことが多いですが、オペレーティングシステムによっては、 YaSTやdebconfなどのグラフィカルインターフェースを提供している場合があります。
コンピュータプログラムの中には、起動時にのみ設定ファイルを読み込むものもあれば、定期的に設定ファイルの変更をチェックするものもある。ユーザーは、一部のプログラムに対して、設定ファイルを再読み込みして変更内容を現在のプロセスに適用するよう指示したり、任意のファイルを設定ファイルとして読み込むよう指示したりすることもできる。明確な標準規格や厳格な慣習は存在しない。
一般的に、設定ファイルはどのような形式でも構いません。特定のシステムに適用される形式は、そのシステムの設計によって決まります。多くの場合、標準化された形式が使用されます。これは、使用するシステム向けに設計されていなくても、その形式向けに設計されたツールを使用できるためです。特に、JSON、XML、YAMLなどの汎用シリアル化形式は、オープンソースソフトウェアやプラットフォームに依存しないソフトウェアでよく使用されます。これらの形式の仕様は、広く普及させるために一般に公開されています。
以下の表は、設定データに使用される代表的なフォーマットを比較したものです。
構文型指定列は、構文がデータ型をサポートしているかどうかを示します。値の型が構文によって指定されている場合、フォーマットは構文型指定されていると言えます(例:はtrueブール値、"true"は文字列) 。値の型が意味論に基づいている場合、フォーマットは構文型指定されていないと言えます(例:パーサーがブール値を期待する場合、trueおよびは"true"両方ともブール値になります)。構文型指定の価値については意見が分かれています。
以下は、一般的に使用されているオペレーティングシステムごとに整理された設定ファイルの例です。
UnixおよびUnixライクなオペレーティングシステムでは、さまざまなファイル形式が使用されています。それでもなお、単純なキーと値のペアを含む、人間が編集可能なプレーンテキスト形式を使用する強い伝統があります。ファイル名の拡張子として.cnf、、、、またはがよく使用されます。.conf.cfg.cf.ini
多くのフォーマットではコメントが許可されており、その場合、コメント文字を先頭に追加することで個々の設定を無効にできます。多くの場合、デフォルトの設定ファイルにはコメントの形式で詳細な内部ドキュメントが含まれています[ 7 ] [ 8 ] 。また、通常、マニュアルファイルを使用してフォーマットと利用可能なオプションを文書化します。
システム全体のソフトウェアは、多くの場合、 に保存されている設定ファイルを使用します/etcが、ユーザーアプリケーションは、多くの場合、「ドットファイル」を使用します。ドットファイルとは、ホームディレクトリ内のファイルまたはディレクトリの先頭にピリオド を付けたもので、Unix では、通常の一覧表示ではファイルまたはディレクトリが隠されます.config。これは、ディレクトリの汚染を引き起こすため、最近のユーザーアプリケーションは通常、ホームディレクトリの標準化されたサブディレクトリである ディレクトリ内に独自のフォルダを作成します。
設定ファイルと同様に、実行コマンド(rc)シェルスクリプトはシェルセッションを設定できます。多くの場合、このようなスクリプトは、rc使用プログラム名の後に、、、などの接尾辞.xinitrcを付けて命名されます。[ 9 ].vimrc.bashrcxsane.rc
それに対し、IBMのAIXは、システム設定の大部分を保存するためにオブジェクトデータマネージャ(ODM)データベースを使用している。
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デバイス= C:\DOS\HIMEM.SYSデバイス= C:\DOS\EMM386.EXE RAMデバイス高= C:\DOS\ANSI.SYSファイル= 30シェル= C:\DOS\COMMAND.COM C:\DOS /E:512 /PDOSアプリケーションは、多種多様な個別の設定ファイルを使用していたが、そのほとんどはバイナリ形式で、独自仕様であり、文書化されておらず、共通の慣習やフォーマットは存在しなかった。

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