携帯電話におけるテキスト編集システムのアスペクト指向実現
2001MT065 水野 耕太
指導教員

野呂 昌満

1 はじめに近年，携帯電話などのテキスト入力を行う組込みソフトウェアが増加している．テキスト編集システムは多数の組込みソフトウェアで使用されるので，様々な組込みソフトウェアでの実現に，柔軟に対応できる構造が必要である．ソフトウェア開発において，変更に対する柔軟性を向上させる方法として，オブジェクト指向による実現が考えられている．しかし，オブジェクト指向実現したソフトウェアでは，複数のオブジェクトで横断的に関連する処理が存在する場合があると言われている [4]．
我々は，携帯電話におけるテキスト編集システムをオブジェクト指向実現し，横断的に関連している処理を確認した．題材とした携帯電話は，典型的な組込みソフトウェアであると考えた．オブジェクト指向実現による構
造では，バッファサイズによる入力制限などの携帯電話に関する処理が，横断的に関連していたので，携帯電話以外の組込みソフトウェアには適用しにくい．
本研究の目的は，様々な組込みソフトウェアでの実現に，柔軟に対応できるテキスト編集システムの構造を考察することである．アスペクト指向 [4] を適用し，横断的に関連する処理を分離することで，様々な組込みソフトウェアでの実現に柔軟に対応できる構造を実現する．

2 オブジェクト指向によるテキスト編集シス
テムの開発
携帯電話におけるテキスト編集システムをオブジェク
ト指向実現する．携帯電話のテキスト編集システムでは，ボタンを用いて文字入力を行う．携帯電話のボタンは種類が少ないので，ひとつのボタンで多数の文字を入力する必要がある．ボタンは状態遷移機械を用いて，あを入力，1 を入力などのイベントを生成し，テキスト編集システムに通知する．テキスト編集システムは，通知されたイベントをもとに文字入力を行う．テキスト編集システムは，漢字入力や，数字入力などの複数の状態をもつ．状態によってテキスト編集システムの振舞いを変更するために，状態遷移機械を用いた．状態遷移機械はState[2] パターンを用いて実現した．実現したテキスト編集システムを図 1 に示す．オブジェクト指向実現したテキスト編集システムでは，テキスト編集システムへのイベント通知などが横断的に関連していた．また，ボタンが複数の入力モードに関するイベントを生成していることを確認した．本研究において，入力モードとは入力する文字を決定する状態である．

3 アスペクト指向によるテキスト編集システ
ムの開発
オブジェクト指向実現したテキスト編集システムをもとに，アスペクト指向開発する．横断的に関連している処理をもとにコンサーンを抽出する．入力モードごとに生成するイベントが異なるボタンを，協調場 [3] により分CellularPhone

CPSTM

CPStateCPAction

getInstance():CellularPhone

trans(TEEvent):booleantrans(TEEvent):boolean

do_it():void

TESTM

TEStateTEAction

CPComponent
eventDispatch(CPButtonEvent):void 

Buttonpush()

TextEditor
menu:Vector
inputMode:int [ ]init():void
getText():String
setText(String):void
getMenu(int):TEMenu

TEButtonEventHandler
eventProcessing(CPButtonEvent):void

InputCharSTM
trans(CPButtonEvent):voidTEButtonEvent
HandlerState

InputCharStatetrans(CPButtonEvent):voidtrans(CPButtonEvent):voidTEButtonEvent
HandlerAction

InputCharAction
do_it():voiddo_it():void

Buffertext:String
size:int
getText():String
setText(String):voidincertText(String,int):voidcheckSize(String):booleanCursorTEMenuCharData

position:int

menu:Vector
select:int
menuName:Stringtable:String[ ]TEMenu(String)
getMenu(int):String
getSelect():int
setSelect(int):void

CharData(String)
getChar(int):String
setTable (String):void

getPosition():int
setPosition(int):voidTEPanelinit():voidupdatePanel():voidConvert
KanjiClienttransData(String):String

図 1 オブジェクト指向によるテキスト編集シ
ステムのクラス図

割し，変更に対する柔軟性を向上する．
コンサーンの抽出
オブジェクト指向実現したテキスト編集システムにおいて，横断的に関連している処理をもとにコンサーンを抽出した．抽出したコンサーンを以下に示す．

• イベント処理コンサーン– ボタンからシステムへのイベント通知• 外部出力コンサーン– アクションからディスプレイへの再描画• 例外処理コンサーン– バッファサイズをこえてテキスト入力されたさいの例外処理

協調場による分割
漢字入力モード，数字入力モードなどの入力モードを協調場と考え，テキスト編集システムのボタンを協調場によって分割する．テキスト編集システムのボタンは，あを入力，1 を入力のように，入力モードごとに生成するイベントが異なる．入力モードごとに，ボタンの生成するイベントを変更するために，協調場による分割を行う．
ボタンを入力モードごとに実現するので，入力モードに関する変更を局所化でき，柔軟性が向上すると考えた．
3.1 アスペクト指向によるテキスト編集システムの実現
抽出したコンサーン，および協調場をもとに，テキスト編集システムをアスペクト指向実現する．実現には，アスペクト指向プログラミング言語として一般的なAspectJ[1] を用いる．抽出したコンサーンにより，横断的に関連している処理をアスペクトとして分離し，アスペクト間の関連をアスペクト間記述として実現する．協調場による分割より，入力モードごとにボタンのサブクラスを実現する．漢字入力モードの協調場におけるテキスト編集システムを図 2 に示す．


