|

(ア) 履歴記録システムの拡張
(1) タグ付けによる活動履歴の構造化
大量の履歴情報をさまざまな手法で統一的に構造化するため、活動履歴にタグを付与することを基本設計に採用した。本開発では、活動履歴に付与するタグを1.手動での明示的なタグ付け、2.活動を振り返る履歴を利用したタグ付け、3.スケジュール情報との関連付けによるタグ付け、4.タグ付けされた情報を利用した知的な推定に基づくタグ付け、の4 種類とした。
タグを使った構造化には、定型的な情報を高速に扱う必要がある。そのため、SQL ベースのリレーショナル・データベースを採用した。具体的には、SQLite
という組み込みデータベースエンジンを利用した。SQLite はC で記述された組み込みデータベースライブラリであるが、非常に多くの言語から利用できるインタフェースが用意されており、その中にはJava と.NET も含まれている。どちらの言語からも簡単にデータベースを利用でき、タグ機能を予定通りに実現することができた。動作も大変高速なものになった。
(2) 画面上のほぼすべてのテキストの記録
OS のシステムコールをフックすることで、画面に描画されるほとんどすべてのテキスト情報を記録した。画 面に文字列を描画するシステムコールをフックしておけば、全てのウィンドウに再描画メッセージを送ることで、ウィンドウに表示されるべきテキスト情報を横取りすることができる。
既存のNecoLogger に実装されていた画面ダンプを行うオブジェクトを拡張することで画面テキストの撮影を実装した。この部分の実装にはVisualBasic .NET を利用した。OS のシステムコールをフックするモジュール
は、文献を参考にして開発を行った。この部分はVisual C++で実装した。

(3)全文検索の高速化
本開発では画面テキストを記録するようになったため、これまで以上に多くの履歴情報を検索できるようにしなければならない。そのために全文検索エンジンをベースにした履歴データベースを設計した。
高速に履歴を検索可能にするために、全文検索エンジン Lucene.NET をRetrospector に組み込んだ。本プロジェクトでは、履歴を3 次元的に視覚化する機能をJava で開発しており、活動履歴データベースを.NET とJava の双方から同時にアクセスできる必要があった。Lucene.NET はJava で実装された全文検索エンジン Lucene を .NET 環境に移植したものであり、検索データベースをJava と.NET から同時に共有することができるという特徴がある。そのため本プロジェクトの目的に適している。履歴は長期間記録するほどに役立つという性質があると思われるが、このエンジンは100 万件以上の文書の検索にも対応しているため、履歴探索システムには適している。そのため、Lucene を中核として活動履歴データベースを実装した。
テキスト情報をすばやく扱うことができるようになったため、それを応用した「検索キーワード提案機能」を試作 した。この機能はユーザの最新の活動から頻出するキーワードを自動的に取り出し、キーワード検索のために提案するものである。

検索を補助するために、システム側からキーワードを抽出して提案する
(4) 履歴探索システムのユーザインタフェースの刷新
現実にRetrospector を長期間利用しているユーザに対して非公式にインタビューし、大雑把ではあるがウィンドウの推移を中心として操作のプロセスを分析した。その結果、ウィンドウを統合し、検索結果を最初からビジュアルに表現したほうがよいことが分かった。そのため、これまで分割して提供されていたウィンドウを統合した新しいビューを設計した。
また、過去をサムネイルのブラウズによって振り返るときに、24 時間表示以外はほとんど使われていないことがわかったため、コマンドボタンの階層構造を変更した。カレンダーもほとんど使われないことがわかったため、表面から隠し、シンプルな画面デザインを行った。また、連続する活動を検索結果上で折りたたむことで、見かけの検索件数を減らす設計を行った。
データベースアクセスや情報の表示などの基本的な機能は既存のコードを再利用した。しかしユーザインタフ ェースについては新規に開発を行った。
実際のユーザの利用を通じてインタフェースを改善することができた。平面的な情報の提示であっても、現 実の利用にあわせてインタラクションを最適化することで、増大した情報量にある程度対応できるようになった。開発したシステムの画面イメージを以下に示す。




(イ) 3 次元視覚化機能の実現
従来のRetrospector で採用されている2D のWidget ベースのGUI
では、表示されている内容が時間の流れとは直接は関係がないため、ユーザが自分で時間の流れのイメージを持ちながら操作する必要があった。一方、CosmoScheduler D の放物線で表される時間軸上で動きを伴って表される3D ベースのGUI では、時間の流れのイメージを掴みやすい。
そのため、今回のプロジェクトでは、NecoLogger における強力な活動履歴記録機能、Retrospector における強力な活動履歴集計機能と、CosmoScheduler
D のエモーショナルな3D インタフェースを結びつけることにより、
ユーザに時間の流れのイメージを掴みやすくした。
Cosmo Scheduler D にサムネイル表示機能、サムネイルメモ機能、プロセス履歴視覚化機能の3
つの機能を追加拡張した。

