現在地 HOME > 掲示板 > IT4 > 936.html ★阿修羅♪ |
|
Tweet |
http://www.atmarkit.co.jp/fjava/special/jain01/jain01.html
高山義泉
2003/12/25
Javaは1995年に発表されて以来、インターネットとともに進化を遂げました。現在では単なる「コンピュータ言語」と表現されるにとどまらず、「Java=マーケット」であると表現できる地位を確立したといえるでしょう。
ところで、Javaはネットワーク環境におけるサービスを実現するためのテクノロジともいえますが、このネットワーク上のサービスを実現するための仕様として「JAIN」の策定が進められてきました。JAINはまだ広く知られていませんが、今後注目されるテクノロジです。すでに、いくつものAPI仕様が策定されていて、それに準じた製品があります。
1985年ごろ、それまでハードウェアで制御されていた公衆電話回線網にコンピュータとソフトウェアが導入され、いままでにないサービスが実現可能になりました。それが、例えば、いま私たちが当然のように使用しているフリーダイヤルであり、VPN、ダイヤルQ2サービスです。
このようにコンピュータを導入し高度なサービスを実現している公衆電話回線網を、IN(インテリジェント・ネットワーク)といいます。その後INは進化を続け、公衆電話回線網によるサービスはますますリッチになり、さらにそれを実現するためのソフトウェアもサービスプロバイダにとって拡張性が高く、メンテナンスの行いやすいものへと変わってきました。
さらにいま、VoIP(Voice over IP)技術が注目され、いままでの電話網の常識が変わりつつあります。@IT Master of IP Network「第10回 読者調査結果」のデータからも分かるように、VoIPは非常に注目されているテクノロジです。そして、VoIPを実現するネットワークとして、インターネット網が期待されています。ネットワークサービスプロバイダのいくつかは、サービスの品質を高めるためにVoIPサービス用の専用網を構築しサービスを開始しているところもあります。このようにインターネット網に期待する背景には、なんといってもコストメリットがあるのでしょう。
既存の公衆電話回線網とインターネット網の使用コストを考えると、その差は一目瞭然でインターネット網を利用する方が圧倒的にコストダウンできます。もちろん、既存の公衆電話回線網システムをすべて取り替えるとすると、新規システムへの初期投資コストや運用管理技術面で検討すべき項目は多くありますが、長期的視野に立ってこれらの課題をクリアした企業が、すでに導入を行っています。
また、@ITのアンケート結果から分かるように、VoIPを検討する多くの方が期待しているサービスは、いわゆる「既存の電話サービス」のみではありません。コストの削減のみならず、テレビ会議やeラーニング、業務アプリケーションなどのこれまでインターネット網上で提供されているサービスとの統合です。
ネットワークには図1のようにインターネット網や既存の公衆電話回線網、ケータイ電話網にCATV網などさまざまなものがあります。これらのネットワーク上では多くのサービスが提供されており、私たちはそれぞれのアクセス手段でいろいろなサービスを利用しています。
それを図2に示すように共通のネットワーク上に、あらゆるサービスを実現することで、ユーザーはPCや固定電話、ケータイ電話、FAX、冷蔵庫やテレビなどのデバイスからさまざまなサービスを使うことができ、またサービス同士が連携することで新たなサービスが生まれます。これを次世代コミュニケーションサービスといいます。そして、この新しいサービスの実装を担うJava APIがJAINなのです。
JAINは、次世代のコミュニケーションサービスをサポートするためのAPI群です。以下のような多くのAPIで構成されています。
Final Release/Maintenance Public Review
JSR 011 − JAIN TCAP 1.1 JSR 125 − JAIN SIP Lite
JSR 018 − JAIN OAM JSR 141 − JAIN SDP
JSR 021 − Java Call ContrJSR 122 − JAIN CAT (JCAT)ol 1.1
JSR 023 − JAIN MGCP JSR 123 − JAIN PAM
JSR 032 − JAIN SIP 1.1 JSR 165 − JAIN SIMPLE Instant
JSR 035 − JAIN INAP Messaging
JSR 116 − SIP Servlets JSR 164 − JAIN SIMPLE Presence
Proposed Final Draft Community Review
JSR 029 − JAIN MAP JSR 100 − JAIN SCE (XML)
JSR 022 − JAIN SLEE JSR 161 − JAIN ENUM
JSR 079 − JAIN MEGAC JSR 186 − JAIN PresenceO
JSR 180 − SIP for J2 JSR 187 − JAIN Instant Messaging ME
In Expert Group
JSR 103 − JAIN UI
JSR 136 − JTSP
JSR 182 − Java Payment (JPAY)
JSR 192 − JAIN SCE (Java)
本稿では、この中でも現在最も注目されているJAIN SIPとJAIN SLEEを取り上げましょう。
JAIN SIPについて触れる前に、SIP(Session Initiation Protocol)について簡単に解説します。SIPの詳細は@IT Mastar of IP Nework「【トレンド解説】マイクロソフトがIP電話を面白くする!? 〜いま注目を集める「SIP」の最新トレンドと概要〜」 で触れているので参考にしてください。ここではJAIN SIPを理解するために必要な付加情報を説明しましょう。
SIPは、マルチメディアセッションの確立や終了をつかさどるアプリケーション層のシグナリングプロトコルです。SIPはIETF(Internet Engineering Task Force)のワーキンググループで提案され、現在はRFC3261で標準化されています。SIPがカバーする範囲は、セッションの確立、変更、終了のみで、セッション確立後のアプリケーションの動作には一切関与しません。そのため、既存のアプリケーションを含むさまざまなアプリケーションと柔軟に組み合わせることができます。
それではSIPの動作を見てみましょう。図3のようにTomがBobと会話をするとします。そのときに、Tom(200.0.0.1)はBob(00.1.1.5)に対して呼び出しを行います。下図で表現すると、「お〜い、いますか?」になります。ここでBobが応答可能であれば下図のように「うん、いるよ!」と返答します。これで、実際にアプリケーションを動作させるためのセッションは確立されます。SIPの役割はここまでになります。
この後、実際のアプリケーションの動作は、アプリケーションがそれぞれのプロトコルを用いてやりとりを行います。
しかし次世代コミュニケーションサービスを考慮した場合、先の例のように相手のIPアドレスが分かっているというケースは少ないでしょう。セッションを確立したい相手のほとんどは人間ですので、当然移動します。クライアントツールも自宅のPCであったり電車の中で使用しているPDAであったり、さまざまです。さらには、オフィス内でもDHCP(Dynamic Host Configuration Protocol)を使用している場合もあります。セッションを確立したい相手のIPアドレスがその時々で変わるということは多くあるはずです。このような場合に備えて、SIPは「SIPモビリティ」という機能を提供しています。
それでは、図4を用いてSIPモビリティの動作を見てみましょう。まずBobは、自分のマシンをIPネットワークに接続したときに、自身のIPアドレスをレジストラサーバに登録します。TomはBobとセッションを確立する場合、BobのIPアドレスは分からないため、直接IPアドレスを用いるのではなく、SIPアドレスを用い、ロケーションサーバに問い合わせます。そうして取得したBobのIPアドレスを用い、Bobにセッションを確立するよう要求します。このようにSIPでは、SIPアドレスを用いることで柔軟にセッションを確立できる環境を提供しています。
さらに、SIPの拡張機能では次のような機能を提供しています。
このようにSIPを用いることで、SIPの本質でもある「セッションの確立」に加えて、インスタントメッセージ(チャット)を実現することも可能です。
すなわちJAIN SIPは、SIPをJavaで操るためのAPIです。JAIN SIP(JSR032)は、NISTおよびサン・マイクロシステムズが中心となって仕様策定が進められ、現在JAIN SIP Ver1.1がリリースされています。JAIN SIP 1.1は、API、RI(Reference Imprementation:参考実装)、インターフェイス、ドキュメンテーション、テストキットからなります。RIは現在NISTからリリースされており、「https://jain-sip.dev.java.net/」からダウンロードすることができます。
前述したとおりSIPはセッションの確立や終了をつかさどるプロトコルであり、アプリケーションには一切依存しません。もちろん、OSやハードウェアに依存することなく動作します。よって、その柔軟性に加え、いまやケータイ電話から家電、PC、基幹系のサーバまで、どこでも動く「Java」と連携することで、次世代コミュニケーションサービスに期待される多機種間での、それもユーザーモビリティを実現するセッションの確立を容易に実現することが可能になります。
冒頭でINの登場について触れましたが、そのソフトウェアサービスを実現するアプリケーションの実行環境、それがSLEE(Service Logic Execution Environment)です。これは図6に示すように青枠で囲った部分で必要とされるものです。SIPユーザーモビリティでは、BobがレジストラサーバにIPアドレスを登録するためのサービスや、TomがSIPアドレスからBobのIPアドレスを取得するためのサービスが必要になります。
現在のIN上で提供されている、フリーダイヤルやダイヤルQ2で使用される番号変換サービス、課金サービスなどを実現するソフトウェアの実行環境がSLEEです(SLEEとは論理的概念であり、SIPのように標準化団体で仕様が決められているものではありません)。
SLEEとは前述したようにサービスを実行するための環境=アプリケーションサーバであり、JAIN SLEEは、JavaでSLEEの実行環境を提供するものと定義付けすることができます。
JAIN SLEEの仕様(JSR022)は、Open Cloudおよびサン・マイクロシステムズが中心になり策定を行っています。現在、JAIN SLEEはProposed Final Draftの段階で、API、テストキット、ドキュメントが提供されており、アプリケーションサーバRIは2004年初めにOpen Cloudから提供される予定です。また、Open Cloudでは、すでに実装製品を提供しており、JAIN SLEEを取り囲む状況は完全に整備されたといえます。
JAIN SLEE仕様では、アプリケーションのデザイン定義を行っています。一方で外部インターフェイスに関する仕様定義は行っておらず、さまざまなデバイスやプロトコルにも対応できる柔軟なアプリケーションを構築することができ、次世代コミュニケーションサービスの実行環境として最適な環境といえるでしょう。
JAIN SLEEの仕様策定に至った経緯は、J2EEのそれと非常に似ており、INの進化とともに高度なサービスが要求されたとき、それとともにサービスの拡張性や保守性、およびアプリケーション開発の容易性(=APIの充実、開発者コミュニティの拡大、開発ツールの用意、再利用性)が必要とされたためです。それでは、なぜこの分野にもJ2EEアプリケーションサーバを適用しなかったのでしょう? それはJ2EEアプリケーションを実行するために要求される環境とテレコミュニケーションの分野で要求されるアプリケーションを実行するための環境があまりにも違うことにあります。
もちろん、サービスの拡張性や保守性、アプリケーション開発の容易性は、Java、J2EEで培われたものをそのまま有効に活用でき、実際にそれを行っています(すでにJAIN SLEEの開発ツールは、J2EE開発環境であるNetBeansのプラグインとしてOpen Cloudから提供されています)。
今回は、JAIN SIPとJAIN SLEEの概要に触れました。次回は、それぞれの仕様の詳細に踏み込み、どのような機能が提供されているのかを説明します。