SlideShare a Scribd company logo
1 of 7
IAE2011 System Design




     foreach ltd.

       2011/03




                        1
システム構成
本システムは以下の要素からなる.


Web サーバ
Apache HTTPD を使用し,SSL のデコード処理を行った後,アプリケーションコンテナへ
リクエストを転送する.https://iae.hosei.ac.jp/file で始まる URL については,SSO の処理
も行われる.


アプリケーションコンテナ
Jetty を使用し,Servlet API 2.5 に準拠した形の Web アプリケーションを配備する.


Web アプリケーション
フォーイーチ社製の KANGAROO をベースにアプリケーションを構築する.KANGAROO
は Jetty をベースにクライアントアクセスの処理,データベースアクセス,ファイルアクセ
ス,テンプレート処理などを強化したフレームワーク兼実行環境である.


データベース
H2 を使用し,KANGAROO で用意されている DbAccessUtil を用いて処理を行う.組み込
み形式で実行する方式をとり,アプリケーション自体に統合されている,単一ファイルで
すべてのデータを効率よく格納することができるため,バックアップ・リストアも容易で
ある.


Web ブラウザ
ユーザが使用するクライアント PC にインストールされている Web ブラウザ.ユーザは多
くの操作を Web ブラウザから行う.


QR コード印刷ソフトウェア
QR コードラベルを印刷するための Windows アプリケーション.デネット社製のかんたん
商人バーコード作成を使用する.


ソフトウェアアクセスポイント
クライアント PC を疑似的なアクセスポイントとして動作させるための Windows アプリケ
ーション.プラネックスコミュニケーション社製のクライアントマネージャを用いる.


画像ファイルアップロードソフトウェア
デジタルカメラに装着された無線 LAN 対応 SD カードからファイルを受け取るための


                                                             2
Adobe AIR アプリケーション.Eye-Fi 社製の Eye-Fi Helper を用いる.


クライアントアプリケーション
ソフトウェアアクセスポイントと画像ファイルアップロードソフトウェアを用いて,カメ
ラから転送されてきた画像ファイルに対して,年度・科目・項目・学籍番号を付与して,
サーバへアップロードするための Java アプリケーション.Java Web Start という技術を
用いて,Web ブラウザから直接起動する.




                                                    3
クラス・テーブル設計

コントローラ
コントローラの構成を Fig.1 に示す.また,ベースにしているフォーイーチ社製
KANGAROO の構成を Fig.2 に示す.テーブル・インデックスの準備やデータファイルを
格納するフォルダの設定などは IaeListener で行われるようになっている.IaeListener
は Web アプリケーション起動時にロードされ,実行される.Listner の実行が終わると,
それぞれの URI に対して,Servlet / Filter がマッピングされる.
各サーブレットは KANGAROO の提供するディスパッチ機能を用いて,メソッドを実行
する.その際,認証が行われていれば,IaeUserInfo にログイン情報が設定される.サー
ブレットはこのログイン情報を用いて,モデルのインスタンスを生成する.サーブレット
はリクエスト情報をモデルのパラメータへと変換し,それぞれの処理を委譲する.それぞ
れの処理が終了すると,処理結果をビューに応じた形に整形して,テンプレートエンジン
を呼び出す.


モデル
モデルは大きく2つに分かれている(Fig. 3).ファイルシステムの基本的な動作を定義し
た FileManager クラスと,階層やユーザ権限に応じた動作を定義した IaeManager であ
る.後者は本システムの中核であるため,クラスが大きくなるきらいがある.そこで本シ
ステムではモデル内部の大きな処理(教務データ取り込み,ZIP ファイル取り込み)を別ク
ラスとして,利用することとした.
DataImporter は教務データ解析・取り込みなどを担当するクラスである.年度初めのコー
ス登録および QR コードデータの作成に用いられる.教務データは Fig. 4 のように構成さ
れ,UTF-8 エンコードで記述された CSV である.具体的なフォーマットは添付の資料を参
照のこと.
UploadFileExtractor は一括アップロードされた ZIP ファイルを解凍し,ファイルの種類
に応じて処理を行うものである.単純なアップロードの場合(ファイル中に desc.txt ファ
イルが含まれている)はファイルシステムにファイルを登録する.一方,JPEG 形式の画像
ファイルのみが複数含まれている場合は,スキャンされたレポートファイルがアップロー
ドされたものと見做して,QR コードラベルの解析を行う.QR コードを画像から読み取る
処理には zBar を用いている.zBar の出力結果は XML で返されるため,その結果をもと
に画像ファイルを学籍番号ごとに整理して,それぞれの PDF ファイルを作成する.


