• 検索結果がありません。

サーバーサイドJavaを用いた動的Webコンテンツの開発・修正支援手法

N/A
N/A
Protected

Academic year: 2021

シェア "サーバーサイドJavaを用いた動的Webコンテンツの開発・修正支援手法"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)社団法人 情報処理学会 研究報告 IPSJ SIG Technical Report. 2004−DD−46 (2). サーバーサイド.  を用いた動的  コンテンツの. 2004/9/24. 開発・修正支援手法 福田 健太郎 日本アイ・ビー・エム株式会社 東京基礎研究所 〒   神奈川県大和市下鶴間  .

(2)   

(3)    

(4)   ! あらまし " アプリケーションの開発において,サーバーサイド #$ が広く活用されている.#%& や % $  などで記述された動的 " コンテンツの変更や修正を行う際,出力された ' () のソー スやブラウザ上で修正箇所を確認・指定しても,#%&・% $  中での修正箇所の特定が難しいと いう問題がある.本研究では,#%& や % $  の出力処理に着目し,出力元となるコードの位置と その出力内容の関連付けを行うことで,動的 " コンテンツの開発・修正を支援する手法を提案 する..  

(5)   

(6)   

(7) 

(8)           

(9) 

(10)    . * + , !- ) *. /0( #. )1   %-,. 2,-. 345   . #.

(11) 6    

(12) 6     

(13)   !. . / - , 1*,. % $ ,1 #$. ,!- , , $  1 #%&. . !4 51 * , 1 7 ".  !  7, / * !, ,. - , 1*! " ! ,  !- ! 1 $ ' () 4   1 7 -  8,   , . 5 1 $  , -$  , !- -4- - #$ !1  91 - ! ,14 ,, 5-  - ' () 74  5, 4   1  , $ -, ,, . -.  -1 5-!- 5, - , !- 4 15    , , 1  -, 5 8  7 % $ ,1 #$. - , 1  -1  , $ , - #%&:, $  5  1 !  ,  4. 5.  74 , 7 4   1 ' () 1 - ! ,14 !1 ,, 7 - , $  0* ,4 - , 4,. 1 $   ! , * 91 - ! ,14 ,, 5-  - ' () 74  5, 4   1. −9−.

(14) はじめに 近年," 1 "1 " ;以下," < は,静 的ページ ;' ()< を中心とした情報発信のた めの手段にとどまらず,電子商取引・電子政府 等に代表される種々の手続きのオンライン化や, 個人の嗜好にあわせたポータルの提供など,動 的ページを用いたアプリケーション提供手段と して広く用いられている. この様な動的 " コンテンツの開発におい て,#%&½ や % $  を中心としたサーバーサイ ド #$ が広く活用され,その開発を支援する 為の統合開発環境も多数提供されている.ま た,担当業務や嗜好等,利用者の特性に応じた 情報・アプリケーションを,その環境や好みに 応じたデザインで提供するポータルサーバー => の利用も広まっている.さらに," アプ リケーション開発時に,その機能テストを効率 良く行う為の仕組みに関する研究 = . > が多数 行われるなど,動的コンテンツを含む " サ イトを開発・提供するのための仕組みは充実し つつある. 一方で," サイト構築後に様々な評価・検 証を行い," サイトの修正・再構築を行う事 が重要となってきている =>.評価・検証の対象 としては,例えば,ユーザビリティ,アクセシ ビリティの評価 = > や,サイト全体のデザイ ンの統一性の確認 => などが挙げられる.これ らの評価の多くは,#%& などのサーバー側に 存在する動的 " コンテンツではなく,動的 " コンテンツから生成される ' () を対象 として行われている.その結果,提供される修 正項目やガイドは,' () やそのレンダリン グ後の表示情報を対象としたものとなる. また," アプリケーションの機能テスト や,開発時からサイト全体のデザインの統一 を図る仕組みにおいても,最終的なチェックは ' () を対象に実施する事になり =. >,そ の修正項目などは ' () に対するものとして 与えられる. これらの評価・検証結果に基づき," サイ ½.  及びすべての  関連の標語およびロゴは, 米国  

(15)    の米国及びその他の国にお ける商標または登録商標である.. トの修正を行うためには,修正が必要な箇所を 生成した #%& などの動的 " コンテンツと, そのコンテンツ内での位置を特定する必要があ る.しかしながら,動的 " コンテンツの多 くは複数のモジュールを組み合わせて構成され ているため,修正箇所の特定は容易ではない. 例えば,#%& では #% )=> 等のタグライブ ラリやスクリプトレットの利用,他の #%& の インクルードが行われ,' () 内での行数や 特定のタグ名などから #%& 内での位置を特定 する事は困難である.さらに,ポータル => 等 の様にテンプレートを利用している場合,コン テンツの入れ子構造が複雑になっており,修正 箇所の特定をさらに難しいものとしている. 本稿では,この様な問題を解決するため, #%& や % $  の出力処理に着目し,出力元と なるコードの位置と,その出力結果を関連付け る事で,' () 内での位置から,該当箇所を 生成した動的 " コンテンツを特定する手法 を提案する.提案手法を用いる事により,". サイトの評価・検証結果から,修正対象となる 動的 " コンテンツを特定する事が容易とな り,開発者の労力を軽減する事が期待される. 以下, で提案手法の詳細について説明し, で提案手法の適用例について述べる.最後に,  で本稿についてまとめる..  出力処理に着目した修正位置特 定手法 #%& や % $  といったサーバーサイド #$ を用いた動的 " コンテンツの変更や修正を 行う際に,生成された ' () 上で修正箇所が 指定された場合,対応する箇所を生成した #%& 等の位置を特定する必要がある. 従来,この様な修正箇所特定の為の手法とし ては,生成された ' () 中での行数や,タグ・ 文字列などに基づいて検索を行ったり,対象と なり得る #%& や % $  中に特定が容易な文字 列を埋め込み,生成された ' () 中での位置 を確認し,徐々に範囲を絞り込む手法などが用 いられてきた.. −10−.

(16) Compile. child2.jsp test.jsp child.jsp. Execute Servlet. Observer. HTML. <HTML><HEAD>. include … at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:379) at org.apache.jsp.jsp2.misc.test_jsp._jspService(test_jsp.java:60) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) …. Servlet-HTML Map Static HTML <HTML><HEAD>. out.write(“<HTML><HEAD>");. test_jsp.java:60. <HTML><HEAD>. test_jsp.java:280. price=10,000Yen. test_jsp.java:90. Child. Scriptlet. <bean:write name=“price” … />. Included JSP Child. JSP Include. SMAP. <% Thinkpad tp = new Thinkpad(); %>. Tag Library. Thinkpad tp = new Thinkpad(); _jspx_th_logic_write_1.setName(“price”); … _jspx_th_logic_write_1.doStartTag(); …. <%@ include file="child.jsp" %>. out.write(“Child");. 図 

