SQS - Shared Questionnaire System

Download Report

Transcript SQS - Shared Questionnaire System

IPA 2007年度I期「未踏ソフトウェア創造事業」竹田PM
最終報告会@仙台 2007/11/29
Shared Questionnaire
System 2.0 の開発
久保 裕也 [email protected]
千葉商科大学 政策情報学部 専任講師
慶應義塾大学SFC研究所 上席研究員
http://sqs-xml.sourceforge.jp/
1
「SQSって、ようするに、
何なの?」
2種類の「共有」を意味
Shared Questionnaire System
1.「アンケートシステム」の共有化
オープンソース・ソフトウェアとしてのSQS
×
2.「調査票の共有」のシステム
オープンな調査コンテンツの処理系としてのSQS
これを実現するために、必要な機能を逆算して、開発を開始した。
3
当面の、エンジニアリング的目的
あるいは、
ユーザを集める「撒き餌」
「アンケートシステム」の共有化
いじめアンケート、学力調査…
質問紙方式での調査・集計業務が
学校現場の多大な負担となっている!!
※Webアンケートを利用できる場面は
現実的には非常に限定的。
※いわゆるマークシート方式は機器・用紙の
コストが高く、回答者にも負担がある。
6
調査背景・仮説
調査結果・情報公開
XMLファイル
(XHTML/XForms)
アンケート設計ツール
csv,xls形式ファイル
SourceEditor
集計結果
表形式データ
自由記述欄
画像ファイル
XSL-FO処理
マーク読み取りツール
印刷原稿PDF
アンケート
印刷原稿
PDF
印刷・配布・
回答・回収
アンケート
回答用紙
MarkReader
調査票スキャン
画像フォルダ/
画像ファイル
印刷原稿PDF
7
ここで、
「調査プロセス情報」に着目。
調査背景→ 調査仮説→ 調査票→
調査実施→ 分析→
調査結果の公開→
調査結果をもとにした意思決定
などなど。
真の目的
「調査票の共有」のシステム
この実現が、
「社会を変革するような研究」
“Blue Ocean”
を拓く、という確信。
新しい調査のパラダイム
調査1.0 「Closedな調査」
調査プロセス情報の非公開化
他者との差別化
調査結果の私物化・死蔵
調査2.0 「Openな調査」
調査プロセス情報の公開化
顧客からの信頼
調査結果の共有財化・多角的活用
これまでは、アドホックでワンオフな
調査が多すぎたのだ。
「調査プロセス情報」は、
繰り返し・幅広く、
使われるべきである。
「共有」されるべきである。
これで、強権的統治、衆愚的統治、前例主義的官僚統治などを排する。
SQSで
同じ内容のアンケートを
繰り返し実施
(時間軸を超えた調査の「共有」)
100
90
80
70
60
50
40
30
20
10
0
東京
1 月
2 月
3 月
4 月
SQSで
同じ内容のアンケートを
異なる場所で実施
(地理空間・組織を超えた調査の「共有」)
50
45
40
35
30
25
20
15
10
5
0
東京
名古屋
大阪
平均値
共有=流通・再利用
ネットワーク経由で取得した「調査票」を、
コピー・貼り付けしたり、
一部を書き換えたりすることで、
簡単に新しい「調査票」を作れるようになる。
社会的に調査ニーズの高い・品質の高い
調査票が、繰り返し使われることで、
より洗練されるとともに、
その調査結果が蓄積し、客観的な評価の
ための比較に用いることができるようになる。
14
「調査プロセス情報」のうち、
まずは、「調査票」を、
計算機可読・人間可読な形で表現し、
自動処理できるようにする。
「手作業に頼った調査」というニッチを
支援・代替するシステムとして、
デファクト標準の地位を得る。
デファクトとしての地位を利用して、
社会変革・ビジネス展開を進める。
その社会的な成果
2003年晩秋。
SQS1.0は、
宮城県で始まった。
※ 宮城県教育委員会 と 慶應義塾大学SFC金子研究室 との共同研究事業
県教委/学校への公的導入
宮城県教育委員会
 宮城県内の全公立高校への導入を実現:
• 2003年: 10校
• 2004年: 29校
• 2005年-現在: 87校すべて
岩手県教育委員会
 岩手県内の実験校への導入を実現:
• 2007年全高校への導入
 小中学校への導入を並行して開始
群馬県教育委員会
 小中学校・高等学校で80の実験学校を指定して導入