エンティティ
本システムで用いるエンティティを Fig.5 に示す.それぞれのクラスのフィールドはテー
ブルのカラムに対応する.またデータ型のマッピングは以下のように行っている.


                                                       4
   String → varchar or CLOB
   int → int
   boolean → Boolean
   Date → timestamp
なお,varchar 型の場合,項目長は指定していないが, データベースでは最大 255bytes
                             H2
である.また,CLOB を使用する場合はクラス図に明記している.
年度・科目などの情報は明示的に作成していないが,FileItem の情報がそのまま年度・科
目などの情報となり,level がそれぞれ 1,2,… に対応している.


ビュー
ビューはテンプレートをベースにして,コントローラがモデルから取り出したデータを
HTML に整形し,出力することで実現している.具体的なテンプレートの構成は Fig.5 に
示す.テンプレートは各ページ・階層で表示項目が異なるが,共通部分は入れ子にして定
義し,保守性を高めている(Fig.6)
                  .
クライアントアプリケーションを Java Web Start で起動するための jnlp ファイルも,起
動時に認証情報を埋め込む必要があるため,テンプレートを用いて出力している.




                                                   5
使用ライブラリ
本システムでは以下のオープンソース・商用ライブラリを用いている.すべてのライブラ
リはこのシステムでの使用に対して,ライセンス上の制限はない.


Web アプリケーション
ant-1.8.2
ant-launcher-1.8.2
commons-beanutils-1.7.0
commons-codec-1.3
commons-collections-3.2.1
commons-fileupload-1.2.2
commons-io-2.0
commons-lang-2.4
commons-logging-1.1.1
ehcache-core-2.3.1
fontbox-1.4.0
h2-1.2.147
httpclient-4.0
httpcore-4.0.1
jempbox-1.4.0
jetty-6.1.26
jetty-util-6.1.26
jsonic-1.1.0
junit-4.8.2
kangaroo-1.0-SNAPSHOT
log4j-1.2.16
owl-license-3.0-SNAPSHOT
owl-utils-4.1-SNAPSHOT
owl-utils-poi-1.2-SNAPSHOT
pdfbox-1.4.0
poi-3.6
servlet-api-2.5-20081211
slf4j-api-1.5.11
velocity-1.7-beta1




                                       6
クライアント
apache-mime4j-0.6
commons-beanutils-1.7.0
commons-codec-1.3
commons-collections-3.2
commons-lang-2.4
commons-logging-1.1.1
httpclient-4.0.3
httpcore-4.0.1
httpmime-4.0
jsonic-1.1.0
junit-4.8.2
log4j-1.2.16
owl-utils-4.1-SNAPSHOT




                          7

More Related Content

Viewers also liked

College Mission
College MissionCollege Mission
College Missionfscjopen
 
IAE:20121128新機能マニュアル(Pinboard)
IAE:20121128新機能マニュアル(Pinboard)IAE:20121128新機能マニュアル(Pinboard)
IAE:20121128新機能マニュアル(Pinboard)Yuichi Takahashi
 
Other News and Events
Other News and EventsOther News and Events
Other News and Eventsfscjopen
 
Plagiarism
PlagiarismPlagiarism
Plagiarismfscjopen
 
Waypoint - Grading an Assignment
Waypoint - Grading an AssignmentWaypoint - Grading an Assignment
Waypoint - Grading an Assignmentfscjopen
 
Student Conduct
Student Conduct Student Conduct
Student Conduct fscjopen
 
Students reviewing instructor feedback
Students   reviewing instructor feedbackStudents   reviewing instructor feedback
Students reviewing instructor feedbackfscjopen
 
