IPA


開発成果一覧へ

 



2005年度下期 未踏ソフトウェア創造事業  採択案件評価書

 


1.担当PM

   長尾 確 (名古屋大学 情報メディア教育センター 教授)


2.採択者氏名

開発代表者

 石戸谷 顕太朗  (私立稚内北星学園大学 情報メディア学部 情報メディア学科 学生)

共同開発者

 なし


3.プロジェクト管理組織


  株式会社 リオ


4.委託金支払額


  3,260,935


5.テーマ名


  知識情報共有プラットフォームSoya

 


6.関連Webサイト


  http://soya.guarana.cc/ 、 http://soya.guarana.cc/trac/guarana/ja


7.テーマ概要


 現在世の中に存在するソフトウェアの多くは、情報を生成または利用して処理を行い、そしてその結果を何らかの形でユーザーに提示するものである。そして、大抵の場合ユーザーが情報を利用することを念頭に置いていて、他のソフトウェアからその情報を二次利用・再利用することを前提にしていることはほとんどない。そのため、WebPC上に存在する情報の多くは再利用されずただ情報としてそこに存在するだけになってしまっている。
 Soyaはこれらの情報をソフトウェアから再利用できるようにするためのプラットフォームである。開発者が一定の手法を用いて情報を再利用すること、ソフトウェアが生成する情報を蓄積することを可能にし、複数のソフトウェア間で情報を共有することで、ソフトウェアの互換性・柔軟性・可能性を拡げることを目的としている。
 Soyaはすでに2004年度第2回未踏ソフトウェア創造事業の支援を受けて開発を行っており、オープンソースソフトウェアとして右記Webサイトにて公開を行っている。 http://soya.guarana.cc/ 
 本提案中においては、前回採択された期間内に開発したSoyaを継続して進化させ、Soya間での情報共有・セキュリティの向上・Soyaを利用した開発環境の整備・運用による情報の蓄積などを行って、より開発者にとって便利にすること、そしてオープンソースプロジェクトとして機能させることを目的とする。


8.採択理由


 提案者が従事した前回の未踏プロジェクトにおいて、オープンソースのメタデータ共有プラットフォームが構築できたことは大いに評価できる。その本格的な運用を念頭に置き、分散環境でのプラットフォームの利用および相互運用の仕組み、さらにこのプラットフォームをベースとしたアプリケーションの開発環境の充実などが今回の提案の主な部分である。これは、前回のプロジェクトでやり遂げられなかった部分を補うというのではなく、せっかく未踏プロジェクトで開発した、地味だが重要なソフトウェア資産をさらによいものに発展させようとするものである。ただし、基本的には継続プロジェクトであるため、今回で一応の決着がつけられるようにするべきだと思われる。そのため、今回は必要最小限の作業に限定し、開発と運用の仕組みを確立した上で、その後はオープンソースコミュニティにその発展を委ねることで、プロジェクト終了後は提案者の手から離れるようにすることを条件に採択とする。

 




9.開発目標


Blog
Wikiの登場によってWebに公開される情報は増加の一途を辿っている。これら情報を生成するためのツールがより便利により簡単に進化したことが要因のひとつである。しかし、生成されるコンテンツのフォーマットはソフトウェアごとに違い、ソフトウェア同士で連携して情報を再利用することは困難である。

近年、その解決策として注目されるメタデータは、ソフトウェアごとに違うコンテンツのフォーマット形式から、コンテンツの属性を分離したものである。

本プロジェクトは、コンテンツにメタデータを付与し共有するためのフレームワークとして機能することで、ソフトウェア間の互換性を担保し、コンテンツの再利用可能性を高めるためのシステムSoyaの開発・拡張を目指す。また、ツールを開発する過程で生み出されるプログラムをモジュール化して共有する手法を提供することで、開発者の負担を軽減する。


10.進捗概要


本プロジェクトでは、前年度の成果として開発された、メタデータ・データ及びモジュールを共有するために必要な基本的な仕組みの保守管理を含め、次の項目について開発を行うことを初期の目標とした。

  モジュールを簡便に開発するためのツール

  Soyaを分散環境で利用できるようにするための仕組み

  ドキュメント・開発環境の充実

  速度の向上