まず、学校教育の世界で
デファクト標準の地位を獲得
「学校教育現場からの絶大なる支持」
 宮城県教育委員会(全高校+α)、
 岩手県教育委員会(全高校+α) 、
 群馬県教育委員会(宇都宮市を中心にした小中高) 、
 神奈川県横浜市教育委員会(実験校) 、
 東京都三鷹市教育委員会(実験校) 、
 愛知県小牧市教育委員会(全中学校+α )、
 大阪府大阪市教育委員会(実験校)、
文部科学省行政への反映
2005年9月:中央教育審議会・義務教育特別部会(第33,34回)
 「科学的な手法」であるというコメントを受ける。
2006年4月:「学校の第三者評価等に関する研究計画に関
わる事業案の公募」
 文部科学省からのヒアリングを受け、募集内容に影響を与える。
• 「事業成果物はフリーソフトウェアとすること」との文言が盛り込まれる。
2006年8月:「学校評価ガイドラインに基づく評価実践研究推
進地域及び協力校の指定」・「コンピュータ等を有効に活用し
た効果的な処理方法の研究」部門
 岩手県奥州市における「学校評価の事務的負担を軽減する「学校評
価支援システム(SQS)」の有効な活用と普及・拡大」が採択される。
20
京都市での全ての公立学校・
幼稚園での公式導入の見込み
20年度京都市予算に、京都市立の、
 全ての高等学校
 全ての中学校
 全ての小学校
 全ての幼稚園
での必要機器導入(1校あたり約5万円)が予算化。
京都市教育委員会と慶應SQSプロジェクトの間で、
共同研究事業を準備中。
かくして、
全国制覇の準備は整った?
南米から「スペイン語版」、
イタリアから「イタリア語版」への
ローカライズをしたいとの要望も。
世界進出も視野に?
未踏的成果
SQS1.0
SQS SourceEditor
 調査票の雛形(調査手法)の選択
 調査票の論理的構造のデザイン
 各種メディアに対応した
調査票表現の生成
SQS MarkReader
 普通紙マークシートでの調査支援
 集計処理の自動化
 簡易的な分析機能の提供
24
SQS2.0
SQS SourceEditor2.0
eXsed : 自己記述的に
拡張可能なXMLエディタ
(eXtensibility by Self-Description)
SQS MarkReader2.0
eXigrid: Pure P2P分散並列
画像処理のためのグリッドフレームワーク
(eXtensible Image Processing Grid)
25
SQS2.0
SQS SourceEditor2.0
eXsed : 自己記述的に
拡張可能なXMLエディタ
(eXtensibility by Self-Description)
SQS MarkReader2.0
eXigrid: Pure P2P分散並列
画像処理のためのグリッドフレームワーク
(eXtensible Image Processing Grid)
26
SourceEditorより
MarkReaderを優先した理由
「ユーザからの質問・苦情」は、比較的、MarkReaderにつ
いてのものが多い
 来年度にはユーザ数が増える見込み。ユーザ対応に忙殺されたくない。
「SourceEditor/拡張可能なXMLエディタ」を、
半年で完成するというのは、やや荷が重すぎた
 「拡張可能なXMLエディタ」部分は今後の課題とし、
そこから使えるコンポーネントを、たくさん作った。
• FOによる印刷メディア対応コンテンツ変換生成機能のモジュール化など
「MarkReader/グリッドによる画像処理エンジン」に
魅力的な課題を多数発見、その完成度向上に注力した
 大規模サンプル (1万枚以上)をテストデータに実績づくり
 カスタマイザブルなOMRシステムとしての必要な機能の充実化を図った
 実際の大規模・分散的な利用ニーズに対応した
中間発表時の宿題
マーク解析処理について
読み取り品質の向上
読み取りパラメータの設定をできるように
分散並列処理について
安定化
「参加感」のある処理状況の可視化
集計結果について
わかりやすいブラウズ・分析ツールの実現
デモ
SourceEditor
1.0-backport
「素人にも利用しやすい」
XMLエディタを核とする
調査票エディタ
30
クリックすると、
インストール/更新・起動
クリックすると、
インストール/更新・起動
31
起動までの手順
Webブラウザからの
アクセス
 またはデスクトップ上からの起動
JNLPファイルのダウンロード・解釈
 必要に応じて:
