(57)【要約】【課題】効果的なデータの編集処理を行うデータ編集プログラム、データ編集装置、データ編集方法を提供する。【解決手段】データ編集処理を行うデータ編集プログラムであって、データ編集処理において、移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、第１の新規クラスタに移動開始クラスタ内の移動開始位置以降のデータを移動し、第２の新規クラスタに移動終了クラスタ内の移動終了位置以前のデータを移動し、移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、第１の新規クラスタまたは第２の新規クラスタのいずれかに移動し、移動先ファイルについて、第１の新規クラスタの後に移動開始クラスタの次の次クラスタがつながり、第２の新規クラスタの前に移動終了クラスタの前の前クラスタがつながるように、管理データを編集する。【選択図】図３０
2014229060.tif 000002
【特許請求の範囲】
【請求項１】
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない第１の新規クラスタに、前記移動元ファイルの前記移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動し、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない前記第１のクラスタと異なる第２の新規クラスタに、前記移動元ファイルの前記移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動し、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、前記第１の新規クラスタまたは前記第２の新規クラスタのいずれかに移動し、
前記移動先ファイルについて、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項２】
請求項１において、
前記移動挿入クラスタ内の移動挿入位置以降のデータサイズが、前記移動開始クラスタ内の移動開始位置以降のデータサイズより小さい場合、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、前記移動挿入位置以降のデータを前記第２の新規クラスタに移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタがつながり、前記第２の新規クラスタの後に移動挿入クラスタの次クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項３】
請求項１において、
前記移動挿入クラスタ内の移動挿入位置以降のデータサイズが、前記移動開始クラスタ内の移動開始位置以降のデータサイズ以上である場合、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、前記移動挿入位置以前のデータを前記第１の新規クラスタに移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタの前の前クラスタがつながり、前記第２の新規クラスタの後に移動挿入クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
さらに、前記移動元のファイルについて、移動開始クラスタの後に移動終了クラスタがつながるように前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下である場合に、
前記第1の新規クラスタに前記移動開始位置以降のデータを移動し、前記第２の新規クラスタに前記移動終了位置以前のデータを移動し、
前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項６】
請求項５において、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下でない場合は、
前記第１の新規クラスタに前記移動開始クラスタ内の移動開始位置以降のデータを移動し、前記第２の新規クラスタに前記移動挿入クラスタ内の移動挿入位置以降のデータを移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタがつながり、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタがつながり、前記第２の新規クラスタの後に前記移動挿入クラスタの次の次クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項７】
請求項６において、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下でない場合は、
さらに、前記移動元のファイルについて、前記移動終了クラスタ内の移動終了位置以降のデータが移動された移動開始クラスタと当該移動終了クラスタの次の次クラスタがつながるように、前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【請求項８】
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
挿入先ファイルにおける挿入位置に挿入データを挿入する際に、
前記複数のクラスタに含まれる前記挿入先ファイルが記録されていない１つまたは複数の第３の新規クラスタに、前記挿入先ファイルの前記挿入位置を有する挿入クラスタ内の前記移動挿入位置以降のデータを移動し、前記挿入データを記憶させ、
前記第３の新規クラスタの先頭クラスタの前に前記挿入クラスタの前の前クラスタがつながり、前記第３の新規クラスタの最後尾クラスタの後に前記挿入クラスタの次の次クラスタがつながるように前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記新規クラスタの後につなげる第１のクラスタと、前記新規クラスタの前につなげる第２のクラスタのうち、先に前記第１のクラスタを前記新規クラスタとをつなげるように前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【請求項１０】
複数のクラスタを備えデータファイルがクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体に対してデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
除去元ファイルにおける除去開始位置から除去終了位置の間のデータを除去する際に、
前記除去元ファイルの前記除去開始位置を有する除去開始クラスタ内の前記除去開始位置以降のデータと、前記除去終了位置を有する除去終了クラスタ内の前記除去終了位置以前のデータとを削除し、
前記除去開始クラスタの後に前記除去終了クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項１１】
請求項１乃至９のいずれかに記載したデータ編集プログラムであって、
前記データ編集処理において、さらに、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて当該対象のファイルを、前記データ編集処理の前、または、後の状態のいずれかに修復する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項１２】
請求項１１において、
前記新規クラスタの前にクラスタをつなげる前記管理データの編集前であって、前記データ領域において管理される編集前の前記ファイルのサイズが、前記管理データの編集後のファイルのサイズに前記編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に前記管理されるサイズを前記合計サイズに更新する処理をコンピュータに実行させるデータ編集プログラム。
【請求項１３】
請求項１乃至１２のいずれかにおいて、さらに、
前記データ編集処理の後、編集前から位置が変更したデータの位置情報と、前記位置が変更したデータのサイズ情報とを含む編集結果情報を出力する処理をコンピュータに実行させるデータ編集プログラム。
【請求項１４】
データファイルが固定長のクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記入力された編集指示情報に基づいて、前記データ編集処理の対象ファイルについて、データ挿入、データ除去、データ移動のいずれかのデータ編集を行い、
前記管理データについて、前記データ編集処理の対象ファイルのクラスタ構成を、前記データ編集に対応するように変更し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて前記データ編集処理の対象ファイルを、前記データ編集処理の実行前、または、実行後の状態に修復する、
処理をコンピュータに実行させるデータ編集プログラム。
【請求項１５】
請求項１４において、
前記管理データの編集前であって、前記データ領域において管理される編集前の前記ファイルのサイズが、前記管理データの編集後のファイルのサイズに前記編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に前記管理されるサイズを前記合計サイズに更新する処理をコンピュータに実行させるデータ編集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ編集プログラム、データ編集装置、データ編集方法に関する。
【背景技術】
【０００２】
近年、ハードディスクやＳＤ（Secure Digital）カード等の記憶媒体における容量の増加に伴い、サイズの大きいファイルのデータを効率的に編集する方法が求められている。特に、デジタルカメラ等の処理能力の低い小型のシステムであっても、サイズの大きい動画ファイルを編集したいという要望が強くなっている。しかしながら、動画ファイルに対する新しいフレームの挿入処理や、一部のフレームの除去処理を行う場合、当該フレームの後に記憶されたフレームのデータを前後に移動する必要があり、処理に時間がかかる。これは、挿入処理や除去処理の対象のフレームのデータ量が小さい場合であっても同様である。
【０００３】
記憶媒体に適用されるＦＡＴ（File Allocation Tables）のファイルシステムでは、データがクラスタ単位で記憶され、クラスタのリンク構造によってデータのつながりが管理される。データがクラスタ単位に記憶されることにより、クラスタのリンク構造を変更することによって、データを移動させることなく、挿入処理や除去処理が可能になる。ただし、この場合、編集対象のデータの位置がクラスタの境界位置に限定される共に、挿入処理、除去処理の対象となるデータのサイズがクラスタサイズの倍数に限定される。そこで、例えば、クラスタのサイズに限定されることなく、データの編集処理を行う技術が提案される（例えば、特許文献１、２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−７５８５６号公報
【特許文献２】特開２０００−２９８６１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ただし、従来の方法において、データの編集処理において、ファイルの生成、削除にかかるディレクトリエントリへの更新回数の増加や、編集後のファイルにおけるクラスタの断片化が考慮されていない。これにより、編集処理に時間がかかると共に、編集後のファイルに対するアクセスに時間がかかる。また、装置の電源が落ちた等の原因により、データの編集処理が中断された場合におけるファイルの安全性や、データの保証について考慮されていない。
【０００６】
そこで、本発明は、効果的なデータの編集処理を行うデータ編集プログラム、データ編集装置、データ編集方法を提供する。
【課題を解決するための手段】
【０００７】
第１の側面は、複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、前記データ編集処理において、移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない第１の新規クラスタに、前記移動元ファイルの前記移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動し、前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない前記第１のクラスタと異なる第２の新規クラスタに、前記移動元ファイルの前記移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動し、前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、前記第１の新規クラスタまたは前記第２の新規クラスタのいずれかに移動し、前記移動先ファイルについて、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集する処理をコンピュータに実行させる。
【発明の効果】
【０００８】
第１の側面によれば、効果的なデータの編集処理を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態例におけるデータ編集装置の一例について説明する図である。
【図２】本実施の形態例のデータ編集装置のソフトウェアの構成の一例を表す図である。
【図３】ＦＡＴのファイルシステムの概要を表す例図である。
【図４】動画データを有するファイル１の構造の一例について説明する図である。
【図５】データ編集テーブルの一例を説明する図である。
【図６】データ挿入処理の例について説明する図である。
【図７】データ除去処理について説明する図である。
【図８】比較例におけるデータ挿入処理の流れについて説明する第１の図である。
【図９】比較例におけるデータ挿入処理の流れについて説明する第２の図である。
【図１０】比較例におけるデータ挿入処理について説明するフローチャート図である。
【図１１】本実施の形態例におけるデータ挿入処理の流れについて説明する第１の図である。
【図１２】本実施の形態例におけるデータ挿入処理の流れについて説明する第２の図である。
【図１３】本実施の形態例におけるデータ挿入処理の流れについて説明する第３の図である。
【図１４】本実施の形態例におけるデータ挿入処理を説明するフローチャート図である。
【図１５】データ挿入処理過程に処理が中断した場合のファイルの安全性を説明する図である。
【図１６】比較例におけるデータの除去処理の流れについて説明する第１の図である。
【図１７】比較例におけるデータの除去処理の流れについて説明する第２の図である。
【図１８】比較例におけるデータの除去処理について説明するフローチャート図である。
【図１９】本実施の形態例におけるデータの除去処理の流れを説明する第１の図である。
【図２０】本実施の形態例におけるデータの除去処理の流れを説明する第２の図である。
【図２１】本実施の形態例におけるデータの除去処理を説明するフローチャート図である。
【図２２】データの除去処理過程に処理が中断した場合のファイルの安全性を説明する図である。
【図２３】比較例におけるデータの移動処理の流れについて説明する第１の図である。
【図２４】比較例におけるデータの移動処理の流れについて説明する第２の図である。
【図２５】比較例におけるデータの移動処理について説明するフローチャート図である。
【図２６】本実施の形態例におけるデータの移動処理の流れを説明する第１の図である。
【図２７】本実施の形態例におけるデータの移動処理の流れを説明する第２の図である。
【図２８】本実施の形態例におけるデータの移動処理の流れを説明する第３の図である。
【図２９】本実施の形態例におけるデータの移動処理の流れを説明する第４の図である。
【図３０】本実施の形態例におけるデータの移動処理の流れを説明する第５の図である。
【図３１】本実施の形態例におけるデータの移動処理を説明するフローチャート図である。
【図３２】２つの新規クラスタに書き込まれるデータのパターンを説明する図である。
【図３３】パターン１−２におけるデータの移動処理の具体例を説明する図である。
【図３４】パターン２におけるデータの移動処理の具体例について説明する図である。
【図３５】データ移動処理過程に処理が中断した場合のファイルの安全性を説明する図である。
【図３６】ディレクトリエントリへの更新回数、新規クラスタ数、断片化数の差異について説明する図である。
【図３７】ファイルの修復処理の流れについて説明する第１のフローチャート図である。
【図３８】データの移動処理に対応するファイルの修復処理について説明する図である。
【図３９】データ挿入処理に対応するファイルの修復処理について説明する図である。
【図４０】データの除去処理に対応するファイルの修復処理について説明する図である。
【図４１】データ移動処理における各ファイルのサイズの具体例を示す図である。
【図４２】図４１の具体例に対応するデータ編集テーブルの一例を示す図である。
【図４３】移動先ファイル、移動元ファイル、及び、ダミーファイルについて、ファイルの状態の具体例と修復方針とを示す図である。
【発明を実施するための形態】
【００１０】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１１】
［装置の構成］
図１は、本実施の形態例におけるデータ編集装置の一例について説明する図である。同図において、データ編集装置は、例えば、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３、表示部１４、入力部１５、メディアアクセス装置１６、二次記憶装置１７を有する。各部は、バス１８を介して相互に接続される。ＲＯＭ１３には、例えば、本実施の形態例におけるデータ編集プログラムＰＲが記憶される。表示部１４は、例えば、ディレスプレイであって、入力部１５はキーボードやマウスである。メディアアクセス装置１６は、ハードディスクやフラッシュメモリ等の不揮発性の二次記憶装置１７へのアクセスを制御する装置である。
【００１２】
［ソフトウェアの構成］
図２は、本実施の形態例におけるデータ編集装置におけるソフトウェアの構成の一例について説明する図である。ソフトウェアは、例えば、図１のデータ編集装置におけるＲＯＭ１３等に記憶される。本実施の形態例におけるデータ編集プログラムＰＲは、例えば、ファイルシステム２３に係るプログラムである。
【００１３】
図２のソフトウェアは、例えば、アプリケーション２１、動画編集ライブラリ２２、ファイルシステム２３、メディアドライバ２４を有する。例えば、動画編集等を行うアプリケーション２１は、ユーザによる操作を受け付けると、動画編集ライブラリ２２に対して、ユーザの操作に対応する操作指示情報を通知する。例えば、操作指示情報は、二次記憶装置１７に記憶されたファイルに対するデータの挿入処理、データの除去処理、ファイル間のデータの移動処理等を指示する情報である。そして、動画編集ライブラリ２２は、操作指示情報をファイルシステム２３のインタフェースに対応して変換し、ファイルシステム２３に通知する。そして、ファイルシステム２３は、操作指示情報に基づいた命令をメディアドライバ２４に通知する。
【００１４】
また、図２のハードウェアは、メディアアクセス装置１６、メディア（二次記憶装置）１７を有する。メディアアクセス装置１６は、メディアドライバ２４から入力された命令に基づいて、二次記憶装置１７に記憶された情報の読み出しや、書き込み、削除処理等を行う。なお、本実施の形態例における二次記憶装置１７は、ＦＡＴ(File Allocation Table)のファイルシステムとしてフォーマットされる。続いて、ＦＡＴのファイルシステムについて説明する。
【００１５】
［ＦＡＴのファイルシステム］
図３は、ＦＡＴのファイルシステムの概要を表す例図である。ＦＡＴのファイルシステムでは、クラスタを論理単位としてデータが記憶される。このため、ファイルのデータのサイズに応じて、１つまたは複数のクラスタが割り当てられる。同図の（Ａ）に示すとおり、ＦＡＴのファイルシステムは、例えば、ブートセクタ領域Ｘ１、ＦＡＴ領域（管理領域）Ｘ２、ファイル/ディレクトリ領域（データ領域）Ｘ３の３つの領域を有する。
【００１６】
まず、ブートセクタ領域Ｘ１には、二次記憶装置の容量やクラスタの単位サイズ等の、全体に関する情報が記憶される。ブートセクタ領域Ｘ１は、例えば、５１２バイトのセクタ単位に基づいて管理される。続いて、ファイル/ディレクトリ領域Ｘ３には、ディレクトリエントリと呼ばれるファイルの管理情報と、ファイルのデータとが記憶される。ファイル/ディレクトリ領域は、セクタより一回り大きいサイズ（セクタサイズの２のｎ乗倍サイズ）のクラスタ単位に管理される。管理情報は、例えば、ファイル名、ファイルサイズ、データが記憶される初めのクラスタの番号等の情報を有する。
【００１７】
そして、ＦＡＴ領域Ｘ２では、ファイル/ディレクトリ領域内の１つのクラスタに対して１つ割り当てられたＦＡＴエントリが記憶される。それぞれのＦＡＴエントリは、対応するクラスタの状態を示す値（１２ｂｉｔ、１６ｂｉｔ、３２ｂｉｔのいずれか）を有する。具体的に、ＦＡＴエントリは、対応するクラスタが非使用の場合、空きを示す値を有する。また、ＦＡＴエントリは、対応するクラスタが使用中の場合であって、当該クラスタに記憶されるデータに続くデータがある場合、続くデータが記憶されるクラスタの番号を有する。一方、続くデータがない場合、ＦＡＴエントリは、ＥＯＣ (End Of Cluster)を示す値を有する。なお、クラスタの番号が、例えば、２番から始まるのに対し、ＦＡＴエントリは０番から始まる。このため、０番目と１番目のＦＡＴエントリには、予約領域を示す値が記憶される。
【００１８】
つまり、ＦＡＴのファイルシステムにおいて、対象のファイルは、ディレクトリエントリを先頭に、１つまたは複数のクラスタのつながり（クラスタチェイン）に基づいて管理される。具体的に、対象のファイルについて、最初のデータはディレクトリエントリに記憶される番号のクラスタに記憶される。そして、最初のクラスタに対応するＦＡＴエントリに、次につながるクラスタの番号、または、当該クラスタが最後尾のクラスタである旨の値（ＥＯＣ）が記憶される。
【００１９】
図３の（Ｂ）は、同図の（Ａ）に対応して、対象のファイル（ファイル１）の構造の一例を示す図である。本実施の形態例において、正方形はクラスタを示し、正方形内に記述される番号はクラスタ番号を示す。この例において、ファイル１のデータは、クラスタ３を先頭として、クラスタ４、クラスタ５、クラスタ１２、クラスタ１３の順に記憶される。
【００２０】
例えば、ファイル１のデータを読み出す場合、ファイルシステム２３は、クラスタ１に記憶されるディレクトリエントリから、ファイル１のファイル名、ファイルサイズ、及び、データが記録される先頭クラスタの番号３を取得する。続いて、ファイルシステム２３は、クラスタ３に対応するＦＡＴのエントリ３に記憶された、次につながるクラスタの番号４を取得する。続いて、同様にして、ファイルシステム２３は、クラスタ４に対応するＦＡＴのエントリ４に記憶されたクラスタ番号５を取得する。同様にして、クラスタ５に続く、クラスタ１２、クラスタ１３の情報が取得される。なお、なお、クラスタ１３は、ファイル１の最後尾のクラスタであるため、ＦＡＴのエントリ１３には、ＥＯＣが記憶される。
【００２１】
このように、ＦＡＴのファイルシステムでは、ファイル/ディレクトリ領域Ｘ３においてクラスタ単位に記憶されたデータのつながりが、ＦＡＴ領域Ｘ２のエントリに基づいて管理される。このため、ファイルシステムは、ＦＡＴのエントリに記憶されたクラスタの番号を書き換えることによって、データのつながりを変更することができる。なお、図３の（Ｂ）において、ファイル１のサイズは、矢印で示した値ＳＺに対応する。
【００２２】
［クラスタの断片化］
本実施の形態例におけるクラスタの断片化とは、１つのファイルのデータを構成するクラスタの番号が連続していない状態を示す。即ち、二次記憶装置におけるデータの記憶位置が連続していない状態を示す。例えば、図３の（Ｂ）において、ファイル１は、クラスタ３を先頭にして、クラスタ４、クラスタ５、クラスタ１２、クラスタ１３の順に、データが記憶される。したがって、ファイル１について、クラスタ３〜クラスタ５と、クラスタ１２〜クラスタ１３との間で、クラスタの番号が連続しておらず、断片化数は１である。クラスタの断片化数が多い場合、ファイルのデータに対するアクセス速度が低下する。
【００２３】
続いて、動画データを有するファイルの構造について説明する。本実施の形態例では、動画データの編集処理に基づいて処理の流れを説明する。ただし、本実施の形態例におけるデータ編集処理は、動画データの編集に限定されるものではない。
【００２４】
［動画ファイルデータの構造］
図４は、動画データを有するファイル１の構造の一例について説明する図である。動画データは、通常のデータに加えてヘッダＨＤと管理データＤＸとを有する。ヘッダＨＤは、例えば、ファイル１が動画データを有するファイルであることを示す識別情報を有する。また、管理データＤＸは、動画データを構成するフレームのデータ内の位置（オフセット）、及び、サイズを示すインデックスを有する。１つのフレームに対応して、インデックスにおける１つのエントリが対応付けられる。
【００２５】
本実施の形態例において、クラスタ内の黒塗りの領域はヘッダＨＤ、黒い網点の領域は管理データＤＸ、ブランク部分は非使用領域を示す。また、クラスタ内の斜線、横線、格子柄の領域はそれぞれデータ部分、斜線の領域はデータ編集テーブルの領域を示す。データ編集テーブルについては、後述する。例えば、ファイル１の再生が指示された場合、ＦＡＴエントリに基づいて、順次データが参照され、データに含まれるヘッダＨＤに基づいて動画データであることが識別される。そこで、データの末尾に記憶されたインデックスに基づいて、再生指示に対応するフレームのデータが順次読み出される。このように、動画データを有するファイルは、各フレームに対応するインデックスを経由して、当該フレームに対応するデータへのアクセスが行われる。このため、動画データを有するファイルは、データの途中に非使用領域を有していてもよい。
【００２６】
［データ編集テーブル］
図５は、データ編集テーブルの一例を説明する図である。本実施の形態例において、データ編集テーブルは、例えば、編集指示情報と編集結果情報とを有する。同図において、編集指示情報は入力区分を示す情報であって、編集結果情報は出力区分を示す情報である。
【００２７】
データ編集テーブルは、例えば、データ編集の指示に伴って動画編集ライブラリ２２（図２）から入力され、データの編集処理の間、データの末尾に一時的に記憶される。このとき、データ編集テーブルには、編集指示情報が記憶される。これにより、データの編集処理が中断された場合であっても、ファイルが編集処理の前、または編集処理の後の状態に修復される。そして、データ編集が完了すると、データ編集テーブルに編集結果情報が付与されると共に、データの末尾から削除され、動画編集ライブラリ２２に出力される。
【００２８】
編集指示情報は、例えば、編集処理種別、編集開始位置、編集データサイズの情報を有する。編集処理種別は、挿入または除去のいずれかである。データ挿入が指示された場合は挿入が、データ除去が指示された場合は除去が設定される。なお、データの移動処理の場合、データの移動先ファイルにはデータ挿入処理に対応するデータ編集テーブルが、データの移動元ファイルにはデータの除去処理に対応するデータ編集テーブルが付与される。そして、編集開始位置は、ファイル内のデータにおける編集処理の対象の位置を示す。具体的に、挿入処理の場合はデータの挿入開始位置、除去処理の場合は、除去対象のデータの開始位置を示す。また、編集データサイズは、編集対象のデータのサイズを示す。具体的に、挿入処理の場合は挿入データのサイズ、除去処理の場合は、除去対象のデータのサイズを示す。
【００２９】
編集結果情報は、例えば、編集データオフセット、編集後のファイルサイズの情報を有する。編集データのオフセットは、編集後のファイルにおいて、編集処理によって挿入、または、移動されたデータの先頭位置を示す。具体的に、挿入処理の場合は、挿入データの開始位置、除去処理の場合は、除去されたデータの後ろのデータの開始位置を示す。
【００３０】
続いて、データ編集テーブルの各値の例について、データ挿入処理、データの除去処理に基づいて説明する。
【００３１】
［データ編集テーブルの例：データ挿入処理］
図６は、データ挿入処理の例について説明する図である。同図において、データ挿入前のファイル１と、データ挿入後のファイル１ｘとが例示される。この例において、斜線で示されるファイル１のデータＦ１における挿入位置ｐ１に、横線で示される挿入データＤＸが挿入される。また、挿入データＤＸは、二次記憶装置に記憶されたデータではなく、メモリ空間上のテンポラリデータである。
【００３２】
図６の編集後のファイル１ｘにおいて、データ挿入位置ｐ１の後に挿入データＤＸが追加されると共に、データ挿入位置ｐ１以降のデータが挿入データＤＸの後に移動している。なお、この例において、データ挿入位置ｐ１はクラスタの途中に位置し、挿入データＤＸは新規のクラスタの先頭から書き始められる。このため、ファイル１ｘにおいて、データ挿入位置ｐ１以前の元データＦ１ｂと挿入データＤＸとの間、挿入データＤＸとデータ挿入位置ｐ１以降の元データＦ１ａとの間に、ブランクで示される非使用の領域ｅ１、ｅ２が存在する。
【００３３】
図６の例において、ファイル１に付加されるデータ編集テーブルの編集指示情報が有する編集処理種別は挿入、編集開始位置はデータ挿入位置ｐ１、編集データサイズは挿入データＤＸのサイズｓ１を示す。また、編集後に生成されるデータ編集テーブルの編集結果情報が有する編集データオフセットは、編集後のファイル１ｘにおける挿入データの開始位置ｐ２である。また、編集後のファイルサイズは、非使用領域ｅ１、ｅ２を含むサイズｓ２である。このように、この例において、編集後のファイル１ｘが非使用領域を含むことにより、編集前のファイル１における編集開始位置ｐ１と、編集後のファイル１ｘにおける編集データのオフセットｐ２とは一致しない。また、編集後のファイル１ｘのサイズｓ２から編集前のファイル１のサイズｓ０が減算されることによって、編集後のファイル１ｘにおける、データ挿入位置ｐ１（編集開始位置）以降のデータの編集前からの移動量ｓ３が検知可能になる。
【００３４】
［データの編集：除去］
図７は、データ除去処理について説明する図である。同図において、データ除去前のファイル２と、データ除去後のファイル２ｘとが例示される。この例において、斜線で示されるファイル２のデータＦ２から、除去開始位置ｐ３から除去終了位置ｐ４までのデータが除去される。
【００３５】
図７の編集後のファイル２ｘにおいて、除去開始位置ｐ３から除去終了位置ｐ４までのデータが除去されたことにより、除去終了位置ｐ４以降のデータが前にずれている。この例において、除去開始位置ｐ３及び除去終了位置ｐ４は、クラスタの途中に位置するため、ファイル２ｘにおいて、除去開始位置ｐ３以前の元データＦ２ｂと除去開始位置以降ｐ４の元データＦ２ａとの間に、ブランクで示される非使用の領域ｅ３が存在する。
【００３６】
図７の例において、ファイル２に付加されるデータ編集テーブルの編集指示情報が有する編集処理種別は除去、編集開始位置は除去開始位置ｐ３、編集データサイズは除去開始位置ｐ３から除去終了位置ｐ４までのサイズｓ４を示す。また、編集後に生成されるデータ編集テーブルの編集結果情報が有する編集データオフセットは、編集後のファイル２ｘにおける除去終了位置ｐ４以降のデータの開始位置ｐ５である。また、編集後のファイルサイズは、非使用領域ｅ３を含むサイズｓ５である。このように、この例において、編集後のファイル２ｘが非使用領域を含むことにより、編集前のファイル２における編集開始位置ｐ３と、編集後のファイル２ｘにおける編集データのオフセットｐ５とは一致しない。また、編集後のファイル２ｘのサイズｓ５から編集前のファイル２のサイズｓ７が減算されることによって、編集後のファイル２ｘにおける、データ挿入位置ｐ５（編集開始位置）以降のデータＦ２ａの移動量ｓ６が検知可能になる。
【００３７】
続いて、本実施の形態例におけるデータ編集プログラムＰＲの処理について、具体例に基づいて説明する。本実施の形態例におけるデータの編集処理は、データ挿入処理、ファイル内の一部のデータの除去処理、ファイル間のデータの移動処理である。それぞれの編集処理について、比較例と対比しながら順次説明する。まず、データ挿入処理について説明する。
【００３８】
［データ挿入処理：比較例］
図８は、比較例におけるデータ挿入処理の流れについて説明する第１の図である。同図において、前述したとおり、正方形で示されるクラスタ内の斜線の領域は挿入先ファイルのデータを、横線の領域は挿入データ、ブランク部分は非使用領域を示す。なお、同図において、点線の矢印は、クラスタの断片化されたつなぎ目を示す。なお、比較例において、データは非動画データを示し、網点の領域ｆｆは属性情報を示す。比較例では、属性情報に基づいて非使用領域が管理されることによって、クラスタが非使用領域を含む場合であっても、データへのアクセスが可能になる。
【００３９】
図８の（１）は、データ挿入処理前の挿入先ファイルを示す。この例において、挿入先ファイルであるファイル１は、６つのクラスタによって構成される。また、データの挿入位置Ｐ１は、３つ目のクラスタに含まれる。続いて、同図の（２）において、横線で示される挿入データが、ファイル２として二次記憶装置に書き込まれる。この例では、挿入データは、４つのクラスタに順次書き込まれる。
【００４０】
図９は、図８に続いて、比較例におけるデータ挿入処理の流れについて説明する第２の図である。図９の（３）において、挿入先ファイルであるファイル１が、ファイル１とファイル３とに分割される。具体的に、新たな新規クラスタＮ１に対して、ファイル１における挿入位置を有するクラスタ（以下、挿入クラスタと称する）の挿入位置Ｐ１以降のデータが移動され、ファイル３として記憶されると共に、新規クラスタＮ１の後に、挿入クラスタの次のクラスタＣ１がつなげられる（Ｂ１）。新規クラスタＮ１と挿入クラスタの次のクラスタＣ１とは連続したクラスタではないため、新規クラスタＮ１と挿入クラスタの次のクラスタＣ１との間は断片化状態である。このため、つなぎ目Ｂ１は点線の矢印で表される。
【００４１】
続いて、図９の（４）において、ファイル１とファイル２とが結合される。具体的に、ファイル１の挿入クラスタの後に、ファイル２のクラスタにおける先頭のクラスタＣ２がつながれると共に（Ｂ２）、ディレクトリエントリにおけるファイル２のエントリが削除される。以下、ファイル２は削除されたものの、ファイル２に紐付けられていたクラスタをファイル２のクラスタと称する。ファイル１の挿入クラスタとファイル２の先頭のクラスタＣ２との間は断片化状態であって、つなぎ目Ｂ２は点線の矢印で表される。
【００４２】
また、図９の（４）において、続いて、ファイル２を結合済みのファイル１と、ファイル３とが結合される。具体的に、ファイル１の最後尾のクラスタＣ２（ファイル２の最後尾のクラスタ）の次に、ファイル３の新規クラスタＮ１がつながれると共に（Ｂ３）、ディレクトリエントリにおけるファイル３のエントリが削除される。このとき、ファイル１の最後尾のクラスタＣ２とファイル３の新規クラスタＮ１との間は、断片化状態である。
【００４３】
これにより、比較例において、ファイル１に挿入データが挿入される。比較例では、ファイルの分割処理、及び、ファイルの結合処理を利用して、データの挿入処理が行われる。このため、挿入先ファイルであるファイル１が、挿入位置Ｐ１を分割点としてファイル１とファイル３に分割され、各ファイルが、挿入データが記憶されたファイル２と結合されることによって、データの挿入処理が行われる。
【００４４】
比較例におけるデータ挿入処理では、１つの新規クラスタＮ１が使用される。また、データ挿入処理後のファイルにおけるクラスタの断片化数は３（Ｂ１〜Ｂ３）である。また、比較例において、ファイル２の新規生成時に１回、ファイル１の分割時に２回（ファイル１、ファイル３のディレクトリエントリに対する更新処理）、ディレクトリエントリへのアクセスが発生する（計３回）。また、ファイル１とファイル２との結合時、ファイル１とファイル３との結合時に２回ずつ（結合元ファイル、結合先ファイルのディレクトリエントリに対する更新処理）、ディレクトリエントリへのアクセスが発生する（計４回）。したがって、比較例におけるデータ挿入処理において、合計７回のディレクトリエントリへのアクセスが発生する。
【００４５】
［データ挿入処理のフローチャート図：比較例］
図１０は、比較例におけるデータ挿入処理について説明するフローチャート図である。同図において、まず、挿入データを、新たなファイル２に書き込む（Ｓ１１）。続いて、挿入先ファイルであるファイル１が、ファイル１と新規のファイル３とに分割される（Ｓ１２）。具体的に、新たな新規クラスタＮ１に対して挿入クラスタの挿入位置以降のデータが移動されると共に、新規クラスタＮ１の後に挿入クラスタの次のクラスタＣ１がつなげられ（Ｂ１）、ファイル３として記憶される。
【００４６】
続いて、ファイル１にファイル２が結合される（Ｓ１３）。具体的に、ファイル１の挿入クラスタの後にファイル２の先頭のクラスタＣ２がつなげられ（Ｂ２）、ディレクトリエントリからファイル２のエントリが削除される。続いて、ファイル２を結合済みのファイル１に、ファイル３が結合される（Ｓ１４）。具体的に、ファイル１の最後尾のクラスタＮ２（ファイル２の最後尾のクラスタ）の次にファイル３の新規のクラスタＮ１がつなげられ（Ｂ３）、ディレクトリエントリからファイル３のエントリが削除される。このようにして、挿入データが、ファイル１の挿入位置に挿入される。
【００４７】
［データ挿入処理：本実施の形態例］
図１１は、本実施の形態例におけるデータ挿入処理の流れについて説明する第１の図である。同図の（１）は、データ挿入処理前の挿入先ファイルを示す。この例において、挿入先ファイルであるファイル１は、５つのクラスタによって構成される。また、データの挿入位置Ｐ１１は、３つ目のクラスタに含まれる。
【００４８】
続いて、図１１の（２）において、データ編集テーブルＴ１１がファイルの最後尾に追加される。データ編集テーブルＴ１１には、挿入を指示する編集処理種別と、ファイル１における挿入位置Ｐ１１を示す編集開始位置と、挿入データのサイズを示す編集データサイズとを含む編集指示情報が記憶される。データ編集テーブルＴ１１の追記に伴い、ファイル１のサイズが増加するものの、この時点では、ディレクトリエントリで管理されるファイル１のサイズは更新されない。続いて、同図の（３）において、ファイル１における挿入位置Ｐ１１を有する挿入クラスタ内の挿入位置以前のデータが新規クラスタＮ１１に書き込まれる。
【００４９】
図１２は、図１１に続いて、本実施の形態例におけるデータ挿入処理の流れについて説明する第２の図である。図１２の（４）において、新規クラスタＮ１１に続いて、横線で表される挿入データＤ１１が書き込まれる。続いて、同図の（５）において、挿入データＤ１が追記されたクラスタの最後尾のクラスタＣ１１の後に、挿入クラスタがつながれる（Ｂ１１）。このとき、最後尾のクラスタＣ１１とファイル１の挿入クラスタとは断片化状態である。
【００５０】
図１３は、図１２に続いて、本実施の形態例におけるデータ挿入処理の流れについて説明する第３の図である。ここで、図１３の（６）におけるファイル１のクラスタチェインのつなぎ替え処理（Ｂ１２）の前に、ディレクトリエントリで管理されるファイル１のサイズが更新される。具体的に、ファイル１のサイズが、編集前のファイルサイズに、挿入データＤ１１のサイズ及びデータ編集テーブルＴ１１のサイズを加えた値に更新される。これにより、クラスタチェインのつなぎ替え処理（Ｂ１２）の後、ファイル１のデータ編集テーブルが読み出し可能状態になる。
【００５１】
ファイルサイズの更新は、続いて行われるファイル１に対するクラスタチェインのつなぎ替えの処理（Ｂ１２）に備えて行われる。クラスタチェインのつなぎ替え処理（Ｂ１２）が行われることによって、ファイル１を構成するクラスタが増加し、編集前のファイル１の一部のデータが読み出せなくなる。このため、クラスタチェインのつなぎ替え処理（Ｂ１２）の前に、データ編集プログラムＰＲは、予め、編集前のファイルにおける全てのデータ、及び、データ編集テーブルを読み出し可能なサイズに、ファイル１のサイズを拡張しておく。これにより、クラスタチェインのつなぎ替え後に編集処理が中断された場合であっても、データ編集プログラムＰＲは、データ編集テーブルに基づいて、ファイル１をデータ編集後の状態に修復することが可能になる。データ編集テーブルに基づくファイルの修復処理の詳細については後述する。
【００５２】
なお、図１２の（５）におけるクラスタチェインのつなぎ替え（Ｂ１１）は、ファイル１を構成するクラスタの前に別のクラスタがつながれる場合、ファイル１は影響を受けない。即ち、ファイル１は、ファイル１を構成するクラスタの後に、別のクラスタがつなげられた場合に影響を受ける。このため、図１２の（５）におけるクラスタチェインのつなぎ替え（Ｂ１１）処理の前には、ファイルサイズの更新処理は行われない。
【００５３】
そして、図１３の（６）において、ファイル１の挿入先クラスタの前のクラスタＣ１２の後に、新規クラスタＮ１１がつながれることによって（Ｂ１２）、ファイル１のクラスタチェインが変更される。挿入先クラスタの前のクラスタＣ１２と新規クラスタＮ１１とは断片化状態である。続いて、ファイル１のインデックスにおける、各フレームのオフセットが更新される。具体的に、挿入データＤ１１、及び、データが挿入されることによってオフセットが変更される挿入位置Ｐ１１以降のデータのインデックスが更新される。また、挿入クラスタ内の挿入位置Ｐ１１以前の領域が非使用状態に変更される。そして、図１３の（７）において、データ編集テーブルＴ１１が削除されると共に、ディレクトリエントリにおいて管理されるファイルサイズが更新される。このとき、ファイル１のサイズは、編集前のファイルのサイズに挿入データのサイズを加算した値に更新される。
【００５４】
このように、本実施の形態例におけるデータ挿入処理において、１つの新規クラスタＮ１１が使用される。また、データ挿入処理後のファイルにおけるクラスタの断片化数は２（Ｂ１１、Ｂ１２）である。また、本実施の形態例において、ファイル１のサイズの更新時に１回ずつディレクトリエントリへのアクセスが発生する。したがって、本実施の形態例におけるデータ挿入処理において、合計２回のディレクトリエントリへのアクセスが発生する。
【００５５】
［データ編集テーブルを使用しない場合］
なお、本実施の形態例において、データ編集テーブルの使用は必ずしも必要ではない。データ編集テーブルを使用しない場合、図１３の（６）の処理の直前に行われるファイルサイズの更新処理が不要になる。これにより、この場合、ファイルサイズの更新処理は、図１３の（７）における編集前のファイルのサイズに挿入データのサイズを加えた値への更新処理の１回となる。したがって、データ編集テーブルを生成しない場合におけるデータ挿入処理において、ディレクトリエントリへの更新回数は１回となる。
【００５６】
［データ挿入処理のフローチャート図：本実施の形態例］
図１４は、本実施の形態例におけるデータ挿入処理について説明するフローチャート図である。同図において、データ編集プログラムＰＲは、まず、挿入先ファイルであるファイル１のデータの末尾に、データ編集テーブルＴ１１を追加する（Ｓ２１）。データ編集テーブルＴ１１は、例えば、動画編集ライブラリによって生成され、引き渡される。編集データテーブルを生成しない場合、工程Ｓ２１の処理は不要になる。
【００５７】
続いて、データ編集プログラムＰＲは、ファイル１における挿入クラスタ内の挿入位置Ｐ１１以前のデータを、新規クラスタＮ１１に書き込む（Ｓ２２）。次に、データ編集プログラムＰＲは、新規クラスタＮ１１に続いて挿入データを書き込む（Ｓ２３）。そして、データ編集プログラムＰＲは、最後尾のクラスタＣ１１の後に、挿入クラスタをつなぐ（Ｂ１１）（Ｓ２４）。続いて、データ編集プログラムＰＲは、ファイル１のファイルサイズを更新する（Ｓ２５）。データ編集プログラムＰＲは、ファイル１のサイズを、編集前のファイル１のサイズに、挿入データのサイズ及びデータ編集テーブルＴ１１のサイズを加えた値に更新する。編集データテーブルを使用しない場合、工程Ｓ２５の処理は不要になる。そして、データ編集プログラムＰＲは、ファイル１の挿入先クラスタの前のクラスタＣ１２の後に、新規クラスタＮ１１をつなぐ（Ｂ１２）（Ｓ２６）。
【００５８】
このように、本実施の形態例におけるデータ編集プログラムＰＲは、新規クラスタＮ１１について、後につながれるクラスタと前につながれるクラスタのうち、先に、後につながれるクラスタとつなげる（Ｂ１１）。即ち、この例において、データ編集プログラムＰＲは、先に、工程Ｓ２４において、新規クラスタＮ１１の最後尾のクラスタの後に挿入クラスタをつないだ後、工程Ｓ２６において、新規クラスタＮ１１の前に、ファイル１の挿入先クラスタの前のクラスタＣ１２をつなぐ。これにより、データ編集プログラムＰＲは、ファイル１のクラスタチェインが変更されるタイミングを遅くし、ファイル１を、クラスタチェインが変更されるまで、編集前の状態に維持しておくことができる。
【００５９】
続いて、データ編集プログラムＰＲは、ファイル１のデータに含まれるインデックスが有する各フレームのオフセットを更新する（Ｓ２７）。例えば、データ編集プログラムＰＲは、挿入位置以降のデータ、及び、挿入データに対応するインデックスを更新する。なお、このとき、データ編集テーブルＴ１１に含まれる編集結果情報が更新される。具体的に、編集結果情報における、挿入データの開始位置を示す編集データオフセット、及び、編集後のファイルサイズが更新される。
【００６０】
続いて、データ編集プログラムＰＲは、データ編集テーブルＴ１１を動画編集ライブラリ２２に渡してファイル１から削除すると共に、ファイル１のファイルサイズを、編集前のサイズに挿入データのサイズを加えた値に更新する（Ｓ２８）。これにより、動画編集ライブラリ２２は、編集結果情報に基づいて、編集処理の内容を的確に検知可能になる。
【００６１】
このように、本実施の形態例のデータ編集プログラムＰＲによるデータ挿入処理では、比較例に対して、ディレクトリエントリへの更新回数が少なく（７回→２回）、クラスタの断片化数が少ない（３つ→２つ）。なお、本実施の形態例においてデータ編集テーブルを使用しない場合、ディレクトリエントリへの更新回数はさらに少ない１回に抑えられる（７回→１回）。これにより、本実施の形態例におけるデータ編集プログラムＰＲは、ディレクトリエントリへの更新回数を抑えることにより、二次記憶装置へのアクセス処理を効率化し、データ挿入処理を高速化することができる。また、本実施の形態例におけるデータ編集プログラムＰＲは、クラスタの断片化数を抑えることにより、編集後のファイルのへのアクセスを高速化すると共に、ファイルシステムの領域を効率的に使用することができる。
【００６２】
また、本実施の形態例において、ファイルのデータは、例えば、動画データであるため、クラスタ内に非使用領域が含まれていてもよい。このため、データの編集対象の位置がクラスタの境界に限定されないことから、データ編集プログラムＰＲは、予め二次記憶媒体に記憶されたデータの移動を最小限に抑えることができる。
【００６３】
また、本実施の形態例において、編集指示情報を有するデータ編集テーブルがデータの末尾に付加されることによって、データ挿入処理が中断される場合であっても、挿入先ファイルが、編集前の状態、または、編集後の状態に修復可能になる。
【００６４】
［データ挿入処理の中断］
図１５は、データ挿入処理の過程において処理が中断した場合におけるファイルの安全性について説明する図である。処理が中断される場合とは、例えば、装置の電源が落ちてデータ挿入処理が中断される場合や、データ編集プログラムＰＲが強制停止された場合等を示す。同図は、図１４のフローチャート図の各工程に対応して、ファイルの状態と修復方針とを有する。ファイルの状態は、ファイルデータの状態、ファイルサイズ、インデックス、データ編集テーブル、未参照データの各状態を示す。
【００６５】
具体的に、図１５において、挿入先ファイルであるファイル１は、工程Ｓ２１の前、編集処理前の状態であって、工程Ｓ２８の後、編集処理後の状態である。これにより、編集処理が中断された場合であっても、ファイル１の安全性は確保される。続いて、工程Ｓ２１の後において、データ編集テーブルが追加されているものの、ファイルサイズが更新されていない。このため、ファイル１は編集前の状態であり、ファイル１の安全性は確保される。
【００６６】
また、工程Ｓ２２〜工程Ｓ２５の後において、ファイル１のクラスタチェインは未変更である。つまり、ファイル１は編集前の状態である。このため、工程Ｓ２２〜工程Ｓ２５の後に編集処理が中断された場合であっても、ファイル１の安全性は確保される。ただし、挿入データは、二次記憶装置に記憶済みであるため、未参照データとして残留する。このため、修復方針として、未参照データである挿入データ（及び、データ編集テーブル）のクリア処理が行われる。ただし、工程Ｓ２５の後は、クラスタチェインの変更前でありファイルサイズがクラスタチェインのつなぎ替え後のサイズに更新されているため、ファイルサイズに不整合が生じている。この場合、ファイル１について、読み出し可能なデータ編集テーブルの編集指示情報に基づいてファイルサイズが更新され、編集前の状態に修復される。
【００６７】
そして、工程Ｓ２６の後に編集処理が中断された場合、クラスタチェインのつなぎ替えが行われたことによって、ファイルサイズの不整合が解消されている一方、インデックスが不整合状態となる。この場合、データ編集テーブルの編集指示情報に基づいて、ファイル１について、インデックスが更新されると共に、データ編集テーブルが削除され、編集後の状態に修復される。また、工程Ｓ２７後にデータ編集処理が中断された場合、ファイル１について、データ編集テーブルが削除されると共に、ファイルサイズが更新され、編集後の状態に修復される。
【００６８】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、編集指示情報を有するデータ編集テーブルを使用することによって、編集処理におけるいずれの工程の後に処理が中断された場合であっても、挿入先ファイルを編集前、または、編集後の状態に修復することができる。これにより、挿入先ファイルの安全性が維持される。また、データ編集プログラムＰＲは、データ編集テーブルをファイルの末尾に付加することによって、二次記憶装置に記憶されたデータのみに基づいて、挿入先ファイルを修復することができる。なお、ファイルの修復処理の詳細については、後述する。
【００６９】
以上のように、本実施の形態例におけるデータ編集プログラムＰＲは、データ編集処理において、挿入先ファイルにおける挿入位置に挿入データを挿入する際に、複数のクラスタに含まれる挿入先ファイルが記録されていない１つまたは複数の第３の新規クラスタに、挿入先ファイルの挿入位置を有する挿入クラスタ内の移動挿入位置以降のデータを移動し、挿入データを記憶させる。そして、データ編集プログラムＰＲは、第３の新規クラスタの先頭クラスタの前に挿入クラスタの前の前クラスタがつながり、第３の新規クラスタの最後尾クラスタの後に挿入クラスタの次の次クラスタがつながるように管理データを編集する。
【００７０】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、ファイルの不要な分割処理、及び、結合処理が抑えられる。これにより、本実施の形態例におけるデータ編集プログラムＰＲは、データ挿入処理による編集後のファイルの断片化数を少なく抑えると共に、ディレクトリエントリへの更新回数を少なく抑えることができる。これにより、データ編集プログラムＰＲは、データ挿入処理を効率的に高速に行うことができると共に、編集後のファイルへのアクセスを高速化する。また、データ編集プログラムＰＲは、予めクラスタに記憶されたデータの移動量を最小限に抑えることができ、データ挿入処理を高速に行うことを可能にする。
【００７１】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、新規クラスタの後につなげる第１のクラスタと、新規クラスタの前につなげる第２のクラスタのうち、先に第１のクラスタを新規クラスタとをつなげるように管理データを編集する。このように、データ編集プログラムＰＲは、新規クラスタについて、先に、後側のリンクを更新し、前側のリンクはできるだけ後に更新する。後側のリンクが別のファイルのクラスタとつながっていても、前側のリンクがどこからもつながっていない編集処理が中断された場合、未使用データとして扱われ、安全に削除可能になるためである。また、これにより、データ編集プログラムＰＲは、挿入先ファイルが変更されるタイミングを遅くすることができる。つまり、データ編集プログラムＰＲは、挿入先ファイルを編集前の状態に、できるだけ長く維持しておくことができる。
【００７２】
また、本実施の形態例におけるデータ編集プログラムＰＲは、入力された編集指示情報であって、挿入処理を示す編集種別と、挿入処理における挿入位置を示す編集対象位置と、挿入処理における挿入データのサイズを示す編集対象サイズとを含む編集指示情報を、データ編集処理の対象ファイルのデータ末尾に記憶する。また、データ編集プログラムＰＲは、データ編集処理の対象ファイルの読み出しが行えないときに、編集指示情報に基づいて当該対象のファイルを、データ編集処理の前、または、後の状態のいずれかに修復する。
【００７３】
これにより、本実施の形態例におけるデータ編集プログラムＰＲは、対象のファイルへのデータ挿入処理が途中で中断された場合であっても、対象のファイルを、データ挿入処理前、または、処理後の状態に修復することができる。これにより、挿入先ファイルの安全性が確保される。
【００７４】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、新規クラスタの前にクラスタをつなげる管理データの編集前であって、データ領域において管理される編集前のファイルのサイズが、管理データの編集後のファイルのサイズに編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に管理されるサイズを合計サイズに更新する。
【００７５】
これにより、データ編集プログラムＰＲは、挿入先ファイルが変更される前に、ファイルサイズを、予めデータ編集テーブルを読み出し可能なサイズに更新しておくことができる。これにより、挿入先ファイルが変更された後に編集処理が中断されファイルに不整合が生じた場合であっても、データ編集プログラムＰＲは、データ編集テーブルに基づいて、挿入先ファイルを編集後の状態に修復することができる。
【００７６】
また、本実施の形態例におけるデータ編集プログラムＰＲは、データ挿入処理の結果を示す情報を有するデータ編集テーブルを出力する。これにより、例えば、上位のインタフェースは、編集処理の結果を的確に検知可能になる。
【００７７】
［除去処理：比較例］
図１６は、比較例におけるデータの除去処理の流れについて説明する第１の図である。同様にして、正方形で示されるクラスタ内の斜線の領域は除去元ファイルのデータを、ブランク部分は非使用領域を示す。なお、比較例において、データは非動画データを示し、網点の領域ｆｆは属性情報を示す。比較例では、属性情報に基づいて非使用領域が管理されることによって、クラスタが非使用領域を含む場合であっても、データへのアクセスが可能になる。
【００７８】
図１６の（１）は、データの除去処理前の除去元ファイルを示す。この例において、除去元ファイルであるファイル１は、６つのクラスタによって構成される。また、データの除去開始位置Ｐ２１は３つ目のクラスタに、除去終了位置Ｐ２２は５つ目のクラスタに含まれる。除去開始位置Ｐ２１から除去終了位置Ｐ２２までのデータが除去対象データＤ２１に該当する。
【００７９】
続いて、図１６の（２）において、ファイル１が、ファイル１とファイル２とに分割される。具体的に、新たな新規クラスタＮ２１に対して、除去開始位置Ｐ２１を有するクラスタ（以下、除去開始クラスタと称する）内の除去開始位置Ｐ２１以降のデータが移動され、ファイル２として記憶されると共に、新規クラスタＮ２１の後に、除去開始クラスタの次のクラスタＣ２１がつなげられる（Ｂ２１）。また、ファイル２の新規クラスタＮ２１と除去開始クラスタの次のクラスタとの間は断片化状態である。この処理において、新規クラスタが１つ使用される。
【００８０】
また、図１６の（２）において、分割によって生成されたファイル２が、さらに、ファイル２とファイル３とに分割される。具体的に、新たな新規クラスタＮ２２に対して、除去終了位置Ｐ２２を有するクラスタ（以下、除去終了クラスタと称する）内の除去終了位置Ｐ２２以降のデータが移動され、ファイル３として記憶されると共に、新規クラスタＮ２２の後に、除去終了クラスタの次のクラスタＣ２２がつなげられる（Ｂ２２）。また、ファイル３の新規クラスタＮ２２と除去終了クラスタの後のクラスタとの間は断片化状態である。この処理において、新規クラスタが１つ使用される。
【００８１】
図１７は、図１６に続いて、比較例におけるデータの除去処理の流れについて説明する第２の図である。図１７の（３）において、ファイル１にファイル３が結合される。具体的に、ファイル１の除去開始クラスタの後に、ファイル３の新規クラスタＮ２２がつながれると共に（Ｂ２３）、ディレクトリエントリにおけるファイル３のエントリが削除される。なお、ファイル１の除去開始クラスタと、ファイル３の新規クラスタＮ２２との間は、断片化状態である。そして、図１７の（３）において、ディレクトリエントリにおけるファイル２のエントリが削除される。
【００８２】
これにより、比較例において、ファイル１から除去対象のデータが除去入される。比較例では、ファイルの分割処理、及び、ファイルの結合処理を利用して、データの除去処理が行われる。このため、除去元ファイルであるファイル１が、除去開始位置、及び、除去終了位置を分割点としてファイル２とファイル３に分割され、ファイル１とファイル３とが結合されることによって、データの除去処理が行われる。
【００８３】
比較例におけるデータの除去処理では、２つの新規クラスタＮ２１、Ｎ２２が使用される。また、データの除去処理後のファイルにおけるクラスタの断片化数は２（Ｂ２２、Ｂ２３）である。また、比較例において、ファイル１、ファイル２の分割時にそれぞれ２回ずつ、ディレクトリエントリへのアクセスが発生する（計４回）。また、ファイル１とファイル３との結合時に２回、ファイル２の削除時に１回、ディレクトリエントリへのアクセスが発生する（計３回）。したがって、比較例におけるデータの除去処理において、合計７回のディレクトリエントリへのアクセスが発生する。
【００８４】
［データの除去処理のフローチャート図：比較例］
図１８は、比較例におけるデータの除去処理について説明するフローチャート図である。同図において、まず、除去元ファイルであるファイル１が、ファイル１と新規のファイル２とに分割される（Ｓ３１）。具体的に、新たな新規クラスタＮ２１に対して除去開始クラスタの除去開始位置以降のデータが移動されると共に、新規クラスタＮ２１の後に除去開始クラスタの次のクラスタＣ２１がつなげられ（Ｂ２１）、ファイル２として記憶される。続いて、生成されたファイル２が、さらに、ファイル２と新規のファイル３とに分割される（Ｓ３２）。具体的に、新たな新規クラスタＮ２２に対して除去終了クラスタの除去終了位置以降のデータが移動されると共に、新規クラスタＮ２２の後に除去終了クラスタの次のクラスタＣ２２がつなげられ（Ｂ２２）、ファイル３として記憶される。
【００８５】
続いて、ファイル１にファイル３が結合される（Ｓ３３）。具体的に、ファイル１の除去開始クラスタの後にファイル３の新規クラスタＮ２１がつなげられ（Ｂ２３）、ディレクトリエントリからファイル３のエントリが削除される。次に、ディレクトリエントリにおけるファイル２のエントリが削除される（Ｓ３４）。
【００８６】
［データの除去処理：本実施の形態例］
図１９は、本実施の形態例におけるデータの除去処理の流れについて説明する第１の図である。同図の（１）は、データの除去処理前の除去元ファイルを示す。この例において、除去元ファイルであるファイル１は、６つのクラスタによって構成される。また、データの除去開始位置は３つ目のクラスタに、除去終了位置は５つ目のクラスタに含まれる。
【００８７】
続いて、図１９の（２）において、データ編集テーブルＴ３１がファイルの末尾に追加される。データ編集テーブルＴ３１には、除去を指示する編集処理種別と、ファイル１における除去開始位置Ｐ３１を示す編集開始位置と、除去対象のデータＤ３１のサイズを示す編集データサイズとを含む編集指示情報が記憶される。データ編集テーブルＴ３１の追記に伴い、ファイル１のサイズが増加するものの、この時点では、ディレクトリエントリで管理されるファイル１のサイズは更新されない。続いて、同図の（３）において、除去開始クラスタの後に、除去終了クラスタがつながれる（Ｂ３１）。除去開始クラスタと除去終了クラスタとの間は断片化状態である。
【００８８】
図２０は、本実施の形態例におけるデータの除去処理の流れについて説明する第２の図である。次に、図２０の（４）において、除去対象のデータＤ３１を構成するクラスタのうち、除去開始クラスタと除去終了クラスタとの間のクラスタＣ３１が解放される。続いて、同図の（５）において、ファイル１のインデックスにおける、各フレームのオフセットが更新される。具体的に、データが除去されることによってオフセットが変更される除去終了位置以降のデータのインデックスが更新される。これにより、除去開始クラスタ内の除去開始位置Ｐ３１以降の領域、及び、除去終了クラスタの除去終了位置Ｐ３２以前の領域が非使用状態に変更される。そして、同図の（６）において、データ編集テーブルＴ３１が削除されると共に、ファイルサイズが更新される。このとき、ファイル１のサイズは、編集前のファイルのサイズから除去対象のデータＤ３１のサイズを減算した値に更新される。
【００８９】
このように、本実施の形態例におけるデータの除去処理において、新規のクラスタは使用されない。また、データの除去処理後のファイルにおけるクラスタの断片化数は１（Ｂ３１）である。また、本実施の形態例において、ファイル１のサイズの更新時に１回、ディレクトリエントリへのアクセスが発生する。なお、データの除去処理において、データ編集テーブルＴ３１を使用しない場合についても、ディレクトリエントリへのアクセスは１回である。
【００９０】
［データの除去処理のフローチャート図：本実施の形態例］
図２１は、本実施の形態例におけるデータの除去処理について説明するフローチャート図である。同図において、データ編集プログラムＰＲは、まず、除去元ファイルであるファイル１のデータの最後尾に、データ編集テーブルＴ３１を追加する（Ｓ４１）。データ編集テーブルＴ３１は、例えば、動画編集ライブラリによって生成され、引き渡される。編集データテーブルを使用しない場合、工程Ｓ４１の処理は不要になる。
【００９１】
続いて、データ編集プログラムＰＲは、除去開始クラスタの後に、除去終了クラスタをつなぐ（Ｂ３１）（Ｓ４２）。次に、データ編集プログラムＰＲは、除去対象のデータＤ３１を構成するクラスタのうち、除去開始クラスタと除去終了クラスタとの間のクラスタＣ３１を解放する（Ｓ４３）。次に、データ編集プログラムＰＲは、ファイル１のデータに含まれる、インデックスが有する各フレームのオフセットを更新する（Ｓ４４）。例えば、データ編集プログラムＰＲは、除去終了位置以降のデータに対応するインデックスを更新する。なお、このとき、データ編集テーブルＴ３１に含まれる編集結果情報における編集データオフセット、及び、編集後のファイルサイズが更新される。具体的に、編集結果情報における、除去対象のデータＤ３１の後続のデータの開始位置を示す編集データオフセット、及び、編集後のファイルサイズが更新される。
【００９２】
続いて、データ編集プログラムＰＲは、データ編集テーブルＴ３１を動画編集ライブラリに渡してファイル１から削除すると共に、ファイル１のファイルサイズを、編集前のサイズから除去対象のデータのサイズを減算した値に更新する（Ｓ４４）。これにより、動画編集ライブラリは、編集結果情報に基づいて、編集処理の内容を的確に検知可能になる。
【００９３】
このように、本実施の形態例におけるデータ編集プログラムＰＲによるデータの除去処理では、比較例に対して、ディレクトリエントリへの更新回数が少なく（７回→１回）、クラスタの断片化数が少ない（２つ→１つ）。また、比較例では新規のクラスタが２つ使用されるのに対し、本実施の形態例では新規のクラスタが使用されない。これにより、本実施の形態例におけるデータ編集プログラムＰＲは、ディレクトリエントリへの更新回数を抑えることにより、二次記憶装置へのアクセス処理を効率化し、データの除去処理を高速化することができる。また、本実施の形態例におけるデータ編集プログラムＰＲは、クラスタの断片化数を抑えることにより、編集後のファイルのへのアクセスを高速化すると共に、ファイルシステムの領域を効率的に使用することができる。また、本実施の形態例におけるデータ編集プログラムＰＲは、新規のクラスタを使用しないことにより、非使用クラスタが不足している場合であっても、データの除去処理を行うことができる。
【００９４】
また、本実施の形態例において、ファイルのデータは、例えば、動画データであるため、クラスタ内に非使用領域が含まれていてもよい。このため、データの編集対象の位置がクラスタの境界に限定されないことから、データ編集プログラムＰＲは、予め二次記憶媒体に記憶されたデータの移動を最小限に抑えることができる。
【００９５】
なお、この例において、ファイル１に対するクラスタチェインのつなぎ替え処理（Ｂ３１）の前に、ファイルサイズの更新処理が行われない。これは、データの除去処理の場合、クラスタチェインのつなぎ替え処理（Ｂ３１）によって、ファイル１を構成するクラスタが減少し、ファイル１の実際のサイズがディレクトリエントリで管理されるサイズよりも小さくなるためである。この場合、ファイルサイズを更新することなく、ファイル１に対するクラスタチェインのつなぎ替え処理（Ｂ３１）後に、データ編集テーブルＴ３１の読み出しが可能である。これにより、データ編集プログラムＰＲは、クラスタチェインのつなぎ替え処理（Ｂ３１）の後に編集処理が中断された場合でも、データ編集テーブルＴ３１に基づいて、ファイル１をデータ編集後の状態に修復することができる。データ編集テーブルＴ３１に基づく、ファイルの修復処理の詳細については後述する。
【００９６】
［データの除去処理の中断］
図２２は、データの除去処理の過程において処理が中断した場合におけるファイルの安全性について説明する図である。同図は、図２１のフローチャート図の各工程に対応して、ファイルの状態と修復方針とを有する。また、ファイルの状態は、ファイルデータの状態、ファイルサイズ、インデックス、データ編集テーブル、未参照データの各状態を示す。
【００９７】
具体的に、図２２において、除去元ファイルであるファイル１は、工程Ｓ４１の前、編集処理前の状態であって、工程Ｓ４５の後、編集処理後の状態である。これにより、編集処理が中断された場合であっても、ファイル１の安全性は確保される。続いて、工程Ｓ４１の後において、データ編集テーブルが追加されているものの、ファイルサイズが更新されていない。このため、ファイル１は編集前の状態であり、ファイル１の安全性は確保される。
【００９８】
また、工程Ｓ４２〜工程Ｓ４４の後において編集処理が中断された場合、クラスタチェインのつなぎ替え処理（Ｂ３１）が行われたことによって、ファイル１は編集前の状態から変更されている。この場合、ファイル１を構成するクラスタが減少しているため、ファイル１のサイズは変更されていないものの、データ編集プログラムＰＲはデータ編集テーブルを読み出し可能である。そこで、データ編集プログラムＰＲは、データ編集テーブルの編集指示情報に基づいて、ファイルサイズ及びインデックスを更新し、ファイルの不整合を解消する。これにより、除去元ファイルが編集後の状態に修復される。なお、除去対象のデータが未参照データとして残留している場合、削除される。
【００９９】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、データ編集テーブルを生成することによって、編集処理におけるいずれの工程の後に処理が中断された場合であっても、除去元ファイルを編集前、または、編集後の状態に修復することができる。これにより、除去元ファイルの安全性が維持される。また、データ編集プログラムＰＲは、データ編集テーブルをファイルの最後尾に付加することによって、二次記憶装置に記憶されたデータのみに基づいて、除去元ファイルを修復することができる。なお、ファイルの修復処理の詳細については、後述する。
【０１００】
以上のように、本実施の形態例におけるデータ編集プログラムＰＲは、除去元ファイルにおける除去開始位置から除去終了位置の間のデータを除去する際に、除去元ファイルの除去開始位置を有する除去開始クラスタ内の除去開始位置以降のデータと、除去終了位置を有する除去終了クラスタ内の除去終了位置以前のデータとを削除し、除去開始クラスタの後に除去終了クラスタがつながるように、管理データを編集する。
【０１０１】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、ファイルの不要な分割処理、及び、結合処理が抑えられる。これにより、本実施の形態例におけるデータ編集プログラムＰＲは、データの除去処理による編集後のファイルの断片化数を少なく抑えると共に、ディレクトリエントリへの更新回数を少なく抑えることができる。これにより、データ編集プログラムＰＲは、データの除去処理を効率的に高速に行うことができると共に、編集後のファイルへのアクセスを高速化する。また、本実施の形態例におけるデータ編集プログラムＰＲは、新たに新規クラスタを使用しないことにより、使用可能なクラスタが存在しない場合であっても、データの除去処理を行うことができる。また、データ編集プログラムＰＲは、予めクラスタに記憶されたデータの移動量を最小限に抑えることができ、データの除去処理を高速に行うことを可能にする。
【０１０２】
また、本実施の形態例におけるデータ編集プログラムＰＲは、入力された編集指示情報であって、除去処理を示す編集種別と、除去処理における除去開始位置を示す編集対象位置と、除去処理における除去データのサイズを示す編集対象サイズとを含む編集指示情報を、データ編集処理の対象ファイルのデータ末尾に記憶する。また、データ編集プログラムＰＲは、データ編集処理の対象ファイルの読み出しが行えないときに、編集指示情報に基づいて当該対象のファイルを、データ編集処理の前、または、後の状態のいずれかに修復する。
【０１０３】
これにより、本実施の形態例におけるデータ編集プログラムＰＲは、対象のファイルからのデータの除去処理が途中で中断された場合であっても、対象のファイルを、データ挿入処理後の状態に修復することができる。これにより、除去元ファイルの安全性が確保される。
【０１０４】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、新規クラスタの前にクラスタをつなげる管理データの編集前であって、データ領域において管理される編集前のファイルのサイズが、管理データの編集後のファイルのサイズに編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に管理されるサイズを合計サイズに更新する。
【０１０５】
データの除去処理において、除去元ファイルのクラスタチェインの変更前において、変更前のファイルのサイズは、変更後のファイルのサイズにデータ編集テーブル（編集指示情報）のサイズを加えた合計サイズより大きい。データ除去処理の場合、データ編集プログラムＰＲは、除去元ファイルのクラスタチェインの変更後であってもデータ編集テーブルを読み出し可能であるため、ファイルサイズを変更することなく、データ編集テーブルに基づいて、除去元ファイルの不整合を修復することができる。
【０１０６】
また、本実施の形態例におけるデータ編集プログラムＰＲは、データ挿入処理の結果を示す情報を有するデータ編集テーブルを出力する。これにより、例えば、上位のインタフェースは、編集処理の結果を的確に検知可能になる。
【０１０７】
［データの移動処理：比較例］
図２３は、比較例におけるデータの移動処理の流れについて説明する第１の図である。同様にして、正方形で示されるクラスタ内の斜線の領域は除去元ファイルのデータを、ブランク部分は非使用領域を示す。また、データの移動処理において、横線の領域、及び、格子柄の領域は移動元ファイルのデータを示し、横線の領域は、移動対象のデータＤ４１を示す。なお、比較例において、データは非動画データを示し、網点の領域ｆｆは属性情報を示す。比較例では、属性情報に基づいて非使用領域が管理されることによって、クラスタが非使用領域を含む場合であっても、データへのアクセスが可能になる。
【０１０８】
図２３の（１）は、移動処理前における、移動先ファイルであるファイル１、及び、移動元ファイルであるファイル２を示す。この例において、ファイル１は５つのクラスタによって構成され、データの移動挿入位置Ｐ４１は３つ目のクラスタに含まれる。また、ファイル２は６つのクラスタによって構成され、データの移動開始位置Ｐ４２は３つ目のクラスタ、移動終了位置Ｐ４３は５つ目のクラスタに含まれる。この例において、ファイル２における移動開始位置Ｐ４２から移動終了位置Ｐ４３までの挿入データＤ４１が、ファイル１における移動挿入位置Ｐ４１に移動される。
【０１０９】
続いて、図２３の（２）において、ファイル１が、ファイル１とファイル３とに分割される。具体的に、新たな新規クラスタＮ４１に対して、移動挿入位置Ｐ４１を有するクラスタ（以下、移動挿入クラスタと称する）内の移動挿入位置Ｐ４１以降のデータが移動され、ファイル３として記憶されると共に、新規クラスタＮ４１の後に、移動挿入クラスタの次のクラスタＣ４１がつなげられる（Ｂ４１）。ファイル３の新規クラスタＮ４１と移動挿入クラスタの次のクラスタＣ４１との間は断片化状態である。
【０１１０】
また、図２３の（２）において、ファイル２が、ファイル２とファイル４とに分割される。具体的に、新たな新規クラスタＮ４２に対して、移動開始位置Ｐ４２を有するクラスタ（以下、移動開始クラスタと称する）内の移動開始位置Ｐ４２以降のデータが移動され、ファイル４として記憶されると共に、新規クラスタＮ４２の後に、移動開始クラスタの次のクラスタＣ４２がつなげられる（Ｂ４２）。ファイル４の新規クラスタＮ４２と移動開始クラスタの次のクラスタＣ４２との間は断片化状態である。さらに、同図の（２）において、ファイル４が、ファイル４とファイル５とに分割される。具体的に、新たな新規クラスタＮ４３に対して、移動終了位置Ｐ４３を有するクラスタ（以下、移動終了クラスタと称する）内の移動終了位置Ｐ４３以降のデータが移動され、ファイル５として記憶されると共に、新規クラスタＮ４３の後に、移動終了クラスタの次のクラスタＣ４３がつなげられる（Ｂ４３）。ファイル５の新規クラスタＮ４３と移動終了クラスタの次のクラスタＣ４３との間は断片化状態である。図２３の（２）において、新たなクラスタＮ４１〜Ｎ４３が３つ使用される。
【０１１１】
図２４は、図２３に続いて、比較例におけるデータの移動処理の流れについて説明する第２の図である。同図の（３）において、ファイル１にファイル４が結合される。具体的に、ファイル１の移動挿入開始クラスタの後に、ファイル４の新規クラスタＮ４２がつながれると共に（Ｂ４４）、ディレクトリエントリにおけるファイル４のエントリが削除される。以下、ファイル４は削除されたものの、ファイル４に紐付けられていたクラスタをファイル４のクラスタと称する。ファイル１の移動挿入クラスタと、新規クラスタＮ４２との間は断片化状態である。
【０１１２】
また、図２４の（３）において、ファイル４を結合済みのファイル１に、ファイル３が結合される。具体的に、ファイル１の最後尾の移動終了クラスタ（ファイル４の最後尾のクラスタ）の次に、ファイル３の新規クラスタＮ４１がつながれると共に（Ｂ４５）、ディレクトリエントリにおけるファイル３のエントリが削除される。ファイル１の最後尾の移動終了クラスタ（ファイル４の最後尾のクラスタ）と、ファイル３の新規クラスタＮ４１との間は断片化状態である。さらに、同図の（３）において、ファイル２にファイル５が結合される。即ち、移動元ファイルについて、結合処理が行われる。具体的に、ファイル２の移動開始クラスタの後に、ファイル５の新規クラスタＮ４３がつながれると共に（Ｂ４６）、ディレクトリエントリにおけるファイル５のエントリが削除される。ファイル２の移動開始クラスタと、ファイル５の新規クラスタＮ４３との間は断片化状態である。
【０１１３】
これにより、比較例において、ファイル２における移動対象データＤ４１が、ファイル１の移動挿入位置Ｐ４１に移動される。比較例では、ファイルの分割処理、及び、ファイルの結合処理を利用して、データの移動処理が行われる。このため、移動元ファイルであるファイル２が、移動開始位置、及び、移動終了位置を分割点としてファイル４とファイル５に分割される。また、移動先ファイルであるファイル１が、移動挿入位置を分割点としてファイル３に分割される。そして、ファイル１とファイル４、及び、ファイル３が結合されることによって、移動先ファイルが、ファイル２とファイル５が結合されることによって、移動元ファイルが生成される。
【０１１４】
このように、比較例におけるデータの移動処理において、３つの新規クラスタＮ４１、Ｎ４２、Ｎ４３が使用される。また、データの移動処理後のファイルにおけるクラスタの断片化数は６（Ｂ４１〜Ｂ４６）である。また、比較例において、３回のファイル分割時にそれぞれ２回ずつ（計６回）、３回のファイルの結合時にそれぞれ２回ずつ（計６回）、ディレクトリエントリへのアクセスが発生する。したがって、比較例におけるデータの移動処理において、合計１２回のディレクトリエントリへのアクセスが発生する。
【０１１５】
［データの移動処理のフローチャート図：比較例］
図２５は、比較例におけるデータの移動処理について説明するフローチャート図である。同図において、まず、移動先ファイルであるファイル１が、ファイル１と新規のファイル３とに分割される（Ｓ５１）。具体的に、新たな新規クラスタＮ４１に対して移動挿入クラスタの移動挿入位置以降のデータが移動されると共に、新規クラスタＮ４１の後に移動挿入クラスタの次のクラスタＣ４１がつなげられ（Ｂ４１）、ファイル３として記憶される。
【０１１６】
続いて、移動元ファイルであるファイル２が、ファイル２と新規のファイル４とに分割される（Ｓ５２）。具体的に、新たな新規クラスタＮ４２に対して移動開始クラスタの移動開始位置以降のデータが移動されると共に、新規クラスタＮ４２の後に移動開始クラスタの次のクラスタＣ４２がつなげられ（Ｂ４２）、ファイル４として記憶される。そして、生成されたファイル４が、さらに、ファイル４と新規のファイル５とに分割される（Ｓ５３）。具体的に、新たな新規クラスタＮ４３に対して移動終了クラスタの移動終了位置以降のデータが移動されると共に、新規クラスタＮ４３の後に移動終了クラスタの次のクラスタＣ４３がつなげられ（Ｂ４３）、ファイル５として記憶される。
【０１１７】
続いて、ファイル１にファイル４が結合される（Ｓ５４）。具体的に、ファイル１の移動挿入クラスタの後にファイル４の新規クラスタＮ４２がつなげられ（Ｂ４４）、ディレクトリエントリからファイル４のエントリが削除される。続いて、ファイル４を結合済みのファイル１に、ファイル３が結合される（Ｓ５５）。具体的に、ファイル１の最後尾の移動終了クラスタの後にファイル３の新規クラスタＮ４１がつなげられ（Ｂ４５）、ディレクトリエントリからファイル３のエントリが削除される。これにより、移動先ファイルに対する結合処理が行われる。そして、ファイル２にファイル５が結合される（Ｓ５６）。具体的に、ファイル２の移動開始クラスタの後にファイル５の新規クラスタＮ４３がつなげられ（Ｂ４６）、ディレクトリエントリからファイル５のエントリが削除される。これにより、移動元ファイルに対する結合処理が行われる。
【０１１８】
［データの移動処理：本実施の形態例］
図２６は、本実施の形態例におけるデータの移動処理の流れについて説明する第１の図である。同図の（１）は、比較例と同様にして、データの移動処理前における、移動先ファイルであるファイル１、及び、移動元ファイルであるファイル２を示す。この例において、ファイル１は５つのクラスタによって構成され、データの移動挿入位置Ｐ５１は３つ目のクラスタに含まれる。また、ファイル２は６つのクラスタによって構成され、データの移動開始位置Ｐ５２は３つ目のクラスタ、移動終了位置Ｐ５３は５つ目のクラスタに含まれる。
【０１１９】
続いて、図２６の（２）において、データ編集テーブルＴ５１、Ｔ５２がファイル１及びファイル２の最後尾に追加される。ファイル１のデータ編集テーブルＴ５１には、挿入を指示する編集処理種別と、ファイル１における挿入位置を示す編集開始位置と、移動対象のデータのサイズを示す編集データサイズとを含む編集指示情報が記憶される。また、ファイル２のデータ編集テーブルＴ５２には、除去を指示する編集処理種別と、ファイル２における除去開始位置を示す編集開始位置と、移動対象のデータのサイズを示す編集データサイズとを含む編集指示情報が記憶される。なお、データ編集テーブルＴ５１、Ｔ５２の追記に伴い、ファイル１及びファイル２のサイズが増加するものの、この時点では、ディレクトリエントリで管理されるファイル１及びファイル２のサイズは更新されない。
【０１２０】
図２７は、図２６に続いて、本実施の形態例におけるデータの移動処理の流れについて説明する第２の図である。図２７の（３）において、新規クラスタＮ５１、Ｎ５２が２つ確保される。そして、１つ目の新規クラスタＮ５１の後に、ファイル２の移動開始位置Ｐ５２を有するクラスタ（以下、移動開始クラスタと称する）の次のクラスタＣ５１がつながれる。また、２つ目の新規クラスタＮ５２の後には、ファイル１の移動挿入位置Ｐ５１を有するクラスタ（以下、移動挿入クラスタと称する）の次のクラスタＣ５２がつながれる（Ｂ５１）。１つ目の新規クラスタＮ５１とファイル２の移動開始クラスタの次のクラスタＣ５１との間、２つ目の新規クラスタＮ５２とファイル１の移動挿入クラスタの次のクラスタＣ５２との間は、断片化状態である。
【０１２１】
続いて、図２７の（４）において、新規クラスタＮ５１、Ｎ５２にそれぞれデータが書き込まれる。具体的に、例えば、１つ目の新規クラスタＮ５１には、ファイル２の移動開始クラスタ内の移動開始位置Ｐ５２以降のデータが書き込まれる。また、２つ目の新規クラスタＮ５２には、ファイル２の移動終了位置Ｐ５３を有するクラスタ（以下、移動終了クラスタと称する）内の移動終了位置Ｐ５３以前のデータと、ファイル１の移動挿入クラスタの移動挿入位置Ｐ５１以降のデータとが書き込まれる。
【０１２２】
図２８は、図２７に続いて、本実施の形態例におけるデータの移動処理の流れについて説明する第３の図である。続いて、図２８の（５）において、ダミーファイルが新規作成され、１つ目の新規クラスタＮ５１に紐付けられる。なお、ダミーファイルの新規作成時、ダミーファイルのサイズは、ファイル１、及び、ファイル２のデータ編集テーブルＴ５１、Ｔ５２を読み出し可能なサイズに設定される。これにより、この時点で、ダミーファイルに基づいて、ファイル２のデータ編集テーブルＴ５２が読み出し可能になる。また、ダミーファイルが生成されることにより、移動データＤ５１がダミーファイルに紐付けられる。これにより、同図の（６）のクラスタチェインのつなぎ替え処理（Ｂ５３）によって移動データＤ５１がファイル２から除去された後に編集処理が中断された場合でも、移動データＤ５１が失われることが回避される。そして、同図の（６）において、ファイル２の移動開始クラスタの後に、移動終了クラスタがつながれる（Ｂ５３）。移動開始クラスタと移動終了クラスタとの間は、断片化状態である。
【０１２３】
図２９は、図２８に続いて、本実施の形態例におけるデータの移動処理の流れについて説明する第４の図である。図２９の（７）において、ファイル２の移動終了クラスタの前のクラスタＣ５１の後に、２つ目の新規クラスタＮ５２がつながれる（Ｂ５４）。移動終了クラスタの前のクラスタＣ５１と、２つ目の新規クラスタＮ５２とは、断片化状態である。これにより、この時点で、ダミーファイルに基づいて、ファイル１のデータ編集テーブルＴ５１が読み出し可能になる。
【０１２４】
そして、図２９の（８）において、ファイル１の移動挿入クラスタの後に１つ目の新規クラスタＮ５１がつながれる前に、ファイル１のファイルサイズが変更される。即ち、ファイル１に対するクラスタチェインのつなぎ替え処理（Ｂ５５）の前に、ディレクトリエントリで管理されるファイル１のサイズが更新される。具体的に、ファイル１のサイズが、編集前のファイルサイズに、移動データＤ５１のサイズ及びデータ編集テーブルＴ５１のサイズを加えた値に更新される。これにより、クラスタチェインのつなぎ替え処理（Ｂ５５）の後に、ファイル１のデータ編集テーブルＴ５１が読み出し可能状態になる。そして、（８）において、ファイル１の移動挿入クラスタの後に、１つ目の新規クラスタＮ５１がつながれる。移動挿入クラスタと１つ目の新規クラスタＮ５１とは、断片化状態である。
【０１２５】
データ挿入の例で説明したとおり、ファイル１のクラスタチェインが変更されることにより、ファイル１を構成するクラスタの構成が変更されると共に、ファイル１を構成するクラスタが増加することに伴いデータ編集テーブルＴ５１が読み出し不可状態になる。このため、ファイル１のクラスタチェインのつなぎ替え処理（Ｂ５５）の前に、予め、ディレクトリエントリにおいて管理されるファイル１のサイズが、データ編集テーブルＴ５１を読み出し可能なサイズに更新される。これにより、クラスタチェインのつなぎ替え処理（Ｂ５５）の後に編集処理が中断された場合でも、データ編集テーブルＴ５１に基づいて、ファイル１がデータ編集後の状態に修復可能になる。データ編集テーブルＴ５１に基づく、ファイルの修復処理の詳細については後述する。
【０１２６】
なお、データ挿入処理の例で説明したとおり、図２７の（３）において、２つ目の新規クラスタＮ５２の後に、ファイル１の移動挿入クラスタの次のクラスタＣ５２がつながれる場合は（Ｂ５２）、ファイル１を構成するクラスタの構成に影響しないため、クラスタチェインのつなぎ替え処理の前にファイルサイズの更新処理が行われない。
【０１２７】
図３０は、図２９に続いて、本実施の形態例におけるデータの移動処理の流れについて説明する第５の図である。図３０の（９）において、ディレクトリエントリからダミーファイルのエントリが削除される。図２９の（８）において、クラスタチェインのつなぎ替え処理（Ｂ５５）によって、移動データＤ５１がファイル１に紐付けられたため、ダミーファイルのエントリは不要になる。
【０１２８】
続いて、同図の（１０）において、ファイル１、及び、ファイル２のインデックスにおける、各フレームのオフセットが更新される。移動データＤ５１が挿入されることによって、ファイル１における移動挿入位置Ｐ５１の後続のデータ、及び、ファイル２における移動終了位置Ｐ５３以降のデータのオフセットが変更される。このため、オフセットが変更されたデータに対応するインデックスが更新される。また、インデックスが更新されることによって、移動挿入クラスタ内移動挿入位置Ｐ５１以降のデータ、移動開始クラスタ内の移動開始位置Ｐ５２以降のデータ、及び、移動終了クラスタ内の移動終了位置Ｐ５３以前のデータが非使用状態に更新される。
【０１２９】
そして、図３０の（１０）において、ファイル１、２の最後尾に付加されたデータ編集テーブルＴ５１、Ｔ５２が削除されると共に、各ファイルのファイルサイズが更新される。このとき、ファイル１のサイズは、編集前のファイルのサイズに移動データのサイズを加算した値に更新される。また、ファイル２のサイズは、編集前のファイルのサイズから移動データのサイズが減算された値に更新される。
【０１３０】
このように、本実施の形態例におけるデータの移動処理において、２つの新規クラスタＮ５１、Ｎ５２が使用される。また、データの移動処理後のファイルにおけるクラスタの断片化数は５（Ｂ５１〜Ｂ５５）である。また、本実施の形態例において、ファイル１の２回のサイズ変更時、ファイル２の１回のサイズ変更時に、ディレクトリエントリへのアクセスが発生する（計３回）。また、本実施の形態例において、ダミーファイルの新規作成時に１回、削除時に１回、ディレクトリエントリへのアクセスが発生する（計２回）。したがって、本実施の形態例におけるデータの移動処理において、合計５回のディレクトリエントリへのアクセスが発生する。
【０１３１】
［データ編集テーブルを使用しない場合］
なお、データ編集テーブルを使用しない場合、図２９の（８）の処理の直前に行われるファイル１のファイルサイズの更新処理が不要になる。これにより、この場合、ファイルサイズの更新処理は、図３０の（１０）におけるファイル１、２のサイズの更新処理の計２回となる。これにより、ディレクトリエントリへの更新回数は計４回になる。なお、本実施の形態例におけるデータ移動処理において、移動データＤ５１が失われることを考慮しない場合、ダミーファイルの生成処理、及び、削除処理は不要となる。ダミーファイルの生成処理が不要となる場合、ダミーファイルの生成、及び、削除に要するディレクトリエントリへのアクセスが不要になるため、ディレクトリエントリへの更新回数は、さらに、２回削減される。
【０１３２】
［データの移動処理のフローチャート図：本実施の形態例］
図３１は、本実施の形態例におけるデータの移動処理について説明するフローチャート図である。同図において、データ編集プログラムＰＲは、まず、移動先ファイルであるファイル１、及び、移動元であるファイル２の末尾に、データ編集テーブルＴ５１、Ｔ５２を追加する（Ｓ６１）。データ編集テーブルＴ５１、Ｔ５２は、例えば、動画編集ライブラリによって生成され、引き渡される。データ編集テーブルＴ５１、Ｔ５２を使用しない場合、工程Ｓ６１の処理は不要になる。
【０１３３】
続いて、データ編集プログラムＰＲは、新規のクラスタＮ５１、Ｎ５２を２つ確保する（Ｓ６２）。なお、このとき、１つ目の新規クラスタＮ５１の後に、ファイル２の移動開始クラスタの次のクラスタＣ５１が、２つ目の新規クラスタＮ５２の後に、ファイル１の移動挿入クラスタの次のクラスタＣ５２がつながれる（Ｂ５１、Ｂ５２）。続いて、データ編集プログラムＰＲは、それぞれの新規クラスタＮ５１、Ｎ５２にデータを書き込む（Ｓ６３）。例えば、１つ目の新規クラスタＮ５１には、ファイル２の移動開始クラスタ内の移動開始位置Ｐ５２以降のデータが、２つ目の新規クラスタＮ５２には、ファイル２の移動終了クラスタ内の移動終了位置Ｐ５３以前のデータとファイル１の移動挿入クラスタの移動挿入位置Ｐ５１以降のデータとが書き込まれる。次に、データ編集プログラムＰＲは、ダミーファイルを新規作成し、１つ目の新規クラスタＮ５１に紐付ける（Ｓ６４）。これにより、挿入データＤ５１がダミーファイルに紐付けられる。
【０１３４】
続いて、データ編集プログラムＰＲは、ファイル２の移動開始クラスタの後に移動終了クラスタをつなぐ（Ｂ５３）（Ｓ６５）。これにより、移動元ファイルであるファイル２が結合される。次に、データ編集プログラムＰＲは、ファイル２の移動終了クラスタの前のクラスタＣ５１の後に、２つ目の新規クラスタＮ５２をつなぐ（Ｂ５４）（Ｓ６６）。そして、データ編集プログラムＰＲは、ファイル１に対するクラスタチェインのつなぎ替え処理（工程Ｓ６８）の前に、ファイル１のファイルサイズを、クラスタチェイン変更後のデータ、及び、データ編集テーブルＴ５１を読み取り可能な値に更新する（Ｓ６７）。具体的に、データ編集プログラムＰＲは、ファイル１のサイズを、編集前のファイル１のサイズに、移動データのサイズ及びデータ編集テーブルＴ５１のサイズを加算した値に更新する。なお、データ編集テーブルＴ５１、Ｔ５２を使用しない場合、工程Ｓ６７の処理は不要になる。
【０１３５】
続いて、データ編集プログラムＰＲは、ファイル１の移動挿入クラスタの後に、１つ目の新規クラスタＮ５１をつなげる（Ｂ５５）（Ｓ６８）。続いて、データ編集プログラムＰＲは、ディレクトリエントリからダミーファイルのエントリを削除する（Ｓ６９）。そして、データ編集プログラムＰＲは、ファイル１におけるオフセットの変更が生じた移動挿入位置Ｐ５１の後のデータ、及び、ファイル２における移動終了位置以降のデータのオフセットを更新する（Ｓ７０）。なお、このとき、データ編集プログラムＰＲは、ファイル１、２のデータ編集テーブルＴ５１、Ｔ５２に含まれる編集データオフセット、及び、編集後のファイルサイズを更新する。具体的に、ファイル１のデータ編集テーブルＴ５１には、移動データＤ５１の開始位置を示す編集データオフセットと、編集後のファイルサイズとを含む編集結果情報が記憶される。また、ファイル２のデータ編集テーブルＴ５２には、挿入終了位置以降のデータの開始位置を示す編集データオフセットと、編集後のファイルサイズとを含む編集結果情報が記憶される。
【０１３６】
続いて、データ編集プログラムＰＲは、ファイル１、２の最後尾に付加されたデータ編集テーブルＴ５１、Ｔ５２を動画編集ライブラリに渡して削除すると共に、各ファイルのファイルサイズを更新する（Ｓ７１）。これにより、動画編集ライブラリは、編集結果情報に基づいて、編集処理の内容を的確に検知可能になる。また、データ編集プログラムＰＲは、ファイル１のサイズを、編集前のファイルのサイズに移動データのサイズを加算した値に、ファイル２のサイズを、編集前のファイルのサイズから移動データのサイズを減算した値に更新する。
【０１３７】
［データの移動処理におけるパターン］
図２６〜図３１にかけて、本実施の形態例におけるデータの移動処理について説明した。データの移動処理における２つの新規のクラスタに書き込む対象のデータ、及び、クラスタチェインのつなぎ方は、図２６〜図３１で示した方法とは別の方法によって行われてもよい。
【０１３８】
図３２は、データの移動処理における２つの新規クラスタに書き込まれるデータのパターンについて説明する図である。同図の上部の表Ｈ１において、図２６〜図３１で説明したパターン（１−１）を含む３つのパターンが例示される。表Ｈ１において、移動挿入クラスタ、移動開始クラスタ、移動終了クラスタにおける領域が、Ａ領域、ａ領域、Ｂ領域、ｂ領域、Ｃ領域、ｃ領域として示される。各領域について説明する。同図の下に示すとおり、Ａ領域は、移動先ファイルにおける移動挿入クラスタ内の移動挿入位置以前の領域を、ａ領域は、移動挿入位置以降の領域を示す。Ｂ領域は、移動元ファイルにおける移動開始クラスタ内の移動開始位置以降の領域を、ｂ領域は、移動開始位置以前の領域を示す。また、Ｃ領域は、移動元ファイルにおける移動終了クラスタ内の移動終了位置以前の領域を、ｃ領域は移動終了位置以降の領域を示す。
【０１３９】
まず、図３２の表Ｈ１におけるパターン１−１、パターン１−２について説明する。パターン１−１、パターン１−２は、「Ｂ領域＋Ｃ領域≦クラスタサイズ」である場合に適用される。これは、移動開始クラスタ内の移動開始位置以降の領域Ｂと、移動終了クラスタ内の移動終了位置以前の領域Ｃとが１つのクラスタに収まる場合を示す。そして、さらに、「a領域＜Ｂ領域」の場合はパターン１−１が、「a領域≧Ｂ領域」の場合はパターン１−２が適用される。
【０１４０】
［パターン１−１］
パターン１−１について、具体的に説明する。前述したとおり、パターン１−１は、「Ｂ領域＋Ｃ領域≦クラスタサイズ」であって、「a領域＜Ｂ領域」である場合に適用される。図２６〜図３１で説明したとおり、パターン１−１において、１つ目の新規クラスタＮ５１に移動開始クラスタ内の移動開始位置以降の領域（Ｂ領域）のデータが書き込まれると共に、２つ目の新規クラスタＮ５２に移動終了クラスタ内の移動終了位置以前の領域（Ｃ領域）のデータ、及び、移動挿入クラスタ内の移動挿入位置以降の領域（ａ領域）のデータが書き込まれる。
【０１４１】
クラスタのサイズは均一である。このため、「Ｂ領域＋Ｃ領域≦クラスタサイズ」である場合、「Ｂ領域≦ｃ領域」であることを示す。「Ｂ領域≦ｃ領域」の条件を、「a領域＜Ｂ領域」の条件と合わせると、「ａ領域＜ｃ領域」であることを示す。また、「ａ領域＜ｃ領域」である場合、「Ｃ領域＜Ａ領域」であることを示す。この場合、「ａ領域＋Ａ領域＝クラスタサイズ」であることにより、１つのクラスタにａ領域のデータとＣ領域のデータとが収まることを意味する。したがって、１つのクラスタが、ａ領域とＣ領域によってシェアされる。即ち、２つ目の新規クラスタＮ５２に、移動終了クラスタ内の移動終了位置以前の領域（Ｃ領域）のデータ、及び、移動挿入クラスタ内の移動挿入位置以降の領域（ａ領域）のデータが書き込まれる。
【０１４２】
［パターン１−２］
続いて、パターン１−２について説明する。前述したとおり、パターン１−２は、「Ｂ領域＋Ｃ領域≦クラスタサイズ」であって、「a領域≧Ｂ領域」である場合に適用される。パターン１−２において、１つ目の新規クラスタＮ５１に、移動挿入クラスタ内の移動挿入位置以前の領域（Ａ領域）のデータと、移動開始クラスタ内の移動開始位置以降の領域（Ｂ領域）のデータとが書き込まれると共に、２つ目の新規クラスタＮ５２に移動終了クラスタ内の移動終了位置以前の領域（Ｃ領域）のデータが書き込まれる。
【０１４３】
「ａ領域≧Ｂ領域」である場合、「ａ領域＋Ａ領域＝クラスタサイズ」であることにより、ａ領域以内のサイズであるＢ領域と、Ａ領域とは、１つのクラスタに収まることを意味する。したがって、１つのクラスタがＡ領域とＢ領域とによってシェアされる。即ち、１つ目の新規クラスタＮ５１に、移動挿入クラスタ内の移動挿入位置以前の領域（Ａ領域）のデータと、移動開始クラスタ内の移動開始位置以降の領域（Ｂ領域）のデータとが書き込まれる。
【０１４４】
［パターン２］
パターン２は、「Ｂ領域＋Ｃ領域＞クラスタサイズ」に適用される。これは、移動開始クラスタ内の移動開始位置以降のＢ領域と、移動終了クラスタ内の移動終了位置以前のＣ領域が１つのクラスタに収まらない場合を示す。「Ｂ領域＋Ｃ領域＞クラスタサイズ」である場合、「Ｃ領域＋ｃ領域＝クラスタサイズ」であることから、Ｂ領域とｃ領域とは１つのクラスタに収まることを意味する。このため、パターン２において、１つ目の新規クラスタＮ５１に移動開始クラスタ内の移動開始位置以降の領域（Ｂ領域）のデータが書き込まれると共に、２つ目の新規クラスタＮ５２に移動挿入クラスタ内の移動挿入位置以降の領域（ａ領域）のデータが書き込まれる。また、移動元ファイルにおいて、移動開始クラスタに、移動終了クラスタ内の移動終了位置以降の領域（ｃ領域）のデータが書き込まれる。
【０１４５】
このように、本実施の形態例におけるデータ編集プログラムＰＲは、データの移動処理において、編集対象の位置の前後のデータであって、３つの領域のデータを、２つの新規クラスタに収めることができる。続いて、パターン１−２、パターン２の具体例について、図に基づいて説明する。
【０１４６】
［パターン１−２の具体例］
図３３は、パターン１−２におけるデータの移動処理の具体例について説明する図である。同図の（Ａ）において、図３１のフローチャート図における工程Ｓ６２の処理として、２つの新規クラスタＮ５１、Ｎ５２が確保されると共に、１つ目の新規クラスタＮ５１の後に、ファイル２の移動開始クラスタの次のクラスタＣ５１が、２つ目の新規クラスタＮ５１の後に、ファイル１の移動挿入クラスタがつながれる（Ｂ６１、Ｂ６２）。そして、続く工程Ｓ６３において、１つ目の新規クラスタＮ５１に、ファイル１（移動先ファイル）の移動挿入クラスタ内の移動挿入位置以前のデータと、ファイル２（移動元ファイル）の移動開始クラスタ内の移動開始位置以降のデータとが書き込まれる。また、同工程において、２つ目の新規クラスタＮ５２に、ファイル２の移動終了クラスタ内の移動終了位置以前のデータが書き込まれる。
【０１４７】
そして、図３３の（Ｂ）において、図３１の工程Ｓ６５の処理として、パターン１−１と同様にして、ファイル２の移動開始クラスタの後に、移動終了クラスタがつながれる（Ｂ６３）。また、図３１の工程Ｓ６６において、パターン１−１と同様にして、ファイル２の移動終了クラスタの前のクラスタＣ５１の後に、２つ目の新規クラスタＮ５２がつながれる（Ｂ６４）。また、図３１の工程Ｓ６８において、ファイル１の移動挿入クラスタの前クラスタＣ５３の後に、１つ目の新規クラスタＮ５１がつながれる（Ｂ６５）。
【０１４８】
このようにして、パターン１−２の場合も同様にして、ファイル２における移動開始位置から移動終了位置までの移動データが、ファイル１における移動挿入位置に移動される。また、パターン１−２のデータの移動処理において、パターン１−１と同様にして、２つの新規クラスタＮ５１、Ｎ５２が使用されると共に、移動処理後のファイルにおけるクラスタの断片化数は５（Ｂ６１〜Ｂ６５）である。また、ディレクトリエントリへのアクセスが発生回数も、パターン１−１の同様である。
【０１４９】
［パターン２の具体例］
図３４は、パターン２におけるデータの移動処理の具体例について説明する図である。同図の（Ａ）において、図３１のフローチャート図における工程Ｓ６２の処理として、２つの新規クラスタＮ５１、Ｎ５２が確保されると共に、１つ目の新規クラスタＮ５１の後に、ファイル２の移動開始クラスタの次のクラスタＣ５１が、２つ目の新規クラスタＮ５２の後に、ファイル１の移動挿入クラスタの次のクラスタＣ５２がつながれる（Ｂ７１、Ｂ７２）。そして、続く工程Ｓ６３において、１つ目の新規クラスタＮ５１に、ファイル２（移動元ファイル）の移動開始クラスタ内の移動開始位置以降のデータが書き込まれると共に、２つ目の新規クラスタＮ５２に、ファイル１の移動挿入クラスタ内の移動挿入位置以降のデータが書き込まれる。さらに、パターン２では、同工程において、ファイル２の移動開始クラスタにおける移動開始位置以前のデータに続いて、移動終了クラスタの移動終了位置以降のデータが書き込まれる。
【０１５０】
そして、図３４の（Ｂ）において、図３１の工程Ｓ６５の処理として、ファイル２の移動開始クラスタの後に移動終了クラスタの次のクラスタＣ５４がつながれる（Ｂ７３）。また、図３１の工程Ｓ６６において、ファイル２の移動終了クラスタの後に、２つ目の新規クラスタＮ５２がつながれる（Ｂ７４）。また、図３１の工程Ｓ６８において、ファイル１の移動挿入クラスタの後に、１つ目の新規クラスタＮ５１がつながれる（Ｂ７５）。
【０１５１】
このようにして、パターン２の場合も同様にして、ファイル２における移動開始位置から移動終了位置までの移動データが、ファイル１における移動挿入位置に移動される。また、パターン２のデータの移動処理において、パターン１−１、パターン１−２と同様にして、２つの新規クラスタＮ５１、Ｎ５２が使用されると共に、移動処理後のファイルにおけるクラスタの断片化数は５（Ｂ７１〜Ｂ７５）である。また、ディレクトリエントリへのアクセスが発生回数も、パターン１−１、パターン１−２と同様である。
【０１５２】
このように、いずれのパターンにおいても、２つの領域のデータが１つのクラスタを共有することによって、新規クラスタの数は２つに、ファイルの断片化数は５に抑えられる。また、本実施の形態例におけるデータの移動処理では、比較例に対して、ディレクトリエントリへの更新回数が少なく（１２回→５回）、クラスタの断片化数が少ない（６つ→５つ）。なお、本実施の形態例においてデータ編集テーブルを使用しない場合、ディレクトリエントリへの更新回数はさらに１回分、抑えられる（１２回→４回）。
【０１５３】
したがって、本実施の形態例におけるデータ編集プログラムＰＲは、ディレクトリエントリへの更新回数を抑えることにより、処理を効率化し、データの移動処理を高速化することができる。また、本実施の形態例におけるデータ編集プログラムＰＲは、クラスタの断片化数を抑えることにより、編集後のファイルのへのアクセスを高速化すると共に、ファイルシステムの領域を効率的に使用することができる。
【０１５４】
また、本実施の形態例において、ファイルのデータは、例えば、動画データであるため、クラスタ内に非使用領域が含まれていてもよい。このため、データの編集対象の位置がクラスタの境界に限定されないことから、データ編集プログラムＰＲは、予め二次記憶媒体に記憶されたデータの移動を最小限に抑えることができる。
【０１５５】
また、本実施の形態例において、データ編集テーブルが生成されデータの最後尾に付加されることによって、データ移動処理が途中で中断される場合であっても、移動先ファイル、及び、移動元ファイルを、編集前の状態、または、編集後の状態に修復可能になる。
【０１５６】
［データ移動処理の中断］
図３５は、データ移動処理の過程において処理が中断した場合におけるファイルの安全性について説明する図である。同図は、図３１のフローチャート図の各工程に対応して、移動先ファイル（ファイル１）、及び、移動元ファイル（ファイル２）について、ファイルの状態と修復方針とを有する。また、ファイルの状態は、ファイルデータの状態、ファイルサイズ、インデックス、データ編集テーブル、未参照データの各状態を示す。
【０１５７】
具体的に、図３５において、ファイル１及びファイル２は、工程Ｓ６１の前、編集処理前の状態であって、工程Ｓ７１の後、編集処理後の状態である。これにより、編集処理が中断された場合であっても、ファイル１及びファイル２の安全性は確保される。続いて、工程Ｓ６１の後において、データ編集テーブルが追加されているものの、ファイルサイズが更新されていないため、ファイル１及びファイル２は編集前の状態である。このため、ファイル１及びファイル２の安全性は確保される。
【０１５８】
工程Ｓ６２〜工程Ｓ６４の後に編集処理が中断された場合、ファイル１及びフィル２は編集前の状態に修復される。工程Ｓ６２〜工程Ｓ６４の後において、ファイル１及びフィル２のクラスタチェインは未変更である。このため、編集処理が中断された場合であっても、ファイル１及びファイル２の安全性は確保される。なお、工程Ｓ６５の後において、フィル２のクラスタチェインは変更済みである。この場合、データ編集プログラムＰＲは、ファイル２のデータ編集テーブルと、ダミーファイルに紐付けられた移動データとに基づいて、移動データをファイル２に戻すことによって、ファイル２を移動前の状態に修復する。
【０１５９】
本実施の形態例におけるデータ編集プログラムＰＲは、ダミーファイルを生成し、移動データと紐付けておくことにより、移動データを参照可能にしておく。これにより、データ編集プログラムＰＲは、ファイル２のクラスタチェインが変更された後であっても、移動データに基づいて、ファイル２を編集前の状態に修復することができる。
【０１６０】
そして、工程Ｓ６６〜工程Ｓ７０の後に編集処理が中断された場合、ファイル１及びフィル２は編集後の状態に修復される。ファイル１について、工程Ｓ６６及び工程Ｓ６７の後に編集処理が中断された場合、ファイル１のクラスタチェインは未変更である。工程Ｓ６６の後の場合、ファイル１のデータ編集テーブルは読み出し不可状態であるが、ダミーテーブルに基づいて、ファイル１のデータ編集テーブルが読み出し可能状態である。このため、データ編集プログラムＰＲは、ダミーファイルに紐付けられたファイル１のデータ編集テーブルと移動データとに基づいて、ファイル１を編集後の状態に修復する。また、工程Ｓ６７の後の場合、ファイル１のファイルサイズが拡張されていることにより、ファイル１のデータ編集テーブルは読み出し可能状態である。このため、データ編集プログラムＰＲは、読み出し可能なデータ編集テーブルと、ダミーファイルに紐付けられた移動データとに基づいて、ファイル１を編集後の状態に修復する。
【０１６１】
このように、本実施の形態例におけるデータ編集プログラムＰＲは、クラスタチェインの変更が行われる工程Ｓ６８の後の時点まで、ダミーファイルを介してファイル１のデータ編集テーブルを読み出し可能状態にしておく。これにより、工程Ｓ６６、及び、工程Ｓ６７の後において、データ編集処理が中断された場合に、データ編集プログラムＰＲは、ファイル１を編集後の状態に修復することができる。
【０１６２】
そして、工程Ｓ６８の後に編集処理が中断された場合、ファイル１のクラスタチェインは変更済みであって、ファイルサイズやインデックスの不整合が生じている。このため、データ編集プログラムＰＲは、データ編集テーブルに基づいて、ファイル１のファイルサイズやインデックスの不整合を修復し、ファイル１を編集後の状態に修復する。また、ファイル２について、工程Ｓ６６〜Ｓ７０の後に編集処理が中断された場合、データ編集プログラムＰＲは、ファイル２のデータ編集テーブルに基づいて、ファイル２のファイルサイズやインデックスの不整合を修復し、ファイル２を編集後の状態に修復する。
【０１６３】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、編集指示情報を有するデータ編集テーブルを使用することによって、編集処理におけるいずれの工程の後に処理が中断された場合であっても、移動先ファイル及び移動元ファイルを編集前の状態、若しくは、編集後の状態に修復することができる。これにより、移動先ファイル及び移動元ファイルの安全性が維持される。また、データ編集プログラムＰＲは、データ編集テーブルをファイルの末尾に付加することによって、二次記憶装置に記憶されたデータのみに基づいて、移動先ファイル及び移動元ファイルを修復することができる。
【０１６４】
以上のように、本実施の形態例におけるデータ編集プログラムＰＲは、移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、複数のクラスタに含まれる移動元および移動先ファイルが記録されていない第１の新規クラスタに、移動元ファイルの移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動する。また、データ編集プログラムＰＲは、複数のクラスタに含まれる移動元および移動先ファイルが記録されていない第１のクラスタと異なる第２の新規クラスタに、移動元ファイルの移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動する。また、データ編集プログラムＰＲは、移動先ファイルの移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、第１の新規クラスタまたは第２の新規クラスタのいずれかに移動する。また、データ編集プログラムＰＲは、移動先ファイルについて、第１の新規クラスタの後に移動開始クラスタの次の次クラスタがつながり、第２の新規クラスタの前に移動終了クラスタの前の前クラスタがつながるように、管理データを編集する。
【０１６５】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、ファイルの不要な分割処理、及び、結合処理が抑えられる。また、データ編集プログラムＰＲは、編集対象の位置の前後のデータであって、３つの領域のデータを、２つの新規クラスタに収めることができる。これにより、データ編集プログラムＰＲは、データの移動処理による編集後のファイルの断片化数を少なく抑えると共に、ディレクトリエントリへの更新回数を少なく抑えることができる。これにより、データ編集プログラムＰＲは、データの移動処理を効率的に高速に行うことができると共に、編集後のファイルへのアクセスを高速化する。また、データ編集プログラムＰＲは、予めクラスタに記憶されたデータの移動を最小限に抑えることができ、データの移動処理を高速に行うことを可能にする。
【０１６６】
また、本実施の形態例におけるデータ編集プログラムＰＲは、移動挿入クラスタ内の移動挿入位置以降のデータサイズが、移動開始クラスタ内の移動開始位置以降のデータサイズより小さい場合、移動先ファイルの移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、移動挿入位置以降のデータを第２の新規クラスタに移動する。そして、データ編集プログラムＰＲは、第１の新規クラスタの前に移動挿入クラスタがつながり、第２の新規クラスタの後に移動挿入クラスタの次クラスタがつながるように、管理データを編集する。
【０１６７】
これにより、データ編集プログラムＰＲは、移動挿入クラスタ内の移動挿入位置以降のデータサイズが、移動開始クラスタ内の移動開始位置以降のデータサイズより小さい場合（本実施の形態例におけるパターン１−１）、第２の新規のクラスタを２つの領域のデータによってシェア可能にする。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、移動先ファイルの断片化数が抑えられる。
【０１６８】
また、本実施の形態例におけるデータ編集プログラムＰＲは、移動挿入クラスタ内の移動挿入位置以降のデータサイズが、移動開始クラスタ内の移動開始位置以降のデータサイズ以上である場合、移動先ファイルの移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、移動挿入位置以前のデータを第１の新規クラスタに移動する。そして、データ編集プログラムＰＲは、第１の新規クラスタの前に移動挿入クラスタの前の前クラスタがつながり、第２の新規クラスタの後に移動挿入クラスタがつながるように、管理データを編集する。
【０１６９】
これにより、データ編集プログラムＰＲは、移動挿入クラスタ内の移動挿入位置以降のデータサイズが、移動開始クラスタ内の移動開始位置以降のデータサイズ以上である場合（本実施の形態例におけるパターン１−２）、第１の新規のクラスタを２つの領域のデータによってシェア可能にする。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、移動先ファイルの断片化数が抑えられる。
【０１７０】
また、本実施の形態例におけるデータ編集プログラムＰＲは、さらに、移動元のファイルについて、移動開始クラスタの後に移動終了クラスタがつながるように管理データを編集する。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、移動元ファイルにおける断片化数が抑えられる。
【０１７１】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、移動開始クラスタ内の移動開始位置以降のデータサイズと、移動終了クラスタ内の移動終了位置以前のデータサイズとの合計がクラスタのサイズ以下である場合に、第1の新規クラスタに移動開始位置以降のデータを移動し、第２の新規クラスタに移動終了位置以前のデータを移動する。また、データ編集プログラムＰＲは、第１の新規クラスタの後に移動開始クラスタの次の次クラスタがつながり、第２の新規クラスタの前に移動終了クラスタの前の前クラスタがつながるように、管理データを編集する。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、ファイルの断片化数が抑えられる。
【０１７２】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、移動開始クラスタ内の移動開始位置以降のデータサイズと、移動終了クラスタ内の移動終了位置以前のデータサイズとの合計がクラスタのサイズ以下でない場合は、第１の新規クラスタに移動開始クラスタ内の移動開始位置以降のデータを、第２の新規クラスタに移動挿入クラスタ内の移動挿入位置以降のデータを移動する。また、データ編集プログラムＰＲにおいて、第１の新規クラスタの前に移動挿入クラスタがつながり、第１の新規クラスタの後に移動開始クラスタの次の次クラスタがつながり、第２の新規クラスタの前に移動終了クラスタがつながり、第２の新規クラスタの後に移動挿入クラスタの次の次クラスタがつながるように、管理データを編集する。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、移動先ファイルにおける断片化数が抑えられる。
【０１７３】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、移動開始クラスタ内の移動開始位置以降のデータサイズと、移動終了クラスタ内の移動終了位置以前のデータサイズとの合計がクラスタのサイズ以下でない場合は、さらに、移動元のファイルについて、移動終了クラスタ内の移動終了位置以降のデータが移動された移動開始クラスタと当該移動終了クラスタの次の次クラスタがつながるように、管理データを編集する。
【０１７４】
これにより、データ編集プログラムＰＲは、移動開始クラスタ内の移動開始位置以降のデータサイズと、移動終了クラスタ内の移動終了位置以前のデータサイズとの合計がクラスタのサイズ以下でない場合（本実施の形態例におけるパターン２）、移動元ファイルにおいて、１つのクラスタを２つの領域のデータによってシェア可能にする。これにより、データの移動処理において使用される新規のクラスタの数が２つに抑えられると共に、移動元ファイルにおける断片化数が抑えられる。
【０１７５】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、新規クラスタの後につなげる第１のクラスタと、新規クラスタの前につなげる第２のクラスタのうち、先に後の第１クラスタを新規クラスタとをつなげるように管理データを編集する。このように、データ編集プログラムＰＲは、新規クラスタについて、先に、後側のリンクを更新し、前側のリンクはできるだけ後に更新する。後側のリンクが別のファイルのクラスタとつながっていても、前側のリンクがどこからもつながっていない編集処理が中断された場合、未使用データとして扱われ、安全に削除可能になるためである。また、データ編集プログラムＰＲは、移動先ファイルが変更されるタイミングを遅くすることができる。つまり、データ編集プログラムＰＲは、移動先ファイルを編集前の状態にできるだけ長く維持しておくことができる。
【０１７６】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、データ編集処理において、さらに、入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、挿入処理における挿入位置、除去処理における除去開始点のいずれかを示す編集対象位置と、挿入処理における挿入データのサイズ、除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、データ編集処理の対象ファイルのデータ末尾に記憶する。また、データ編集処理は、データ編集処理の対象ファイルの読み出しが行えないときに、編集指示情報に基づいて当該対象のファイルを、データ編集処理の前、または、後の状態のいずれかに修復する。
【０１７７】
これにより、本実施の形態例におけるデータ編集プログラムＰＲは、ファイル間のデータの移動処理が途中で中断された場合であっても、対象のファイルを、データの移動処理前、または、データの移動処理後の状態に修復することができる。これにより、挿入先ファイルの安全性が確保される。
【０１７８】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、新規クラスタの前にクラスタをつなげる管理データの編集前であって、データ領域において管理される編集前のファイルのサイズが、管理データの編集後のファイルのサイズに編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に管理されるサイズを合計サイズに更新する。
【０１７９】
これにより、データ編集プログラムＰＲは、移動先ファイルのクラスタチェインが変更される前に、ファイルサイズを、予めデータ編集テーブルを読み出し可能なサイズに更新しておくことができる。これにより、移動先ファイルのクラスタチェインが変更された後に編集処理が中断されファイルに不整合が生じた場合であっても、データ編集プログラムＰＲは、データ編集テーブルに基づいて、移動先ファイルを移動前、または、移動後の状態に修復することができる。
【０１８０】
また、本実施の形態例におけるデータ編集プログラムＰＲにおいて、データ編集処理は、さらに、データ編集処理の後、編集前から位置が変更したデータの位置情報と、位置が変更したデータのサイズ情報とを含む編集結果情報を出力する。これにより、例えば、上位のインタフェースは、編集処理の結果を的確に検知することができる。
【０１８１】
［ディレクトリエントリへの更新回数］
図３６は、本実施の形態例と比較例とにおけるディレクトリエントリへの更新回数、新規クラスタの数、断片化数の相違について説明する図である。なお、本実施の形態例と比較例とにおけるディレクトリエントリへの更新回数、新規クラスタの数、断片化数については、各編集処理において説明したとおりである。具体的に、データ挿入処理において、比較例におけるディレクトリエントリへの更新回数は計７回であって、新規に使用されるクラスタは１、断片化数は３である。これに対し、本実施の形態例におけるディレクトリエントリへの更新回数は計２回（データ編集テーブルを生成しない場合は２回）であって、新規に使用されるクラスタは１、断片化数は２である。
【０１８２】
また、データの除去処理において、比較例におけるディレクトリエントリへの更新回数は計７回であって、新規に使用されるクラスタは２、断片化数は２である。これに対し、本実施の形態例におけるディレクトリエントリへの更新回数は計１回であって、新規に使用されるクラスタは０、断片化数は１である。また、データの移動処理において、比較例におけるディレクトリエントリへの更新回数は計１２回であって、新規に使用されるクラスタは３、断片化数は６である。これに対し、本実施の形態例におけるディレクトリエントリへの更新回数は計５回（データ編集テーブルを生成しない場合は４回）であって、新規に使用されるクラスタは２、断片化数は５である。
【０１８３】
このように、本実施の形態例におけるデータ編集プログラムＰＲによると、ディレクトリエントリへの更新回数が削減されるため、編集処理の速度が向上する。また、本実施の形態例におけるデータ編集プログラムＰＲによると、新たに使用されるクラスタの数が抑えられるため、空きクラスタが不足している場合であっても、データ編集処理を行うことができる。さらに、本実施の形態例におけるデータ編集プログラムＰＲによると、編集後のファイルの断片化数が少ないため、ファイルシステムが効率的に使用可能になると共に、編集後のファイルへのアクセスが高速化される。
【０１８４】
続いて、データ編集テーブルに基づく、編集対象のファイルの修復処理について説明する。
【０１８５】
［ファイルの修復処理のフローチャート図］
図３７は、ファイルの修復処理の流れについて説明する第１のフローチャート図である。同図において、データ編集プログラムＰＲは、まず、二次記憶装置における異常データの有無を診断する（Ｓ８１）。具体的に、データ編集プログラムＰＲは、二次記憶装置に記憶されたダミーファイル及び未参照データの有無、ファイルサイズの不整合の有無、データ編集テーブルが残留の有無等を確認する。確認の結果、ダミーファイルが存在する場合（Ｓ８２のＹＥＳ）、データ編集プログラムＰＲは、データの移動処理に対応するファイルの修復処理を行う（Ｓ８３）。この処理については、別のフローチャート図において後述する。
【０１８６】
続いて、確認の結果、編集処理種別が挿入であるデータ編集テーブルが存在するか否かを判定する（Ｓ８４）。存在する場合（Ｓ８４のＹＥＳ）、データ編集プログラムＰＲは、データ挿入処理に対応するファイルの修復処理を行う（Ｓ８５）。この処理についても、別のフローチャート図において後述する。なお、工程Ｓ８５の処理には、データの移動処理における移動先ファイルの修復処理も含まれる。
【０１８７】
続いて、確認の結果、編集種別が除去であるデータ編集テーブルが存在するか否かを判定する（Ｓ８６）。存在する場合（Ｓ８６のＹＥＳ）、データ編集プログラムＰＲは、データの除去処理に対応するファイルの修復処理を行う（Ｓ８７）。この処理についても、別のフローチャート図において後述する。なお、工程Ｓ８７の処理には、データの移動処理における移動元ファイルの修復処理も含まれる。そして、データ編集プログラムＰＲは、ダミーファイル及び未参照データが残存している場合、ダミーファイル及び未参照データを削除する（Ｓ８８）。
【０１８８】
［フローチャート図：データの移動処理に対応するファイルの修復処理］
図３８は、データの移動処理に対応するファイルの修復処理（図３７のＳ８３）について説明する図である。同図において、まず、データ編集プログラムＰＲは、ダミーファイルに紐づくデータ編集テーブルの編集処理種別が挿入、除去のいずれであるかを判定する（Ｓ１１１）。ダミーファイルに紐づくデータ編集テーブルが存在する場合、図３１のデータの移動処理のフローチャート図における工程Ｓ６４〜Ｓ６８の後の状態に該当する。
【０１８９】
ダミーファイルに紐づくデータ編集テーブルの編集処理種別が挿入である場合、データ編集プログラムＰＲは、編集処理種別が挿入の編集テーブルを有するファイルが他に存在するか否かを判定する（Ｓ１１２）。他に存在しない場合（Ｓ１１２のＮＯ）、データ編集プログラムＰＲは、挿入先ファイルのサイズを、データ編集テーブルを除外したデータ移動後のサイズに変更する。この場合（Ｓ１１２のＮＯ）、図３１の工程Ｓ６４〜Ｓ６８のうち、工程Ｓ６６の後の状態に対応する。一方、他に存在する場合（Ｓ１１２のＹＥＳ）、図３１の工程Ｓ６７、Ｓ６８の後の状態に対応する。この場合、工程Ｓ６７において、ファイルサイズが更新済みであるため、ファイルサイズの更新処理は不要となる。
【０１９０】
続いて、データ編集プログラムＰＲは、編集処理種別が挿入であるデータ編集テーブルが、ファイルの末尾に存在するか否かを判定する（Ｓ１１４）。ファイルの末尾に存在しない場合（Ｓ１１４のＮＯ）、図３１のフローチャート図における工程Ｓ６６、Ｓ６７の後の状態に対応する。この場合、データ編集プログラムＰＲは、図３１の工程Ｓ６８の処理を行い、移動先ファイルを編集後の状態に修復する（Ｓ１１５）。具体的に、データ編集プログラムＰＲは、編集処理種別が挿入であるデータ編集テーブルを有するファイル（移動先ファイル）について、移動開始位置を有するクラスタの次のクラスタを、ダミーファイルに紐付けられた先頭のクラスタ（１つ目の新規クラスタ）につなぐ。
【０１９１】
一方、編集処理種別が挿入であるデータ編集テーブルが、ファイルの末尾に存在する場合（Ｓ１１４のＹＥＳ）、図３１の工程Ｓ６８の後の状態に該当する。このため、クラスタチェインのつなぎ替えは不要である。そして、データ編集プログラムＰＲは、ディレクトリエントリからダミーファイルのエントリを削除する（Ｓ１１６）。
【０１９２】
そして、ダミーファイルに紐づくデータ編集テーブルの編集処理種別が除去である場合、データ編集プログラムＰＲは、編集処理種別が挿入の編集テーブルを有するファイルが他に存在するか否かを判定する（Ｓ１１７）。他に存在する場合（Ｓ１１７のＹＥＳ）、データ編集テーブルが、挿入元ファイル及びダミーテーブルの双方から読み出し可能である場合を示す。即ち、図３１の工程Ｓ６５の後の状態に該当する。この場合、データ編集プログラムＰＲは、移動元ファイルを編集前の状態に修復する（Ｓ１１８）。具体的に、データ編集プログラムＰＲは、移動元ファイルについて、移動開始位置を有するクラスタの次のクラスタを、ダミーファイルに紐付けられた２番目のクラスタにつなぐ。これにより、移動元ファイルが編集前の状態に修復される。
【０１９３】
一方、編集種別が除去のデータ編集テーブルを有するファイルが他に存在しない場合（Ｓ１１７のＮＯ）、図３１のフローチャート図における工程Ｓ６４の後の状態に対応する。この場合、移動元ファイルは、クラスタチェインのつなぎ替え処理（Ｂ５３）前の状態であるため、工程Ｓ１１８の処理は行われない。続いて、データ編集プログラムＰＲは、ダミーファイルの1つ目のクラスタを削除すると共に、ディレクトリエントリからダミーファイルのエントリを削除する（Ｓ１１９）。
【０１９４】
［フローチャート図：データ挿入処理に対応するファイルの修復処理］
図３９は、データ挿入処理に対応するファイルの修復処理（図３７のＳ８５）について説明する図である。同図において、まず、データ編集プログラムＰＲは、編集処理種別が挿入であるデータ編集テーブルがファイルの末端に存在するか否かを判定する（Ｓ９１）。ファイルの末尾に存在する場合（Ｓ９１のＹＥＳ）、データ編集プログラムＰＲは、ファイルのインデックスに不整合があるか否かを判定する（Ｓ９２）。インデックスに不整合が有る場合（Ｓ９２のＹＥＳ）、データ編集プログラムＰＲは、データ編集テーブルに基づいてインデックスを更新する（Ｓ９３）。そして、データ編集プログラムＰＲは、ファイルのサイズをデータ編集テーブルを除外したサイズに更新する（Ｓ９４）。
【０１９５】
［フローチャート図：データの除去処理に対応するファイルの修復処理］
図４０は、データの除去処理に対応するファイルの修復処理（図３７のＳ８７）について説明する図である。同図において、まず、データ編集プログラムＰＲは、ファイルのインデックスに不整合があるか否かを判定する（Ｓ１０１）。インデックスに不整合が有る場合（Ｓ１０１のＹＥＳ）、データ編集プログラムＰＲは、データ編集テーブルに基づいてインデックスを更新する（Ｓ１０２）。そして、データ編集プログラムＰＲは、ファイルのサイズを、データ編集テーブルを除外したサイズに更新する（Ｓ１０３）。
【０１９６】
続いて、データ編集テーブルの具体例について説明する。
【０１９７】
［データ編集テーブルの具体例］
図４１は、データ移動処理における各ファイルのサイズの具体例を示す図である。同図の（Ａ）には、編集前の移動先ファイル及び移動元ファイルの構成が例示される。また、同図の（Ｂ）にはダミーファイルの構成が例示される。ダミーファイルは、例えば、図３１のフローチャート図における工程Ｓ６６の後の状態のダミーファイルである。また、同図の（Ｃ）には、編集後の移動先ファイル、及び、移動元ファイルの構成が例示される。同図において、各ファイルにおけるデータのサイズが数値で示される。
【０１９８】
この例において、ファイルシステムにおけるクラスタサイズは４０９６バイト（Ａ）であって、データ編集テーブルのサイズは２０バイト（Ｂ）である。また、図４１の（Ａ）において、編集前の移動先ファイル（ファイル１）は、５つのクラスタによって構成され、サイズは１８０００バイト（Ｃ）である。また、編集前の移動元ファイル（ファイル２）は、６つのクラスタによって構成され、サイズは２２０００バイト（Ｈ）である。また、移動対象のデータのサイズは、６０００バイトである（Ｊ）。そして、同図の（Ｂ）において、ダミーファイルは５つのクラスタによって構成され、サイズは１８０２０バイト（Ｍ）である。また、同図の（Ｃ）において、編集後の移動先ファイルは、８つのクラスタによって構成され、サイズは３０２８８バイト（Ｇ）である。また、編集後の移動元ファイルは、５つのクラスタによって構成され、サイズは１７９０４バイト（Ｌ）である。
【０１９９】
図４２は、図４１の具体例に対応するデータ編集テーブルの一例を示す図である。同図において、ファイルシステム全体の情報、移動先ファイル、移動元ファイル、ダミーファイルの情報が例示される。また、同図において、太線の枠で囲まれる部分は、データ編集テーブルの具体例である。同図におけるサイズＡ〜Ｊは、図４１におけるサイズＡ〜Ｊに対応する。
【０２００】
この例において、移動先ファイルに対して生成されるデータ編集テーブルにおける編集指示情報の編集処理種別は挿入であって、編集開始位置は３クラスタ目の１０２００バイト目（Ｄ）、移動データを示す編集データサイズは６０００バイト（Ｅ）である。また、編集結果情報の編集データオフセットは、４クラスタ目の１４４９６バイト目（Ｆ）であって、編集後のファイルサイズは３０２８８バイト（Ｇ）である。
【０２０１】
また、移動元ファイルに対して生成されるデータ編集テーブルにおける編集指示情報の編集処理種別は挿入であって、編集開始位置は３クラスタ目の１０４００バイト目（Ｉ）、移動データを示す編集データサイズは６０００バイト（Ｊ）である。また、編集結果情報の編集データオフセットは、４クラスタ目の１２３０４バイト目（Ｋ）であって、編集後のファイルサイズは１７９０４バイト（Ｌ）である。
【０２０２】
図４３は、移動先ファイル（ファイル１）、移動元ファイル（ファイル２）、及び、ダミーファイルについて、ファイルの状態の具体例と修復方針とを示す図である。図４３の表は、図３１のデータの移動処理におけるフローチャート図の各工程に対応する。この例において、ファイルの状態は、例えば、ファイルデータの状態、使用するクラスタ数、ファイルサイズである。
【０２０３】
図４３の例において、移動先ファイルを構成するクラスタの数は、データの移動処理によって、５つから８つに増加する。また、移動先ファイルのファイルサイズは、１８０００バイトから、３０２８８バイトに増加する。なお、データ編集テーブルは２０バイトであるため、工程Ｓ６７〜工程Ｓ７０の後において、データ編集テーブルのサイズを含むファイルサイズは３０３０８バイト（＝３０２８８＋２０）である。一方、移動元ファイルを構成するクラスタの数は、データの移動処理によって、６つから５つに減少する。また、移動元ファイルのファイルサイズは、２２０００バイトから、１７９０４バイトに減少する。
【０２０４】
なお、本実施の形態例において、ディレクトリエントリへのアクセス処理やファイルの断片化数を抑える処理工程に加えて、データ編集テーブルを使用する例について述べた。ただし、本実施の形態例におけるデータ編集テーブルは、例えば、比較例に組み合わせて用いられてもよい。
【０２０５】
例えば、図１０における比較例のデータ挿入処理において、データ編集プログラムＰＲは、挿入データをファイル２に書き込む前に（Ｓ１１）、データ１の末尾にデータ編集テーブルを追加する。そして、データ編集プログラムＰＲは、工程Ｓ１２のファイル１へのファイル２の結合前に、ファイル１のサイズをデータ編集テーブルを読み出し可能なサイズに拡張する。そして、データの挿入処理が終了すると、ファイル１の末尾に追加されたデータ編集テーブルを削除する。
【０２０６】
これにより、データ編集プログラムＰＲは、図１０の工程Ｓ１２の後に編集処理が中断された場合であっても、ファイル２、３のデータ、及び、データ編集テーブルに基づいて、ファイル１を編集前の状態、または、編集後の状態に修復することができる。なお、比較例におけるデータ除去処理、データの移動処理においても、同様にして適用可能である。
【０２０７】
このように、本実施の形態例におけるデータ編集プログラムＰＲは、入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、挿入処理における挿入位置、除去処理における除去開始点のいずれかを示す編集対象位置と、挿入処理における挿入データのサイズ、除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、データ編集処理の対象ファイルのデータ末尾に記憶する。また、データ編集プログラムＰＲは、入力された編集指示情報に基づいて、データ編集処理の対象ファイルについて、データ挿入、データ除去、データ移動のいずれかのデータ編集を行い、管理データについて、データ編集処理の対象ファイルのクラスタ構成を、データ編集に対応するように変更する。そして、データ編集プログラムＰＲは、データ編集処理の対象ファイルの読み出しが行えないときに、編集指示情報に基づいてデータ編集処理の対象ファイルを、データ編集処理の実行前、または、実行後の状態に修復する。
【０２０８】
これにより、本実施の形態例におけるデータ編集プログラムＰＲは、ファイル間のデータの移動処理が途中で中断された場合であっても、編集処理の対象のファイルを、データの編集処理前、または、データの編集処理後の状態に修復することができる。これにより、編集処理の対象のファイルの安全性が確保される。
【０２０９】
また、本実施の形態例におけるデータ編集プログラムＰＲは、管理データの編集前であって、データ領域において管理される編集前のファイルのサイズが、管理データの編集後のファイルのサイズに編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に管理されるサイズを合計サイズに更新する。
【０２１０】
これにより、データ編集プログラムＰＲは、編集対象のファイルのクラスタチェインが変更される前に、ファイルサイズを、予めデータ編集テーブルを読み出し可能なサイズに更新しておくことができる。これにより、編集対象のファイルのクラスタチェインが変更された後に編集処理が中断されファイルに不整合が生じた場合であっても、データ編集プログラムＰＲは、データ編集テーブルに基づいて、編集対象のファイルを編集前、または、編集後の状態に修復することができる。
【０２１１】
以上の実施の形態をまとめると、次の付記のとおりである。
【０２１２】
（付記１）
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない第１の新規クラスタに、前記移動元ファイルの前記移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動し、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない前記第１のクラスタと異なる第２の新規クラスタに、前記移動元ファイルの前記移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動し、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、前記第１の新規クラスタまたは前記第２の新規クラスタのいずれかに移動し、
前記移動先ファイルについて、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２１３】
（付記２）
付記１において、
前記移動挿入クラスタ内の移動挿入位置以降のデータサイズが、前記移動開始クラスタ内の移動開始位置以降のデータサイズより小さい場合、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、前記移動挿入位置以降のデータを前記第２の新規クラスタに移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタがつながり、前記第２の新規クラスタの後に移動挿入クラスタの次クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２１４】
（付記３）
付記１において、
前記移動挿入クラスタ内の移動挿入位置以降のデータサイズが、前記移動開始クラスタ内の移動開始位置以降のデータサイズ以上である場合、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータおよび当該移動挿入クラスタ内の移動挿入位置以降のデータのうち、前記移動挿入位置以前のデータを前記第１の新規クラスタに移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタの前の前クラスタがつながり、前記第２の新規クラスタの後に移動挿入クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２１５】
（付記４）
付記１乃至３のいずれかにおいて、
さらに、前記移動元のファイルについて、移動開始クラスタの後に移動終了クラスタがつながるように前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【０２１６】
（付記５）
付記１乃至４のいずれかにおいて、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下である場合に、
前記第1の新規クラスタに前記移動開始位置以降のデータを移動し、前記第２の新規クラスタに前記移動終了位置以前のデータを移動し、
前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２１７】
（付記６）
付記５において、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下でない場合は、
前記第１の新規クラスタに前記移動開始クラスタ内の移動開始位置以降のデータを移動し、前記第２の新規クラスタに前記移動挿入クラスタ内の移動挿入位置以降のデータを移動し、
前記第１の新規クラスタの前に前記移動挿入クラスタがつながり、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタがつながり、前記第２の新規クラスタの後に前記移動挿入クラスタの次の次クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２１８】
（付記７）
付記６において、
前記移動開始クラスタ内の移動開始位置以降のデータサイズと、前記移動終了クラスタ内の移動終了位置以前のデータサイズとの合計が前記クラスタのサイズ以下でない場合は、
さらに、前記移動元のファイルについて、前記移動終了クラスタ内の移動終了位置以降のデータが移動された移動開始クラスタと当該移動終了クラスタの次の次クラスタがつながるように、前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【０２１９】
（付記８）
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
挿入先ファイルにおける挿入位置に挿入データを挿入する際に、
前記複数のクラスタに含まれる前記挿入先ファイルが記録されていない１つまたは複数の第３の新規クラスタに、前記挿入先ファイルの前記挿入位置を有する挿入クラスタ内の前記移動挿入位置以降のデータを移動し、前記挿入データを記憶させ、
前記第３の新規クラスタの先頭クラスタの前に前記挿入クラスタの前の前クラスタがつながり、前記第３の新規クラスタの最後尾クラスタの後に前記挿入クラスタの次の次クラスタがつながるように前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２２０】
（付記９）
付記１乃至８のいずれかにおいて、
前記新規クラスタの後につなげる第１のクラスタと、前記新規クラスタの前につなげる第２のクラスタのうち、先に前記第１のクラスタを前記新規クラスタとをつなげるように前記管理データを編集する処理をコンピュータに実行させるデータ編集プログラム。
【０２２１】
（付記１０）
複数のクラスタを備えデータファイルがクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体に対してデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
除去元ファイルにおける除去開始位置から除去終了位置の間のデータを除去する際に、
前記除去元ファイルの前記除去開始位置を有する除去開始クラスタ内の前記除去開始位置以降のデータと、前記除去終了位置を有する除去終了クラスタ内の前記除去終了位置以前のデータとを削除し、
前記除去開始クラスタの後に前記除去終了クラスタがつながるように、前記管理データを編集する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２２２】
（付記１１）
付記１０に記載したデータ編集プログラムであって、
前記データ編集処理において、さらに、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて当該対象のファイルを、前記データ編集処理の前、または、後の状態のいずれかに修復する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２２３】
（付記１２）
付記１乃至９のいずれかに記載したデータ編集プログラムであって、
前記データ編集処理において、さらに、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて当該対象のファイルを、前記データ編集処理の前、または、後の状態のいずれかに修復する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２２４】
（付記１３）
付記１２において、
前記新規クラスタの前にクラスタをつなげる前記管理データの編集前であって、前記データ領域において管理される編集前の前記ファイルのサイズが、前記管理データの編集後のファイルのサイズに前記編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に前記管理されるサイズを前記合計サイズに更新する処理をコンピュータに実行させるデータ編集プログラム。
【０２２５】
（付記１４）
付記１乃至１３のいずれかにおいて、さらに、
前記データ編集処理の後、編集前から位置が変更したデータの位置情報と、前記位置が変更したデータのサイズ情報とを含む編集結果情報を出力する処理をコンピュータに実行させるデータ編集プログラム。
【０２２６】
（付記１５）
データファイルが固定長のクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理をコンピュータに実行させるデータ編集プログラムであって、
前記データ編集処理において、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記入力された編集指示情報に基づいて、前記データ編集処理の対象ファイルについて、データ挿入、データ除去、データ移動のいずれかのデータ編集を行い、
前記管理データについて、前記データ編集処理の対象ファイルのクラスタ構成を、前記データ編集に対応するように変更し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて前記データ編集処理の対象ファイルを、前記データ編集処理の実行前、または、実行後の状態に修復する、
処理をコンピュータに実行させるデータ編集プログラム。
【０２２７】
（付記１６）
付記１５において、
前記管理データの編集前であって、前記データ領域において管理される編集前の前記ファイルのサイズが、前記管理データの編集後のファイルのサイズに前記編集指示情報のサイズを加えた合計サイズより小さい場合に、当該管理データの編集前に前記管理されるサイズを前記合計サイズに更新する処理をコンピュータに実行させるデータ編集プログラム。
【０２２８】
（付記１７）
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理を行うデータ編集装置であって、
移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない第１の新規クラスタに、前記移動元ファイルの前記移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動し、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない前記第１のクラスタと異なる第２の新規クラスタに、前記移動元ファイルの前記移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動し、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、前記第１の新規クラスタまたは前記第２の新規クラスタのいずれかに移動し、
前記移動先ファイルについて、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集するデータ編集装置。
【０２２９】
（付記１８）
データファイルが固定長のクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理を行うデータ編集装置であって、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記入力された編集指示情報に基づいて、前記データ編集処理の対象ファイルについて、データ挿入、データ除去、データ移動のいずれかのデータ編集を行い、
前記管理データについて、前記データ編集処理の対象ファイルのクラスタ構成を、前記データ編集に対応するように変更し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて前記データ編集処理の対象ファイルを、前記データ編集処理の実行前、または、実行後の状態に修復するデータ編集装置。
【０２３０】
（付記１９）
複数のクラスタを備えデータファイルが前記クラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理を行うデータ編集方法であって、
移動元ファイルにおける移動開始位置から移動終了位置の間のデータを、移動先ファイルにおける移動挿入位置に移動する際に、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない第１の新規クラスタに、前記移動元ファイルの前記移動開始位置を有する移動開始クラスタ内の移動開始位置以降のデータを移動し、
前記複数のクラスタに含まれる前記移動元および移動先ファイルが記録されていない前記第１のクラスタと異なる第２の新規クラスタに、前記移動元ファイルの前記移動終了位置を有する移動終了クラスタ内の移動終了位置以前のデータを移動し、
前記移動先ファイルの前記移動挿入位置を有する移動挿入クラスタ内の移動挿入位置以前のデータまたは当該移動挿入クラスタ内の移動挿入位置以降のデータのいずれかを、前記第１の新規クラスタまたは前記第２の新規クラスタのいずれかに移動し、
前記移動先ファイルについて、前記第１の新規クラスタの後に前記移動開始クラスタの次の次クラスタがつながり、前記第２の新規クラスタの前に前記移動終了クラスタの前の前クラスタがつながるように、前記管理データを編集するデータ編集方法。
【０２３１】
（付記２０）
データファイルが固定長のクラスタ単位に記録されるデータ領域と、前記データファイルを管理する管理データが記録される管理領域とを有する記録媒体のデータ編集処理を行うデータ編集方法であって、
入力された編集指示情報であって、挿入処理、除去処理のいずれかを示す編集種別と、前記挿入処理における挿入位置、前記除去処理における除去開始点のいずれかを示す編集対象位置と、前記挿入処理における挿入データのサイズ、前記除去処理における除去サイズのいずれかを示す編集対象サイズとを含む編集指示情報を、前記データ編集処理の対象ファイルのデータ末尾に記憶し、
前記入力された編集指示情報に基づいて、前記データ編集処理の対象ファイルについて、データ挿入、データ除去、データ移動のいずれかのデータ編集を行い、
前記管理データについて、前記データ編集処理の対象ファイルのクラスタ構成を、前記データ編集に対応するように変更し、
前記データ編集処理の対象ファイルの読み出しが行えないときに、前記編集指示情報に基づいて前記データ編集処理の対象ファイルを、前記データ編集処理の実行前、または、実行後の状態に修復するデータ編集方法。
【符号の説明】
【０２３２】
１１：ＣＰＵ、１２：ＲＡＭ、１３：ＲＯＭ、１４：表示部、１５：入力部、１６：メディアアクセス装置、１７：二次記憶装置、ＰＲ：データ編集プログラム
【図１】
2014229060.tif 000003
【図２】
2014229060.tif 000004
【図３】
2014229060.tif 000005
【図４】
2014229060.tif 000006
【図５】
2014229060.tif 000007
【図６】
2014229060.tif 000008
【図７】
2014229060.tif 000009
【図８】
2014229060.tif 000010
【図９】
2014229060.tif 000011
【図１０】
2014229060.tif 000012
【図１１】
2014229060.tif 000013
【図１２】
2014229060.tif 000014
【図１３】
2014229060.tif 000015
【図１４】
2014229060.tif 000016
【図１５】
2014229060.tif 000017
【図１６】
2014229060.tif 000018
【図１７】
2014229060.tif 000019
【図１８】
2014229060.tif 000020
【図１９】
2014229060.tif 000021
【図２０】
2014229060.tif 000022
【図２１】
2014229060.tif 000023
【図２２】
2014229060.tif 000024
【図２３】
2014229060.tif 000025
【図２４】
2014229060.tif 000026
【図２５】
2014229060.tif 000027
【図２６】
2014229060.tif 000028
【図２７】
2014229060.tif 000029
【図２８】
2014229060.tif 000030
【図２９】
2014229060.tif 000031
【図３０】
2014229060.tif 000032
【図３１】
2014229060.tif 000033
【図３２】
2014229060.tif 000034
【図３３】
2014229060.tif 000035
【図３４】
2014229060.tif 000036
【図３５】
2014229060.tif 000037
【図３６】
2014229060.tif 000038
【図３７】
2014229060.tif 000039
【図３８】
2014229060.tif 000040
【図３９】
2014229060.tif 000041
【図４０】
2014229060.tif 000042
【図４１】
2014229060.tif 000043
【図４２】
2014229060.tif 000044
【図４３】
2014229060.tif 000045