1については、モジュールを開発するためのツールを作成し開発を簡便に行えるレベルまで達した。

2については、初期段階の構想ではP2Pまたはインデックスサーバを用意して、クライアント側から見て必要なSoyaを自動発見し、Soyaを分散データベースとして利用できるような仕組みの構築を考えていた。しかし開発期間中には自動発見を行うレベルには達せず、ネットワークで利用できるインタフェースの拡充をするにとどまった。

3についてはインストールから利用までの詳細なドキュメントを用意した。また開発環境については、ライブラリの分離やSoyaで利用してきたユーティリティクラスなどをSoyaとは分離して提供するなど、利便性の向上を図った。

4については、前年度に開発したプログラムのリファクタリングや最適化を行った結果、前年度の開発成果に比べて速度が向上した。

その他の成果としては、以前に開発を行ったKaibashiraライブラリのSPARQL対応・KaibashiraRuby版開発があげられる。

開発言語としてPHP5.1.xを利用した。


11.成果


本プロジェクトでは、前回に開発された成果の全面的なリファクタリングを行い、ソースコードの見通しを高めた。またユーティリティクラス群は派生プロジェクトとして独立させ、Soya本体から分離した。

 

1 モジュールを簡便に開発するためのツール

モジュールは、Soyaに保存されるデータやメタデータを直接取り扱うリソース管理部(図3−1参照のこと)と、クライアントアプリケーションからのリクエストを取り扱うリクエスト受付部の間にあり、リクエストに応じた処理の選択・リソース管理の入出力を取り扱う。保存されるデータの統合やリソース管理部から読み出された情報の統合・処理などを行うことができる。

図3−1:Soyaの全体構造図

 

前年度の開発期間中にモジュールをSoyaで管理するところまでは開発が終了していた。本年度の開発期間中にはモジュールの開発をサポートするようなツールの作成をおこなった。その過程としてまずモジュールのリファクタリングを行った。

具体的には、モジュールの引数と返り値についてモジュールの実装から切り離し、アノテーションを用いて関連付けを行うだけにした。そしてモジュールにはデータやメタデータを直接処理するプログラムだけを記述すればいいように設計をしなおした。切り離された引数と返り値については、Beanで記述できるようにし、Beanを様々なフォーマットに変換できるようにした。具体的には、Beanを型としてRDFSJavaPHPJavaScriptに変換できるようにし、また値としてRDF・配列・文字列に変換できるように開発を行った。Beanを再利用することによって同じ型を利用するモジュールの開発が容易になり、言語間の可搬性も向上した。

その後、モジュールの引数と返り値に利用されるBeanを作成するためのツールと、モジュールとBeanの結び付けを行って、モジュールの雛形を作成するためのツールを開発した。

 


2 Soyaを分散環境で利用するための仕組み

前年度の開発期間中には、ネットワークインターフェースとしてSOAPRPCJSONRPCを実装した。本年度の初期の計画では、オーバーレイネットワークを作成し、ある一つのSoyaに対して行われた検索を、「自動的に」他のSoyaに対しても伝播させ、分散環境で利用できるような仕組みの提案を行った。しかし、本年度中には、モジュール関係のリファクタリングとあわせて、Beanによる型情報の共有までにとどまった。

 

3 ドキュメント・開発環境の充実

前年度の開発期間中には作成できなかった、Soyaの背景からSoyaの利用方法までの詳細なドキュメントを作成した。また、ユーティリティライブラリをSoya本体から分離し、Soya本体の見通しをよくした。特にKaibashiraについてはユーティリティライブラリとは別にプロジェクト化し、速度向上のためにRubyKaibashiraの開発を行った。また前年度には完全に実装されていなかったSPARQLの実装も行った。

 

4 速度の向上

全体的なリファクタリングと、データベースの最適化によって、前年度の開発成果よりも大幅に速度が向上した。特に、100万ノードを超えると速度がまったくでなくなっていた現象を解決し、200万ノード格納されている状態でも、1秒以内には返答が来るようになった。

