IPA


IPAトップ





平成15年度未踏ソフトウェア創造事業(未踏ユース)  採択案件評価書


 




1.採択者氏名


代表者

村崎 大輔(電気通信大学大学院)

共同開発者

なし



2.担当プロジェクト管理組織


 三菱マテリアル(株)



3.委託支払金額


 2,000,000円



4.テーマ名


 多種環境間で協調するファイル同期ツールの開発



.関連Webサイトへのリンク


 なし



6.テーマ概要


 今や,社会にコンピュータは広く普及し,一個人が複数のコンピュータを利用することも珍しくなくなってきた.このような場合,複数コンピュータ間でファイルの内容を共有する必要が生じる.

 ファイルの共有を容易にするために,多くの同期ツールや分散ファイルシステムが開発されてきた.これにより,インターネットなどのネットワークを経由して他のコンピュータ上にあるファイルとの内容を共有することができる.

 しかし,これらソフトウェアではファイアウォール等によって通信が制限された環境下では動作できない場合が多い.このような環境下でも利用可能なソフトウェアもあるが,複雑な設定を必要とすることが多く容易に利用できない.

 本プロジェクトの目的は,多様な環境間で協調し,ユーザが簡単に導入できるファイル同期ツールの開発である.ソフトウェアがネットワークにアクセスする環境の違いを意識させず,最小限の設定で動作するソフトウェアを目指す.

 
7.採択理由
 

  
 村崎君はPMの研究室の学生である.断りなく突然応募してきたのですこぶる判定が難しかったが,プレゼンでのプロ管候補からは概ね採択に値すると判断いただいたので採択することにした.すでに研究室で1年以上付き合っているので,彼の腕前はよく承知しているのだが,研究室で教授(PM)が本来期待したいこととは無縁にひょこひょこいろんなことをやってしまうという性癖もある.この提案もまさにそれで,完全なサイドワークである.これをやっても研究室で進めているプロジェクトには影響しないとPMは読んだ.ファイル同期という提案の内容自身は,あちこちでやられていると思うが,彼の提案は異種OS,PDAも含めたファイル同期やファイアウォール突破まで射程に入れているところが興味深い.どこまでできるか,マイルストーンをきっちり定めて取り掛かろうとしているところもグー.
 

 

 
8.成果概要(中間報告時)
 

 
 本プロジェクトで開発する多様な環境間で利用可能で,かつユーザが容易に導入可能なファイル同期ツールをpsync (p*-base sync) と命名した.名前の中の*は正規表現のKleene Starである.プラットホーム,オペレーティングシステム,ネットワーク環境や通信環境等,動作環境の違いをpsync内部で吸収することにより,これらの違いをユーザに意識させることなく利用可能とすることを目指している.

 psyncが扱う概念は以下の通りである.

◇ ストレージ (storage)
 データが格納されている位置で,トップレベルのフォルダをURIで指定する.
 局所的なアクセス手法の差はVFS (Virtual File System) で吸収する.
◇ 共有 (share) ― 同期すべきストレージの集合
◇ ネットワーク (network)
 同一URIでアクセス可能なストレージの集合で,広域的なアクセス手法の差を区別する.
◇ サービス (service) ― ネットワーク間で可能なアクセス手段
◇ 直接的なtcp通信
◇ sshによるトンネリング
◇ サービスグラフ (村崎 図1)にその片鱗を示す.
 ネットワークとサービスの集合から構成されるグラフで,実行時にネットワーク間の通信方法を決定する.

 psyncに関して以下の3項目の開発を行なった.処理系にはRubyを使用した.Rubyは,UNIX系,Windows系,Mac系,PDA系など,簡単に多くのプラットホームをカバーできるという利点があるが,PDAではリソース的に耐えうるか不安が残っている.GUIにはGTK (Ruby/GTK) を使用した.これもPDAで使えるか不安が残っている.少なくともLinux Zaurusの標準ライブラリではない.

 

psync におけるネットワーク接続の自動生成図

 

村崎 図1 psync におけるネットワーク接続の自動生成

 

 

(1) ファイル同期機構の設計とプロトタイプの実装

 既存の同期アルゴリズム等を参考にしながら,ファイル更新やディレクトリ更新の監視機構並びにファイル同期機構の設計を行なった.

 初心者でも容易に操作可能となるよう,設定内容の単一化 (異なる環境でも設定をやり直す必要がない) を図るとともに,共有フォルダ志向のインターフェース (タブへのドラッグ&ドロップで同期対象を指定) を導入した.

 また,VFS (Virtual File System) によるファイル指定を採用することで,パスやプロトコル指定のOS依存を吸収するとともに,サービスグラフによるネットワーク記述により,ネットワークの位置によるアクセス手法の差を吸収することとした.

 テストプログラムを作成し,その妥当性,性能を確認した.

