D-Bus【Desktop Bus】
概要

コンピュータ上では複数のプログラムが独立したメモリ空間でそれぞれ動作するため、プログラム同士が直接データを共有することはできない。D-Busは「バス」(bus)と呼ばれる共有の通信路を介することで、この制約を超えたプログラム間の連携を可能にする。
通信の形式としては、特定の相手に処理を依頼して応答を受け取る「遠隔手続き呼び出し」(RPC)や、状態の変化を複数のプログラムへ一斉に知らせる「シグナル」(signal)などがある。シグナルは受け取りたいプログラムが事前に登録しておく仕組みであり、イベントの発生を契機に連鎖的な処理を起こすことができる。
バスの種類は用途に応じて二つに分けられる。システム全体で一つだけ動作する「システムバス」(system bus)は、ハードウェアの管理やシステムサービスとの通信に用いられる。一方、利用者がログインする度に個別に起動する「セッションバス」(session bus)は、その利用者が実行するアプリケーション間の連携に使われる。例えば、USB機器が接続された際にオペレーティングシステム(OS)がその事実を検知し、デスクトップ環境やファイル管理ソフトへ即座に伝達する動作はシステムバスを通じて実現される。
従来のLinux環境では、プログラム間の通信(IPC:Inter-Process Communication)に「ソケット」(socket)や「パイプ」(pipe)などが用いられてきたが、それぞれ通信方式やデータ形式が異なるため、異なるソフトウェア間での連携は容易でなかった。D-Busはこうした状況を改善するために設計され、標準化されたメッセージ形式とインターフェース定義によって共通の通信手段を提供する。現在では主要なLinuxディストリビューションに標準で組み込まれており、デスクトップ環境だけでなく組み込み機器やサーバでも広く利用されている。