Bonjour(ボンジュール)

米Appleより開発、提供等が行われているインスタントネットワーキングテクノロジー。macOS(Mac OS X)を対象プラットフォームとし、米国時間2002年8月24日付にてリリースされた「Mac OS X 10.2 Jaguar」において、中核機能の一つとして新たに実装された。独立したアプリケーションではなく、システムレベルで統合されている。

「ZeroConf」をベースとしたネットワークテクノロジー

リリース当初は「Rendezvous(ランデブー)」と称されていたが、商標上の問題にて名称変更を余儀なくされ、「Mac OS X 10.4 Tiger」より「Bonjour(ボンジュール)」と改称された。ネットワークにおけるプロトコルの一つとして実装され、UDPポートの5353においてネットワークパケットの送受信を行っている。

標準化団体のIETF(Internet Engineering Task Force、インターネット技術特別調査委員会)における分科会の一つで仕様が策定されている「ZeroConf(Zero Configuration Networking)」をベースとしており、LAN内におけるネットワークや周辺機器の接続を設定不要にて使用可能としている。基本的には同一サブネット内での運用を想定しているが、DHCP(Dynamic Host Configuration Protocol)、Dynamic DNS、Global IP等を備えた環境であればルーター越えも可能となっている。

尚、IETF(Internet Engineering Task Force、インターネット技術特別調査委員会)は、Web標準やHTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)、OSPF(Open Shortest Path First)、NETCONF(Network Configuration Protocol)等の策定の策定にも関与している。

TCP/IPをベースとしたネットワークにおいて、IPアドレスやDNSサーバーの設定を行なう事なく、デバイスの相互検出がオートマチックに行われ、Classic Mac OSから実装されてきた「AppleTalk」が提供していた利便性をTCP/IP環境においても実現する事によって、小規模ネットワークにおける構築、設定、管理全般の煩雑さ等を緩和している(具体的には、LANに接続されたクライアントコンピューターや周辺機器、或いはそれらの上で実行されている種々のアプリケーション等の一連のノード(ハードウェア、ソフトウェア)を設定不要にてネットワークに参加させる事を可能としている)。

Ethernet(イーサーネット)、Wireless LAN(IEEE802.11)、Bluetooth、FireWire(IEEE 1394)、USB、Thunderbolt等の規格にて利用可能なプロトコルの一つとして実装されており、米国時間2002年9月25日より、APSL(Apple Public Source License)に準拠したオープンソースソフトウェアとしてソースコードが公開されている(Appleによる独自規格ではなく、スタンダードな標準規格としての普及に業界の先導役として尽力している)。

技術的な背景

プロトコルとしての理想は、スマート家電やAV機器を含む多様なデバイスの制御までをも含んでおり、Sun Microsystems(Oracle)によって開発され、現在ではRiverプロジェクトの下でApacheへと委譲されている「Jini」や、Microsoftによって提唱された「UPnP(Universal Plug and Play)」等と並立し、「ZeroConf(Zero Configuration Networking)」を実装して具体化した業界初のテクノロジーとしても注目を集めた。

AppleTalkとの類似点

Classic Mac OSから「Mac OS X 10.5 Leopard」までサポートされていた通信プロトコルの「AppleTalk」は、設定に関する特別な知識や管理は不要ではあるが、通信の際には、ネットワーク上の不特定多数のノードに対してブロードキャストにてパケットを送信しようとするため、ネットワーク上における負荷を高めてしまう傾向にある。「EtherTalk」が普及する以前は「LocalTaik」においても使用されていたように、規格自体も非常に古く、クライアントにおける様々なレスポンスに影響を及ぼす事もある(例えは「QuarkXPress 4.0」以前は、LAN上の全てのクライアントに対して「AppleTalk」を通じて起動の重複がないかを確認していたため、「AppleTalk」を無効化してスタンドアロンの状態にするだけで起動時間を大幅に短縮する事ができた)。

この辺りは、TCP/IPをベースとしてユニキャストにて効率的な通信を可能とする「Bonjour」とは相容れない部分が多いが、後述する構成要素の一つ「Naming」によって決定される各ノードの名称は、ノード名が「NBP Name」、サービス、プロトコル名が「NBP Type」、ドメイン名が「NBP Zone」に相当する等、AppleTalkにおける「NBP(Name Binding Protocol)」に類似した規則性が用いられている。

インクエリーの間隔を指数関数的に増やす事によって、「AppleTalk」の欠点を克服

「AppleTalk」が潜在的に抱えていた前記の問題を回避するために、TCP/IPモデルのLANが一般的に普及していく事となるが、アドレス割り当ての管理の負担を軽減するために、LAN内にDHCP(Dynamic Host Configuration Protocol)サーバーを配置したとしても、一定規模のネットワークにおいては管理者が必要となる。

このような状況の最適解として両者のメリットを抽出し、パーソナルユーザーに対してIPネットワークのメリットを享受した事が「Bonjour」の大きな特徴の一つとして挙げられる。

そして、AppleTalkのデメリットの一つとして懸念されていたネットワークにおける負荷の増大に対して、「Bonjour」ではサービス検索のフレームワークにDNS(Domain Name System)を利用する事によって、任意のノードが他のノードから受けたクエリーへの返答、新サービスの開始通知等のトラフィックを極力キャッシュする事を実現。ネットワーク(LAN)に対するクエリーの出力を極力に抑制し、トラフィックを減少させるするために、サービス一覧の問い合わせ間隔を指数関数的に増やす(1秒後→2秒後→4秒後→8秒後→…)ような工夫が施されている(最終更新日 2024年11月10日)。