工学において、マスタースレーブとは、2つのシステム間で一方が他方を制御する関係を指します。場合によっては、1つのマスターが1つのスレーブシステムのみを制御しますが、複数のスレーブシステムが同じマスターによって制御される場合もあります。マスターとスレーブが異なる種類のシステムである場合もありますが、複数の類似システムがあり、そのうちの1つがマスターとして指定され、外部(つまりユーザー)によるコレクションの制御を一元化する場合もあります。[ 1 ]
奴隷制度と関連付けられる傾向があるため、この用語は論争の的となっており、場合によっては別の用語に置き換えられている。[ 2 ] [ 3 ] [ 4 ]
写真撮影において、補助フラッシュ、またはスレーブフラッシュユニットは、同期照明を提供するためにマスターユニットに接続されます。
パラレルオーディオ複製では、多くの場合、複数の録音機器(カセットテープやコンパクトディスクなど)を相互に接続し、マスター機器の操作によってスレーブ機器にも同じコマンドが実行されるように設計されています。
同一列車内で運行される鉄道機関車(例えば、単一の機関車では牽引できないほど重い荷物を牽引する場合など)は、マスタースレーブ方式で構成することができ、1両を除くすべての機関車は最初の機関車から制御されます。詳しくは「複数ユニット列車の制御」を参照してください。
油圧システムにおいて、マスターシリンダーは、力を油圧に変換し、油圧ラインの反対側にあるスレーブシリンダーを駆動する制御装置です。一般的な用途としては、車両のブレーキシステムが挙げられます。
マスタークロックは、クロックネットワークの一部として、1 つ以上のスレーブクロックを同期するために使用される時間信号を提供します。[ 5 ]スレーブクロックはマスターから時間を受信して表示しますが、マスターが動作していない場合は、スレーブクロック自身で時間を保持できる場合があります。
コンピュータのバスプロトコルでは、マスタースレーブ関係がよく用いられます。例えば、USBホストは、複数のUSBデバイスが共有するUSBバスへのアクセスを管理します。シリアルペリフェラルインターフェース(SPI)バスでは、通常、1つのマスターが複数のスレーブを制御します。[ 6 ] [ 7 ] [ 8 ] [ 9 ] I2CやI3Cでは、バス上に複数のマスターが存在することもあります。Modbusでも、マスターデバイスがスレーブデバイスへの接続要求を開始します。
エッジトリガ型フリップフロップは、 2つのゲートラッチをマスタースレーブ構成で配置することで作成できます。マスターラッチがスレーブラッチの値を制御し、スレーブラッチが常にマスターラッチから新しい値をコピーするため、スレーブラッチはその値を保持するように強制されることから、この名前が付けられています。
データベースレプリケーションでは、マスターデータベースが権威あるソースです。スレーブまたはレプリカデータベースはマスターデータベースによって制御され、マスターデータベースは更新コマンドをスレーブに繰り返します(たとえば、イベントログを介して)。そのため、スレーブはソースデータベースによって処理されたトランザクションの正確なコピーを保持します(最後に送信されたログまで)[ 10 ]この方式は、電子機器が時計を共有するほど厳密ではありませんが、スレーブデータベースは、マスターの障害によりスレーブが昇格されない限り、マスターの指示のみを実行します。一部のデータベースは、書き込み可能なマスターノードと読み取り可能なノードが混在する、いわゆるマルチマスターレプリケーションを実装しています。これらのデータベースは、パフォーマンスがACID特性とのトレードオフとして許容されるシナリオで使用されます。たとえば、類似の購入を提案するなど、ミッションクリティカルではないデータです。
マスターという用語は、制御関係を意味しない技術分野で使用されることがあります。マスターは、他のコピーよりも重要なコピーを意味する場合があり、その場合は関係性ではなく絶対的な概念となります。マスタースレーブという用語は、制御関係を暗示しない文脈で使用されることもあります。
ソースコード管理 において、マスターとはトランクを指す場合がある。ディスクイメージングにおいては、ゴールドマスターとは複製のために製造部門にリリースされるバージョンのことである。
パラレルATA(別名IDE)ハードドライブインターフェースは、1本のケーブルで2台のハードドライブをサポートし、それぞれをマスターとスレーブとして指定します。どちらのドライブも他方のドライブを制御したり優先したりする権限はありませんが、インターフェース上、この区別が必要となります。
主従関係という用語は1904年に初めて使用された。[ 11 ]
この用語は、ドメインネームシステムに関連するRFC 1059(1988年)とRFC 2136(1997年)で使用されました。2020年、ポール・ヴィクシーは自身の言葉の選択について次のようにコメントしました。
RFC 2136 でマスター/スレーブという用語を導入したのは、 AXFR/IXFR トランザクションにおける役割に名前が必要だったためであり、ゾーン転送階層は複数の階層に及ぶ可能性があり、サーバーが「プライマリ マスター」に対して AXFR/IXFR を開始した後、他のサーバーからの AXFR/IXFR に応答する可能性があるからです。今思えば、「転送開始者」と「転送応答者」という用語を選ぶべきでした。しかし、私の車の油圧ブレーキとクラッチ システムには「マスター シリンダー」と「スレーブ シリンダー」があったため、「マスター」と「スレーブ」という言葉の新しい用途を発明しているとは思っていませんでしたし、この目的でそれらを使用することが物議を醸すとも思っていませんでした。[ 12 ]
自動車産業向けの油圧ブレーキは、1917年にマルコム・ラウヘッドによって特許取得されました。[ 13 ]スレーブシリンダーという用語は、1919年に公開されたロバート・エスノー・ペルテリーによる特許出願など、他の特許出願でも使用されています。[ 14 ]
メディア分析会社グローバル・ランゲージ・モニターは、 2004年の政治的に物議を醸す言葉の年間リストでマスター/スレーブを1位に挙げた。 [ 15 ]米国のブラック・ライブズ・マター運動は再び議論を巻き起こし、2020年には用語の変更が行われた。[ 16 ]しかし、用語の変更は表面的またはパフォーマンス的な活動であると主張する人もいた。[ 17 ] [ 3 ]
さまざまな代替用語や一般的に文脈依存的な用語が提案されており、以下のようなものがある。[ 16 ] [ 3 ] [ 18 ] [ 19 ] [ 20 ]
2003年、カリフォルニア州ロサンゼルス郡は、郡職員からの差別苦情を受けて、製造業者、供給業者、請負業者に対し、製品に「主人」と「奴隷」の用語を使用しないよう要請した。[ 21 ] [ 22 ]苦情を受けて、ロサンゼルス郡は、この決定は「単なる要請に過ぎない」との声明を発表した。[ 21 ]
2018年、激しい議論の末、Pythonの開発者たちは用語を変更した。[ 4 ]文脈に応じて、Pythonは( masterの代わりに)main、parent、またはserver 、および( slaveの代わりに) worker、child、またはhelperに切り替えた。[ 4 ] [ 23 ] Linuxカーネルも同様の方針を採用し、新しいコードとドキュメントでより具体的な用語を使用するようになった。[ 19 ] [ 24 ]
2018 年 7 月、Googleの開発者スタイル ガイドが更新され、ソフトウェア ドキュメントではマスターという用語、特にスレーブとの組み合わせを避けるように指示されました。代わりに、ガイドでは、組み合わせる場合はプライマリ/セカンダリやオリジナル/レプリカなどの用語を推奨しています。マスターとスレーブのさまざまな個別のバリエーションが示されています。[ 25 ]
内容を含むバイナリログはマスターサーバーからスレーブサーバーに送信され、スレーブサーバーはメインサーバーの動作を正確に模倣できます。
「2004年当時、『master/slave』という表現は、政治的正しさの最もひどい例だと私たちは考えました」と、グローバル・ランゲージ・モニターの社長であるポール・JJ・ペイアック氏は述べた。
以前のI2C仕様では、コントローラは「マスター」、ターゲットは「スレーブ」と呼ばれていました。これらの用語は仕様v7で廃止されました...包括的な用語であるコントローラとターゲットを使用します。