|

Blographerのシステム構成は文章およびグラフを編集するためのクライアントツールと,閲覧およびコミュニケーションのためのサーバ部分に大別できる(図6−1).

図6−1:システム構成概観
i. サーバサイド開発
当初は,後述するテキストエディタ機能およびワードマップエディタ機能をすべてサーバ側に実装することを予定していたが,当初の予想よりも文章の解析などに時間がかかったため,それら編集機能をクライアントツールとして切り分けることにした.そのため,クライアントツールとの通信機能や動作サンプルの提示,およびテストを目的としたサーバの開発となった.
サーバのOSにはFedora Core 5(cf. http://fedora.jp/)を用い,NucleusやP_BLOG,XOOPSなど現在一般的に利用されているオープンソースCMSを構築してテストした.クライアントツールとの通信にはXML-RPC規格を参考に実装した.サーバ上のグラフ提示機能には,後述するワードマップエディタ機能を機能的に制限したものを用いることで,開発の効率を向上させた.
ii. テキストエディタ機能開発
テキストエディタ機能および後述するワードエディタ機能はユーザーのPC上で動作するクライアントツールとして実装した.本契約期間内ではBlogのエントリを編集する場面に限らず,汎用的な文書を編集することを想定した.
テキストエディタ機能は,Microsoft社が提供するC#を用いて開発した.これにより.Net Frameworkに対応する環境で動作するクライアントツールとして作成することができた(図6−2).

図6−2:クライアントツール全体
テキストの編集にはリッチテキスト形式を編集するためのコンポーネントを流用し(図6−3),編集過程に想定されるイベント(例. 改行の入力,文章のコピーアンドペースト)をきっかけにバックグラウンドで文章を解析することによって,編集作業を妨げずにワードマップエディタとの連携を行えるよう実装した.解析に関しては,特に文章中の単語間に存在する関係性を抽出することを主眼としており,そのために形態素解析を用いた関係性類推機能を実装した.形態素解析にはオープンソース形態素解析エンジンであるMeCabを用い,C#からMeCabを操作するためのDLLを作成することで実現した.文章から名詞を抽出して,その単語の出現位置から関係性の類推を行うアプローチをとっている.出現位置による類推とは,同じ行に存在する単語ならば関係性があるのではないか,冒頭に出てきた単語ならば重要度が高いのではないかなどである.自動的な類推だけでは不十分なため,ユーザが任意に関係性の設定を行えるよう配慮した.
編集後のデータをサーバへアップロードする必要があったため,オープンソースで提供されているライブラリを用いてXML-RPC規格に準じた通信機能を実装した.これにより現行の多くのBlogサービスはXML-RPC規格をサポートしているため,特別に用意したサーバでなくてもBlographerを利用できるようになった.

図6−3:テキストエディタ部
iii. ワードマップエディタ機能開発
前述したテキストエディタ機能と連携することにより,現在編集中の文章における単語間の関係性などの情報を可視化することを目的とした機能である.ワードマップ上ではキーワードが頂点要素,それらの関係性が線で表現されている.テキストエディタ機能に実装された関係性類推部分から解析結果を受け取ることによって,グラフを動的に描画する.グラフだけの編集も可能であり,これによりマインドマップなどに代表されるグラフを用いた創造技法を応用することができる.またグラフを編集した際にテキストエディタ機能へ通知することでテキストエディタ機能との同期をとっている.実装にはAdobe社のFlashを用いて,C#で実装されているクライアントツール上でShockwave Objectとして動作するよう開発した(図6−4).

図6−4:ワードマップエディタ
これによりFlashを表示可能なBlogサービスでは編集時に使用するワードマップエディタ機能とサーバ上で閲覧するためのワードマップエディタを共用することが可能になり,開発工数を少なくすることができた.以下に主要な機能を図示する.

図6−5:要素の編集
ワードマップエディタ上の各要素はマウスで操作することができる.基本的には各要素をクリックしフォーカスを当てることで,メニューが表示される設計になっている(図5).上図のメニューボタンはそれぞれ左上が要素の削除,右上が要素のラベル名変更,右下が他の要素との結線,左下が新しい要素の作成に対応している.ワードマップエディタ上で新しい要素が作成された場合はテキストエディタ機能へ通知し,それに応じて処理を施すことも可能とした.これにより,文章編集よりグラフ編集を得意とするユーザーも支援できると考えられる.任意の要素間を線でつなぐことができるため,テキストエディタ機能側で類推できなかった場合の関係性補完も容易に行うことができる.他にもユーザーへの負荷を最小限にするためのGUIを考え,バネモデルを用いた自動整形機能や,サイズの最適化機能,スクロール機能を実装した(図6−6).

図6−6:自動整形,サイズ最適化後のグラフ例
編集後のグラフはアップロードする際,PNG形式の画像として書き出すことができる.これはアップロード先のBlogサービスがFlashの表示に対応していない可能性を考え,閲覧時の動的なインタラクションは期待できないものの,画像として静的にユーザーへ提示するだけでも読み手の支援になると考えたためである.
|