名古屋大学大学院人間情報学研究科 物質生命情報学専攻 情報処理論講座 原 崇 tarbo@mdg.human.nagoya-u.ac.jp WebアプリケーションとP2P 名古屋大学大学院人間情報学研究科 物質生命情報学専攻 情報処理論講座 原 崇 tarbo@mdg.human.nagoya-u.ac.jp
Webアプリの開発実情 開発期間が短くなってきている 簡易なシステムでもRDBMSを使うことがある CASEツールの発達 設計書の作成支援 中にはソースをある程度生成してくれる プログラミング手法の発達 オブジェクト指向による再利用性の向上 XP(eXtream Programing) 簡易なシステムでもRDBMSを使うことがある
開発言語 Perl DBI(DBD) PHP ASP Servlet,JSP,JDBC
開発の際によくあること デザインの変更 複数のプロジェクトを一人が抱えることもある いろいろライブラリが出ているがいまいち使いにくい デザインの変更によって、どうしてもプログラムを変更しなければいけない場合が出てくる 複数のプロジェクトを一人が抱えることもある 短期間で作成するのに楽な方法を見つける いろいろライブラリが出ているがいまいち使いにくい なので自分で作成した
システム作成のコンセプト デザインとロジックの分離 Servlet型Webアプリ開発の定石を作りたい できるだけ(もしくは完全に)デザインとロジックを平行に進めていけるようにしたい Servlet型Webアプリ開発の定石を作りたい 今後はこのフレームワークに沿って開発をしていくことで、いろいろなアプリケーションに対応でき、短期間で開発を可能にする
デザイン分離に関する技術その1 Cocoon(http://xml.apache.org/cocoon/) Apache XMLプロジェクト内で開発 XML文書をXSLTで変換する作業をサーバーサイドで処理 XSL ファイル XSL ファイル Cocoon XML ファイル WML HTML
Cocoonの問題 XSLの切り替えはブラウザの違いのみ 複雑な処理をするときにはCocoonの機能では不便 他のパラメータ、例えば、フォームに入力された内容で区別をしたい 複雑な処理をするときにはCocoonの機能では不便 結局は静的なXMLを変換するだけの機能でしかない リクエストヘッダ GET /index.xml HTTP/1.1 Host: www.snapshot.co.jp User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
デザイン分離に関する技術その2 JSP(Java Server Pages) Servlet型Webアプリケーションの見た目の部分を担当する Java Beans Servlet JSP
JSPの問題 完全にデザインとロジックの分離は難しい どうしてもロジックをJSP内で記述する必要が出てくる→繰り返し処理は特に <%@ page contentType="text/html; charset=Shift_JIS” import="java.util.*"%> <jsp:useBean id=“bean” class=“java.util.Iterator” scope=“request”> <html><head><title>Hello World</title> <% while(bean.hasNext()){ Properties prop = (Properties)bean.next(); %> <%= prop.getProperty(“name”) %> }
システムに取り入れるべき内容 デザイン部分の分離 XML(Cocoon)に任せる場合 JSPに任せる場合 複数のServletにお任せする ServletContext#requestDispatcherで実現可能 XML(Cocoon)に任せる場合 パラメータをXMLファイルに書き足す JSPに任せる場合 独自に拡張したタグライブラリを使う Properties(ハッシュ)にアクセスするタグを定義
実用例 チャレンジ天文クイズ 中部電力FTTHプロジェクト内のコンテンツとして、MDGと名古屋市科学館が共同開発 クイズデータをXMLで記述し、ブラウザ以外のパラメータによって、XSLを振り分ける
その他応用例 ポータルサイト グループウェア ユーザごとにXSLを変えることで見た目を変更することができる
問題点 XSLの普及度 研究対象として 現在それほどXSLがデザイナまで浸透していない JSPの場合はHTML等の基本書式ベースなので問題ない 研究対象として このままでは研究にならない
今後の予定 XMLをよりうまく生かしたシステムの考察 P2Pのプロトコルを利用したシステムの有効性について Webサービス(SOAP UDDI)等のアプリ同士の連携プロトコルとして P2Pのプロトコルを利用したシステムの有効性について P2P自体は敵視される技術ではないことを検証したい
P2P(Peer to Peer) すべての計算機は対等な立場に クライアント・サーバーの概念はない いうならばすべてのマシンがクライアントであり、サーバーである Server Server Client
P2Pの実用例 Infrasearch Groove 検索エンジン 検索構造にGnutellaのプロトコルを採用 ロボットが来るのを待つのではなく、こちらから情報を反映させる Groove P2P型グループウェア ドキュメントとアプリケーションをP2Pで共有する