Google TalkのAPIとソースコードのリリース

先月、Jabber Software Foundation(JSF)は、Jabber(XMPP)プロトコルの2つのエクステンション、Jingle SignalingとJingle Audioのドキュメントをリリースした。同じ日、この2つのエクステンションの共同開発元であるGoogleは、libjingleというライブラリをBSDスタイルのライセンスの下にリリースした。エクステンションの実装であるlibjingleは、Google Talkソフトウェアの心臓部である。Google Talk本体で使用されるAPIがオープンにされたことと併せて、この2つの動きは、オープンソースのインスタント・メッセージング・クライアントにとっては追い風となり、おそらくSkypeのようなクローズ・システムにとっては大きな逆風となるだろう。

Jingle Signalingは、Jabber Extension Proposal 0166として提案中の技術であり、これをJabberに追加することによってXMPPクライアントからのピアツーピア・セッションの開始や管理が可能になり、SIPサービスやH.323サービスに対するインターフェイスが提供される。Jingleは、従来のTransport for Initiating and Negotiating Sessions(TINS)プロトコルのセッション管理機能に代わるものであり(JEP-0111)、Network Address Translation(NAT)トラバーサル機能を備えている。

JingleのNATトラバーサルモードの動作は、現在IETFのドラフト段階にあるInteractive Connectivity Establishment(ICE)プロトコルに厳密に準拠する。ICEでは、ピア間の最良の接続をネゴシエートするために、使用できるすべての組み合わせを試してどれが最高のパフォーマンスを示すか計測する。試行錯誤にしか聞こえないかもしれないが、この方法の効果は非常に大きい。また、Jingleでは、従来のSimple Traversal of User Datagram Protocol (UDP) Through NAT(STUN)プロトコル(RFC 3489)との接続についてもネゴシエートを試みる。       

Jingle Signalingプロトコルには、あらゆる種類のセッションとネゴシエートできる能力があり、そのリリースには音声チャットセッション・フォーマットのJingle Audio(JEP 0167)が含まれる。Jingle Audioセッションは、本来はRTPトランスポートによる通信のために設計されたが(それが最も普及しているプロトコルだからだが)、あらゆる種類のオーディオ・エンコーディング・ストリームがサポートされている。

事実、Jingle SignalingとJingle Audioの前身は、無料のGoogle Talkチャット・サービスのために設計されたGoogleの社内プロトコルである。JSFはTINSの代わりとなるプロトコルを開発していたが、その初期段階で、Google Talkが同じような機能を持つことに気付いたのである。Jingleは、両者の共同作業の成果だ。

Google化

JSFからJingle仕様が公開されると同時に、GoogleからはJingle仕様に基づいたGoogle Talk APIがリリースされた。また、他のプロプライエタリ製品(Googleの所有するものも含む)のAPI公開は停止されたが、Google Talkの基盤APIのライブラリ実装はオープンソース・ライセンスの下にリリースされた。Libjingleパッケージには、libjingle(Jingle SignalingとJingle Audioの実装)と、低レベルのコンポーネント群(ピアツーピア接続、ソケットおよびスレッドの作成、XMPP、ストリーミング・メディアなどの実装)が含まれる。

JingleはXMPPを基盤とするので、他のXMPP対応アプリケーションでのサポートが期待される。Psiは、緊急の告知を出して、クライアントにJingleサポートを追加すると発表した。また、Gaimの開発者Sean Eganは、Googleの社員だ。libjingleの名前こそ挙げていないが、EganはGaimニュースページにメッセージを投稿し、次のリビジョンでGoogle Talk機能を(音声チャット機能を含め)サポートすることを明らかにした。他のIMプロジェクトから公式の発表はないが、推測は盛んに飛び交っている(特にXMPPを既にサポートしているアプリケーションの反応について)。

競争

プロプライエタリIMクライアントでも、libjingleを利用できる。Berkeleyスタイルのライセンスでリリースされたライブラリだからだ。もちろん、XMPPやその他の標準と同様に、AOLやSkypeのような大規模ネットワークがこの新しいプロトコルを採用する見込みは少ない。だが、Googleがコードを公開したことで、彼らに大きなプレッシャーがかかることは間違いない。

Googleの方向転換は、SkypeのAPIプログラムとは対照的だ。libjingleの場合、開発者はGoogle Talkと相互に運用できる独自のソフトウェアを作成できるが、SkypeのAPIを使ってできるのはSkypeアプリケーションの機能を拡張することに限られる。Googleは、従来のXMPPメッセージングに関しては、他のXMPPクライアントがGoogle Talkネットワークに接続することを既に認めていた。こういったクライアントは、今後は音声チャットでもGoogle Talkネットワークに接続できるわけだ。

マルチメディア・チャットやテキストベース・チャットのセットアップ、ネゴシエート、管理のインフラストラクチャは大同小異なので、1つのことはできるがそれ以外はできない、といったアプリケーションは急速に過去のものとなりつつある。

既に、Google Talkは1つのプロプライエタリIMクライアントにXMPPへの道を開いた(AppleのiChatのことだ)。次は、Jingleが同じ影響を音声チャットに与える番である。

原文