Nokia Siemens NetworksのIDP開発ツールによるエンド・ツー・エンドIMSアプリケーションの開発

Dennis Luemkemann、Manfred Jakesch著
2008年3月5日

概要

この記事では、Nokia Siemens NetworksのIMS開発者プログラムから提供される標準ベースの無償開発ツールと、BEA WebLogic SIP Serverを使用して、クライアントおよびサーバー部分の両方を含むIPマルチメディア・サブシステム(IMS)アプリケーションを開発してテストする 方法を紹介します。 IMSは複雑な環境ではありますが、適切なツールを使用すればその複雑さに対処することは可能であり、エンド・ツー・エンドのテストを1台のPCで実行で きるようになります。

ネットワークの統合とIPマルチメディア・サブシステム(IMS)

通信接続業者は、加入者に対して、従来の音声、ショート・メッセージ・サービス、マルチメディア・メッセージ・サービスに加えてより多 くのサービスを提供する方法を模索しています。 これらの業者は、インターネット・プロトコル(IP)、Session Initiation Protocol(SIP)、アプリケーション・サーバー、およびストリーミング・メディアのような、IT業界ですでに確立されているテクノロジーを導入 しています。 これによって、以前は閉鎖的で孤立していた電気通信の環境が、新しい市場と機会を求めているIT開発者に開放されるようになりました。 SIPの詳細については、Dev2Devの記事『An Introduction to SIP, Part 1』(2006年)を参照してください。

3GPP(Third Generation Partnership Project)などの標準化グループは、アプリケーションに高度なインフラストラクチャを提供するサービス用の汎用プラットフォームとして、すでに IMSを指定しています。 世界中の通信接続業者がこのシステムを配備しており、以前は公衆交換電話網(PSTN)、ケーブル・テレビ・ネットワーク、公共のインターネットなどに分 かれていたネットワークを統合する重要な役割を果たしています。 この統合された環境では、アプリケーションを1台のPCやインターネット上で単に実行するだけではなく、どこからでも、そして使用しているどのデバイスか らでもアプリケーションにアクセスできます。

これを実現するために、IMSではさまざまなメディア・フォーマット、転送プロトコル、シグナリング・プロトコル間の変換を実行できる 必要があります。また、あるユーザーまたはネットワーク・コンポーネントからのトラフィックを別のユーザーまたはネットワーク・コンポーネントにルーティ ングするメカニズムも提供する必要があります。 IMSがこのすべてを行うので、開発者は実際のアプリケーションに集中できます。

図1は、IMSの主要なコンポーネントを示しています。 この図に示されているように、呼セッション管理機能(CSCF: Call Session Control Function)はProxying(P)、Interrogating(I)、Serving(S)といった3つの役割を持つSIPプロキシとして機 能し、加入者プロファイルを格納しているHSS(ホーム加入者サーバー)と連携して認証を管理します。 プレゼンス・サーバー(Mobile Presence Manager(MPM))は、ユーザーのプレゼンス状態を追跡し、これらの状態が変化した場合に通知を送信します。 グループ・リスト管理サーバー(Community Services Data Manager(CSDM))と組み合わせることで、プレゼンス・サーバーは、アプリケーション内のバディ・リストに必要なネットワーク・バックエンドを 提供します。 IMS Network Emulatorは、これらのコンポーネントをエミュレートします。 SIPアプリケーション・サーバーはCSCFに接続することができ、メディア・ゲートウェイとシグナリング・ゲートウェイは、さまざまなアクセス・ネット ワークとデバイスの間で変換を行います。

IPマルチメディア・サブシステムの主要なコンポーネント
図1: IPマルチメディア・サブシステムの主要なコンポーネント

Nokia Siemens Networksが提供する開発ツール

IMS開発者プログラム(IDP)は、IMS向けのアプリケーションを記述して市場に投入する開発者を支援します。 すでに多数のモバイル・アプリケーション開発用ツールが利用可能となっており、実績もあるため、IDPでは、純粋にIMSとSIPに関連したツールに重点 を置いています。したがって、開発者は、使い慣れたオペレーティング・システム上に好みのツールとエミュレータをセットアップして、IMSアプリケーショ ンを開発できるようになっています。