• JREの取得・インストール
• 必要なjarファイル群のダウンロード
• Jarファイルのコード署名証明書の承認
• デスクトップアイコン・メニューの作成の
確認
アプリケーション起動
32
参考:
コード署名証明書の購入: Verisignの場合
コード署名証明書を購入して維持していくためは,
 毎年,94,500円の料金を振り込み,毎年,実在証明のた
めの登記簿謄本や印鑑証明などの書類を送付し,毎年,
責任者のところにかかってくる電話待ちをしてもらう段取り
をする,といったコストがかかる.
 Verisignの場合,個人や任意団体に対しては,コード署
名証明書を販売していない. 多くのオープンソースプロジ
ェクトには,法人としての組織実体が無いので,少なくとも
Verisignからは買うことができない.
33
Web上から、
「.sqsファイル」をダウンロード
SQSホームページから
「ドキュメント」のページをアクセス。
さらに、上から3つめ、
 「サンプルファイル」
• SQS SourceEditorで利用・生成されるファイルのサンプル
をアクセス。
「SQSを用いた調査票を作成実習のための素材」のうち、
「SQS Sourceファイル」を、デスクトップに保存。
このファイルを開いてみると、XHTML2.0+XForms1.0の内容
であることが分かる。
34
DublinCore
+
XForms
※FormControl部分のみ
+
XHTML2
+
いろいろ
∥
調査文脈・調査過程
記述言語
“SQS Source”
35
SourceEditor画面上に、
「.sqsファイル」をDrag&Drop
ココへ!
36
タブで複数の
ファイルを
切り替え・
同時編集
(ファイルを超えた
Cut/copy&paste)
アウトライン
形式で
階層的に
ノードを表示・
選択・編集
(cut/copy&paste)
アウトライン上
での選択で、
「編集対象ノー
ド」を指定して
編集
(undo/redo)
編集用GUIは
ノードの種類
ごとに作成・
入れ子状に
表示内容が
編成される
37
画面構成
左側:
ノードツリー画面
右側:
ノードエディタ画面
38
編集要素と出力結果の対応
見出し
段落
注意書
設問
39
ノードエディタの選択方法
SourceEditorに
組み込まれた
選択されたノード群に
対する
ノードエディタの
カタログ
ノードエディタの
リスト
 Key: XMLのパターン※
 Value: ノードエディタ
※現在の実装では、XMLパターンは、
単一階層の「名前空間:要素名」にマッチする
SourceEditor利用者によ
って選択された
ノード群(「DOM構造の部
分木」のリスト)
 対応するノードエディタが存在
しない場合には、
SourceEditorが自動的に
生成したノードエディタを
対応づけられる
 ノードエディタは、
ノードの親子関係に応じて
入れ子状に構成・配置される
40
PDFで印刷原稿をプレビュー
127.0.0.1でローカルな
Webサーバを起動し、
動的に生成したコンテンツに
適切なContent-Typeを付けて
渡すことで、Webブラウザの
設定を通じ、環境非依存的に
ファイルを表示できる。
PDF生成には、Apache FOP (XSL-FO:
TeXに類似のXML電子組版エンジン)を
利用。
41
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に添付
42
生成されたPDFへの添付ファイル
生成された
PDFファイル
.sqmファイル : SQS Master
調査票からマーク欄・自由記述欄を
抽出して処理するためのデータ
.sqsファイル : SQS Source
このPDFファイルの元となった
調査票定義データ
クリックすると、
添付ファイル一覧
が表示される
43
.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>
44
45
46
47
MarkReader
2.0
画像処理タスクの分散並列化を行う
イントラネット用グリッドを核とする
マークシート読み取りアプリケーション
48
Source
フォルダ
Drag&Drop
で入力
ココへ
!
処理
Result
フォルダ
出力
index.html
49
Sourceフォルダの内容
まとめてひとつの
フォルダに入れる
1ページ1ファイルで
調査票の画像をスキャン
「名前で並べ替え」ると、
回答者順・ページ順に並ぶよ
うにする
調査票の印刷原稿
として用いた
「PDFファイル」を
集計用のタネとして
フォルダに同梱する
回答者一人分は、
連続したファイル名
になるようにする
50
新規開発:
画像処理アルゴリズム
位置合わせマークの候補抽出:
 画像内ピクセルの4近傍ラベリングによるシルエット抽出
位置合わせマークの選別:
 シルエットのフィルタリング
