説明

情報処理装置、プログラム、および情報処理方法

【課題】階層構造を有するディレクトリで管理されるファイルの世代を簡易に一元的に取り扱う。
【解決手段】情報処理装置は、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、項の組み合わせの順序を維持しないで項の組み合わせを関係付けることによって因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶する記憶部と、ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置のファイル管理技術に関する。
【背景技術】
【0002】
コンピュータ上のファイルを更新した場合に、更新前のファイルを維持した上で、更新後のファイルを最新ファイルとして保存したい場合がある。しかしながら、従来の情報処理技術では、ユーザが更新前後で同一のファイルをコンピュータ上の同一ディレクトリ(フォルダともいう)に保存した場合、コンピュータ上のファイルシステムは、一般的には、更新前のファイルに更新後のファイルを上書きする。その結果、更新前のファイルの内容は破棄される。このようなファイルシステムでは、ユーザは、ディレクトリまたはファイル名を変更し、いわゆるファイルパス名を変更して保存する。
【0003】
一方、従来のデータベースシステム、あるいは、ファイルシステムで、同一のファイルの複数世代を管理する技術も提案されている(例えば、下記特許文献1等)。従来のファイルの世代を管理する技術では、世代の管理情報をデータベース、あるいは、ファイルシステムの管理テーブルなどに保持する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平7−191889号公報
【特許文献2】特許第4343984号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、コンピュータ上のファイルは、階層構造を有するディレクトリと、ディレクトリ内のファイルとによって管理される。したがって、管理テーブルなどの表形式で、ファイルの世代を管理すると、階層構造を有するディレクトリデータと、世代を管理する管理テーブルとを取り扱う必要が生じ、処理が極めて複雑となる。
【0006】
本発明の課題は、階層構造を有するディレクトリで管理されるファイルの世代を簡易に一元的に取り扱う情報処理技術を提案することにある。
【課題を解決するための手段】
【0007】
本発明の一側面は、情報処理装置として例示できる。本情報処理装置は、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、項の組み合わせの順序を維持しないで項の組み合わせを関係付けることによって因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶する記憶部と、ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理部と、を備える。
【0008】
本情報処理装置によれば、複数のファイルが項の和で記述され、ファイルの世代とファイルが所属するディレクトリとの関係が項に含まれる因子によって記述され、更新前後のファイルが保存される。
【発明の効果】
【0009】
本発明によれば、階層構造を有するディレクトリで管理されるファイルの世代を簡易に一元的に取り扱うことができる。
【図面の簡単な説明】
【0010】
【図1】情報処理装置の構成を例示すブロック図である。
【図2】ディレクトリデータを例示する図である。
【図3】ディレクトリデータの構造を例示する図である。
【図4】部分集合取得処理を実行する処理のフローを例示する図である。
【図5A】部分集合取得処理を実行中の対象情報の状態を例示する図である。
【図5B】部分集合取得処理を実行中の対象情報の状態を例示する図である。
【図6】ディレクトリデータへのファイル登録処理を例示するフローチャートである。
【図7】実体ファイルの登録処理を例示するフローチャートである。
【図8】実体ファイルにアクセスするときのディレクトリデータの処理手順を例示するフローチャートである。
【図9】実体ファイルに対する処理を例示するフローチャートである。
【図10】任意の管理値のファイルにアクセスする場合のディレクトリデータに対する処理を例示するフローチャートである。
【図11】ファイル削除の場合の実体ファイルに対する処理を例示するフローチャートである。
【図12】ファイルの復元処理でのディレクトリデータに対する処理を例示するフローチャートである。
【図13】ファイルの復元処理での実体ファイルに対する処理を例示するフローチャートである。
【図14】操作画面の例である。
【図15】ファイルの選択部を用いたアップロード時の操作例である。
【図16】ファイルの登録が完了したことを示す完了メッセージ部を例示する図である。
【図17】OSのファイルシステムの表示画面の例である。
【図18】確認部の表示例である。
【図19】上書きを完了した状態を例示する図である。
【図20】プロパティ表示部の表示例である。
【図21】ファイルの復元処理の実行を指示する操作画面の例である。
【図22】復元処理実行後のプロパティ表示部および確認部での確認結果の例である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本装置は実施形態の構成には限定されない。
【実施例1】
【0012】
<装置構成>
図1は、第1の実施形態(実施例1ともいう)に係る情報処理装置10の構成を例示すブロック図である。同図に示すように、第1の実施形態に係る情報処理装置10は、CPU11、主記憶装置12、外部記憶装置14、ディスプレイ15、入力装置16、可搬記憶媒体駆動装置17、通信装置18を有する。
【0013】
CPU11は、主記憶装置12に実行可能に展開されたコンピュータプログラムを実行し、情報処理装置10の機能を提供する。実施例1では、コンピュータプログラムとしては、コンピュータをネットワーク上のデータ管理サーバとして機能させるデータ管理プロ
グラムを説明する。
【0014】
主記憶装置12は、CPU11が実行するプログラム、あるいは、CPU11が処理するデータを保持する。主記憶装置12は、揮発性のDRAM(Dynamic Random Access Memory)を含む。ただし、主記憶装置12として、不揮発性のROM(Read Only Memory)、フラッシュメモリ等を含むようにしてもよい。
【0015】
外部記憶装置14は、インターフェース14Aを通じてCPU11に接続される。外部記憶層14は、例えば、ハードディスク駆動装置とハードディスクを含む。ただし、外部記憶装置14は、フラッシュメモリ等を用いたSSD(Solid State Drive)であっても
よい。外部記憶装置14には、フォルダの階層構造とフォルダ内のファイルを含むファイルシステムが構築される。フォルダをディレクトリともいう。
【0016】
ディスプレイ15は、インターフェース15Aを通じて、CPU11と接続される。ディスプレイ15は、例えば、液晶ディスプレイ、EL(エレクトロルミネッセンス)パネル等である。
【0017】
入力装置16は、インターフェース16Aを通じて、CPU11と接続される。入力装置16は、例えば、キーボード、ポインティングデバイス等である。ポインティングデバイスには、マウス、静電容量の変化によって人の指の動作を検出するタッチパッド、フラットポイント等を含む。
【0018】
可搬記憶媒体駆動装置17は、インターフェース17Aを通じて、CPU11と接続される。可搬記憶媒体駆動装置17は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、ブルーレイディスク、フラッシュメモリカード等である。
【0019】
本実施例の情報処理装置10の機能を実現させるプログラムを可搬記憶媒体に記憶することができる。そして、情報処理装置10に可搬記憶媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【0020】
通信装置18は、インターフェース18Aを通じて、CPU11と接続される。通信装置18は、例えば、有線のLAN(Local Area Network)、無線LAN等のインターフェースであり、NIC(Network Interface Card)と呼ばれるものでもよい。ただし、インターフェース18AがPCの内部バスに接続されるNICであってもよい。情報処理装置10へのプログラムのインストールは、上記可搬記憶媒体の他、通信装置18を通じても実行できる。
【0021】
なお、主記憶装置12、外部記憶装置14、および可搬記憶媒体駆動装置17の少なくとも1つは、記憶部に相当する。
<ディレクトリデータの構成>
外部記憶装置14上、あるいは、可搬記憶媒体駆動装置17を通じて入出力される可搬記憶媒体上のデータの管理方式は、ファイルシステムと呼ばれる。実施例1では、情報処理装置10のファイルシステムの機能を拡張する。ファイルシステムは、ディレクトリあるいはフォルダと呼ばれる管理情報を有し、管理情報は、1以上のデータの記憶単位(ブロックともいう)を含むファイルの実体をファイル名等の管理情報で特定する。以下、OSのファイルシステム上に構築され、ファイル名等の管理情報でアクセスされる個々のファイルを実体ファイルという。すなわち、情報処理装置10が取り扱う外部記憶装置14または可搬記憶媒体上のデータで、ファイルシステム上のファイル名で識別されるデータのひとまとまりを実体ファイルという。実体ファイルを単にファイルともいう。なお、ファイルシステム上でファイルを識別するための管理情報には、ディレクトリとファイル名
が含まれる。ディレクトリとファイル名とを合わせた名称をファイルパス名という。また、情報処理装置10のファイルシステム上に構築されるディレクトリの階層構造を定義したデータをディレクトリデータという。
【0022】
実施例1では、実体ファイルは、OSのファイルシステム上に保存される。一方、ディレクトリデータも、OSのファイルシステム上のファイルに格納される。ただし、ディレクトリデータへのデータの登録、更新は、情報処理装置10のアプリケーションプログラムによって実行される。実施例1の情報処理装置10では、実体ファイルおよびファイルシステムの管理情報とは分離して、ディレクトリデータをアプリケーションプログラムで管理することで、OSに依存することなく、ファイルシステムに管理機能を追加する。
【0023】
実施例1の情報処理装置10で追加される管理機能の1つとして、ファイルの管理値を例示できる。情報処理装置10において、ファイルの管理値は、ディレクトリとファイル名が同一の複数のファイルを区別する情報である。ファイルの管理値とは、実体ファイルの世代管理情報とも呼ぶことができる。
【0024】
例えば、ファイルAを最初に作成したときに、ファイルシステム上では、管理値001が付与される。そして、ユーザまたは情報処理装置10のプログラムがファイルAを更新すると、ファイルシステム上では、管理値001の実体ファイルを維持した状態で、新たな管理値002を付与された実体ファイルが作成される。ユーザ、情報処理装置10のプログラム、情報処理装置10と接続されるネットワーク上のコンピュータ等は、通常、最新の管理値の実体ファイルにアクセスする。ただし、明示的に、ファイルの管理値(以下、単に管理値という)を指定することで、最新以外の管理値の実体ファイルにアクセスすることもできる。
【0025】
なお、実施例1では、管理値として、UTC(Coordinated Universal Time)を示す文字列を用いる。UTCは、1958年1月1日0時0分0秒からの経過時間を原子時計でカウントして定めた時刻である「国際原子時」に、グリニッジ標準時とのずれを調整するための「閏秒」を追加した時刻である。UTCは、OSのアプリケーションインターフェースを通じて、OSから取得できる。
【0026】
図2に、情報処理装置10が管理するディレクトリデータを例示する。図2のように、情報処理装置10は、実体ファイルとディレクトリデータとを分けて管理する。ディレクトリデータは、実体ファイルが含まれているフォルダの階層構造を定義する。ディレクトリデータは、情報処理装置10上のファイルパス名を管理するデータである。ディレクトリデータは、例えば、情報処理装置10のファイルの1つに格納される。
【0027】
また、情報処理装置10で、個々の実体ファイルは、情報処理装置10のOSのファイルシステムが管理するファイルとして、外部記憶装置14あるいは可搬記憶媒体に格納される。ただし、上述のように、情報処理装置10の実体ファイルには、管理値が付与される。情報処理装置10は、例えば、ユーザが設定したファイル名に、管理値を付与し、それぞれの実体ファイルを生成し、更新する。また、情報処理装置10は、管理値が明示的に指定されない場合、最新の管理値の実体ファイルにアクセスする。
【0028】
図3に、ディレクトリデータの構造を例示する。図3で示される構造は、情報処理装置10内のディレクトリの階層構造と、それぞれのディレクトリに属する実体ファイルの関係を示す図ということもできる。図3で、FolderA,FolderB,FolderCは、ディレクトリの
1階層(フォルダ)を示す。また、FileD,FileE,FileFは、実体ファイルのファイル名を
示す。
【0029】
図3に示すディレクトリデータは、FolderAの下に、2つのFolderA、FolderCを有する
。また、FolderBには、FileDとFileEが含まれる。一方、FolderCには、FileFが含まれる
。そして、FileDは、管理値001を有する。また、FileEは、管理値001と002とを有する。この場合、FileEのうち、管理値002で指定される実体ファイルの方が、管理
値001で指定される実体ファイルより新しい。同様に、FileFは、管理値001、00
2、および003を有する。
<式表現>
情報処理装置10は、図3に示したディレクトリデータを式表現で記述する。以下、ディレクトリデータを記述する式表現について説明する。
(1)式表現
情報処理装置10は、処理対象の情報(以下、対象情報)を式の形式で表現する。式は、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”によって記述される。第1の括弧が本発明の集合因子構成演算子に相当する。また、第2の括弧が本発明の順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
【0030】
式は、1以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字(ただし、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”を除外する)を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
【0031】
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値1、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【0032】
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項(要素ともいう)、集合情報、接着空間の情報、およびセル空間の情報を記述する式表現が生成される。
(a)識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
(b)rとsとがともに、式表現である場合、r+sも式表現である。
(c)rとsとがともに、式表現である場合、r×sも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、r×sの方が、r+sよりも強い。
(d)rが式表現である場合、(r)、{s}も式表現である。
【0033】
(2)式表現の代数的構造
本実施形態において、式表現r、s、t、yは、次の代数の性質を有する。
(a)結合律
r+(s+t)=(r+s)+t;r×(s×t)=(r×s)×t;
(b)可換律
r+s=s+r;
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報(あるいは意味)を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、本発明の積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
(c)積演算の単位元
r×ε=ε×r=r;
(d)積演算、和演算の零元
r×Φ=Φ×r=Φ;r+Φ=r;
(e)分配率
r×(s+t)=r×s+r×t;(r+s)×t=r×t+s×t;
(f)
{r+s}×{t+u}={r×t+s×u};
【0034】
(3)集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ID(本発明の第1の識別因子に相当)となる識別子と値となる識別子の積、すなわち、集合ID×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ID×値1+集合ID×値2+・・・である。
【0035】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
【0036】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
【0037】
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
【0038】
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
【0039】
例えば、集合情報が、果物×任意形状×任意色×バナナ+果物×任意形状×任意色×りんご+果物×細長×黄色×バナナ+果物×丸×赤×リンゴという集合情報を考える。この場合、項の第1因子は、集合IDである果物であり、第2因子は形状を示し、第3因子は色を示し、第4因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できる。情報処理装置100では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができる。また、そのような因子を含む項の組み合わせによって、事物、人の集合など、現実世界の情報がコンピュータ上に表現される。
(例)
A×a1+A×a2+A×a3、b1×B+b2×B×B、果物×リンゴ+果物×バナナ+果物×ミカン、野菜×キャベツ+野菜×キュウリ+野菜×ゴボウ、社員×A+社員×B+社員×C
すなわち、集合情報は、集合IDで識別される集合に所属する項の組み合わせを記述し、メモリ12に記憶される。この場合、社員Cが退職し、社員Dと社員Eが入社した場合には、社員×A+社員×B+社員×Cのようにメモリ12に格納される。
<部分集合取得処理>
以下、上記式表現に対する基本演算として、部分集合取得処理を説明する。 部分集合
取得処理は、集合から、指定された因子(以下、指定因子という)を有する項を含む式(部分集合)と、指定因子を有しない項の式(部分集合)に分離する処理である。この処理を実行するCPU13が、本発明の部分集合形成部に相当する。ただし、本実施形態では、指定因子(今pとする)を有する項が複数個存在する場合には、{左因子1+左因子2+・・・}p{左因子1が含まれていた項の右因子+左因子2が含まれていた項の右因子+・・・}+因子pを含まない部分集合の和のように、指定された因子pで括り出す。このように、部分集合取得処理の括り出しでは、括り出し前の各項において、指定因子pの左側に結合する因子(左因子と呼ぶ)と、指因子pの右側に結合する因子(右因子と呼ぶ)とをそれぞれ、第2の{}内に和演算する。そして、左因子の和は、第2の{}によって括られ、その順序を維持して、指定された因子の左側に結合される。
【0040】
また、右因子の和は、第2の{}によって括られ、その順序を維持して、指定された因子の右側に結合される。さらに、同一の左因子に対して、異なる右因子を有する項が複数存在する場合、それらの右因子は、第1の括弧“()”で括り出される。この場合、左因子は、集合情報の識別情報として機能する。例えば、
a1×b×c1+a1×b×c2+a2×b×c1+a2×b×c2+a3×b×c3+a×u×vという式表現に対して、因子bを指定因子として部分集合取得演算を実行すると、
{a1+a2+a3}b{(c1+c2)+(c1+c2)+c3}+a×u×v
となる。この場合、右因子の列は、それぞれ、集合IDがa1の集合の部分集合b(c1+c2)、集合IDがa2の集合の部分集合b(c1+c2)、集合IDがa3の集合の部分集合b×c3を表している。
【0041】
さらに、部分集合取得処理の対象となる項に、第1の括弧“()”または第2の括弧“{}”が含まれている場合には、これらの括弧内の式表現に対して、再起的に部分集合取得処理が実行される。したがって、第1の括弧“()”または第2の括弧“{}”で括られた個々の括弧内で、部分集合取得処理が実行される。
【0042】
部分集合取得処理のアプリケーションインターフェースは、例えば、部分集合取得後の式表現は、戻り値=separate(部分集合取得前の式表現、指定因子);のように定義できる。対象の式,因子を指定すると、括った後の式(戻り値)になる。
【0043】
次に部分集合取得処理について説明する。図4は、部分集合取得処理を実行する処理のフローを示す。ステップS501では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子pを入力する。以下、対象情報として数1に示すデータを用いて、指定因子“p”で部分集合を取得する場合について説明する。
s×p(p1+p2)+t×p(p3+p4)+id(s×p(p1+p2)+t×p(p3+p4))・・・(数1)
ステップS502では、部分集合を取得するための因子以外(ここでは、「その他の式」「左因子式」および「右因子式」)をΦと設定する。ステップS503では「処理後の項」をεに設定する。ステップS504では、対象情報を構成する式の長さが0であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが0であると判断した場合には、ステップS517へ進む。一方、式の長さが0であると判断しなかった場合には、ステップS505へ進む。
【0044】
ステップS505では、数1から第一項を取得し保存する。次にステップS506では、数1から第一項を削除する。次にステップS507では、取得した項に因子pが含まれるか判断する。取得した項に因子pが含まれると判断した場合にはステップS515へ進む。一方、取得した項に因子pが含まれると判断しなかった場合には、ステップS508へ進む。
【0045】
ステップS508では、項の長さが0であるか否かを判断する。項の長さが0であると判断した場合にはステップS514へ進む。一方、項の長さが0であると判断しなかった場合には、項から第一因子を取得し、これを保存し(ステップS509)、次に項から第一因子を削除する(ステップS510)。
【0046】
次にステップS511では、第一因子が第一の括弧又は第二の括弧で括られているか判断する。因子が第一の括弧又は第二の括弧で括られていると判断した場合には、第一の括弧又は第二の括弧で括られている式に対して、本部分集合取得処理を実行する(ステップS512)。すなわち、再起呼び出しを実行する。一方、第一の括弧又は第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし(S520)、ステップS513へ進む。ステップS513では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップS508の処理を再度実行する。
【0047】
ステップS508において、項の長さが0であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする(ステップS514)。ステップS514の処理を実行後、再度ステップS503の処理を実行する。次にステップS504において式の長さが0であると判断した場合には、部分集合の項として{左因子式}p{右因子式}を作成し(ステップS517)、その他の式に部分集合項を和演算し,演算後の式とし(ステップS518)、処理を終了する。以上の処理を実行することにより、数1により表現される対象情報は、数2により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図5A、図5Bに示す。
id({s+t}p{(p1+p2)+(p3+p4)})+{s+t}p{(p1+p2)+(p3+p4)}・・・(数2)
図5Aおよび図5Bに、数1の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図5Aの各行と、図5Bの各行は、図4の処理での同一の処理を示している。すなわち、図5Aおよび図5Bを横に接続して、部分集合取得処理の状態変化が表されることになる。
【0048】
図5Aおよび図5Bの第1行目は、各列の要素、すなわち、図4中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第2行以下の各行は、一連の処理ステップであり、図5Aおよび図5Bの表の上から下へ実行される。
【0049】
ここでは、数1の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数1が与えられる。この式表現はメモリ12に格納される。また、指定因子はpであるとする。
【0050】
まず、S505、S505の処理で、式から第一項s×p(p1+p2)が取得される。s×p(p1+p2)に指定因子pが含まれているので、S515およびS516が実行され、左因子sおよび右因子(p1+p2)がそれぞれ左因子式および右因子式に和演算される。
【0051】
次に、S505、S506の処理で、式から第二項t×p(p3+p4)が取得される。t×p(p3+p4)に指定因子pが含まれているので、S515およびS516が実行され、左因子tおよび右因子(p3+p4)がそれぞれ左因子式および右因子式に和演算される。
【0052】
さらに、S505、S506の処理で、式から第三項id(s×p(p1+p2)+t×p(p3+p4))が取得される。そして、S509において、第一因子としてidが取得される。項idは、S513にて、処理後の項に積演算される。さらに、S509において、第一項として、次の項(s×p(p1+p2)+t×p(p3+p4))が取得される。これは、S511の判定で、第1の括弧を含むとされるので、S512が実行される。
【0053】
そして、式表現s×p(p1+p2)+t×p(p3+p4)に対して、部分集合取得処理が再起呼び出しで実行される。図5Aおよび図5Bでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、s×p(p1+p2)から、左因子s、右因子(p1+p2)が取得される。また、t×p(p3+p4)から、左因子t、右因子(p3+p4)が取得される。これらの左因子および右因子は、S516において、それぞれ左因子式、および右因子式に和演算される。そして、式表現s×p(p1+p2)+t×p(p3+p4)の末尾まで処理が進み、S504で、残りの式の長さが0であると判定される。すると、CPU13は、部分集合の項として、{s+t}p{(p1+p2)+(p3+4)}を作成する。そして、CPU13は、部分集合の項を演算後の式として、再起呼び出しを終了する。
【0054】
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。この場合、取得した因子は、({s+t}p{(p1+p2)+(p3+4)})である。そして、CPU13は、S513にて、再起呼び出し前に計算しておいた処理後の項(“id”が積演算されている)に、取得した因子を積演算する。その結果、S513において、処理後の項は、id({s+t}p{(p1+p2)+(p3+4)})となる。CPU13は、S514にて、処理後の項をその他の式として和演算する。
【0055】
そして、S504にて、残りの式の長さが0であると判定されると、CPU13は、再起呼び出し前に作成していた左因子式s+tおよび右因子式(p1+p2)+P3+p4)から、部分集合の項{s+t}p{(p1+p2)+P3+p4)}を作成する。そして、CPU13は、S518にて、その他の式に部分集合の項を和演算する。これによって、演算後の式id({s+t}p{(p1+p2)+(p3+4)})+{s+t}p{(p1+p2)+P3+p4)}が作成されることになる。
<式表現にしたがったディレクトリデータの記述法>
実施例1に係る情報処理装置10は、式表現にしたがって、ディレクトリデータを記述する。情報処理装置10においては、ディレクトリの階層構造は、ルートディレクトリ、すなわち、最上位のディレクトリから、最下層のディレクトリまで深さ優先で、第1の括弧”(”および”)”の階層構造で記述する。また、同一の階層に複数のディレクトリ、またはファイルが存在する場合、和演算子(+)で区切って、複数のディレクトリまたはファイルを並べて記述する。
【0056】
例えば、図2で例示されるディレクトリ構造の式表現は、次のようになる。
(式表現1)
FolderA(FolderB(FileD+FileE))+FolderC×FileF);
なお、上位のディレクトリに所属する下位のディレクトリまたはファイルが1個しかない場合には、()内に下位のディレクトリまたはファイルを記述する代わりに、積演算子を用いて、上位と下位の従属関係を記述する。例えば、"FolderC×FileF"は、ディレクトリ"FolderC"に、"FileF"が1個所属する場合である。
【0057】
さらに、図3のように、ファイル名に、管理値を付与して、ファイルの世代管理を行う場合、ディレクトリデータの式表現は、次のようになる。
(式表現2)
FolderA(FolderB(FileD×001+FileE(001+002)))+FolderC×FileF(001+002+003));
<ディレクトリデータの管理処理>
以下、図6−図11を参照して、部分集合取得処理を適用して上述の式表現で記述したディレクトリデータを処理する手順を説明する。本実施例では、例えば、情報処理装置10は、ネットワーク上のウェブサイトを通じて、ユーザのコンピュータからアクセス可能なサーバである。情報処理装置10は、ネットワークを通じて、ユーザからのファイルのアップロードあるいはダウンロードを受け付ける機能を提供する。なお、情報処理装置10のCPU11は、ファイル管理部として、図6−図11の処理を実行する。
【0058】
図6は、情報処理装置10によるディレクトリデータへのファイル登録処理を例示するフローチャートである。今、以下のディレクトリデータが情報処理装置10の主記憶装置12、あるいは、外部記憶装置12に格納されていると仮定する。
(ディレクトリデータ1)
FolderA
(FolderB(FileD×1273799840230+FileE(1273799910230+1273799940100))+
FolderC×FileF(1273799915010+1273799923400+1273799925601))
ここで、例えば、FileEはFolderB内に存在すること、および、FileEは2つの管理値1273799910230,1273799940100によって2つの世代が保持されていることがわかる。ここでは、FolderB内のFileEを更新したときのディレクトリデータに対する情報処理装置10の処理を説明する。
【0059】
この処理では、情報処理装置10は、ファイル登録に対する処理を監視する(S0)。ファイル登録の処理とは、例えば、ネットワーク上のコンピュータから、ファイルが情報処理装置10にアップロードされる場合を例示できる。さらに、ファイル登録されるファイルとしては、すでに過去にアップロード済みのファイルが同一のファイル名である場合も含む。また、ファイル登録の処理として、例えば、入力装置16を通じたユーザ操作にしたがって、ファイルが情報処理装置10に登録され、あるいは、登録済みのファイルが更新される場合を例示できる。
【0060】
ファイル登録に対する処理、例えばファイル登録要求、ファイル書き込み要求等を検出すると、情報処理装置10は、要求に含まれるファイルパス名から、ファイル名を取得する(S1)。ここで、ファイルパス名とは、例えば、ディレクトリとファイル名の並びであり、情報処理装置10上でのファイルをユニークに特定できる情報である。また、ファイルパス名には、管理値は含まれていないものとする。管理値は通常ファイル登録操作では、ユーザには明示されないからである。すなわち、管理値はファイル登録時に、情報処理装置10によって設定されるからである。ここでは、ファイル登録の対象として、ファイルパス名FolderA×FolderB×FileEが取得され、ファイル名としてFileEが取得されたとする。
【0061】
次に、情報処理装置10は、管理値としてUTCの値を取得する(S2)。情報処理装置10は、例えば、OSのアプリケーションインターフェースを通じて、OSからUTCの値を取得できる。今、UTCは、1273799988154であったと仮定する。
【0062】
次に、情報処理装置10は、管理値付きファイル名を生成する(S3)。管理値付きファイル名とは、ファイル名に管理値を結合した名称である。管理値付きファイル名は、ファイル登録処理前に存在したファイルパスと、同一のファイルパスにファイルが登録された場合でも、同一のファイルパスの複数のファイルを識別可能なファイル名である。上記例では、管理値付きファイル名は、FileE×1273799988154となる。
【0063】
次に、情報処理装置10は、ファイル登録要求、ファイル書き込み要求等の対象となっ
ているファイルパス名から、ディレクトリパス名を取得する(S4)。上記ファイルパス名の例では、ディレクトリパス名は、FolderA×FolderBとなる。
【0064】
次に、情報処理装置10は、ディレクトリデータに追加するデータ(項)を生成する(S5)。ここで、データ(項)は、ディレクトリパス名と管理値値付きファイル名とを結合した式表現である。上記例では、項は、FolderA×FolderB×FileE×1273799988154となる。
【0065】
そして、情報処理装置10は、生成した項をディレクトリデータに登録する(S6)。すなわち、情報処理装置10は、生成した項を式表現に加算する。そして、情報処理装置10は、項が追加された式表現を整理する。その結果、上記ディレクトリデータ1は、ディレクトリデータ2のように変更される。
(ディレクトリデータ2)
FolderA
(FolderB
(FileD×1273799840230+FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601))
すなわち、FolderA×FolderB×FileEのファイルパスで示されるファイルには、3つの
管理値(1273799910230+1273799940100+1273799988154)によって、3世代のファイルが管
理される。
【0066】
図7は、図6のディレクトリデータの登録処理に対応する、実体データの登録処理を例示するフローチャートである。実体データとは、ディレクトリデータによって管理されるファイル自体をいう。実体データの登録処理のうち、S0−S3は、図6のS0−S3と共通の処理であるので、その説明を省略する。情報処理装置10は、管理値付きファイル名を生成すると、実体ファイルのファイル名を管理値付きファイル名に変更し、ファイルシステム、例えば、外部記憶装置14に格納する(S9)。
【0067】
ただし、実体ファイルをファイルシステムに格納する際に、ファイル名としては、制限が生じる場合もある。例えば、”ファイル名×管理値”という名称で実体ファイルを格納できない場合もある。その場合には、”×”に代えて、ファイルシステムで許容される文字を用いればよい。実施例1では、ディレクトリデータ中は、”ファイル名×管理値”で項を記述し、一方、情報処理装置10の実体ファイルのファイル名として、”ファイル名_管理値”を用いる場合を想定して説明する。なお、実体ファイルのファイル名としては
、”ファイル名×管理値”、”ファイル名_管理値”等に限定されるわけではなく、ファ
イルシステムで許容される文字を用いればよい。
【0068】
S9の処理は、例えば、OSのファイルシステムに対して、管理値付きファイル名で登録対象のファイルを保存する処理である。S9の処理の結果、登録要求対象のファイルパス名と同一のファイルパス名でファイルが登録され、上書き要求があったとしても、情報処理装置10は、上書き前のファイルの実体を維持した上で、登録対象の実体ファイルを保存できる。また、情報処理装置10は、ファイル更新要求を受け付けた場合も、更新前のファイルの実体を維持した上で、更新後の実体ファイルを保存できる。
【0069】
図8に、実体ファイルにアクセスするときのディレクトリデータの処理手順を例示する。ここでは、例えば、
Folder A
(Folder B
(FileD×1273799840230+
FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601))というディレクトリデータが、主記憶装置12あるいは外部記憶装置14で管理されているときに、FolderA
×FolderBというディレクトリパスのFileEにアクセスする場合の処理を例示する。
【0070】
この処理でも、情報処理装置10は、ファイルに対する要求処理を監視する(S10)。そして、ファイルに対する要求処理、例えばファイル読み出し要求を検出すると、情報処理装置10は、要求に含まれるファイルパス名から、ファイル名を取得する(S11)。ここでは、要求に含まれるファイル名、すなわち、読み出し対象のファイル名をFileE
とする。
【0071】
次に、情報処理装置10は、ファイル登録要求、ファイル書き込み要求等の対象となっているファイルパス名から、ディレクトリパス名を取得する(S12)。ここでは、ディレクトリパス名は、FolderA×FolderBとする。
【0072】
次に、情報処理装置10は、ディレクトリデータから、ディレクトリパス名とファイル名を結合した式表現FolderA×FolderB×FileEにより部分集合取得演算を実行する(S1
3)。すると、ディレクトリパス名×ファイル(管理値の集合)という式表現で、部分集合が得られる(S14)。この例では、FolderA×FolderB×FileE(1273799910230+1273799940100+1273799988154)が得られる。
【0073】
次に、情報処理装置10は、得られた部分集合中に2以上の管理値があるか否かを判定する(S15)。そして、得られた部分集合内に2以上の管理値がある場合、情報処理装置10は、管理値の集合から最大値を取得する(S16)。この例では、管理値として、1273799988154が得られる。管理値の集合から最大値を取得するのは、複数世代の実体フ
ァイルが維持されている場合の最新の実体ファイルを取得するためである。
【0074】
次に、情報処理装置10は、管理値付きファイル名を生成する(S17)。この例では、生成される最新の管理値付きファイル名は、FileE×1273799988154である。そして、情報処理装置10は、ディレクトリパス名と最新の管理値付きファイル名を実体ファイル処理に引き渡す(S19)。なお、引き渡す際に、情報処理装置10は、ファイル名をFileE×1273799988154からFileE_1273799988154に変換する。変換は、引き渡す側(ディレク
トリデータ処理側のプログラム)で実行してもよいし、引き渡しを受ける側(実体ファイル処理側のプログラム)で実行してもよい。
【0075】
図9に、実体ファイルに対する要求処理を例示する。この処理では、情報処理装置10は、ディレクトリデータに対する処理結果として、ディレクトリパス名と管理値付きファイル名(ファイル名_管理値)を受け取る(S20)。そして、情報処理装置10は、ディ
レクトリパス名と管理値付きファイル名(ファイル名_ファイル管理値)に対応する実体フ
ァイルが、ファイルシステム上に存在するか否かを判定する(S21)。
【0076】
実体ファイルがない場合、情報処理装置10は、エラー処理を実行する(S22)。エラー処理は、例えば、エラーコードの設定、あるいは、エラーメッセージの表示である。一方、実体ファイルがある場合、情報処理装置10は、その実体ファイルにアクセスする。例えば、ネットワーク上のコンピュータからダウンロードの指示があった場合には、情報処理装置10は、実体ファイルのデータを読み出す。そして、情報処理装置10は、管理値付きファイル名(ファイル名_管理値)から管理値を取り除く。なお、この処理は、式
表現上では、該当するファイルの最後の識別子を取り除く処理となる。そして、情報処理装置10は、実体ファイルのデータを要求元、例えば、ネットワーク上のコンピュータにファイル出力する(S24)。
【0077】
図10に、任意の管理値のファイルにアクセスする場合のディレクトリデータに対する処理を例示する。ここでは、アクセスの例として、任意の管理値のファイルを削除する処理を例示する。今、例えば、ディレクトリデータとして、
FolderA
(Folder B
(FileD×1273799840230+FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601))が主記憶装置12または外部記憶装置14に格納されているとする。また、要求処理の対象としてFileEが
指定されているとする。
【0078】
図10の処理で、図8と同一の処理は、図8と同一の符号を付してその説明を省略する。任意の管理値のファイルにアクセスする場合に、情報処理装置10は、S10−S14で取得された項、すなわち、ディレクトリパス名、ファイル名、および管理値について、管理値が複数あるか否かを判定する(S15)。そして、ディレクトリ名とパス名に対して、複数の管理値がある場合、情報処理装置10は、入力装置16を通じて、任意の管理値の指定を受け付ける。あるいは、情報処理装置10は、通信装置18を通じて、任意の管理値の指定を受け付ける(S16A)。ここでは、例えば、1273799988154が指定され
たと仮定する。
【0079】
すると、情報処理装置10は、指定を受けた管理値により管理値付きファイル名を生成する(S17)。ここでは、FileE×1273799988154が生成される。
【0080】
そして、情報処理装置10は、生成された管理値付きファイル名をディレクトリデータから削除する(S18A)。なお、S17−S18の処理は、単純に、S16Aで指定を受け付けた管理値をS14で取得した管理値の集合から削除するものでもよい。そして、情報処理装置10は、ディレクトリパス名と、S18Aで削除した管理値付きファイル名を実体ファイル処理に引き渡す。ここでは、FolderA×Folder Bのディレクトリパス名と
、FileE×1273799988154という管理値付きファイル名が引き渡される。
【0081】
図11に、ファイル削除の場合の実体ファイルに対する処理を例示する。この処理では、情報処理装置10は、図10の処理の結果として、ディレクトリパス名と、管理値付きファイル名を引き渡される(S20)。そして、情報処理装置10は、ディレクトリパス名と、管理値付きファイル名で指定される実体ファイルの有無を判定する。実体ファイルがない場合、情報処理装置10は、エラー処理を実行する(S22)。一方、実体ファイルがある場合、情報処理装置10は、その実体ファイルを削除する。(S23)。
【0082】
なお、図10および図11では、任意のファイル管理値の実体ファイルを削除する処理例を示したが、任意のファイル管理値の実体ファイルを読み出す場合も、図10および図11と同様に、実行できる。任意のファイル管理値の実体ファイルを読み出す場合には、例えば、ディレクトリデータからの管理値の削除、あるいは、実体ファイルの削除は行わないようにすればよい。
【0083】
図12に、ファイルの復元処理でのディレクトリデータに対する処理を例示する。復元処理では、任意のファイル管理値の実体ファイルに新たに最大の管理値を付与して、ファイルを最新化する。図12の処理でも、図10の場合と同様のディレクトリデータが存在する場合を想定する。そして、ここでは、FolderA×FolderC×FileF(1273799915010+1273799923400+1273799925601)という複数の管理値、すなわち、複数の世代を有する実体ファイルから、管理値1273799915010で特定される実体ファイルの世代を復元し、最新化する
処理例を説明する。
【0084】
この処理では、情報処理装置10は、ファイルに対する要求処理を監視する(S30)。
【0085】
そして、ファイルに対する復元要求を検出すると、情報処理装置10は、要求に含まれるファイルパス名から、ファイル名を取得する(S32)。ここでは、要求に含まれるファイル名、すなわち、復元対象のファイル名をFileFとする。
【0086】
次に、情報処理装置10は、復元要求の対象となっているファイルパス名から、復元される元管理値を取得する(S33)。ここでは、元管理値は、例えば、1273799915010で
ある。どの世代を復元するかについては、情報処理装置10が、例えば、ネットワーク上のユーザのコンピュータに世代を示すファイルのリストを表示し、ユーザの選択を受け付けるようにすればよい。
【0087】
次に、情報処理装置10は、復元要求の対象となっているファイルパス名から、ディレクトリパス名を取得する(S34)。ここでは、ディレクトリパス名は、FolderA×FolderCである。
【0088】
次に、情報処理装置10は、新ファイル管理値として、システム時刻の値をOSのアプリケーションインターフェースを通じて取得する(S35)。ここでは、新たな管理値は、例えば、1273800915999である。
【0089】
そして、情報処理装置10は、新管理値付きファイル名を生成する(S36)。そして、情報処理装置10は、S34で取得したディレクトリパス名と、S33で取得したファイル名のファイルについて、ディレクトリデータ内の項を書き換える(S37)。すなわち、ディレクトリパス名×ファイル名×元管理値をディレクトリパス名×ファイル名×元管理値とした式表現を追加する。そして、そして、情報処理装置10は、項が追加された式表現を整理する。その結果、FileFについては、例えば、FileF(1273800915999+1273799923400+1273799925601)という複数の管理値が、ディレクトリデータが生成される。
【0090】
図13に、実体ファイルに対する処理を例示する。この処理では、情報処理装置10は、ディレクトリデータに対する処理に基づき、新ファイル名と元ファイル名を引き渡される(S40)。そして、情報処理装置10は、OSのファイルシステム上で、元ファイル名を新ファイル名に置換する(S41)。ここでは、元ファイル名FolderA×FolderC×FileF×1273799915010が、新ファイル名FolderA×FolderC×FileF×1273800915999に変更される。
<処理例>
図14から図22に、情報処理装置10とネットワークで接続されたユーザのコンピュータでの操作例を説明する。以下の操作例では、情報処理装置10は、アップロードされたファイルの格納、更新、ダウンロード等のデータ管理サーバの機能をネットワークに接続されたユーザのコンピュータに提供する。
【0091】
図14の操作画面30は、左部分にディレクトリデータの階層構造を表示するディレクトリ表示部31を有する。ディレクトリ表示部31には、ディレクトリとファイル名の階層構造が表示される。さらに、ディレクトリ表示部31は、ファイルを格納するデバイス、例えば、外部記憶装置14の残容量を表示する残容量表示部311、ディレクトリ(フォルダ)の追加および削除を行うディレクトリ編集部312を有する。ただし、OSが、外部記憶装置14を複数の論理デバイス、あるいは、論理ドライブに区切って管理する場合には、残容量は、区切られた論理デバイスまたは論理ドライブごとに表示されるようにしてもよい。
【0092】
また、図14の操作画面30に重畳して、ファイルアップロード部32が表示されている。ファイルアップロード部32は、データ管理サーバである情報処理装置10にユーザがファイルを登録する際の登録手順の説明欄321、登録するファイル名の設定欄322、登録するファイルをファイルのリストから参照する参照ボタン323、ファイルのアップロードを指示する送信ボタン324等を有している。なお、図14では、情報処理装置10は、ファイルアップロード部32を操作画面30に重畳する別ウィンドウとして表示する。しかしながら、このような画面構成に代えて、情報処理装置10は、例えば、操作画面30の領域の一部にファイルアップロード部32を配置し、いわゆるタイル型のユーザインターフェースを提供するようにしてもよい。
【0093】
図15は、アップロードするファイルの選択部325を用いた操作例である。情報処理装置10は、例えば、ファイルアップロード部32の参照ボタン323がユーザのコンピュータ上で押下されると、ネットワークを通じて、ユーザ操作を受信する。すると、情報処理装置10は、ユーザのコンピュータ上に選択部325を表示する。選択部325は、ユーザのコンピュータ上のファイルを表示する。以下、ユーザのコンピュータ上でのファイルは、階層構造を有するディレクトリとディレクトリ内のファイル名で管理されているとする。ただし、情報処理装置10での処理と区別する場合に、ユーザのコンピュータ上では、ディレクトリをフォルダと呼ぶことにする。図15は、ユーザがフォルダ”2009年”内のファイル0501.pdfを選択した例を示している。
【0094】
なお、図15の右下付近には、確認画面40が表示されている。確認画面40は、例えば、例えば、情報処理装置10上のデータ管理プログラムのデバッグ用に使用できる。確認画面40は、情報処理装置10上のデータ管理プログラムが管理する各種情報、例えば、ディレクトリデータ等を表示する。図15の例では、現在、ディレクトリ”AA”が空の状態で表示されている。確認画面40には、例えば、ディレクトリデータに含まれる文字列を検索する検索部401等が用意されている。なお、確認画面40には、ディレクトリデータの他、実体ファイルの存在場所を示す情報を表示してもよい。実体ファイルの存在場所とは、例えば、ネットワーク上のノード、外部記憶装置14あるいは可搬記憶媒体駆動装置17の論理名称、外部記憶装置14内の論理デバイス、論理ドライブ等である。
【0095】
図16は、ファイルの登録が完了したことを示す完了メッセージ部326を例示する図である。完了メッセージ部326に、さらにアップロードを続けることを指示する”続ける”ボタン、ファイルのアップロードを電子掲示板に掲載することを指示する”掲示板掲載”ボタンなどが用意されている。
【0096】
ファイルの登録が完了したとき、確認画面40では、AA(0501.pdf(1273809631938))と
いう階層構造が式表現で表示される。ここでは、AAがディレクトリパス名、501.pdfがフ
ァイル名、1273809631938が管理値の例である。なお、このとき、情報処理装置10の外
部記憶装置14には、ディレクトリAA内に、ファイル名"0501.pdf_1273809631938"で実体ファイルが作成され、アップロードされた0501.pdfの内容が格納される。なお、実体ファイルの名称中、ファイルの拡張子(この例ではpdf)と、管理値の間の接続文字(この例
では"_")に、限定はなく、情報処理装置10で許容される文字を用いればよい。
【0097】
図17は、情報処理装置10のOSのファイルシステムの表示画面50の例である。表示画面50は、実体ファイルが存在するフォルダdemo3での実体ファイルのファイル名"0501.pdf_1273809631938"を表示している。なお、実体ファイルのフォルダ(図17の例で
は"demo3")は、情報処理装置10のデータ管理システム上で、管理者が決定すればよく
、特に制限はない。
【0098】
図18は、ユーザが、すでにアップロード済みのファイル0501.pdfを再度アップロード
する場合に表示される上書き確認部327の表示例である。上書き確認部327は、例えば、アップロード先のディレクトリ(図18では"AA")に、アップロード対象のファイルと同一のファイル名(図18では、"0501.pdf")のファイルがすでに存在する場合に、上書きを確認するために、ユーザのコンピュータ上に表示される。ただし、アップロード作業を継続し(上書き確認部327で"はい"を選択)、ファイルを上書きした場合も、新たに管理値が付与される。その結果、過去に同一ディレクトリにアップロード済みのファイルの実体ファイルは、元の管理値で維持されることになる。
【0099】
図19は、同一のファイル名でファイルをアップロードし、上書きを完了した状態を例示する図である。完了メッセージ部326は、ファイルの登録が完了したことを示している。確認画面40には、AA(0501.pdf(1273809631938,127310190907))という階層構造が式表現で表示される。したがって、新たに管理値127310190907が取得され、2回目にアップロードされたファイルの実体ファイルが保存されたことがわかる。また、最初のアップロードされたファイルは、管理値1273809631938で維持されていることがわかる。
【0100】
図20は、情報処理装置10でデータ管理されているファイルの属性を表示するプロパティ表示部328の表示例である。プロパティ表示部の機能には、ファイルサイズ、登録日、管理値等を表示するプロパティ表示機能、ファイルのディレクトリを変更する移動機能、ファイルを削除する削除機能、ファイルの登録、更新の履歴を表示する履歴表示機能等がある。また履歴表示機能は、同一のファイルの複数の世代が同一のディレクトリに登録された場合に、それぞれの世代を表示する。
【0101】
図20では、プロパティ表示部328の履歴表示機能により、アップロード済みのファイル(図20の例ではディレクトリ表示部31で表示されているファイル"0501.pdf")について、登録と上書きの履歴が表示されている。すなわち、ファイル"0501.pdfの複数回
のアップロードに対応して、アップロードされた日時、アップロードされたファイルのそれぞれの世代のデータ量等が表示されている。
【0102】
図21は、ファイルの復元処理の実行を指示する操作画面の例である。図21では、復元処理をロールバックと呼ぶ。ユーザは、プロパティ表示部328の例えば履歴表示機能に表示されているファイルの世代のうち、復元の対象としたい世代を指定し、復元処理の実行を指示する。
【0103】
図22は、復元処理実行後のプロパティ表示部328、および、確認画面40での確認結果の例である。図22では、プロパティ表示部328に、復元の結果、管理値1273809631938の世代が表示されている。また、確認画面40には、復元の結果0501.pdf_1273809631938の実体ファイルだけが維持されている。なお、図22では、復元処理の結果、復元
の対象となった世代だけが維持されているが、そのような処理に代えて、復元の対象となった世代に、新たな管理値を付与し、最新化した上で、他の世代の実体ファイルを維持するようにしてもよい。
【0104】
以上述べたように、情報処理装置10によれば、同一のファイル名で複数回に渡って同一ディレクトリに保存する場合に、保存されたそれぞれの世代の実体ファイルを維持することができる。情報処理装置10は、通常の操作では、維持された複数世代のうち最新の世代を表示する。また、ユーザの要求に応じて、最新以外の世代のファイルを復元し、最新化することもできる。したがって、ユーザが同一のファイルを登録し、更新を繰り返すようなアプリケーションにおいても、ユーザに複数世代のファイルの管理機能を提供できる。
【0105】
そのような複数世代の管理機能を実現するためのデータ構造として、情報処理装置10
は、式表現を用いる。式表現は、複数の識別子、例えば、ディレクトリ名、ファイル名、管理値等の積演算子による結合として得られるファイルパスの表現(ディレクトリ名×ファイル名×管理値)である項、あるいは、複数の項の並びを含む。したがって、式表現は、ディレクトリ名(複数階層を含む)、ファイル名、および管理値を含むファイルパスの階層構造を適切に記述できる。
【0106】
さらに、複数の項から、共通の識別子を第1の括弧の外に括り出し、非共通の識別子を第1の括弧内に含めることによって、ディレクトリ間の階層構造、ディレクトリに含まれるファイルの位置、ファイルの世代を第1の括弧の階層構造にマッピングし、管理することができる。
【0107】
式表現を文字列で記述した場合に、式表現によって、ディレクトリデータを記述することによって、ディレクトリ名(フォルダ名)、ファイル名、管理値等を簡易に検索することができる。また、式表現の部分集合取得処理によって、積演算子と和演算子による項の並びを簡易に第1の括弧を含む階層構造の表現形式に変換できる。したがって、積演算子と和演算子、第1の括弧による式表現でファイルパスを記述し、部分集合取得処理を適用することで、簡易かつ、汎用的に、ディレクトリの階層構造を処理できる。
【0108】
さらに、実体ファイルに管理値を付与して世代を管理する場合も、ファイル名を部分集合名称とし、管理値を第1の括弧内の項の和とすることによって、簡易に、ファイルの世代を管理できる。
【0109】
すなわち、式表現を用いることで、ディレクトリデータを簡易に管理することができ、ディレクトリの階層構造を記述できる。その結果、ファイルシステム自体にファイルの世代管理機能がない場合でも、アプリケーションプログラムでファイルの世代管理機能を極めて簡易に実現できる。
【0110】
上記実施例では、管理値として、UTCを示す文字列を用いた。UTCは、1958年1月1日0時0分0秒からの経過時間を示すので、単に、世代の新旧以外に、情報処理装置10への登録日時を含むことができる。ただし、管理値としては、UTCを示す文字列に限定されず、例えば、1,2,3等の通し番号を用いてもよい。
<その他の変形例>
上記実施例では、ディレクトリ名、ファイル名、管理値によってファイルを管理する処理例を提示した。しかし、ディレクトリ名に代えて、ネットワーク上のノードを示すノード名、コンピュータ内のデバイス名(ドライブ名ともいう)等を含むようにしてもよい。
【0111】
上記実施例では、情報処理装置10が、アップロードされたファイルの格納、更新、ダウンロード等の機能を提供するネットワーク上のデータ管理サーバとして、アプリケーションプログラムを実行する処理を説明した。そして、上記管理値によるファイルの世代管理が、OSのファイルシステム上のアプリケーションプログラムで提供された。しかし、本実施例に係るディレクトリデータの管理処理は、ネットワーク上のサーバに限定されるわけではなく、スタンドアロンのコンピュータ上で、ユーザ操作にしたがって、以下の処理を実行するようにしてもよい。例えば、個々のアプリケーションプログラム、例えば、ワードプロセッサのプログラム、表計算(スプレッドシート)のプログラム、ウェブページ作成プログラム等が、それぞれのプログラムが作成し、更新したファイルの世代を式表現と管理値で管理するようにしてもよい。
【0112】
また、OSのファイルシステムが式表現を用いてファイルの世代を管理するようにしてもよい。すなわち、OSのファイルシステムが式表現で記述されたディレクトリデータを主記憶装置12または外部記憶装置14などに保持し、実体ファイルの世代を管理するよ
うにしてもよい。
【符号の説明】
【0113】
10 情報処理装置
11 CPU
12 主記憶装置
13 外部記憶装置
30 操作画面
31 ディレクトリ表示部
32 ファイルアップロード部
40 確認画面