この記事では、IMS Network Emulatorと、クライアント用のJava ME IMS SDKを使用しました。 Java対応携帯電話向けのこのSDK以外に、WindowsとWindows Mobile向けの.NET IMSクライアントSDKもあります。 これらのツールはすべて、IMS開発者プログラム Webサイトから無償でダウンロードできます。

それでは、これらのツールについて詳しく見てみましょう。

IMS Network Emulator

このツールは、インフラストラクチャ側であるIPマルチメディア・サブシステムの代わりとなるもので、実際のIMSを、その主要なコン ポーネントのCSCF(SIPプロキシの役割を果たす呼セッション制御機能)とHSS(基本的にユーザー・データベースとSIPで構成されるホーム加入者 サーバー)でエミュレートします。 これらの中核となるIMS機能とは別に、IMS Network Emulatorは、OMAプレゼンス・サーバーとXMLデータ管理サーバーもエミュレートします。IMSインストールで一般的に利用できるこの2つのコ ンポーネントは、システム全体のプレゼンス情報を、それを必要とする加入者またはアプリケーションに提供します。

IMS Network EmulatorはスタンドアロンのJavaアプリケーションで、開発用PCまたは別のマシンのどちらでも実行できます。 また、構成とローカル設定を行うためのグラフィカル・ユーザー・インタフェース、およびリモート設定を行うためのWebインタフェースを備えています。

Java ME IMS SDK

現在市販されている携帯電話のほとんどはSIPプロトコルに未対応で、プレゼンスのようなIMSサービスについても述べられていませ ん。 理論的には、独自のSIPプロトコル・スタックを実装すること、または既存のSIPスタックの1つを使用することが可能ですが、仕様を理解して、ヘッダー の設定や認証情報の計算などを実行するコードを記述するのにかなりの時間がかかります。 一方、高レベルAPIを活用すると、たった数行のコードでSIPサービスが使用できるようになります。 これは、JSR 281でIMSサービスAPIとし て定義されています。 このAPIを通してSIPを使用すれば、IMSサービスをアプリケーションに簡単に統合できます。

Java ME IMS SDKは、Java MEデバイス(おもに携帯電話)用のライブラリで、SIPサービスとIMSサービスに対応するための高レベルAPIが含まれています。 Java ME IMS SDKでは、JSR 281ドラフト仕様を使用しています。 このライブラリには2つのバージョンがあります。1つは、一般的なMIDP 2.0デバイスとCLDC 1.1デバイス用で、SIPスタックが含まれています。もう1つは、JSR 180 APIによるSIPスタックを搭載したNokia S60 3rd Editionデバイス用となっています。 JSR 180の詳細については、Dev2Devの記事『Introduction to the SIP API for Java ME』(2007年)を参照してください。

PictureQuizアプリケーション

IMSアーキテクチャは、デモンストレーション・アプリケーションを使用してその動作を観察することで簡単に理解できます。 PictureQuizは単純なサンプル・アプリケーションで、IMSクライアントおよびサーバー・アプリケーション開発の重要な要素を確認できます。 PictureQuizアプリケーションとそのソース・コードは、IDP開発者ポータルから入手できます。 このセクションでは、アプリケーションの概要、そのアーキテクチャ、およびクライアント/サーバー・コールについて説明します。

概要

クイズ・ゲームは、質問をクイズ・クライアントに送信するサーバー・アプリケーションで構成されています。 各質問は回答をA、B、Cから選択する三択方式となっており、プレーヤーは制限時間内に答えを選択する必要があります。 質問文の隣には画像が表示され、「この大統領の名前は?」、「この花の名前は?」といった形式の質問をすることができます。

ゲームのラウンドは、すべてのクライアントが質問に答えるか、またはサーバー側のタイマーで時間切れになると終了します。 各ラウンドの最後に、そのラウンドの正解と勝者がすべてのプレーヤーに送信されます。

アーキテクチャ