(2) ファイル更新やディレクトリ更新の監視機構の実装

(3) ファイル同期機構の実装

 当初,独自に実装を試みたが,かなり困難が伴うことがわかったため,GnomeVFSの利用を検討中である.ネットワーク周りは「VFS+サービスグラフ」の設計へ変更した.実装を進めているうちに,タイムスタンプの解像度が環境によって異なることがわかった.このため,インデックスを利用して変更を追跡することとした.具体的には,同期処理の度にディレクトリ情報を記録し,インデックスとの差分から変更ファイルを抽出することとした.

 

 
9.PMコメント(中間報告時)
 

 
 研究室+α のかなり大きなネットワークやPCクラスタの設営と管理を任せたりていたので,時間をかなり圧迫されたようである.そのほかにもいろいろなことにすぐ関心が移ってしまう性格なので,これもこのプロジェクトに専念する時間に影響したようだ.

 ネットワークに関してはPMの研究室周辺を見回して,これほどの博覧強記はいない.それもあって,psyncで扱う概念の整理はよくできていると思う.ただ,この整理や時間解像度の問題などに相当の時間を消費してしまったので,実装に費せる残り時間が少なくなってしまった.

 当初計画していた異種OS,PDAまでを含めたファイル同期が全部完成しない可能性も出てきたが,これも見切りをうまくつけて,とりあえず,ユーザがこれは便利だと思うようなプロトタイプをつくり上げるようにしてほしい.そのためには,12月も有効に使う必要がある.

 直接話を聞くと,計画以外にも面白いアイデアが湧いてきているようなのだが,それの実現まで要求するとパンクすることは,残念ながら必定である.


10.成果概要(終了時)


 本プロジェクトでは,多様な環境で利用可能でかつユーザが容易に導入可能なファイル同期ツールpsyncの開発を行なう.これはプラットホーム,オペレーティングシステム,ネットワーク環境や通信環境等,動作環境の違いをpsync内部で吸収することにより,これらの違いをユーザに意識させることなく利用可能とするものである.

 一言でファイル同期ツールと言っても,ターゲットとする環境によって,その要求仕様は大きく異なる.将来的には汎用的に利用可能なツールに仕上げるつもりであるが,本プロジェクトの開発期間内に全てをカバーするというのは現実的でないため,基本コンセプトを以下のように設定し検討を進めた.

 ・モバイル時代に適合したファイル同期
 ・メタデータ重視の効率的な同期
 ・ユーザが導入し易いツール

 処理系には主にRubyを使用した.

(1) ファイル同期機構の設計

 既存の同期アルゴリズム等を参考にしながら,ファイル更新やディレクトリ更新の監視機構並びにファイル同期機構の設計を行なった.

(1-1) モバイル時代に適合したファイル同期

 オフィスや自宅の環境に適合したファイル同期のポリシーを設定する必要がある.同期パターンを登録しておき,それぞれの環境に応じて選択・実行すればよい.psyncは,「ユーザが導入し易い/使い易い」ツールたることを目指しているため,「現在の環境」をネットワーク構成情報より識別し,適用する同期パターンを自動設定する仕組みを考える.これは本プロジェクト内で実装することは難しいが,設計上は配慮しておく.

(1-2) はしょる同期

 同期を取る双方でハードディスク容量等,リソースに大きな差異がある場合,完全な形の同期は難しい.対応策として,サムネイル情報やヘッダ情報等,必要最小限の情報を共有するとともに,必要な際には完全同期をとる仕組み「はしょる同期」を検討した.しかし,実装は期間内にはできないため行なわない.

(1-3) メタデータ重視の効率的な同期

 当初,ファイルやディレクトリに対する各種イベントをリアルタイムで追いかける逐次型同期処理の実装を進めたが,実効性に疑問が生じたため,まず標準機能として「ユーザのリクエストに応じ同期処理」を実現することとした.これは,ファイル変更等をリアルタイムで監視し,更新ログを生成しておき,ユーザの同期リクエストに応じて,更新ログに基づく同期処理を実施する.

(1-4) ユーザが導入し易いツール

 psyncは「ユーザが導入し易い/使い易い」ツールを目指しているので,ほとんどの機能をユーザ権限で行なえることとする.高機能化に伴い複雑になりがちな設定画面はシンプルさを心掛けた.