Module 4 presentation
Module 4 presentationModule 4 presentation
Module 4 presentationfscjopen
 
Module 4 presentation
Module 4 presentationModule 4 presentation
Module 4 presentationfscjopen
 
Plagiarism
Plagiarism Plagiarism
Plagiarism fscjopen
 
Open Campus CRC
Open Campus CRCOpen Campus CRC
Open Campus CRCfscjopen
 

Viewers also liked (16)

DIS for LR
DIS for LRDIS for LR
DIS for LR
 
Welcome
WelcomeWelcome
Welcome
 
College Mission
College MissionCollege Mission
College Mission
 
IAE:20121128新機能マニュアル(Pinboard)
IAE:20121128新機能マニュアル(Pinboard)IAE:20121128新機能マニュアル(Pinboard)
IAE:20121128新機能マニュアル(Pinboard)
 
Other News and Events
Other News and EventsOther News and Events
Other News and Events
 
Plagiarism
PlagiarismPlagiarism
Plagiarism
 
Waypoint - Grading an Assignment
Waypoint - Grading an AssignmentWaypoint - Grading an Assignment
Waypoint - Grading an Assignment
 
Criação de Deus
Criação de DeusCriação de Deus
Criação de Deus
 
TechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlexTechTalkThai-CiscoHyperFlex
TechTalkThai-CiscoHyperFlex
 
Student Conduct
Student Conduct Student Conduct
Student Conduct
 
Students reviewing instructor feedback
Students   reviewing instructor feedbackStudents   reviewing instructor feedback
Students reviewing instructor feedback
 
Module 4 presentation
Module 4 presentationModule 4 presentation
Module 4 presentation
 
Cristo
CristoCristo
Cristo
 
Module 4 presentation
Module 4 presentationModule 4 presentation
Module 4 presentation
 
Plagiarism
Plagiarism Plagiarism
Plagiarism
 
Open Campus CRC
Open Campus CRCOpen Campus CRC
Open Campus CRC
 

Similar to test slides 4

AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-publicAmazon Web Services Japan
 
SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新iPride Co., Ltd.
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Etsuji Nakai
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門Yasutaka Sugamura
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドHirotada Watanabe
 
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Akio Katayama
 
インタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてインタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてMasaharu Munetomo
 
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)wind06106
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 

Similar to test slides 4 (20)

AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
 
20090328
2009032820090328
20090328
 
SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
20080524
2008052420080524
20080524
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
 
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
 
インタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてインタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けて
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
G0042 h
G0042 hG0042 h
G0042 h
 
20060419
2006041920060419
20060419
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 

