根山 亮, 後藤 真孝, 園田 智也, 村岡 洋一: ”拡張性の高い Java マルチユーザ・フレームワーク Mug”, 情報処理学会 第 58 回全国大会, 5M-05, March 1999.

拡張性の高い Java マルチユーザ・フレームワーク Mug
5M-05
根山 亮y 後藤 真孝yy 園田 智也y 村岡 洋一yy

早稲田大学理工学部

1. はじめに本研究では, マルチプレイヤー型ゲームのような, ネッ
トワークを介したマルチユーザ環境を必要とするさまざまなアプリケーション (以下, 単にアプリケーションと呼ぶ) で , 1 つのマルチユーザ環境を共用するためのフレームワーク (マルチユーザ・フレームワーク)を Java 言語で実装した. ユーザ情報の管理やチャット等の機能を, 様々なアプリケーションに持たせることを容易にしただけでなく, 公開/非公開グループやアプリケーションごとに拡張可能なユーザ属性も導入した.
実際に, 不特定多数のユーザによる遠隔音楽セッションシステムを Mug 上で実装することにより, その有効性を実証した.

Mug

2. 従来のマルチユーザ環境の構築環境
従来のアプリケーションの多くは, それぞれに特化したマルチユーザ環境を独自に実装していた. そのため, そのマルチユーザ環境の機能を他のアプリケーションで再利用することは難しかった.
一方, 従来の汎用的なマルチユーザ環境の多くは, 仮想空間の中でユーザ間のコミュニケーションや知識共有を重視しており [1], 拡張性はあまり考慮していなかった. そのため, その環境の上でさまざまなアプリケーションをシームレスに組み込むことは難しかった.
ユーザにとって使いやすいマルチユーザ環境を実現するためには , 長い時間をかけてより多くのユーザからの要望を採り入れることが望ましい. そのためには,マルチユーザ環境にさまざまなアプリケーションを組み込むためのフレームワークを用意し , より汎用的で使いやすいマルチユーザ環境を構築するための基盤にできるとよい.
従来研究ではこのようなフレームワークが提案されていなかったため, アプリケーションが個々にマルチユーザ環境の開発を行なわなければならなかった. また, 複数のアプリケーションが統一した GUI () を提供することも難しかったため, ユー
ザにとって使い勝手が悪かった.

GraphicalUser Interface

3. フレームワークに必要な機能と拡張性(1) (4)拡張性の高いマルチユーザ・フレームワークを実現〜の機能を持つフレーするため, 我々は以下のムワークを提案する.
ユーザ構成を自由に指定できる仮想空間の作成
ユーザの好みやアプリケーションの種類によっては,すべてのユーザで情報を共有する開かれた仮想空間だ(1)

Mug: An Expandable
Multiuser Framework
for Javayy ,Ryo Neyamay, Masataka
Goto
Tomonari Sonoday, Yoichi Muraokayy School of Science and Engineering, Waseda University
yy Electrotechnical Laboratoryyy

電子技術総合研究所

けでなく, 限られた何人かだけで情報を共有する閉じた仮想空間も必要となる. マルチユーザ環境で実現される仮想空間のユーザ構成を, ユーザやアプリケーション開発者が自由に指定できるとよい.
例えば , 将棋対局の場合, 2 人の対局者の他に複数の観戦者が存在する縁台将棋のような対局には開かれた仮想空間が必要となり, 第 3 者から観戦されたくない対局には閉じた仮想空間が必要となる. チャットについても, サーバがあらかじめ用意した話題にユーザが集まって来る形態には開かれた仮想空間を適用し , ユーザ同士が個人的に集まる形態には閉じた仮想空間を適用できる.
アプリケーションによるの機能のカスタマイズ
マルチユーザ・フレームワークは, それを共用するアプリケーションに合わせて, カスタマイズできるとよい. アプリケーション固有の情報 (例えば , マルチプレイヤー型ゲームでの得点など ) を定義し , それを GUIで他のユーザ情報 (例えば , ユーザ名やクライアントのホスト名など ) とともにシームレスに表示できるとよい. また, ユーザ情報の変更に合わせてアプリケーションに固有の処理をさせるための機構が必要となる.
アプリケーションで共有可能なの提供
ユーザ一覧の表示とその整列, チャット等の他のユーザとのコミュニケーションのための GUI が必要となる. 複数のアプリケーションで GUI を共有できることが , ユーザの使い勝手の向上と機能の再利用の意味で重要である.
ユーザ情報の管理
サーバへのユーザのログイン・ログアウトや現在ロ
グ イン中のユーザの情報の管理し , ユーザ情報をすべてのクライアントで共有する機能が必要となる.

(2)

Mug

(3)

GUI

(4)

4. システムの概要

PublicGroup
MugUserInfo
MugServer

Mug は , 公開グループ (後述) を表す,ユーザ情報を表す, ユーザ情報を管理と GUI でしユーザ間の通信を中継するで構成される (図 1). それぞれのクあるラスは, 再利用が容易なコンポーネントとして設計されている.
ユーザの公開/ 非公開グループ
は, 開かれた/閉じた仮想空間をそれぞれ実現する (前). 公開グループは , 所属するユーザの一述の機能
覧をサーバが管理し , すべてのクライアントでその情報を共有できるグループである. PublicGroup は, 公開グループに所属するユーザの一覧を保持する. 一方,非公開グループは , 所属するユーザの一覧をクライアントが管理し , 他のクライアントとは無関係に、そのクライアントのユーザが自由にカスタマイズできるグ

