プログラム開発の現場では、いきなりコーディングに取り掛かるのではなく、「何を作るか」「どう動くべきか」をまとめた“仕様書”が重要な役割を果たします。
今回は、C#で「ファイルをバックアップし、1か月以上前の不要なファイルを自動で削除する」プログラムを題材に、プログラム前の仕様書作成の流れや、その後の開発までの一連の流れをわかりやすく解説します。これからプログラミングを学ぶ方や、業務での自動処理を考えている方の参考になれば幸いです。
まず、仕様書において最も大切なのは「目的を明確にすること」です。
今回のプログラムは以下の目的で作成します。
目的:
このような処理は、ログファイルや一時ファイルを扱うシステムのメンテナンスなどに活用されます。運用効率の向上やディスク容量の確保が主な目的です。
仕様書は、以下のような構成で作成します。
C:\Data
D:\Backup\Data
実装に入る前に、以下のような点を確認しておくとスムーズに開発が進みます。
仕様書にこれらのポイントを盛り込んでおくことで、あとから機能変更があった場合にも影響範囲を把握しやすくなります。
以下にC#のコンソールアプリケーションの簡単な実装例を示します。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = @"C:\Data";
string backupPath = @"D:\Backup\Data";
if (!Directory.Exists(sourcePath))
{
Console.WriteLine("ソースフォルダが存在しません。");
return;
}
if (!Directory.Exists(backupPath))
{
Directory.CreateDirectory(backupPath);
}
string[] files = Directory.GetFiles(sourcePath);
foreach (string file in files)
{
try
{
string fileName = Path.GetFileName(file);
string destFile = Path.Combine(backupPath, fileName);
// バックアップコピー
File.Copy(file, destFile, true);
// 更新日が30日以上前のファイルは削除
DateTime lastWriteTime = File.GetLastWriteTime(file);
if (lastWriteTime < DateTime.Now.AddDays(-30))
{
File.Delete(file);
Console.WriteLine($"{fileName} を削除しました。");
}
else
{
Console.WriteLine($"{fileName} は削除対象外です。");
}
}
catch (Exception ex)
{
Console.WriteLine($"エラー:{ex.Message}");
}
}
Console.WriteLine("処理が完了しました。");
}
}
実際の業務用途では、以下のような拡張が求められる場合もあります。
log.txt
)appsettings.json
など)からパスや日数を読み込むこうした拡張も、仕様書の段階である程度盛り込んでおくと、あとからの対応が格段に楽になります。
今回のように、実装前に仕様書を作ることで、「何をするプログラムなのか」「どんな条件で動くのか」を明確にできます。
特に複数人で開発する場合や、後日改修する際には、仕様書の有無が作業効率を大きく左右します。
C#でのファイル操作は基本的な機能でありながらも、実務で使える自動化処理の第一歩になります。
ぜひ、仕様書の重要性とともに、C#でのシンプルなファイル操作をマスターしてください。