上位装置から送られたデータをバッファに蓄積し、当該上位装置から送られたコマンドに応じて、当該バッファに蓄積された当該データをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、当該バッファに蓄積された当該データを当該テープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、当該一時記録領域に書き込まれた当該データを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行う装置において、前記コマンドに応じて前記第1の動作及び前記第2の動作の何れかが行われたことにより第1のデータが前記通常記録領域に書き込まれた際に、当該第1のデータの容量である第1の容量を取得する取得部と、前記第1のデータが前記通常記録領域に書き込まれた後に送られる前記コマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、前記取得部により取得された前記第1の容量が第1の閾値を超えているかどうか、及び、前記予測部により予測された前記第2の容量が第2の閾値を超えているかどうかを判定する判定部と、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていると判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第1の動作が行われるように制御し、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていないと判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第2の動作が行われるように制御する制御部とを含む、装置。前記制御部は、前記判定部により前記第1の容量が前記第1の閾値を超えていないと判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第2の動作が行われるように制御する、請求項1の装置。前記判定部は、前記予測部により予測された前記第2の容量が前記第2の閾値よりも大きい第3の閾値を超えているかどうかを更に判定し、前記制御部は、前記判定部により前記第2の容量が前記第3の閾値を超えていると判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第1の動作が行われるように制御する、請求項1又は請求項2の装置。上位装置から送られたデータをバッファに蓄積し、当該上位装置から送られたコマンドに応じて、当該バッファに蓄積された当該データをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、当該バッファに蓄積された当該データを当該テープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、当該一時記録領域に書き込まれた当該データを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行う装置において、前記コマンドに応じて前記第1の動作及び前記第2の動作の何れかが行われたことにより第1のデータが前記通常記録領域に書き込まれた際に、当該第1のデータの容量である第1の容量を取得する取得部と、前記第1のデータが前記通常記録領域に書き込まれた後に送られる前記コマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、前記取得部により取得された前記第1の容量が第1の閾値を超えているかどうか、前記予測部により予測された前記第2の容量が当該第1の閾値を超えているかどうか、及び、前記予測部により予測された前記第2の容量が当該第1の閾値よりも小さい第2の閾値を超えているかどうかを判定する判定部と、前記判定部により前記第2の容量が前記第1の閾値を超えていると判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第1の動作が行われるように制御し、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第1の閾値を超えておらず前記第2の閾値を超えていると判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第1の動作が行われるように制御し、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていないと判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第2の動作が行われるように制御し、前記判定部により前記第1の容量が前記第1の閾値を超えておらず前記第2の容量が前記第1の閾値を超えていないと判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第2の動作が行われるように制御する制御部とを含む、装置。上位装置から送られたデータをバッファに蓄積し、当該上位装置から送られたコマンドに応じて、当該バッファに蓄積された当該データをテープ媒体に書き込む装置における、当該データを書き込む方法であって、前記コマンドに応じて、前記バッファに蓄積された第1のデータを前記テープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、当該一時記録領域に書き込まれた当該第1のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第1のデータ群を当該テープ媒体上の通常記録領域に書き込むステップと、前記第1のデータ群が前記通常記録領域に書き込まれた際に、当該第1のデータ群の総容量である第1の容量を取得するステップと、前記第1のデータ群が前記通常記録領域に書き込まれた後に送られる前記コマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測するステップと、取得された前記第1の容量が第1の閾値を超えているかどうかを判定するステップと、予測された前記第2の容量が第2の閾値を超えているかどうかを判定するステップと、前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていると判定された場合に、前記第1のデータ群が前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータを当該通常記録領域にバックヒッチを伴わずに書き込むステップと、前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていないと判定された場合に、前記第1のデータ群が前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータを前記一時記録領域にバックヒッチを伴わずに書き込んだ後、当該一時記録領域に書き込まれた当該第2のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第2のデータ群を当該通常記録領域に書き込むステップとを含む、方法。前記第2のデータが前記通常記録領域に書き込まれた際に、前記第2の容量を取得するステップと、前記第2のデータが前記通常記録領域に書き込まれた後に送られる前記コマンドに応じて書き込まれる第3のデータの容量である第3の容量を予測するステップと、取得された前記第2の容量が前記第1の閾値を超えているかどうかを判定するステップと、予測された前記第3の容量が前記第2の閾値を超えているかどうかを判定するステップと、前記第2の容量が前記第1の閾値を超えており前記第3の容量が前記第2の閾値を超えていると判定された場合に、前記第2のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第3のデータを当該通常記録領域にバックヒッチを伴わずに書き込むステップと、前記第2の容量が前記第1の閾値を超えており前記第3の容量が前記第2の閾値を超えていないと判定された場合に、前記第2のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第3のデータを前記一時記録領域に記録した後、当該一時記録領域に記録された当該第3のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第3のデータ群を当該通常記録領域に書き込むステップとを更に含む、請求項5の方法。前記第1の容量が前記第1の閾値を超えていないと判定された場合に、前記第1のデータ群が前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータを前記一時記録領域にバックヒッチを伴わずに書き込んだ後、前記第2のデータ群を当該通常記録領域に書き込むステップを更に含む、請求項5又は請求項6の方法。予測された前記第2の容量が、前記第2の閾値よりも大きい第3の閾値を超えているかどうかを判定するステップと、前記第2の容量が前記第3の閾値を超えていると判定された場合に、前記第1のデータ群が前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータを当該通常記録領域にバックヒッチを伴わずに書き込むステップとを更に含む、請求項5乃至請求項7の何れかの方法。上位装置から送られたデータをバッファに蓄積し、当該上位装置から送られたコマンドに応じて、当該バッファに蓄積された当該データをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、当該バッファに蓄積された当該データを当該テープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、当該一時記録領域に書き込まれた当該データを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行うコンピュータにおけるプログラムであって、前記コンピュータを、前記コマンドに応じて前記第1の動作及び前記第2の動作の何れかが行われたことにより第1のデータが前記通常記録領域に書き込まれた際に、当該第1のデータの容量である第1の容量を取得する取得部と、前記第1のデータが前記通常記録領域に書き込まれた後に送られる前記コマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、前記取得部により取得された前記第1の容量が第1の閾値を超えているかどうか、及び、前記予測部により予測された前記第2の容量が第2の閾値を超えているかどうかを判定する判定部と、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていると判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第1の動作が行われるように制御し、前記判定部により前記第1の容量が前記第1の閾値を超えており前記第2の容量が前記第2の閾値を超えていないと判定された場合に、前記第1のデータが前記通常記録領域に書き込まれた後に送られた前記コマンドに応じて、前記第2のデータについて前記第2の動作が行われるように制御する制御部として機能させる、プログラム。このように、特許文献1のRABFはトランザクションサイズが小さい場合に有効な技術であり、特許文献2のSWBFはトランザクションサイズが大きい場合に有効な技術である。従って、トランザクションサイズが閾値を超えなければRABFを起動し、トランザクションサイズが閾値を超えればSWBFを実行することは考えられる。しかしながら、トランザクションサイズが、RABFが有効なサイズであったとしても、その中で比較的大きいサイズである場合には、一時的にデータを違う場所に書いてそれを本来書くべき場所に書き直す作業の回数RABFサイクルの数が多くなり、この作業のオーバーヘッドによってパフォーマンスが低下する。こうしたことから、RABFサイクルの数を減少させることによってパフォーマンスを向上する手法が求められていた。本発明の目的は、データをテープ媒体に書き込む際に、RABFサイクルの数を減少させることによってパフォーマンスを向上することにある。かかる目的のもと、本発明は、上位装置から送られたデータをバッファに蓄積し、上位装置から送られたコマンドに応じて、バッファに蓄積されたデータをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、バッファに蓄積されたデータをテープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、一時記録領域に書き込まれたデータを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行う装置において、コマンドに応じて第1の動作及び第2の動作の何れかが行われたことにより第1のデータが通常記録領域に書き込まれた際に、第1のデータの容量である第1の容量を取得する取得部と、第1のデータが通常記録領域に書き込まれた後に送られるコマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、取得部により取得された第1の容量が第1の閾値を超えているかどうか、及び、予測部により予測された第2の容量が第2の閾値を超えているかどうかを判定する判定部と、判定部により第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていると判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第1の動作が行われるように制御し、判定部により第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていないと判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第2の動作が行われるように制御する制御部とを含む、装置を提供する。ここで、この装置において、制御部は、判定部により第1の容量が第1の閾値を超えていないと判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第2の動作が行われるように制御する、ものであってよい。また、この装置において、判定部は、予測部により予測された第2の容量が第2の閾値よりも大きい第3の閾値を超えているかどうかを更に判定し、制御部は、判定部により第2の容量が第3の閾値を超えていると判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第1の動作が行われるように制御する、ものであってよい。また、本発明は、上位装置から送られたデータをバッファに蓄積し、上位装置から送られたコマンドに応じて、バッファに蓄積されたデータをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、バッファに蓄積されたデータをテープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、一時記録領域に書き込まれたデータを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行う装置において、コマンドに応じて第1の動作及び第2の動作の何れかが行われたことにより第1のデータが通常記録領域に書き込まれた際に、第1のデータの容量である第1の容量を取得する取得部と、第1のデータが通常記録領域に書き込まれた後に送られるコマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、取得部により取得された第1の容量が第1の閾値を超えているかどうか、予測部により予測された第2の容量が第1の閾値を超えているかどうか、及び、予測部により予測された第2の容量が第1の閾値よりも小さい第2の閾値を超えているかどうかを判定する判定部と、判定部により第2の容量が第1の閾値を超えていると判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第1の動作が行われるように制御し、判定部により第1の容量が第1の閾値を超えており第2の容量が第1の閾値を超えておらず第2の閾値を超えていると判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第1の動作が行われるように制御し、判定部により第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていないと判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第2の動作が行われるように制御し、判定部により第1の容量が第1の閾値を超えておらず第2の容量が第1の閾値を超えていないと判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第2の動作が行われるように制御する制御部とを含む、装置も提供する。また、本発明は、上位装置から送られたデータをバッファに蓄積し、上位装置から送られたコマンドに応じて、バッファに蓄積されたデータをテープ媒体に書き込む装置における、データを書き込む方法であって、コマンドに応じて、バッファに蓄積された第1のデータをテープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、一時記録領域に書き込まれた第1のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第1のデータ群をテープ媒体上の通常記録領域に書き込むステップと、第1のデータ群が通常記録領域に書き込まれた際に、第1のデータ群の総容量である第1の容量を取得するステップと、第1のデータ群が通常記録領域に書き込まれた後に送られるコマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測するステップと、取得された第1の容量が第1の閾値を超えているかどうかを判定するステップと、予測された第2の容量が第2の閾値を超えているかどうかを判定するステップと、第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていると判定された場合に、第1のデータ群が通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータを通常記録領域にバックヒッチを伴わずに書き込むステップと、第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていないと判定された場合に、第1のデータ群が通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータを一時記録領域にバックヒッチを伴わずに書き込んだ後、一時記録領域に書き込まれた第2のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第2のデータ群を通常記録領域に書き込むステップとを含む、方法も提供する。ここで、この方法は、第2のデータが通常記録領域に書き込まれた際に、第2の容量を取得するステップと、第2のデータが通常記録領域に書き込まれた後に送られるコマンドに応じて書き込まれる第3のデータの容量である第3の容量を予測するステップと、取得された第2の容量が第1の閾値を超えているかどうかを判定するステップと、予測された第3の容量が第2の閾値を超えているかどうかを判定するステップと、第2の容量が第1の閾値を超えており第3の容量が第2の閾値を超えていると判定された場合に、第2のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第3のデータを通常記録領域にバックヒッチを伴わずに書き込むステップと、第2の容量が第1の閾値を超えており第3の容量が第2の閾値を超えていないと判定された場合に、第2のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第3のデータを一時記録領域に記録した後、一時記録領域に記録された第3のデータを含むデータ群であって各データ間のギャップを削減したデータ群である第3のデータ群を通常記録領域に書き込むステップとを更に含む、ものであってよい。更にまた、本発明は、上位装置から送られたデータをバッファに蓄積し、上位装置から送られたコマンドに応じて、バッファに蓄積されたデータをテープ媒体上の通常記録領域にバックヒッチを伴わずに書き込む第1の動作、及び、バッファに蓄積されたデータをテープ媒体上の一時記録領域にバックヒッチを伴わずに書き込んだ後、一時記録領域に書き込まれたデータを含むデータ群であって各データ間のギャップを削減したデータ群を通常記録領域に書き込む第2の動作の何れかを選択的に行うコンピュータにおけるプログラムであって、コンピュータを、コマンドに応じて第1の動作及び第2の動作の何れかが行われたことにより第1のデータが通常記録領域に書き込まれた際に、第1のデータの容量である第1の容量を取得する取得部と、第1のデータが通常記録領域に書き込まれた後に送られるコマンドに応じて書き込まれる第2のデータの容量である第2の容量を予測する予測部と、取得部により取得された第1の容量が第1の閾値を超えているかどうか、及び、予測部により予測された第2の容量が第2の閾値を超えているかどうかを判定する判定部と、判定部により第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていると判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第1の動作が行われるように制御し、判定部により第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていないと判定された場合に、第1のデータが通常記録領域に書き込まれた後に送られたコマンドに応じて、第2のデータについて第2の動作が行われるように制御する制御部として機能させる、プログラムも提供する。本発明によれば、データをテープ媒体に書き込む際に、RABFサイクルの数を減少させることによってパフォーマンスを向上することができる。以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。図1は、本実施の形態が適用されるテープドライブ10の構成例を示した図である。このテープドライブ10は、ホストインターフェイス以下、ホストI/Fという11と、バッファ12と、チャネル13と、ヘッド14と、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ20が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ20も図示している。このテープカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。ここで、ホストI/F11は、上位装置の一例であるホスト30との通信を行う。例えば、ホスト30から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト30に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAMDynamicRandomAccessMemoryによって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。チャネル13は、テープ23に書き込むべきデータをヘッド14に送ったり、テープ23から読み出されたデータをヘッド14から受け取ったりするために用いられる通信経路である。ヘッド14は、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込んだり、テープ23から情報を読み出したりする。モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。一方、コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。ヘッド位置制御システム17は、所望の1つ又は複数のラップを追跡するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド14を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。かかる構成を有するテープドライブ10において、トランザクションサイズが閾値を超えていなければRABFを起動し、トランザクションサイズが閾値を超えていればSWBFを起動する場合を考える。この場合、トランザクションサイズが閾値を超えた辺りから、SWBFに切り替わることによりパフォーマンスは著しく向上する。しかしながら、RABFからSWBFに切り替わるときのトランザクションサイズの近傍では、パフォーマンスを向上するための改善の余地があった。そこで、本実施の形態では、トランザクションサイズが、RABFが起動されるときのサイズの中で比較的大きなものである場合に、RABFにおける本来書くべき場所でのバックヒッチの発生頻度を減らすことにより、パフォーマンスを向上する手法を提案する。このように、本実施の形態はRABFを改良したものであるので、まず、一般的なRABFの動きについて説明する。図2は、一般的なRABFの動きを模式的に示した図である。尚、ここでは、同期の間に書き込まれるデータ1回のトランザクション分のデータを矩形で表し、i番目のデータをDiと表記している。図では、通常記録領域の一例である通常ラップ201にデータDNを書き込んだ後、次のデータDN1のサイズトランザクションサイズが閾値以下だったため、一時記録領域の一例であるABFラップ202にデータDN1、DN2、DN3、DN4、、DMを書き込んでいる。このとき、データDN1、DN2、DN3、DN4、、DMはバックヒッチなしで書き込まれるので、各データ間にはギャップが生じる。その後、一定の条件が満たされた場合に、ABFラップ202に書き込まれたデータを、ギャップを削減して理想的にはギャップなしで再帰的書込みRecursiveWriteデータ203として通常ラップ201に書き込んでいる。尚、この一定の条件には、次のような条件がある。第1の条件は、バッファ12に空き容量がなくなったという条件である。ABFラップ202に書き込まれるデータは通常ラップ201への再帰的書込みのためにバッファ12に蓄積する必要があることから、このような条件が採用される。第2の条件は、ABFラップ202にデータを書き込める領域がなくなったという条件である。第3の条件は、ABFラップ202で書込みエラーが発生するという条件である。第4の条件は、書込み処理そのものが終了し、例えばテープ23の排出要求Unloadコマンドを受け付けたという条件である。一般的に、トランザクションサイズが比較的大きいデータを処理する場合には、第1の条件が満たされることで再帰的書込みが行われ、トランザクションサイズが比較的小さいデータを処理する場合には、第2の条件が満たされることで再帰的書込みが行われる。このようにして再帰的書込みデータ203の書込みが終わると、この一般的なRABFの場合、次のデータを、矢印204で示すように、再度ABFラップ202に書き込む。次に、本実施の形態における手法の動きについて説明する。図3は、本実施の形態における手法の動きを模式的に示した図である。尚、ここでも、同期の間に書き込まれるデータ1回のトランザクション分のデータを矩形で表し、i番目のデータをDiと表記している。図において、再帰的書込みデータ203を書き込むところまでは、図2と同様である。しかしながら、本実施の形態では、再帰的書込みデータ203の書込みが終わると、再帰的書込みデータ203の容量、及び、次のデータDM1の予想されるトランザクションサイズによっては、次のデータDM1をバックヒッチなしで通常ラップ201に書くSWBFに類似の動作を行う。そして、その次のデータからは、矢印205で示すように、図2と同様、ABFラップ202に書き込む。このように、本実施の形態では、複数のRABFサイクルごとに、1回のトランザクション分のデータをABFラップ202に書き込まなくなる。これにより、RABFサイクルの数が減少し、パフォーマンスが向上する。また、本実施の形態では、SWBFを起動するには少し小さなトランザクションサイズのデータをテープ23に書き込む場合に、再帰的書き込みというまとめ書きの作業を1回のトランザクションとみなし、このまとめ書きの作業の後に限り、バックヒッチをスキップするようにした。これにより、不必要にバックヒッチがスキップされてテープ23上の容量が低下することを防ぐことができる。尚、図3において、データDN1、DN2、DN3、DN4、、DMは何れも第1のデータの一例であり、これらのデータを含む再帰的書込みデータ203は第1のデータ群の一例である。また、データDM1は第2のデータの一例であり、仮にデータDM1が再帰的書込みデータ203の容量及びデータDM1のトランザクションサイズによってABFラップ202に書き込まれたとすると、その後に通常ラップ201に書き込まれるデータDM1を含む再帰的書込みデータが第2のデータ群の一例である。更に、データDM1が通常ラップ201に書き込まれた後にデータDM2が書き込まれるとすると、このデータDM2が第3のデータの一例であり、データDM2がデータDM1のトランザクションサイズによってABFラップ202に書き込まれたとすると、その後に通常ラップ201に書き込まれるデータDM2を含む再帰的書込みデータが第3のデータ群の一例である。次に、このような動作を実現するためのコントローラ16の機能構成について説明する。図4は、コントローラ16の機能構成例を示したブロック図である。図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43とを備える。また、トランザクションサイズ取得部44と、トランザクションサイズ記憶部45と、書込みデータサイズ取得部46と、書込みデータサイズ記憶部47とを備える。更に、トランザクションサイズ予測部48と、動作決定部49と、動作信号出力部40とを備える。このうち、コマンド処理部41は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込む同期コマンドWriteFMコマンド等がある。バッファ管理部42は、コマンド処理部41がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部41が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部43に出力する。チャネル入出力部43は、バッファ管理部42がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ12に格納したりする。また、テープ23にデータセットを書き込む都度、データセットに関する判定を行い、その判定結果に基づいて、トランザクションサイズ取得部44に対するトランザクションサイズの取得の開始若しくは終了の指示、又は、書込みデータサイズ取得部46に対する書込みデータサイズの取得の開始若しくは終了の指示を行う。トランザクションサイズ取得部44は、同期コマンドに応じてテープ23にデータが書き込まれる都度、前回の同期コマンドに応じた書込み時又は最初の書込み時から今回の同期コマンドに応じた書込み時までに書き込まれたデータのサイズトランザクションサイズを取得する。トランザクションサイズ記憶部45は、トランザクションサイズ取得部44が取得したトランザクションサイズを時系列に記憶する。書込みデータサイズ取得部46は、同期コマンドに応じてテープ23にデータが書き込まれる都度、前回の同期コマンドに応じた書込み時若しくは最初の書込み時から今回の同期コマンドに応じた書込み時までに書き込まれたデータのサイズ、又は、再帰的書込みで書き込まれたデータのサイズを取得する。ここでは、これらの書き込まれたデータのサイズを総称して、書込みデータサイズと呼ぶものとする。本実施の形態では、第1のデータの一例として、これらの書き込まれたデータを用いており、第1のデータの容量である第1の容量の一例として、書込みデータサイズを用いている。また、第1の容量を取得する取得部の一例として、書込みデータサイズ取得部46を設けている。書込みデータサイズ記憶部47は、書込みデータサイズ取得部46が取得した書込みデータサイズを記憶する。トランザクションサイズ予測部48は、トランザクションサイズ記憶部45に記憶されたトランザクションサイズの履歴に基づいて、次の同期コマンドに応じてテープ23に書き込まれるデータのサイズトランザクションサイズを予測する。本実施の形態では、第2のデータの一例として、次の同期コマンドに応じてテープ23に書き込まれるデータを用いており、第2のデータの容量である第2の容量の一例として、そのデータのトランザクションサイズを用いている。また、第2の容量を予測する予測部の一例として、トランザクションサイズ予測部48を設けている。動作決定部49は、トランザクションサイズ予測部48が予測したトランザクションサイズが閾値を超えているか、及び、書込みデータサイズ記憶部47に記憶された書込みデータサイズが閾値を超えているかに基づいて、バックヒッチせずに通常ラップ201で次のデータを待つ動作、及び、ABFラップ202に移動して次のデータを待つ動作の何れを行うかを決定する。本実施の形態では、第1の容量が第1の閾値を超えているかどうか、第2の容量が第1の閾値を超えているかどうか、及び、第2の容量が第2の閾値を超えているかどうかを判定する判定部の一例として、動作決定部49を設けている。動作信号出力部40は、ヘッド位置制御システム17及びモータドライバ18に対して、動作決定部49で決定された動作を行うことを指示する信号を出力する。本実施の形態では、第1の動作の一例として、バックヒッチせずに通常ラップ201で次のデータを待つ動作を用いており、第2の動作の一例として、ABFラップ202に移動して次のデータを待つ動作を用いている。また、第2の容量が第1の閾値を超えていると判定された場合、及び、第1の容量が第1の閾値を超えており第2の容量が第1の閾値を超えておらず第2の閾値を超えていると判定された場合に、第2のデータについて第1の動作が行われるように制御し、第1の容量が第1の閾値を超えており第2の容量が第2の閾値を超えていないと判定された場合、及び、第1の容量が第1の閾値を超えておらず第2の容量が第1の閾値を超えていないと判定された場合に、第2のデータについて第2の動作が行われるように制御する制御部の一例として、動作信号出力部40を設けている。次に、コントローラ16の動作について説明する。図5は、コントローラ16がトランザクションサイズ及び書込みデータサイズを採取するときの動作例を示したフローチャートである。このフローチャートにおいて、Tx_Sizeはトランザクションサイズを表し、Dは書込みデータサイズを表す。尚、DSは、は、テープ23に書かれるデータの最小単位であるデータセットを表し、ファームウエアはデータセットの書込みが完了した時点でこのフローチャートを実行し、Tx_Size及びDを取得する。コントローラ16では、まず、チャネル入出力部43が、書き込んだデータセットが書き始めのデータセットであるかどうかを判定するステップ401。ここで、書き始めのデータセットとは、テープ23をマウントして全く初めて書き込んだデータセット、テープ23からデータを読み込む動作を行った後に初めて書き込んだデータセット等である。チャネル入出力部43が、書き込んだデータセットが書き始めのデータセットであると判定すると、チャネル入出力部43からのTx_Sizeの取得の開始指示により、トランザクションサイズ取得部44が、Tx_Sizeのモニタを開始するステップ405。また、チャネル入出力部43からのDの取得の開始指示により、書込みデータサイズ取得部46が、Dのモニタを開始するステップ406。また、チャネル入出力部43は、書き込んだデータセットが書き始めのデータセットでないと判定すると、次に、書き込んだデータセットが同期を行った直後の書込みにおける最初のデータセットであるかどうかを判定するステップ402。ここで、同期を行った直後の書込みにおける最初のデータセットとは、テープ23にデータが継続して書き込まれているときの同期直後のデータセット等である。尚、同期コマンドが来なくてもテープ23にデータが書き込まれることはあるので、この同期を行った直後の書込みは、同期コマンドによらない書込みも含む。チャネル入出力部43が、書き込んだデータセットが同期を行った直後の書込みにおける最初のデータセットであると判定すると、チャネル入出力部43からのTx_Sizeの取得の開始指示により、トランザクションサイズ取得部44が、Tx_Sizeのモニタを開始するステップ405。また、チャネル入出力部43からのDの取得の開始指示により、書込みデータサイズ取得部46が、Dのモニタを開始するステップ406。更に、チャネル入出力部43は、書き込んだデータセットが同期を行った直後の書込みにおける最初のデータセットでないと判定すると、次に、書き込んだデータセットが再帰的書込みにおける最初のデータセットであるかどうかを判定するステップ403。ここで、現在の書込みが再帰的書込みであるかどうかは、図示しない記憶部に記憶されたRABFのステータス情報に基づいて判断することができる。チャネル入出力部43が、書き込んだデータセットが再帰的書込みにおける最初のデータセットであると判定すると、チャネル入出力部43からのDの取得の開始指示により、書込みデータサイズ取得部46が、Dこの場合は、再帰的書込みデータのサイズのモニタを開始するステップ406。更にまた、チャネル入出力部43は、書き込んだデータセットが再帰的書込みにおける最初のデータセットでないと判定すると、次に、書き込んだデータセットが同期完了時のデータセットであるかどうかを判定するステップ404。チャネル入出力部43が、書き込んだデータセットが同期完了時のデータセットであると判定すると、チャネル入出力部43からのTx_Sizeの取得の終了指示により、トランザクションサイズ取得部44が、Tx_Sizeのモニタを終了し、Tx_Sizeをトランザクションサイズ記憶部45に記憶するステップ407。また、チャネル入出力部43からのDの取得の終了指示により、書込みデータサイズ取得部46が、Dのモニタを終了し、Dを書込みデータサイズ記憶部47に記憶するステップ408。図6は、コントローラ16が次のデータを書き込む際の動作を決定するときの動作例を示したフローチャートである。このフローチャートにおいて、Next_Estimated_Txは次のデータの予想されるトランザクションサイズを表し、Dは書込みデータサイズを表す。また、Threshold_AはSWBFとRABFとの間で切り替えを行うための閾値を表し、Threshold_BはDの値が大きくても効果が小さいためSWBFを行わないことを決定するための閾値を表す。ここで、Threshold_A及びThreshold_Bには、Threshold_A>Threshold_Bの関係が成り立つような値を設定するものとする。例えば、Threshold_Aを200Bとし、Threshold_Bを20MBとするとよい。尚、コマンド処理部41が同期コマンドを受信すると、バッファ管理部42がバッファ12に蓄積されたデータを読み出し、チャネル入出力部43が同期を行う。そして、チャネル入出力部43が同期の完了を検知した時点で、このフローチャートは実行される。コントローラ16では、まず、チャネル入出力部43からの指示により、トランザクションサイズ予測部48が、トランザクションサイズ記憶部45に記憶された過去のTx_Sizeの履歴に基づいて、Next_Estimated_Txを予測するステップ451。例えば、過去の幾つかのTx_Sizeの平均値を算出することにより、Next_Estimated_Txを予測すればよい。次に、チャネル入出力部43が、同期完了時にヘッド14が位置付けられているラップが通常ラップ201であるかABFラップ202であるかを判定するステップ452。まず、チャネル入出力部43が同期完了時にヘッド14が位置付けられているラップが通常ラップ201であると判定した場合の処理について説明する。この場合、動作決定部49が、トランザクションサイズ予測部48が予測したNext_Estimated_TxがThreshold_Aを超えているかどうかを判定するステップ453。その結果、Next_Estimated_TxがThreshold_Aを超えていると判定されれば、動作決定部49が、SWBFの動作、つまり、即座にバックヒッチを行わずに通常ラップ201で次のデータの書込みの準備が整うのを待つ動作を決定し、動作決定部49からの指示により、動作信号出力部40が、ヘッド位置制御システム17及びモータドライバ18に対してその動作を指示するステップ456。具体的には、ヘッド位置制御システム17に対してラップを切り替えることを指示せず、モータドライバ18に対してバックヒッチを行わずにそのままの速度でテープ23を走行させることを指示する。一方、Next_Estimated_TxがThreshold_Aを超えていないと判定されれば、動作決定部49は、書込みデータサイズ記憶部47に記憶されたDがThreshold_Aを超えているかどうかを判定するステップ454。ここで、DがThreshold_Aを超えていると判定されれば、トランザクションサイズ予測部48が予測したNext_Estimated_TxがThreshold_Bを超えているかどうかを判定するステップ455。そして、Next_Estimated_TxがThreshold_Bを超えていると判定されれば、動作決定部49が、SWBFの動作、つまり、即座にバックヒッチを行わずに通常ラップ201で次のデータの書込みの準備が整うのを待つ動作を決定し、動作決定部49からの指示により、動作信号出力部40が、ヘッド位置制御システム17及びモータドライバ18に対してその動作を指示するステップ456。具体的には、ヘッド位置制御システム17に対してラップを切り替えることを指示せず、モータドライバ18に対してバックヒッチを行わずにそのままの速度でテープ23を走行させることを指示する。また、Next_Estimated_TxがThreshold_Bを超えていないと判定されれば、動作決定部49が、RABFの動作、つまり、ABFラップ202に移動して次のデータの書込みの準備が整うのを待つ動作を決定し、動作決定部49からの指示により、動作信号出力部40が、ヘッド位置制御システム17及びモータドライバ18に対してその動作を指示するステップ457。具体的には、ヘッド位置制御システム17に対してラップをABFラップ202に切り替えることを指示し、モータドライバ18に対してバックヒッチを行わずにそのままの速度でテープ23を走行させることを指示する。一方、ステップ454でDがThreshold_Aを超えていないと判定されれば、動作決定部49が、RABFの動作、つまり、ABFラップ202に移動して次のデータの書込みの準備が整うのを待つ動作を決定し、動作決定部49からの指示により、動作信号出力部40が、ヘッド位置制御システム17及びモータドライバ18に対してその動作を指示するステップ457。具体的には、ヘッド位置制御システム17に対してラップをABFラップ202に切り替えることを指示し、モータドライバ18に対してバックヒッチを行わずにそのままの速度でテープ23を走行させることを指示する。次に、チャネル入出力部43が同期完了時にヘッド14が位置付けられているラップがABFラップ202であると判定した場合の処理について説明する。この場合、動作決定部49が、RABFの動作、つまり、ABFラップ202で次のデータの書込みの準備が整うのを待つ動作を決定し、動作決定部49からの指示により、動作信号出力部40が、ヘッド位置制御システム17及びモータドライバ18に対してその動作を指示するステップ458。具体的には、ヘッド位置制御システム17に対してラップを切り替えることを指示せず、モータドライバ18に対してバックヒッチを行わずにそのままの速度でテープ23を走行させることを指示する。尚、この動作例では、ステップ453で用いる閾値及びステップ454で用いる閾値を、何れもThreshold_Aとしたが、この限りではない。例えば、ステップ453で用いる閾値を、Threshold_Aとは異なり、Threshold_Bよりも大きいThreshold_Cとしてもよい。この場合、Threshold_Cは、第3の閾値の一例である。また、この動作例では、ステップ453でNext_Estimated_TxがThreshold_Aを超えていると判定された場合にはステップ456を実行し、ステップ453でNext_Estimated_TxがThreshold_Aを超えていないと判定された場合にのみステップ454以降を実行するようにしたが、これには限らない。例えば、ステップ453でNext_Estimated_TxがThreshold_Aを超えているかどうかを判定することなく、無条件にステップ454以降を実行するようにしてもよい。更に、この動作例では、ステップ454でDがThreshold_Aを超えていないと判定された場合には無条件でステップ457を実行するようにしたが、これもこの限りではない。例えば、何らかの条件が満たされた場合にのみステップ457へ進み、その条件が満たされない場合はステップ455へ進むようにしてもよい。最後に、本実施の形態による効果について、具体的な数値を用いて説明する。ここでは、Threshold_Aを200[MB]とし、Threshold_Bを20[MB]とし、バッファ12のサイズを800[MB]とする。そして、1つ目のABFラップ202から2つ目のABFラップ202へのラップターン時間テープ23の走行方向の変更に要する時間を1.5[sec]とし、ホスト30からの転送レートを100[MB/sec]とし、テープ23に書き込むときの転送レートを160[MB/sec]とし、トランザクションサイズを100[MB]とする。また、説明を簡単にするために、次のような状況を仮定する。第一に、テープ23が走行している場合、テープドライブ10はホスト30からデータを受け取ると同時にそのデータをテープ23に書き込むことができるものとする。よって、RABF中のオーバーヘッドは、バックヒッチ及びラップターン、再帰的書込みの実行のみであるとする。1回のRABFサイクルにおけるオーバーヘッドは、ラップターン時間の2倍に再帰的書込みの時間を加えた時間であるので、上記の数値を用いると、8[sec]=1.5[sec]×2800[MB]/160[MB/sec]となる。第二に、再帰的書込みを行うための条件は、先に述べた第1の条件バッファ12に空き容量がなくなったという条件のみであるとする。このような前提の下、一般的なRABFで10000[MB]のデータを書き込んだ場合と、本実施の形態における手法で同じサイズのデータを書き込んだ場合とを比較する。まず、一般的なRABFでデータを書き込んだ場合について説明する。一般的なRABFで10000[MB]のデータを書くのに必要なRABFサイクルの数は、12.5=10000[MB]/800[MB]であり、全体のオーバーヘッドは、100[sec]=8[sec]×12.5となる。従って、テープドライブ10がテープ23にデータを書き込んだときの実際の転送レートは、50[MB/sec]=10000[MB]/10000[MB]/100[MB/sec]100[sec]となる。次に、本実施の形態における手法でデータを書き込んだ場合について説明する。本実施の形態における手法で10000[MB]のデータを書くのに必要なRABFサイクルの数は、11.1=10000[MB]/800[MB]100[MB]であり、全体のオーバーヘッドは、88.8[sec]=8[sec]×11.1となり、11.2[sec]の改善が見込まれる。そして、一般的なRABFと同様の計算を行うと、テープドライブ10がテープ23にデータを書き込んだときの実際の転送レートは、約53[MB/sec]=10000[MB]/10000[MB]/100[MB/sec]88.8[sec]となり、約3[MB/sec]の転送レートの改善が見られる。このように、本実施の形態では、RABFで再帰的書込みが行われた後、再帰的書込みデータと次のデータの予想されるトランザクションサイズとによっては、次のデータをバックヒッチレスで通常ラップ201に書き込むようにした。これにより、RABFサイクルの数が減少するので、データを書き込む際のパフォーマンスが向上した。また、本実施の形態では、トランザクションサイズが小さいデータが連続する場合には、再帰的書込みデータの容量と組み合わせた判断に基づき、必要以上にバックヒッチをスキップしないようにした。これにより、むやみにバックヒッチをスキップすることによりテープ23上の容量を必要以上に減らしてしまうことが抑制された。ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム装置又は機器、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリRAM、リードオンリーメモリROM、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク-リードオンリーメモリCD-ROM、コンパクトディスク-リード/ライトCD-R/W及びDVDが含まれる。以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。