MugClientPublicGroup(1)

MugClient
A B C
Integrated
GUI

Server Host

NetworkApplications
BAC

Integrated
MugUserInfo
AAA BBB CCC

MugServerAC
BApplications

Clinet Host

図 1: マルチユーザ・フレームワーク Mug

MugUserInfo

ループである.

アプリケーションはそれ固有のユーザ情報を, ユーザ情報を表す MugUserInfo のサブク). MugUserInfo
ラスとして定義できる (前述の機能はユーザ情報の属性の名前とその型 (クラス) の表を持っている. MugUserInfo のインスタンスは属性表で定められた型のインスタンスを値としてを保持する.
MugUserInfo は , ユーザ ID 番号, ユーザ名, 所属する公開グループ名, ユーザのホスト名を標準の属性として持っている. アプリケーションは, 固有の属性を新たに追加したり, 削除できる.
アプリケーションがユーザ情報を利用する場合, 能動的に取得する機構の他に, ユーザ情報の変更をイベントとして受け取る機構も必要となる. Mug では Javaの AWT () のイベント処理と同じ委譲型のイベント処理ができる. MugUserInfo の属性の追加・削除, 各インスタンスに対する値の変更のイベントを, アプリケーションの登録したイベント) が処理できる.
リスナ (Mug 上のアプリケーションは MugClient (図 2) を共通の GUI として利用できる (前述の). ユーザは , MugServer へのログイン・ロ機能
グアウトをここで行なう. ユーザがログインすると, 右側の「すべてのユーザ」のサブウィンド ウに現在ログイン中のユーザの一覧が表示される.

(2)

Abstract Window Toolkit

Event Listener

MugClient(3)(4)るツールバーを操作することにより, 非公開グループを新たに作成したり, 削除できる.
各サブウィンドウをアクティブにして, 左下のチャッ
ト入力欄に文字列を入力ですることで , サブウィンドウに表示されたユーザとチャットを行なう. サブウィン
ド ウ内の一覧からユーザを選択する (複数も可) ことにより, 指定したユーザだけとのチャットも可能である.
各サブウィンドウのユーザ属性名をマウスでクリックすることにより, 属性の値を鍵としたユーザ一覧の整列ができる. また「定型文」メニューで, 定型文を編集したり, その定型文をチャット入力欄に張り付けられる.
MugServer はユーザのログ イン・ログアウトの管理や, ログ イン中のユーザ情報の管理). また , ある MugClient のを行なう (前述の機能
ユーザ情報の更新やチャットのメッセージなどを他のMugClient にマルチキャストする. アプリケーション
は, MugServer のサブ クラスを定義し , MugServer の) することにより,メソッドをオーバーライド (アプリケーション固有の処理を行なえる. 例えば , ユー
ザがログ インした時に「そのユーザを待っている他のユーザにそれを知らせる」などの特別な処理をしたい
場合は, login メソッドをオーバーライド すればよい.

MugServer(4)

override

5. 実装とアプリケーション

Java Development Kit

は , JDK () 1.1, Swing
分散オブ ジェクト・プ ログ ラ ミング 環境
RyORB[2] を用いて実装した .
Mug に組み込むアプリケーションとして , インターネットのような広域ネットワーク上の不特定多数のユーザ同士が遠隔地間で音楽セッションを行なえるシステ[3] を開発した . Mug により,ム演奏相手を発見する環境や打合せ用のチャット機能を容易に実現でき, ユーザが使用する楽器の種類のような Open RemoteGIG 固有の情報を MugClient の中でシームレスに表示できた. また、その GUI は , 他のアプ リケーションに特化して開発されたマルチユーザ環境と同等の使いやすさが得られた.
Mug

1.1,

JavaOpen RemoteGIG

6. まとめと今後の課題
本稿では, マルチユーザ環境を必要とするアプリケーションのためのマルチユーザ・フレームワーク Mug について述べた. 今後はより多くのアプリケーションをMug に組み込む予定である.

参考文献
Community Computing, Collaboration over Global Information Networks, JOHN WILEY & SONS (1998).
根山 亮 RyORB ホームページ,[1] Toru Ishida, et al.:

図 2: アプリケーションを組み込んでいない MugClient(ユーザ \ryo" のウィンド ウ)「公開グループ 」メニューで, 公開グループへの参加, 脱退ができる. この時, アプリケーションは , イベ
ントリスナに「公開グループに参加しているユーザの顔写真を表示する」などの特別な処理を行わせることも容易である. また, 右側のサブウィンドウの上部にあ[2]:

http://www.info.waseda.ac.jp/muraoka/members/ryo/RyORB/index-j.html[3]

後藤 真孝, 根山 亮: 不特定多数による遅延を考慮した
遠隔セッションシステム, 情処研報, Vol.98, No.74, 音
楽情報科学 98-MUS-26-14 (1998).