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

SQS - Shared Questionnaire System