(17) 出力処理の監視による動的 " コンテンツと ' () の関連付け. しかし,動的 " コンテンツ内でタグライ ブラリが用いられたり,ポータル => 等の様に コンテンツの入れ子構造が複雑になっていた場 合,上記の様な手法で修正箇所を特定する事は 困難である.他にも,% $  をステップ実行し て修正箇所を特定する手法なども存在するが, 実際の修正作業を開始するまでに必要な作業量 が非常に大きいという問題は同様である. 本稿では,この様な問題を解決するため, #%& や % $  の出力処理に着目し,出力元と なるコードの位置と,その出力結果との関連付 けを行う事で,' () 内での位置から,該当 箇所を生成した動的 " コンテンツを特定す る手法を提案する.提案手法を用いる事により, " サイトの評価・検証結果から,修正・変更 の対象となる動的 " コンテンツを特定する 事が容易となり,開発者の労力を軽減する事が 期待される.. . 修正位置特定手法. 図  に #%& から ' () が生成される過程 を示す.#%& を用いた動的コンテンツへのリク エストがサーバーに到着すると,まず #%& は % $  にコンパイルされる.この際,#%& 内 の各要素が % $  内のどの位置に対応するの かという情報が %(8&;%! (<= > とし て保存される.この %(8& の情報を用いる事. で,% $  中の行番号から #%& 内での位置を 知る事が可能となる.ただし,#%+= > に 対応していないサーバーでは,これらの情報は % $  内にコメントとして保存される事が多 い.その場合,あらかじめ % $  内のコメン トを解析し,%(8& に相当する関連付け情報 を作成しておく必要がある. 次に,% $  は #$ の ? ,, ファイルへと コンパイルされ,実行される.その結果,最終 的な出力である ' () が得られる.本稿では, この % $  の出力処理を監視する事で,出力 元となるコードの位置と,その出力結果との 関連付けを行う.具体的には,% $  の出力 処理を行う "  クラスをラップして出力処 理を監視する @ , $  を用意し,出力処理が 呼ばれるたびに,出力された ' () の内容と, %! ! 情報から得た % $  内での位置を % $ ' () ( として保存する ;図 <. 最後に,得られた % $ ' () ( と %(8& 情 報 に 基 づ き ,出 力 さ れ た ' () と出力元となるコードの位置の情報を含ん だ ' ()%! ( を生成する.' () %! ( の生成に際しては,% $ ?   や % $ + A , の持つ情報も利用して, #%& などが実際に存在するディレクトリの情報 なども取得しておく. 図 に,' ()%! ( を B() 形 式で出力した例を示す.この ' ()%!. −11−.