• シルエットの縦・横の長さの最大・最小値
• シルエットの濃度
位置合わせマークのエッジ検出・マーク中心座標算
出・ページ枠導出
位置合わせマークの認識誤りのチェック
ページ上下間違い・ページ裏表間違いのチェック
射影変換
新規開発:Config.xml
フォルダごと・ファイルごとの設定
ページ位置合わせパラメータ
ページ乱丁検出パラメータ
マーク読み取りパラメータ
Xml形式での保存
将来はSourceEditorを拡張して編集GUI化
標準エラー出力にASCIIアートで出力
動的に修正可能
セッション開始時に更新チェック
事例:
読めたもの
読めなかったもの
標準エラー出力
SVG+XHTMLでの
エラー出力
デモ
エラーを含むSourceフォルダの処理と
その修正
Resultフォルダの内容
★MarkReader
での処理後に:
フォルダ内の
ファイルの目次
Sourceのフォルダ名にRESULTを付けたフォル
ダ名で、
同じ階層に作成される
このフォルダ内の画像から
切り出された自由記述欄
index.html
このフォルダの
選択式設問の回答
を集約した
表形式データ
57
SQS MarkReaderからの出力
自由記述式設問
⇒画像ファイル
として切り出し
(自動)
⇒文字データに
打ち込み直し
(手作業)
58
SQS MarkReaderからの出力
択一選択設問
→円グラフ(自動生成)
複数選択設問
→棒グラフ(自動生成)
59
バッチ処理(1):
異なる種類の調査票の一括処理
まとめてひとつの
フォルダに入れる
数学の試験
H19年度
期末試験/国語の試験
英語の試験
H19年度
期末試験
国語の試験
「国語の試験」の印刷原稿として
用いた「PDFファイル」
集計用のタネ
60
バッチ処理(1):
異なる種類の調査票の一括処理
フォルダ内の
ファイルの目次
フォルダ内の
ファイルの目次
index.html
このフォルダ内の画像から
切り出された自由記述欄
数学の試験
英語の試験
index.html
H19年度
期末試験-RESULT
国語の試験
このフォルダ内の
選択式設問の回答を
集約した
表形式データ
61
バッチ処理(2):同じ種類の
調査票の階層ごとでの処理
まとめてひとつの
フォルダに入れる
3年A組
3年
3年/3年C組
3年B組
3年C組
調査票の印刷
原稿として用いた
「PDFファイル」
集計用のタネ
62
バッチ処理(2):同じ種類の
調査票の階層ごとでの処理
このフォルダ内の画像から
切り出された自由記述欄
フォルダ内の
ファイルの目次
3年A組
フォルダ内の
ファイルの目次
index.html
3年B組
3年-RESULT
index.html
3年C組
このフォルダ以下の
選択式設問の回答を
階層的に集約した
表形式データ
このフォルダ内の
選択式設問の回答を
集約した
表形式データ
63
以前の処理結果を活かした
「差分的処理」
Resultフォルダ内の、
隠しフォルダ以下にキャッシュを作成:
3年A組
index.html
3年B組
3年-RESULT
3年C組
前回までの処理結果を
キャッシュとして保持。
メモリ消費量の低減。
大規模調査に対応。
次回以降は、Sourceフォルダ
内で更新されたものだけを
差分的に処理。
処理の効率化・高速化をもと
に、Sourceフォルダの
監視・随時処理モードを実
現。
.cache
64
「学校のコンピュータ教室など、
PCがたくさんある部屋をつかって、
MarkReaderをたくさん起動すると、
グリッドで分散並列処理してくれたら、
いいのになぁ…」
65
P2Pグリッド
アプリケーションは、マスタとスレーブの両方の機能
を持つ
マスタとスレーブは「n対n」関係で接続する
マスタとスレーブそれぞれの、開始・停止・再開、
起動・終了・再起動を、自由に行って良いものとする
マスタとスレーブを繋ぐネットワークは不安定
 ネットワークは繋がったり切れたりする