【特許請求の範囲】
【請求項1】
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶する記憶部と、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理部と、を備える情報処理装置。
【請求項2】
前記ファイル管理部は、ディレクトリ名とファイル名とを含むファイルパス名と、同一ファイルパス名のファイルを識別する管理値とによってファイルを識別する請求項1に記載の情報処理装置。
【請求項3】
前記ファイル管理部は、ディレクトリを第1の因子とし、前記ディレクトリ中のファイル名を第2因子として前記第1因子に積演算子で結合して項を形成し、同一ディレクトリに含まれるファイルについては、ファイル名を集合構成演算子で構成される第1の集合因子中の項に含め、ディレクトリを第1の集合因子に積演算子で結合する因子とし、同一ディレクトリに含まれる同一ファイル名の項については、管理値を集合構成演算子によって構成される第2の集合因子中の項とし、ファイル名を前記第2の集合因子に積演算子で結合される因子とする、請求項2に記載の情報処理装置。
【請求項4】
コンピュータに、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶部に記憶するステップと、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理ステップと、を実行させるプログラム。
【請求項5】
前記ファイル管理ステップは、ディレクトリ名とファイル名とを含むファイルパス名と、同一ファイルパス名のファイルを識別する管理値とによってファイルを識別するステップを含む請求項4に記載のプログラム。
【請求項6】
前記ファイル管理ステップは、ディレクトリを第1の因子とし、前記ディレクトリ中のファイル名を第2因子として前記第1因子に積演算子で結合して項を形成し、同一ディレクトリに含まれるファイルについては、ファイル名を集合構成演算子で構成される第1の集合因子中の項に含め、ディレクトリを第1の集合因子に積演算子で結合する因子とし、同一ディレクトリに含まれる同一ファイル名の項については、管理値を集合構成演算子によって構成される第2の集合因子中の項とし、ファイル名を前記第2の集合因子に積演算子で結合される因子とするステップを含む、請求項5に記載のプログラム。
【請求項7】
コンピュータが、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶部に記憶するステップと、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新た
な世代のファイルとして保存するファイル管理ステップと、を実行する情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2012−14275(P2012−14275A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148140(P2010−148140)
【出願日】平成22年6月29日(2010.6.29)
【出願人】(000201478)前田建設工業株式会社 (358)
【Fターム(参考)】