2008年2月8日に行われたVoIP Confarence 2008にて、SIPropプロジェクトのメンバーとして講演をしてきました。プレゼン資料はこちらから。
SIPropについて
SIPというのはSession Initiation Protocolの略で汎用的なセッション管理のプロトコルです。HTTPはステートレスなんでセッション管理はCookieを使って実現しています。一方のSIPではプロトコルそのものがセッションの維持を保証してくれます。
このSIPはVoIP(ボイス・オーバー・IP)、ようはIP電話の制御プロトコルとして利用されていることで有名です。ちなみに、僕も勘違いしていたのですがSIPの上を音声パケットが通るわけではありません。SIPはセッション管理しかせずに、シグナリング、電話で言うならば呼制御をしています。電話が鳴るとか、受話器を上げるとか、電話を切るとか、そういう部分です。
さて、このSIPですが仕様はあるものの、実装があいまいで方言がきついことでも有名だそうです。そもそもキャリアの思想は囲い込み。もはや当然過ぎて批判も出ませんが、携帯電話のキャリア間で仕様がそろっていないのが常識な世界です。
そこで、このSIPの方言をOSSで相互接続してやろうとして始まったのがSIPropです。2006年度上期 未踏ソフトウェア創造事業として採択されました。それがv1。
雷電について
その後、SIPropのv2の開発が進む中で、SIPの相互接続を飛び越えてHTTPとの接続を可能にできないか、ということでスタートしたのがプロジェクト雷電です。SIPropの代表である今村さんとは昔からの知り合いで、その縁で協力することになったので去年の夏ごろ。その後、紆余曲折あったので、とりあえずVoIP Confarence 2008出のデモを目標に実装を進めてきました。
僕がSIPとHTTPの相互接続という話を聞いた時に思ったのが「音声とWebの融合」でした。プレゼン資料にも書きましたが、音声はWebエンジニアからすると聖域でアーキテクチャ設計をしていても、いつもコールセンター部分は手出しができないまま。ですが、音声はなくならないわけで、こことWebアプリが柔軟に統合できれば非常に面白そうだと感じたのです。
なんで、そういう仕掛けにしようと思ったのかはよく思い出せないのですが、僕の作ったのはCOMETとServiceMixを使ったCTIのような仕組みです。

たとえばコールセンターなどで電話がかかった来たときに顧客の電話番号から顧客情報を画面に表示する、というアプリケーションがあったとします。従来のCTIアプリケーションは、PBXやCTIが提供するエージェントをクライアントPCにインストールし、このエージェントがアプリケーションを起動することで連携していました。しかし、これではWebアプリケーション化は難しい。
そこで「電話がかかってきた」というSIP上のイベントをSIPropにフックさせ、それをCOMETを使ってブラウザ上に通知を出そうとしたのです。デモは遊びに来てくれればいつでも見せられますが、電話がかかってきたとのほぼ同時に画面に「電話が**さんからかかってきましたよ」と表示されます。COMETによる擬似的なサーバプッシュがSIPと相性がいいわけです。
しかも、SIPropとCOMETを使うアプリケーションの間はServiceMixを使って連携させようと考えました。ServiMixはJIB(ESBのJava標準仕様)の実装ですが、非常に軽量に作られておりアプリケーション内で動作させることができます。非同期メッセージを扱うのが非常に楽ですし、数多くのプロトコルをサポートしています。また、コアエンジンにはSEDAが採用されており、アプリケーション全体としてのパフォーマンス調整が行いやすいことも魅力の1つです。
音声とWebの融合は何を生むのか?
雷電を使ってもらえれば、既存のWebアプリケーションを電話と連動させることが可能になります。WebアプリケーションはServiceMix越しにイベントを受け取るだけ。JBIレベルで作り込んでもいいですし、JMSからFTP、Jabberまで幅広いプロトコルで連携させることができます。
じゃ、こんなものを作っていって何がいいのか?それは、これまで断絶されていた音声とWebのエンジニアによるマッシュアップです。何ができるのか、ということは想像できません。むしろ、このいうオープンな仕掛けによって音声とWebが連携できると分かることで、みんながどう思うかが楽しみです。なんか、新しい価値が生まれる可能性があると思っています。
というわけで、興味ある方は連絡ください。
なお、この雷電をベースにした案件を成立させるのが今年の目標の1つです。大規模なコールセンター案件は不可能ですが、これまでCTIの仕組みを入れられなかったような中小規模のビジネスを対象にすることが可能です。そこで連携すべきシステムがSFAなのか、CRMなのか、ECサイトなのか、はたまた全然違うものなのか。これから、それを探していきたいと思います。