(18) . <?xml version="1.0" encoding="UTF-8" ?> <SourceHtmlMap> <fragment> <java> <rootdir>C:¥server¥webapps¥examples</rootdir> <servletpath>/test</servletpath> <realpath> C:¥server¥webapps¥examples¥snoop.jsp </realpath> <depth count="1"> <class> <name>org.apache.jsp.snoop_jsp</name> <method>_jspService</method> <line>43</line> </class> <jsp> <name>snoop2.jsp</name> <actualfile> C:¥server¥webapps¥examples¥snoop2.jsp </actualfile> <line>1</line> </jsp> </depth> </java> <htmldata> <from line="2" pos="1" /><to line="3" pos="0" /> <contents><![CDATA[<html> ]]></contents> </htmldata> </fragment>. フィルターを用いた実装例. 前節で述べた提案手法を,   クラスを 用いて実装した例を図  に示す.この実装で は,サーバーにリクエストが到着し,% $  + A , および % $ + ,, が生成される と,@ , $     を用いて % $ + ,,. をラップする.ここで生成された C+ ,,. 5- @ , $ D は,#%& やサーブレットから "  の取得を要求されると,本来の "  を ラップし出力処理を監視する @ , $  を返す. この様に    を用いる事で,% $ :#%& コンテナに変更を加える事なく,提案手法を実 装する事が可能となる.また,   を用いた 実装の利点として,図  の様に,提案手法によ り得られた ' ()%! ( を ' () 文書 にコメントとして付加することも可能となる. ' ()%! ( を ' () 文書内に持つこ とで,各種評価・検証の際に,修正が必要な動 的 " コンテンツを特定する事も可能となる.. ….  提案手法の利用例. 図

(19) ' ()%! ( の例.  