図2に示すように、アプリケーションは3つの主要なコンポーネントで構成されています。

  1. SIPアプリケーション・サーバー(SIP AS)は、ゲーム・ロジックの実行、質問リポジトリの保持、画像の提供を行います。
  2. IMSは、アプリケーションに対するインフラストラクチャ・プロバイダとして機能します。 このアプリケーションは、Gm(クライアント/SIP)およびISC(アプリケーション・サーバー/SIP)インタフェースを介してCSCF(おもに ProxyおよびServingの役割)を使用します。 したがって、IMS Network Emulatorを使用してこのアプリケーションを実行できます。
  3. 最終的にクライアントは、ユーザーにインタフェースを提供して質問と回答の選択肢を表示し、ユーザーが選択した答えをサーバーに 送り返します。
PictureQuizアプリケーション
図2: PictureQuizアプリケーションのアーキテクチャ

サーバー

サーバー・アプリケーションの実装は、標準化されたJSR 116 SIPサーブレットAPIに基づい ています。 したがって、サーバー・アプリケーションは、この標準を実装している任意のSIPアプリケーション・サーバーにデプロイできます。 現在のバージョンは、BEA WLSS 3でテストされたものです。 SIPサーブレットをプログラミングする方法の詳細については、Dev2Devの記事『The SIP Servlet Programming Model』(2007年)を参照してください。

IMSへの登録が成功すると、プレーヤーは自動的にクイズ・サーバーに登録されます。 サーバーは、S-CSCFからサーバーに送信されるSIPサード・パーティ登録メッセージに基づいてプレーヤーを識別します。 この登録プロセスにより、プレーヤーがクイズ・ゲームにアクセスできることが保証されます。

プレーヤーがゲームを開始する準備が整うと、クライアント・アプリケーションは、SIP INVITEメッセージを使用してセッションを開始します。 そして、ユーザーがゲームを開始できる状態になっていることをサーバーが認識すると、そのユーザーは、ゲームの新しいラウンドのそれぞれで質問を受け取る ことになります。 すべてのクライアントは、同じ質問を受け取り、各質問に回答して互いに競い合います。

進行していたラウンドの勝者が決定すると、勝者と正解を通知するメッセージがすべての登録クライアントに送信されます。 また、勝者が決定しなかったときは、それも伝達されます。 その後、サーバーは次の質問を送信します。

SIPコール・フロー
図3: アプリケーションのSIPコール・フロー

図3で説明されているコール・フローは、このアプリケーションのSIPインタフェースに関する標準的なユースケースを示しています。 この図では、説明を簡素化するために、アプリケーションによって使用されるIMS(CSCF)の主要なコンポーネントのみを記載しています。

サーバー・アプリケーションのソース・コードは、PictureQuizのパッケージに収録されています。 EclipseとWebLogic SIP Serverを使用する場合は、WebLogic Serverツールでアプリケーションをコンパイルしてデプロイできます。 また、Antビルド・ファイルを使用してコンパイルを実行し、WLSS用の専用タスクによってサーブレットをデプロイする方法もあります。

PictureQuizサーバーはコンバージド・アプリケーションであるため、SIPプロトコル機能はHTTP機能と結合されていま す。 サーバーは、アプリケーションを構成し、サーバーからゲームを開始するためのWebインタフェースを備えています。 現在登録されている(オンラインの)ユーザーを選択して、ユーザーをゲームに招待できます。

クライアント

クライアントは、任意のプラットフォーム(SIP対応)に対して記述することが可能です。これは、クライアントに必要とされるのが、 SIPとHTTPを使用してサーバーと通信する機能と、質問と結果を表示する機能のみだからです。 この記事では、Java MEクライアントを使用し、JSR 281 APIを含むJava ME IMS SDKでビルドします(図4を参照)。 また、WindowsやWindows Mobileを使用する場合は、Win.NET IMS SDKをダウンロードしてインストールすることもできます。このSDKには、これらのプラットフォームに対応したPictureQuizクライアント (ソース・コードを含む)が収録されています。

