SQS Sourceファイル - Shared Questionnaire System

IPA 2007年度I期「未踏ソフトウェア創造事業」竹田PM
中間発表会@湯布院
Shared Questionnaire
System 2.0 の開発
久保 裕也 [email protected]
千葉商科大学 政策情報学部 専任講師
慶應義塾大学SFC研究所 上席研究員
http://sqs-xml.sourceforge.jp/
1
SQSとは何か?
2
3
問題意識・仮説
調査結果・情報公開
XMLファイル
(XHTML/XForms)
CSV形式ファイル
アンケート設計ツール
SourceEditor
集計結果
表形式データ
自由記述欄
画像ファイル
XSL-FO処理
マーク読み取りツール
印刷原稿PDF
アンケート
印刷原稿
PDF
印刷・配布・
回答・回収
アンケート
回答用紙
MarkReader
調査票スキャン
画像フォルダ/
画像ファイル
印刷原稿PDF
4
共有された調査支援システム・
調査票の共有システム
「正」の字を書いてアンケートの集計をするのにウンザリしてませんか?
調査票を作るのに苦労していませんか?
SQS(Shared Questionnaire System)は、「普通紙マーク
シート方式による調査票作成・読み取り集計ソフトウェア」で
す。
SQSを利用するためには、特別な機材は必要ありません。
PC、白黒プリンタ、ドキュメントスキャナがあればOKです。
SQSは、小中高校の先生などをエンドユーザとして、全国的
な導入が始まっています。 インストール・利用は、とっても簡
単です。
SQSは、無償・自由な利用が可能です(ApacheLicense)。
5
SQS1.0
SQS SourceEditor
 調査票の雛形(調査手法)の選択
 調査票の論理的構造のデザイン
 各種メディアに対応した
調査票表現の生成
SQS MarkReader
 普通紙マークシートでの調査支援
 集計処理の自動化
 簡易的な分析機能の提供
6
SQS2.0
SQS SourceEditor2.0
eXsed : 自己記述的に
拡張可能なXMLエディタ
(eXtensibility by Self-Description)
SQS MarkReader2.0
eXigrid: Pure P2P分散並列
画像処理のためのグリッドフレームワーク
(eXtensible Image Processing Grid)
7
SourceEditor
1.0-backport
「素人にも利用しやすい」
XMLエディタを核とする
調査票エディタ
8
クリックすると、
インストール/更新・起動
クリックすると、
インストール/更新・起動
9
起動までの手順
Webブラウザからの
アクセス
 またはデスクトップ上からの起動
JNLPファイルのダウンロード・解釈
 必要に応じて:
• JREの取得・インストール
• 必要なjarファイル群のダウンロード
• Jarファイルのコード署名証明書の承認
• デスクトップアイコン・メニューの作成の確
認
アプリケーション起動
10
参考:
コード署名証明書の購入: Verisignの場合
コード署名証明書を購入して維持していくためは,
 毎年,94,500円の料金を振り込み,毎年,実在証明のた
めの登記簿謄本や印鑑証明などの書類を送付し,毎年,
責任者のところにかかってくる電話待ちをしてもらう段取
りをする,といったコストがかかる.
 Verisignの場合,個人や任意団体に対しては,コード署
名証明書を販売していない. 多くのオープンソースプロ
ジェクトには,法人としての組織実体が無いので,少なくと
もVerisignからは買うことができない.
11
Web上から、
「.sqsファイル」をダウンロード
SQSホームページから
「ドキュメント」のページをアクセス。
さらに、上から3つめ、
 「サンプルファイル」
• SQS SourceEditorで利用・生成されるファイルのサンプル
をアクセス。
「SQSを用いた調査票を作成実習のための素材」のうち、
「SQS Sourceファイル」を、デスクトップに保存。
このファイルを開いてみると、XHTML2.0+XForms1.0の内容
であることが分かる。
12
DublinCore
+
XForms
※FormControl部分のみ
+
XHTML2
+
いろいろ
∥
調査文脈・調査過程
記述言語
“SQS Source”
13
SourceEditor画面上に、
「.sqsファイル」をDrag&Drop
ココへ!
14
タブで複数の
ファイルを
切り替え・
同時編集
(ファイルを超えた
Cut/copy&paste)
アウトライン
形式で
階層的に
ノードを表示・
選択・編集
(cut/copy&paste)
アウトライン上
での選択で、
「編集対象ノー
ド」を指定して
編集
(undo/redo)
編集用GUIは
ノードの種類
ごとに作成・
入れ子状に
表示内容が
編成される
15
画面構成
左側:
ノードツリー画面
右側:
ノードエディタ画面
16
編集要素と出力結果の対応
見出し
段落
注意書
設問
17
ノードエディタの選択方法
SourceEditorに
組み込まれた
選択されたノード群に
対する
ノードエディタの
カタログ
ノードエディタの
リスト
 Key: XMLのパターン※
 Value: ノードエディタ