(2) ファイル同期機構の実装

(2-1) ネットワーク環境の扱い方

 多様な環境に適応するため,VFS (Virtual File System) を用いるとともに,同期対象とするディレクトリはURI (Uniform Resource Identifier) で指定することとした.また,GET/PUT型の転送ができるプロトコルをサポート対象と考えているが,終了時(3月時点)はSFTP (Secure File Transfer Protocol) 対応で実装を進めている.なお,ファイル同期のポリシーや必要な設定情報については,「現在の環境」はifconfig,ipconfig等によりネットワーク構成情報より識別し,合致するものが自動設定される仕組みを整備する.

(2-2) 同期処理の実装

 psyncでは,同期元や同期先という概念は存在しない.つまり,一方向の同期処理ではなく,同期対象として登録された領域を相互に比較し,タイムスタンプで新旧を判別し,最新の状態を維持する.

 ファイル同期の流れは村崎・図2のようになる.ただし,OS等でタイムスタンプの解像度にはばらつきがあるため,注意が必要である.

 

村崎図2ファイル同期

村崎 図2 ファイル同期の流れ

 

(2-3) はしょる同期の実装

 psyncは,同期を取る双方でハードディスク容量等のリソースに大きな差異がある場合,完全な同期はとらず,「はしょる同期」を実行する.たとえば,atime (access time),ctime (change time) を活用し,最近利用されたファイルのみ同期させるといった処理や,サムネイル情報等,簡略版を共有するとともに,必要なときだけ完全同期を行なう仕組みの実装を進めている.

(2-4) 更新ログを利用した動作

 psyncでは,ファイル変更等をリアルタイムで監視し,また周期的にディレクトリ走査を行なうことで,更新ログを生成・管理しておき,ユーザのリクエストに応じて更新ログに基づく同期処理を実施する.動作の概要を村崎 図3に,ファイル更新の監視の流れを村崎 図4にそれぞれ示す.

 

更新ログを利用した動作図

 

村崎 図3 更新ログを利用した動作

ファイル変更の監視図

村崎 図4 ファイル変更の監視

 

 

(2-5) 受動的なファイル同期

 psyncでは,インターネット上のストレージ等を経由して,隔離されたLAN上のコンピュータ間で,間接的な同期処理を行なうことも可能である.



11.PM評価とコメント(終了時)


 PMはUNIX系は地理的に離れた3ヶ所の固定計算機と2台のノートに,Windows系は2ヶ所の固定計算機と2台のノートにファイルを保管して作業をしている.UNIXとWindowsの間のファイル交換も頻繁である.通常は高速のインターネット経由でつながっているが,ときどきPHS程度の速度でしかつながっていない状況で作業する必要もある.なので,ファイル同期は割と深刻な問題である.というのも,確かに存在したファイルがどこかに消えてしまうということが,手動ファイル同期 (や整理) をしているうちにときどきあるからである.しかし本格的な分散ファイルシステムにするほどのことはないので,村崎君の提案のようなお手軽なシステムができればかなり重宝するはずだ.

 村崎君の提案は,たとえば,ほとんどのものをユーザ権限だけで動かすとか,プロファイルに応じて挙動を決定するといった仕組みにお手軽感がある.また,ワーキングセットに注目したファイル同期というのも,さまざまなネットワーク環境を移り渡るときはありがたい.必要なものだけが必要なときに自動的にファイル同期してくれれば十分だからである.

 さて,これは進めていくうちにいろいろなアイデア (たとえば,はしょる同期) が次々と出てくると同時に,次々と問題の所在 (たとえば,タイムスタンプの粒度の問題) も明らかになってきたプロジェクトであった.中間コメントで述べたように村崎君は少々器用貧乏のところがあり,最初の計画の通りにかっちり事を進めるタイプではないようだ.その分,面白いことがどんどん出てくるのではあるが….世の中の面白いツールを発見してくる不思議な能力がある.彼はそういうものをうまくアセンブルして,すいすいと便利なものを作るといった方向を好むようだ.

 というわけで,目標がどんどん変化していったシステムは結局未完のままで終わった.完成まであと2ヵ月ほどはかかりそうである.村崎君はPMのお膝元にいるので,きっちりとまとめて,成果ソフトの公開ができるように指導していきたい.(そういえば,近くにいるからといって,彼をこれまで特別扱いすることはまったくなかった.それが裏目に出たのかもしれない.)




  ページトップへ   






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