D-Bus

アプリケーション間でやりとりを行うためのプロセス間通信(IPC)実装

D-Bus(Desktop Bus、ディーバス)は、メッセージバスと呼ばれる、アプリケーション間でやりとりを行うための、プロセス間通信 (IPC) 実装の1つである。プロセスの生成期間を調節し、それらのサービスが必要なときに簡単に呼び出すことができるようにすることができる。軽量さ、低依存度を保って開発されている。

D-Bus
開発元 多数[1]
最新版
1.12.16[1] / 2019年6月11日 (5年前) (2019-06-11)
最新評価版
1.13.12[2] / 2019年6月11日 (5年前) (2019-06-11)
リポジトリ ウィキデータを編集
対応OS クロスプラットフォーム
種別 ライブラリ
ライセンス GPLまたはAcademic Free License
公式サイト www.freedesktop.org/wiki/Software/dbus/ ウィキデータを編集
テンプレートを表示

D-BusはKDE(バージョン2 - 3)独自のIPC実装であるDCOPの影響を受けて生まれ、KDE4 (Qt4) で採用された。GNOMEも独自のIPC実装であるBonoboからD-Busへ移行している。Linuxでもudevによるマウントメッセージの通知を行う際にD-Busを使っている。X.Org Server7.3からはD-Busによる実行時の設定が可能になっている。

D-Busは多くのプログラミング言語ライブラリとのバインディングを持ち、C言語JavaC++C#PythonRubyPerlGTKQtMaemo(携帯端末用のデスクトップ環境)などから利用できる。さらに、Unix系オペレーティングシステム (OS) だけでなく、winDBusという名前の別プロジェクトとしてWindows版も開発されている。

機構

編集

D-Busデーモン (dbus-daemon) によってメッセージを管理する。OSの起動中に常時実行されるシステム管理用のデーモンと、該当ログインセッションが有効である期間中実行されるログインセッション管理デーモンの2つがある。システム管理用のデーモンは、プリンタキューの追加やデバイスの追加・削除などを通知する。セッションごとのデーモンは、デスクトップアプリケーション間の通信に使われる。

デーモンとアプリケーションの間の通信としては、ソケットを用いる。

アーキテクチャ

編集

D-Busは、3つのレイヤーから構成されるアーキテクチャである[3]

  1. libdbus - 2つのアプリケーションをつなぎ、メッセージを交換することを可能にするライブラリ
  2. dbus-daemon - libdbus 上に作られた実行ファイル形式のメッセージバスデーモン。複数のアプリケーションが接続する。デーモンは1つのアプリケーションから0個以上の複数のアプリケーションにメッセージを配信する。出版-購読型モデルを実装できる。
  3. 特定のアプリケーションフレームワークに基づくラッパーライブラリ

D-Busの設計は、以下の2つのケースに基づいて行われた。

  1. 同じデスクトップセッション内のデスクトップ環境上のアプリケーション間の通信。全体として、デスクトップセッションを1つに統合する。
  2. デスクトップセッションとOS間の通信。OSには典型的にはカーネルやシステムデーモンなどが含まれる。

D-Busを利用するソフトウェア

編集
  • HAL (ソフトウェア)(ハードウェアの変更をアプリケーションへ通知する)
  • notification-daemon(Xのイベントをアプリケーションに通知する)
  • BlueZ (Linux及びAndroidで動作するBluetoothスタック)

参照

編集
  1. ^ index : dbus/dbus” (2019年6月11日). 2019年12月22日閲覧。
  2. ^ index : dbus/dbus” (2019年6月11日). 2019年12月22日閲覧。
  3. ^ Get on the D-BUS”. Linux Journal. 2008年1月23日閲覧。

関連項目

編集

外部リンク

編集