※現在の実装では、XMLパターンは、
単一階層の「名前空間:要素名」にマッチする
SourceEditor利用者に
よって選択された
ノード群(「DOM構造の部
分木」のリスト)
 対応するノードエディタが存在
しない場合には、
SourceEditorが自動的に
生成したノードエディタを
対応づけられる
 ノードエディタは、
ノードの親子関係に応じて
入れ子状に構成・配置される
18
PDFで印刷原稿をプレビュー
127.0.0.1でローカルな
Webサーバを起動し、
動的に生成したコンテンツに
適切なContent-Typeを付けて
渡すことで、Webブラウザの
設定を通じ、環境非依存的に
ファイルを表示できる。
PDF生成には、Apache FOP (XSL-FO:
TeXに類似のXML電子組版エンジン)を
利用。
19
XSLTによる変換
XHTML{ XForms{ SQS } }
XForms対応
ブラウザでの利用に。
XForms要素を表組みでレイアウト・
設問をcheckbox型にフラット化
旧来のHTMLフォームへの
変換元となるものとして。
XHTML{ XHTML Table{ XForms Select{ SQS } }
XForms要素をSVG形式に変換
(もともとのXForms要素を
SVG Metadataとして保持)
Page mediaでのXForms実装は
SQS以外には存在しない。そこで
実装上の作法を、独自に提案。
XHTML{ XHTML Table{ SVG{ SVG Metadata{ XForms } }
XHTML要素をFO形式に変換
ページ構造に流し込み
FOボキャブラリはマイナー。
HTMLでいけるところは、
なるべくHTMLで。
FO{SVG { SVG Metadata{ XForms Select } } }
FOをPDF形式に変換
別途、SVG Print形式データの雛形を作成し、Metadataを格納
PDF + SVG Print{ SVG { SVG Metadata{ XForms Select } } }
FOのPDFレンダラをhackして、
SVGを配置するPDF座標を横取りし、
対応するSVG Print形式データを完成、PDFに添付
20
生成されたPDFへの添付ファイル
生成された
PDFファイル
.sqmファイル : SQS Master
調査票からマーク欄・自由記述欄を
抽出して処理するためのデータ
.sqsファイル : SQS Source
このPDFファイルの元となった
調査票定義データ
クリックすると、
添付ファイル一覧
が表示される
21
.sqmファイルの中身:
SVG Print + svg:metadata
<svg:svg …>
<svg:pageSet>
<svg:masterPage>
<svg:metadata>
…
</svg:metadata>
<svg:masterPage>
<svg:page>
<svg:g>
<svg:metadata>
…
</svg:metadata>
22
23
24
25
MarkReader
2.0
画像処理タスクの分散並列化を行う
イントラネット用グリッドを核とする
マークシート読み取りアプリケーション
26
Source
フォルダ
Drag&Drop
で入力
ココ
へ!
処理
Result
フォルダ
出力
index.html
27
Sourceフォルダの内容
まとめてひとつの
フォルダに入れる
1ページ1ファイルで
調査票の画像をスキャン
「名前で並べ替え」ると、
回答者順・ページ順に並ぶ
ようにする
調査票の印刷原稿
として用いた
「PDFファイル」を
集計用のタネとして
フォルダに同梱する
回答者一人分は、
連続したファイル名
になるようにする
28
Resultフォルダの内容
★MarkReader
での処理後に:
フォルダ内の
ファイルの目次
Sourceのフォルダ名にRESULTを付けたフォル
ダ名で、
同じ階層に作成される
このフォルダ内の画像から
切り出された自由記述欄
index.html
このフォルダの
選択式設問の回答
を集約した
表形式データ
29
SQS MarkReaderからの出力
自由記述式設問
⇒画像ファイル
として切り出し
(自動)
⇒文字データに
打ち込み直し
(手作業)
30
SQS MarkReaderからの出力
択一選択設問
→円グラフ(自動生成)
複数選択設問
→棒グラフ(自動生成)
31
バッチ処理(1):
異なる種類の調査票の一括処理
まとめてひとつの
フォルダに入れる
数学の試験
H19年度
期末試験/国語の試験
英語の試験
H19年度
期末試験
国語の試験
「国語の試験」の印刷原稿として
用いた「PDFファイル」
集計用のタネ
32
バッチ処理(1):
異なる種類の調査票の一括処理
フォルダ内の
ファイルの目次
フォルダ内の
ファイルの目次
index.html
このフォルダ内の画像から
切り出された自由記述欄
数学の試験
英語の試験
index.html
H19年度
期末試験-RESULT
国語の試験
このフォルダ内の
選択式設問の回答を
集約した
表形式データ
33
バッチ処理(2):同じ種類の
調査票の階層ごとでの処理
まとめてひとつの
フォルダに入れる
3年A組
国語の試験
国語の試験/3年C組
3年B組
3年C組
調査票の印刷
原稿として用いた
「PDFファイル」
集計用のタネ
34
バッチ処理(2):同じ種類の
調査票の階層ごとでの処理
このフォルダ内の画像から
切り出された自由記述欄
フォルダ内の
ファイルの目次
3年A組
フォルダ内の
ファイルの目次
index.html
3年B組
国語の
試験-RESULT
index.html
3年C組
このフォルダ以下の
選択式設問の回答を
階層的に集約した
表形式データ
このフォルダ内の
選択式設問の回答を
集約した
表形式データ
35
以前の処理結果を活かした
「差分的処理」
Resultフォルダ内の、
隠しフォルダ以下にキャッシュを作成:
3年A組
index.html
3年B組
国語の
試験-RESULT
3年C組
前回までの処理結果を
キャッシュとして保持。
メモリ消費量の低減。
大規模調査に対応。
次回以降は、Sourceフォルダ
内で更新されたものだけを
差分的に処理。
処理の効率化・高速化をもと
に、Sourceフォルダの
監視・随時処理モードを実
現。
.cache
36
「学校のコンピュータ教室など、
PCがたくさんある部屋をつかって、
MarkReaderをたくさん起動すると、
グリッドで分散並列処理してくれたら、
いいのになぁ…」
37
P2P方式で実現しました。
※マスタとスレーブを同じプロセス内に実装
マスタ:
マルチキャストでセッション広告・鍵を配布。
分散BlockingQueueにPageTaskを詰め込んだものを、
RMIサービスとして公開。
PageTaskを、リース時間をつけてタスクとして供与、
リース時間が切れたら再リース。
スレーブ:
マルチキャストされる広告をもとにマスタを発見、 RMI接続。
セッション鍵を用いて、マスタ上の分散BlockingQueueを共有。
polling して PageTaskの取得ができるまで待つ。
PageTaskを取得したら、求められた処理を実施し、
そのマスタに結果を返却。
一定時間、マスタからの反応が無い場合には接続を切る。
38
グリッド化のメリット
MarkReaderを複数台のマシン上で起動しておくと、
マシンの台数に比例して処理速度が高まる。処理速度の上
限は、主として、マスタとなるマシンのハードディスク書き込
み性能に依存する。
マスタとスレイブの役割関係は固定的ではなく、セッション処
理状況によって動的に変化していく。
 グリッド内のMarkReaderがセッションを解しするとマスタになる。
 任意の複数台のマシンそれぞれがいつでも同時にマスタになれる。
 それ以外のマシンはスレイブとして仕事を分担する。
こうしたグリッド内でマスタとスレイブは、相手と自分の状況
やネットワーク切断状況を検知しながら、賢く自律的に動作
する。
39
PageConfig
マスタ
Engine
PageMaster
PageTask
PageTaskProducer
PageTaskQueue
MulticastAdvertisementService
SessionService
ResultManager
ResultEventSource
ResultEventHandler
ResultEventHandler
ResultEventHandler
multicast
group
RMI
MulticastDiscoveryService
PageTaskExecutorManger
スレーブ
PageTaskEventExecutor
PageTaskEventExecutor
PageTaskEventExecutor
40
SourceEditor
2.0-dev
汎用XMLエディタを
自己反映的に拡張可能なXMLエディタを
41
eXsed(えくせっど):自己記述的に
拡張可能なXMLエディタ
43
XMLインスタンスの編集・
XMLスキーマの指定
44
XMLスキーマ内に
GUI用アノテーション(XAR)を埋め込み
GUI生成用
アノテーション
(必要に応じて)
Convention Over Configuration
45
XARtoXGUIML: XSLTで(RelaxNG+XAR)を変換し、
XMLによるGUI定義を生成
Code Generation
XSLT
46
XGUIML: XMLによるGUI定義により、
GUI生成
XMLエディタ機能を実現
47
自己記述:エンジン内部動作用のXML
インスタンスをも、編集可能とする
48
SQSのコンセプト
2種類の「共有」
49
(トロイの木馬的な戦術)
SourceEditorとMarkReaderを
「キラーアプリ」として、
インストールベースを、
地道に、ひたすら稼ぐ。
50
2種類の「共有」の導入
Shared Questionnaire System
1.「アンケートシステム」の共有化
オープンソース・ソフトウェアとしてのSQS
×
2.「調査票の共有」のシステム
オープンな調査コンテンツの処理系としてのSQS
51
共有:流通・再利用
ネットワーク経由で取得した「調査票の本文」
を、コピー・貼り付けしたり、一部を書き換えた
りすることで、簡単に新しい「調査票」を作れ
るようになる。
社会的に調査ニーズの高い・品質の高い調
査票が、繰り返し使われることで、より洗練さ
れるとともに、その調査結果が蓄積し、客観
的な評価のための比較に用いることができる
ようになる。
52
「アンケートシステム」の共有化
オープンソースソフトウェアとしての開発提供
要求:学校現場によるボトムアップな「カイゼン」
 学校ごとの目標設定
 校長を中心とした現場マネジメント
 地域の特色を活かした学校づくり
→ 現場組織の自律性・主体性を活かした学校カイゼン
解決方針:JavaWebStart(リッチクライアント)でのバイナリ配布
 サーバ側での処理内容の軽減
 クライアント側での利用内容の「リッチ」化
 オープンソース実装のリッチクライアント化
→ 「いつでも・どこでも・だれでも使える」システム
実施内容:開発コスト・再配布コスト削減
 Apache License Version 2の採用
53
「調査票の共有」のシステム
オープンな調査コンテンツ処理系
要求:調査コンテンツの社会的共有の促進
→ 末端の現場組織のタコツボ化を防ぐ
オープンなカイゼン知識の共有
• 教育委員会などによる調査票の雛形配布、調査項目の一部共通
化
• 学校の説明責任としての調査票データ(調査プロセス)の公開
解決方針:調査コンテンツを記述するスキーマのオープン性の実現
→ プロプライエタリではない、標準スキーマ・語彙の採用
– XHTML, XForms, XSL-FO, SVGなどのXML標準
• 内部的仕様を公開することで、コンテンツと処理系それぞれの部品化・
再利用を促進
実施内容:処理系のオープンソース実装の開発と提供
→ コンセプト実証・参照用実装として利用
54
学校評価の役割の3層構造化
文科省・教育委員会・
大学・研究機関・NPO
それぞれの
学校現場
(学校評価の実施担当教員・
校長・教頭)
学校評価への回答者
(教職員・児童生徒・
保護者・地域住民など)
調査手法
(調査の手法・
調査項目の雛形)の提供
課題への取組 調査票
(何を・どのように
を共通化・
調査するのかの
特色化
デザイン)の記述・調査実施
調査結果
(回答内容・
現実はどうなって
いるのかのデータ)への反映
55
文部科学省行政への反映
2005年9月:中央教育審議会・義務教育特別部会(第33,34回)
 「科学的な手法」であるというコメントを受ける。
2006年4月:「学校の第三者評価等に関する研究計画に関
わる事業案の公募」
 文部科学省からのヒアリングを受け、募集内容に影響を与える。
• 「事業成果物はフリーソフトウェアとすること」との文言が盛り込まれる。
2006年8月:「学校評価ガイドラインに基づく評価実践研究推
進地域及び協力校の指定」・「コンピュータ等を有効に活用し
た効果的な処理方法の研究」部門
 岩手県奥州市における「学校評価の事務的負担を軽減する「学校評
価支援システム(SQS)」の有効な活用と普及・拡大」が採択される。
56
SQS2.0の意義
eXsed, eXigrid いずれも、SQSとは独立の、
ソフトウェアとして有効に利用され得る。
 XML、P2Pの潜在力を引き出す
SQS2.0の実装は、eXsed, eXigiridのメリットを最
大限に活かす形となる。
 共有と再利用の効率化、運用のカジュアル化
SQS2.0をきっかけに、社会が変わる。
 ボトムアップな「データ経営」の考え方が普及する
 マニフェストにもとづく地方自治・市民自治が実質化する
57
終了後の展望
XML → Paper Test + Web Based Test
 紙の上でもE-learningを学べるようする
分散的な自由記述欄のテキスト化・ソーシャルブッ
クマーク化
 災害時の被災者支援情報共有など
次世代Semantic Webにおける大規模確率推論
のデータソース
 実際の社会調査に基づいて「風が吹けば桶屋が儲かる」
かどうかを検証
58
SQSホームページ
•http://sqs-xml.sourceforge.jp/
開発ブログ
•http://sqs.cmr.sfc.keio.ac.jp/tdiary/
ありがとうございました
59