(1) サムネイル表示機能
NecoLogger が記録して、Retrospector が処理して作成した画面イメージを、自由な操作感をもって閲覧できるようにした。Retrospector が予め作成してある任意の時刻の画面イメージのサムネイル画像をCosmoScheduler D の放物線軌道の一番外側に配置し、必要に応じて詳細な画面イメージを表示するようにした。
l
任意の時刻のサムネイルを表示
表示するサムネイル画像の時刻の指定の仕方を以下のように複数用意し、自由度を向上した。
・ サムネイル画像が表示されている軌道からポップアップするパイメニューにより、時刻から30 分過去に戻ったり、30 分先に進んだりすることができる。
・ 日付パネルにおいて、右クリックに割り付けられたダイヤルにより時刻を指定できる。
・ 予定(惑星)からポップアップするパイメニューにより、その予定が登録されている時刻を指定できる。

l
紙幣の束をめくるような操作感
マウスカーソルで重なって並んでいるサムネイル画像をなぞるとサムネイル画像が一瞬上がり、徐々に戻る動きをつけた。これにより、紙幣の束(札ビラ)や文庫本を指で連続的にめくるエモーショナルな操作感を実現
し、サムネイル画像をすばやく閲覧できるようにした。
l
タグ表示機能
タグがつけられている時刻のサムネイル画像に目印となる色付きの線を付けた。これは自分が覚え易い色にマウスホィールを回転させることにより変更可能とした。タグが付与されたサムネイル画像は遠くからでも非常に見付け易く、分り易い。
l
拡大表示機能
サムネイル画像により選択した時刻の画像を詳細にみたい場合、その画像を左クリックするだけで、メインビューワに詳細画像を大きいサイズで表示できるようにした。
3D GUI を操作して、近付いたり、左右上下に視点移動したりすることにより、詳細画像を容易かつエモーショナルに観察できる。

l
表示/非表示の切り換え機能
サムネイル画像の表示が必要の無いときには、後で述べるプロセス履歴表示の邪魔にならないように、太陽や軌道からポップアップするパイメニューにより、表示/非表示を簡単に切替えられるようにした。

(2) サムネイルメモ機能
ユーザが重要なサムネイル画像を保存できるようにするため、表示中の任意のサムネイル画像のコピーを作り、Cosmo Scheduler D の3D 空間内に奥行きを含めて自由に配置できるようにした。
この座標情報は Retrospector と共有のリレーショナル・データベースに保存され、例えばRetrospector のカテゴリ分類などに役立てることができる。Cosmo
Scheduler D 立ち上げ時にこの情報が読み込まれ、サムネイ
ル画像のコピーが元通りに再配置される。
(3) プロセス履歴視覚化機能
Cosmo Scheduler D に登録されている予定(惑星)と関連付けて実際に何をしていたのか閲覧するため、Retrospector が集計した一日分のプロセス実行履歴を可視化する機能を実装した。
このプロセス履歴可視化機能は、日付パネルからポップアップされるパイメニューから起動される。起動時 間が長かった上位幾つかのアプリケーションの実行履歴を縦方向に並べ、Cosmo Scheduler D の軌道の外側に1時間おきに小さい球で表示される。その球はアプリケーションがその時刻で実行中であったとき色が付けられる。カーソルが球に合わさったとき、アプリケーション名と時刻を表示する。

さらにパイメニューにより当該時刻のサムネイル画像を表示することができる。
(ウ) ユーザビリティ評価・検討
ソフトウェアの評価には開発と同程度の工数が必要であると考えている。このため、開発初期段階から、問題はあるが機能する版を頻繁にリリースし、実際に使っていく中で問題点を検討することとした。機能が追加されたりバグが解消されたりしたら、そのつどチーム内にリリースし、日常的に利用する体制でテストを行った。ユーザビリティ上の改善点などもバグトラッキングシステムなどで管理することとした。
プロジェクト全体として、問題報告用のML やwiki を用意しておき、簡易に報告ができる体制とした。また、ソフトウェアをリリースするたびに開発関係者全員にアップデートすることを強く要請して、問題点をメイリングリストで集約した。データ整理を担当する作業者がその情報を整理して、wikiにまとめた。
|