実装の詳細
マスタ:
マルチキャストでセッション広告・鍵を配布。
分散BlockingQueueにPageTaskを詰め込んだものを、
RMIサービスとして公開。
PageTaskを、リース時間をつけてタスクとして供与、
リース時間が切れたら再リース。
スレーブ:
マルチキャストされる広告をもとにマスタを発見、 RMI接続。
セッション鍵を用いて、マスタ上の分散BlockingQueueを共有。
polling して PageTaskの取得ができるまで待つ。
PageTaskを取得したら、求められた処理を実施し、
そのマスタに結果を返却。
一定時間、マスタからの反応が無い場合には接続を切る。
67
PageConfig
マスタ
Engine
PageMaster
PageTaskProducer
PageTask
ResultEvent
PageTaskQueue
MulticastAdvertisementService
ResultManager
ResultEventSource
SessionService
ResultEventFilter
ResultEventHandler
ResultEventHandler
ResultEventHandler
multicast
group
RMI
MulticastDiscoveryService
PageTaskExecutorManger
スレーブ
PageTaskEventExecutor
PageTaskEventExecutor
PageTaskExecutor
68
グリッド化で実現したこと
MarkReaderを複数台のマシン上で起動しておくと、
マシンの台数に比例して処理速度が高まる。処理速度の上限は、主とし
て、マスタとなるマシンのハードディスク書き込み性能に依存する。
 上限は 10枚/秒 程度。1万枚が約15分で処理できる。
マスタとスレイブの役割関係は固定的ではなく、セッション処理状況によ
って動的に変化していく。
 グリッド内のMarkReaderがセッションを解しするとマスタになる。
 任意の複数台のマシンそれぞれがいつでも同時にマスタになれる。
 それ以外のマシンは、スレイブとして仕事を分担する。
グリッド内でマスタとスレイブは、相手と自分の状況やネットワーク切断状
況を検知しながら、賢く自律的に動作する。
69
Ajaxによる
読み取り結果ブラウズ
オフライン利用可能
Localhostで起動するhttpdと通信
iTunes的なインターフェイス
調査票、集計グループ、サンプル(行)、設問(列)
マーク修正、テキスト起こし
CSV・XLSダウンロード
集計(→拡張可能)
納品までに行うこと
TODO:
細かいバグ取り
開発済みモジュール群の結合
MarkReaderグリッド機能の処理性能の
計測と評価
マーク読み取りエンジンの正確さの評価
「標準的な作業者」による一連のシステム
利用の所要時間の計測と評価
まとめ
実用本位のソフトウェア
インストール・利用の簡単さを追求
 その分、開発が面倒だが、その手間を自動化する仕組みを実現
多数の多様な実際のユーザと関係づくり
 「要求の幅」を把握する
• 抽象化を行い、フレームワークの自由度を決めるときの参考に
 ユーザに「迎合」せず、「啓蒙」する
• 開発内容の優先順位は、ユーザの要望とは独立的に決める
開発者自身が「最強のヘビーユーザ」である
 ユーザインターフェイスの使いやすさにこだわりを持つ
 自分が楽をするためのシステム
未踏的・研究的成果というよりも、むしろ…
エンジニアリング的場面で
すぐに使えるTIPS・
プログラミング事例集?
その筋の人たちが喜びそうなが目新しいネタ満載
 RichClient, AJAX, REST, P2P, グリッド技術などなど
まじめなプログラミング教材としても有効
 画像処理、データ構造とアルゴリズム、デザインパターン、
システムプログラミング、ネットワークプログラミング…
オープンソース
今後の課題
SourceEditor
2.0-dev
汎用XMLエディタを
自己反映的に拡張可能なXMLエディタを
77
eXsed(えくせっど):自己記述的に
拡張可能なXMLエディタ
78
帳票システムのWeb2.0化
JavaScriptとしての部品化
iTunes的GUIを持つAjaxアプリを
つくるためのライブラリ
調査結果のリポジトリ機能の充実
コンテンツ秘匿化・ユーザ認証機能
調査結果の利用・コンテンツ変換モジュール
オフライン手書きOCR機能
より高度な集計分析機能などとの統合
事業化のアイデア、続々
中国・大連などへの
帳票入力アウトソーシング事業のWeb2.0化
• cf. CAPCHA, エログリッドコンピューティング
WBTと紙媒体でのテストをシームレスに。
学習履歴をe-learning側で一括管理。
• E-learningコンテンツをペーパーテストにレンダリング。
• ペーパーテストの回答をe-learning側に反映。
• それぞれの子どもについて、
学校での学習、家庭学習、学習塾での学習等の
学習履歴を統合的に蓄積し、指導を可能にする。
サポートビジネス、コンテンツビジネス、
マーケティング・経営コンサルティング
SQSホームページ
•http://sqs-xml.sourceforge.jp/
開発ブログ
•http://sqs.cmr.sfc.keio.ac.jp/tdiary/
ありがとうございました
81