IDEとデバイス・エミュレータでMIDletを開発する環境をすでにセットアップしてある場合は、ライブラリJARファイルをプロ ジェクトにコピーして、CLASSPATHとプロジェクト・エクスポートに含めるだけで済みます。 これによって、必要なIMS機能にアクセスできるようになります。 まだMIDletを開発していない場合、まずはSunが提供しているJava MEに関する文書を参照してください。

一般的に、SIPセッションにおけるデータ交換は、何らかの"メディア"となります。 データ交換は、RTPストリーム、MSRP転送、またはアプリケーションに適した任意の方法になる可能性があります。 PictureQuizでは、単純に、ゲーム・セッション内で送信されるSIP MESSAGEを使用しています。 使用するメディアは、セッション・セットアップの間に記述されます。 JSR 281には、セッションを確立するAPIと、カスタムのメディア型を実装するメカニズムがあります。 PictureQuizアプリケーションでは、PictureQuiz用にこのようなカスタム・メディアを実装して、それをセッションに追加する必要があ ります。

Java MEクライアント
図4: Java MEクライアントのスクリーンショット

PictureQuizアプリケーションの優れた特徴の1つは、アプリケーションのウェイクアップです。 JSR 180が組み込まれた携帯電話にアプリケーションをデプロイすると、PicturreQuizのSIP INVITEを受信した場合に、デバイスのプッシュ・レジストリ・メカニズムを使用してPictureQuiz MIDletを起動できます。 これは、サーバー側のWebベースのゲーム起動オプションと連動しています。

エミュレートされた環境におけるエンド・ツー・エンドのテスト

アプリケーションを実行する前に、IMS Network Emulatorが正しく構成されていることを確認する必要があります。 デフォルト・ユーザーで標準構成を使用する場合は、初期フィルタ条件またはこれらのデフォルト・ユーザーのトリガーを適応させることになります。 このメカニズムはCSCFの機能で、事前定義された条件のいずれかと一致するSIPメッセージを、SIPアプリケーション・サーバーに転送できます。 これには、2つのトリガー・エントリが必要です。1つは、REGISTER要求を捕捉して、オンラインになっているユーザーをサーバーが確認するのに使用 されます。もう1つは、ゲームを開始するINVITEリクエストを受信するのに使用されます。

エンド・ツー・エンドのテストでは、IMS Network Emulatorが起動して実行されていること、WLSSが実行されていてPictureQuizアプリケーションがデプロイされていることを確認する必 要があります。 Eclipse IDEからWLSSを起動する場合は、すでに説明したWebLogic Serverツールを使用できます。

ブラウザにアドレスhttp://<address_of_wlss>:7001/quizを 入力して、アプリケーションが正しくデプロイされたことを確認してください。 このアドレスを入力すると、アプリケーションのメインWebページが表示されます。

すべてが正常に表示された場合は、IMS Network EmulatorのTrace Viewerを開いて、SIPトラフィックを確認します。 クライアントをエミュレータ内で起動するか、またはWLANを使用して実際のデバイス上で起動します。 クライアントがIMS Network Emulatorに登録され、アプリケーションのWebページに表示されるはずです。 これで、ゲームを開始する準備ができました。 Trace Viewerでは、セッション招待およびクライアントとサーバー間のメッセージ交換を確認できます。

まとめ

この記事では、サンプル・アプリケーションを使用して、IPマルチメディア・サブシステムのアプリケーションがいかに簡単に開発できる かを説明しました。 IMSの複雑さは、IMS Network Emulatorによって軽減できます。また、IMSの追加機能には、サーバー側に対応するJCP標準APIであるJSR 116およびクライアント側のJava MEに対応するJSR 281を使用することでアクセスできるようになります。

IMS開発者プログラムの無償ツールは、クライアント開発用およびサーバー開発用の他のツールをシームレスに統合して、1台のマシンま たは分散したテスト環境での開発を可能にします。

参考資料

Dennis Luemkemannは、Nokia Siemens Networks IMS開発者プログラムにおけるフレームワークおよび開発ツールの責任者です。