test slides 4

  • 1. IAE2011 System Design foreach ltd. 2011/03 1
  • 2. システム構成 本システムは以下の要素からなる. Web サーバ Apache HTTPD を使用し,SSL のデコード処理を行った後,アプリケーションコンテナへ リクエストを転送する.https://iae.hosei.ac.jp/file で始まる URL については,SSO の処理 も行われる. アプリケーションコンテナ Jetty を使用し,Servlet API 2.5 に準拠した形の Web アプリケーションを配備する. Web アプリケーション フォーイーチ社製の KANGAROO をベースにアプリケーションを構築する.KANGAROO は Jetty をベースにクライアントアクセスの処理,データベースアクセス,ファイルアクセ ス,テンプレート処理などを強化したフレームワーク兼実行環境である. データベース H2 を使用し,KANGAROO で用意されている DbAccessUtil を用いて処理を行う.組み込 み形式で実行する方式をとり,アプリケーション自体に統合されている,単一ファイルで すべてのデータを効率よく格納することができるため,バックアップ・リストアも容易で ある. Web ブラウザ ユーザが使用するクライアント PC にインストールされている Web ブラウザ.ユーザは多 くの操作を Web ブラウザから行う. QR コード印刷ソフトウェア QR コードラベルを印刷するための Windows アプリケーション.デネット社製のかんたん 商人バーコード作成を使用する. ソフトウェアアクセスポイント クライアント PC を疑似的なアクセスポイントとして動作させるための Windows アプリケ ーション.プラネックスコミュニケーション社製のクライアントマネージャを用いる. 画像ファイルアップロードソフトウェア デジタルカメラに装着された無線 LAN 対応 SD カードからファイルを受け取るための 2
  • 3. Adobe AIR アプリケーション.Eye-Fi 社製の Eye-Fi Helper を用いる. クライアントアプリケーション ソフトウェアアクセスポイントと画像ファイルアップロードソフトウェアを用いて,カメ ラから転送されてきた画像ファイルに対して,年度・科目・項目・学籍番号を付与して, サーバへアップロードするための Java アプリケーション.Java Web Start という技術を 用いて,Web ブラウザから直接起動する. 3
  • 4. クラス・テーブル設計 コントローラ コントローラの構成を Fig.1 に示す.また,ベースにしているフォーイーチ社製 KANGAROO の構成を Fig.2 に示す.テーブル・インデックスの準備やデータファイルを 格納するフォルダの設定などは IaeListener で行われるようになっている.IaeListener は Web アプリケーション起動時にロードされ,実行される.Listner の実行が終わると, それぞれの URI に対して,Servlet / Filter がマッピングされる. 各サーブレットは KANGAROO の提供するディスパッチ機能を用いて,メソッドを実行 する.その際,認証が行われていれば,IaeUserInfo にログイン情報が設定される.サー ブレットはこのログイン情報を用いて,モデルのインスタンスを生成する.サーブレット はリクエスト情報をモデルのパラメータへと変換し,それぞれの処理を委譲する.それぞ れの処理が終了すると,処理結果をビューに応じた形に整形して,テンプレートエンジン を呼び出す. モデル モデルは大きく2つに分かれている(Fig. 3).ファイルシステムの基本的な動作を定義し た FileManager クラスと,階層やユーザ権限に応じた動作を定義した IaeManager であ る.後者は本システムの中核であるため,クラスが大きくなるきらいがある.そこで本シ ステムではモデル内部の大きな処理(教務データ取り込み,ZIP ファイル取り込み)を別ク ラスとして,利用することとした. DataImporter は教務データ解析・取り込みなどを担当するクラスである.年度初めのコー ス登録および QR コードデータの作成に用いられる.教務データは Fig. 4 のように構成さ れ,UTF-8 エンコードで記述された CSV である.具体的なフォーマットは添付の資料を参 照のこと. UploadFileExtractor は一括アップロードされた ZIP ファイルを解凍し,ファイルの種類 に応じて処理を行うものである.単純なアップロードの場合(ファイル中に desc.txt ファ イルが含まれている)はファイルシステムにファイルを登録する.一方,JPEG 形式の画像 ファイルのみが複数含まれている場合は,スキャンされたレポートファイルがアップロー ドされたものと見做して,QR コードラベルの解析を行う.QR コードを画像から読み取る 処理には zBar を用いている.zBar の出力結果は XML で返されるため,その結果をもと に画像ファイルを学籍番号ごとに整理して,それぞれの PDF ファイルを作成する. エンティティ 本システムで用いるエンティティを Fig.5 に示す.それぞれのクラスのフィールドはテー ブルのカラムに対応する.またデータ型のマッピングは以下のように行っている. 4
  • 5. String → varchar or CLOB  int → int  boolean → Boolean  Date → timestamp なお,varchar 型の場合,項目長は指定していないが, データベースでは最大 255bytes H2 である.また,CLOB を使用する場合はクラス図に明記している. 年度・科目などの情報は明示的に作成していないが,FileItem の情報がそのまま年度・科 目などの情報となり,level がそれぞれ 1,2,… に対応している. ビュー ビューはテンプレートをベースにして,コントローラがモデルから取り出したデータを HTML に整形し,出力することで実現している.具体的なテンプレートの構成は Fig.5 に 示す.テンプレートは各ページ・階層で表示項目が異なるが,共通部分は入れ子にして定 義し,保守性を高めている(Fig.6) . クライアントアプリケーションを Java Web Start で起動するための jnlp ファイルも,起 動時に認証情報を埋め込む必要があるため,テンプレートを用いて出力している. 5