(20)      ( を用 い る 事 で ,' () 中 の 行 数 で 指 定された修正箇所から,実際に修正が必要 な 動的 " コン テン ツを 知る事 が可 能と の 例 か ら ,' () 中 な る .例 え ば ,図 の 行目 ;C - D< を修正するためには, C!

(21) , $  5 ,  , , ,D の  行目を修正すれば良い事がわかる. ここ で ,リ ク エ ス ト 中 の % $ &- に 基づいて,最初にリクエストを処理すべく 呼 び出さ れる のは図 中の   - で与 え ら れ る C,,D で あ る .し か し な が ら,C,,D 中で C, ,D のインク ルードが行われているため,実際に修正が 必要なファイルは ! 9  で与えられる C, ,D となる. 以 上 の よ う に ,提 案 手 法 を 用 い る 事 で , ' () 内での位置から,該当箇所を生成した動 的 " コンテンツを特定する事が可能となる.. 図  に,%! ' () ( の情報を用いて, 生成された ' () とそのブラウザ上での表示, および対応箇所を生成した動的 " コンテン ツの情報を確認できる E 5  の例を示す. 図  中,左側のブラウザ上で任意の要素を選 択すると,右上の ' () 表示領域内で対応す る ' () 要素が反転表示される.同時に,右下 の %! 情報表示領域に,選択箇所を生成し た #%& 等の情報が表示される.同様に,' () 表示領域内で任意の ' () 要素を選択すると, ブラウザ上で対応箇所がハイライトされ,選択 要素を生成したコンテンツの情報が右下に表示 される. この様な E 5  を用いる事で,生成された ' () のブラウザ上での表示を確認しながら 修正したい箇所を探索し,修正が必要な動的 " コンテンツの位置を容易に把握する事が 可能となるため,コンテンツの修正・変更作業 の効率を向上できると考えられる.. −12−.

(22) Server-Side Java Engine Request Response with Observer. HTML HTTP Response. Servlet Filter. Request Response. Observer Filter. HTTP Request. (Websphere Application Server, Tomcat, etc.). + HTMLSource Map XML. JSP. 図 

(23)    を利用した @ , $  の実装例. HTML / Source. View / HTML. Click and highlight HTML element Browser Browser. Source Information 図 

(24) %! ' () ( E 5 . . アクセシビリティチェッカーとの連携. アクセシビリティチェッカーの多くは,' () を対象にチェックを行い,その行数等の位置情 報に基づいてチェック結果の出力を行っている. 図  は " 34=> と呼ばれるチェッカーの チェック結果の例である.このチェッカーを拡 張し,' () と同時に送信されている ' () %! ( の情報から,' () 中での位置に 対応する動的 " コンテンツの情報を取得す るよう変更を行った.その結果,従来の行数や 文字数などの位置情報 ;図 < に加えて,図  に 示すような動的 " コンテンツの情報がチェッ ク結果に加えられ,チェック結果の確認や修正 作業を効率良く行う事が可能となる.. −13−. <Error> <Page>./myportal/!ut/p/.cmd/cs/.ce/ 7_0_A/.s/7_0_75/_s.7_0_A/ 7_0_75 </Page> <Line>98</Line> <Column>31</Column> <Severity>Severe Violation</Severity> <Message>Section 508 - 1194.22: Spacer image should have ALT attribute = "". </Message> </Error>. 図 

(25) 従来のチェック結果の例 <Source type="File"> <Name>c:¥server¥installedApps¥test¥ wps.ear¥wps.war¥themes¥html¥Default.jsp </Name> <Line>26</Line> </Source>. 図 

(26) 追加される情報の例.

(27)  まとめ. 8!-  +  " G,  * , 4.D       . $   .   . # * . 本研究では、#%& や % $  の出力処理に着 目し、出力元となるコードの位置とその出力 内容の関連付けを行うことで、サーバーサイド #$ を用いた動的 " コンテンツの開発・修 正を支援する手法の提案を行った. 提案手法を用いる事により," サイトの 評価・検証結果から,修正・変更の対象となる 動的 " コンテンツを特定する事が容易とな り,開発者の労力を軽減する事が期待される. また,提案手法を動的 " コンテンツの依 存解析手法 => などと組み合わせる事で,変数 の値が設定された場所などを絞り込む事も可 能になると考えられる.今後,さらなる検討を 行っていきたい.. => # E1 1!. 8 0  1. 1 ( K-  . C8 1 $  7 " G,  * 1 8!! ,,  * * F1  + $ 5.D  

(28)     !.  . # *  => ' 4. ? 8,5. 3 1. 1 # ( 1. C8!! ,,  * H ,4 

(29) E,  L4 G,  * 7 - 0 1 .D  "      

(30)     !.. @!  . = > # 0 5 . C" 8!! ,,  * '4- 4-, 1  1,.D  

(31)     # $  # . 参考文献 => ? " 4 . C& % $  !- 4*.D     

(32) . $  .   . (*:#  . "  " #  !.. %& .  . (*. . = >  +!! 1 &  . C8 *,, 1. ,4 7 " 8 !,.D  

(33)    .  . (* . => 0 0   1 ( " E4-. C -. 0 M,*

(34) 8  5 7 " 8  ! G,  / 7! H ,4 F1  ,.D  

(35)    ' .     . 8 . => %  . % 3 . 1 F +-   . C/$4 " 8 ! , 4 5- G,  % ,, H.D  

(36)    .    . (* . => % (!,*, ,. C#%& % 11 4 ) * ;#% )<D 

(37)      . => 2 H ,-1 . 8 ?-1-. 1 8 F4 . C" % 814

(38) , %  51, +  4. 4.D  

(39)    .  . # *  . = > #$ ?* &! ,,. CH 444 % 7 @-  )44 , % ! 9!D     

(40)  . 

(41)  . => ) &4  1  & I . C/ 4  8 *,, 7 G,  / !, 5- ". 8 !,.D  

(42)    .  . #*   => # / '4. # '. . % " ,. 1 # 8 )1*. C" J 

(43) 8 &* , 1. => &8+8%@ . C" 34D     =>  +!! 1 &  . C" 8 !  % !4.D  

(44)     .  . K$   . −14−.

(45)

参照

関連したドキュメント

旅行者様は、 STAYNAVI クーポン発行のために、 STAYNAVI

手話の世界 手話のイメージ、必要性などを始めに学生に質問した。

その職員の賃金改善に必要な費用を含む当該職員を配置するために必要な額(1か所

支援級在籍、または学習への支援が必要な中学 1 年〜 3

①配慮義務の内容として︑どの程度の措置をとる必要があるかについては︑粘り強い議論が行なわれた︒メンガー

添付 3 で修正 Dougall-Rohsenow 式の適用性の考えを示している。A型とB型燃料の相違に よって異なる修正

そうした開拓財源の中枢をになう地租の扱いをどうするかが重要になって