CellularPhone

TextEditor

TextEditor

KanjiTEButton

KanjiTEButton
EventHandler

#

KanjiInputSTM!#"

TEPanelBufferTEMenuCharData

TextEditor  

CursorConvertKanjiClientTouchPaneltouch():void   

TESTM0)1

eventDispatch():void

void touch() {............
ev = teEventHandler.trans(touchKind);//texteditor.eventDispatch(ev);.............
}

 "!$#&%(')&+*-,/.)0 1

 < 24=365 798;:>

eventDispatch():voidTETouchPaneltouch():voidInput
Exception
after() : atTouch() {..........
//
texteditor.eventDispatch(ev);..........
}?A@/BCEDGFHIBA?KJLNMPO;QSRUTGV

図 2 漢字入力モードにおけるアスペクトとアスペクト間の関連

4 考察
実現したテキスト編集システムをもとに，様々な組込みソフトウェアでの実現に，柔軟に対応できる構造を考察する．実現したテキスト編集システムの変更に対する柔軟性を考察し，変更に対して柔軟に対応できる構造であるかを確認する．柔軟性の考察は，アスペクト指向実現の場合とオブジェクト指向実現の場合を比較することで行う．変更に対する柔軟性について以下を考察する．

• 入力装置の変更に対する柔軟性• 入力モードの変更に対する柔軟性
4.1

入力装置の変更に対する柔軟性の考察実現したテキスト編集システムの，入力装置の変更に対する柔軟性について考察する．入力装置の変更として，入力装置にタッチパネルをもつ PDA(Personal DigitalAssistance) を考える．PDA におけるテキスト編集シス
テムを実現する場合，入力装置からのイベント通知に関する処理を変更する必要がある．入力装置の変更にともない，ボタンのイベント処理を，タッチパネルのイベント処理に変更する．
オブジェクト指向実現した場合，タッチパネルは入力を受けとると，イベントを状態遷移機械を用いて生成し，テキスト編集システムに通知する．タッチパネルは，テキスト編集システムに関するイベントを通知するので，テキスト編集システムと関連をもつ．
アスペクト指向実現したテキスト編集システムでは，タッチパネルからテキスト編集システムへのイベント通知は，アスペクト間記述として記述する．タッチパネルとテキスト編集システムとの関連は，アスペクト間記述のなかに局所化できる．オブジェクト指向実現した場合と，アスペクト指向実現した場合の入力装置の変更を図3 に示す．アスペクト指向実現したテキスト編集システ
ムでは，オブジェクト指向実現の場合と比較し，入力装置の変更に対する柔軟性が向上したと考える．

4.2

入力モードの変更に対する柔軟性
テキスト編集システムのボタンを協調場により分割したことによって，変更に対する柔軟性が向上したことを確認する．テキスト編集システムは，組込みソフトウェアごとに，使用できる入力モードが異なる．入力モードに対する変更の柔軟性は重要である．入力モードを追加する場合の変更に対する柔軟性を考える．
オブジェクト指向実現したテキスト編集システムでは，

図3void touch() {...........
ev = teEventHandler.trans(touchKind);...........
}

入力装置の変更

ボタンは複数の入力モードに関するイベントを，状態遷移機械を用いて生成する．入力モードを追加する場合，状態遷移機械が保持する既存の入力モードに追加する入力モードへの遷移を記述する必要がある．入力モードが増加すると，多数の入力モードを変更しなくてはならなくなり，入力モードの増加に柔軟に対応できない．
協調場によって分割したテキスト編集システムでは，入力モードごとにボタンのサブクラスを実現した．入力
モードごとにボタンを実現するので，他の入力モードのボタンに変更を加えることなく，入力モードを追加できる．アスペクト指向実現したテキスト編集システムは，入力モードの変更にともなう変更の範囲を局所化できたので，変更に対する柔軟性が向上したと考える．

5 おわりにアスペクト指向によって携帯電話におけるテキスト編集システムを実現し，様々な組込みソフトウェアでの実現に，柔軟に対応できる構造について考察した．アスペク
ト指向実現したテキスト編集システムは，入力装置，および入力モードなどの変更に対して柔軟に対応できることを確認した．
今後の課題は，テキスト編集システムの構造を抽象化し，アスペクト指向によるアーキテクチャを構築することである．構築したアーキテクチャに基づき，携帯電話，PDA 以外でテキスト編集システムを実現し，変更に対する柔軟性を確認することである．
謝辞
本研究を進めるにあたり，二年間御指導いただいた野呂昌満教授，有益なアドバイスを下さった熊崎敦司講師，親身になって相談にのってくださった大学院生の後藤修
平さん，石見知也さん，加藤隆広さん，小久保佳将さん，八木晴信さんに深く感謝いたします．

参考文献[1] AspectJ http://eclipse.org/aspectj/[2] E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns Elements of Reusable ObjectOriented Software，Addison-Wesley，p.395 (1995).
[3] T. Tamai : Evolvable Programming based on
Collaboration-Filed and Role Model, IWPSE(2002).
[4] COMMUNICATIONS of the ACM, Vol.44, No.10,p.168 (2001).