2に前年度版の速度と本年度版の速度を比べた図を示す。速度の計測は、CPU/Xenon3Gのデュアル構成・メモリー/2ギガバイト・OS/SuSELinux9という構成のマシン上で行った。検索対象のノードは10ノード・1万ノード・100万ノード・200万ノードとしWordNetRDFを利用した。実行するクエリは、

SELECT * WHERE (?x wns:hasWordForm accept)

という非常に単純で、答えが一つしかないものを利用した。それぞれのノード数格納されているSoyaに対して上記クエリーを行うモジュールを呼び出す単純なスクリプトを同一マシン上から実行し、それぞれ10回計測を行って、その平均をとった。

 結果としては、特に100万ノードを超えるような計測を行ったとき平均値で約33倍早くなり、実用レベルで問題なく利用できる速度に達したと判断した。

図 3−2 Soyaに格納されたノード数に対する速度の変化

 

5 開発成果の特徴

前年度中に、実現したSoyaで提供されている機能を列挙する。

·    呼び出し手法に対する依存性の排除(POST/GET/REST,SOAP)

·    全モジュールをWebサービスで提供

·    サービス指向アーキテクチャーによる拡張可能性の確保

·    データベースへの依存性の排除(PostgreSQL,MySQL)

·    RDF(メタデータ,RDF Schema,Ontology)の格納、取得、利用

·    データのフォーマットに対する依存性の排除

·    リソースへの一意なURIの発行

·    SQLによるデータの検索

·    RDQLによるシングルモデル検索

·    TriQLによるRDFのマルチモデル検索(Kaibashira)

·    名前つきGraphの実装

 本年度開発した機能を次に列挙する。

·    引数と戻り値を定義するためのBeanの導入

·    Bean作成ツール

·    Module作成ツール

·    RDFモデル検索言語SPARQLによる検索(Kaibashira

本年度は、前年度の成果物に基づいて、その安定性を向上させるとともに、モジュール関連の機能を全面的にリファクタリングしBeanを導入することで、モジュールの可搬性、再利用性を高めた。また、それにあわせてツールを作成することで開発を簡便に行えるようにした。


12.プロジェクト評価


本プロジェクトは、以前の未踏プロジェクトにおいて開発した、オープンソースのメタデータ共有プラットフォームをさらに発展させ、さらにこのプラットフォームをベースとしたアプリケーションの開発環境の充実などを行った。これは、地味だが重要なソフトウェア資産をさらによいものに発展させようとするものである。この成果は、オープンソースとして公開され、その後はオープンソースコミュニティにそのさらなる発展が委ねられるだろう。今後、複数のサンプルアプリケーションを開発し公開することができれば、さらに有意義なものになると思われる。

 


13.今後の課題


まず、現状と比較して、今後実装・達成していかなければならない課題を列挙する。

1 オーバーレイネットワークの作成

2 コンテンツの内部構造・コンテンツのグループに対するメタデータの付与

3 メタデータ・データの蓄積

1のオーバーレイネットワークの作成については、前年度にも課題としてあげた。本年度の開発成果でモジュールが開発しやすく、使いやすくなった。モジュールをSoya内で呼び出して利用することは、可能である。しかし、複数のSoyaが協調して検索を行ったり、互いに補完しあうことを、自動的に行うところには至っていない。一つのSoyaで大規模なデータベースを作成するのではなく複数のSoyaが常に存在して、互いに補完しあうようなオーバーレイネットワークを作成する必要がある。

2のコンテンツの内部構造・コンテンツのグループに対するメタデータの付与は、現状では行うことができない。しかし、コンテンツを高度に利用するためには、コンテンツのある一部分がどのような意味を持っているか、どのような情報を表しているかを扱えるようにする必要がある。

3のデータ・メタデータの蓄積は、情報が集めることで情報の新しい側面を発見し新たな利用法を探るためには必須である。継続して運用していくことで蓄積を行っていく必要がある。

以上3点について、今後の目標とし開発を継続していく必要がある。今後は、Soyaの開発をオープンソースソフトウェアとして他の開発者と協力して継続し、特にその応用アプリケーションの開発に注力するべきである。



  ページトップへ   

 

 

 


  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004