Featured image of post 【目次】Perlで作るファイルバックアップツール(全8回)

【目次】Perlで作るファイルバックアップツール(全8回)

Perl でバックアップツールを作りながら Template Method と Strategy を学ぶ全8回の連載。目次を兼ねた案内板で、読む順と各回の内容をまとめています。

バックアップを取りたくて、既存のツールは大げさ。そこで Perl でバックアップツールを自作します。最初はファイルを全部コピーするだけの最小版です。そこから、差分だけ処理する、方式を切り替える、tar.gz にまとめる、失敗に気づけるようにする、と回を追って育てていきます。途中で使う設計に、GoF の Template Method と Strategy という名前がつきます。

このページは目次を兼ねた案内板です。通して作るなら「全8回」を順に、特定の困りごとがあるなら「困りごとから探す」から選んでください。

読み方

  • 通して読む: 第1回から順に。コードは前の回の続きで、各回の終わりに次の回で直す問題が示されます
  • 設計パターンだけ知りたい: 第3回(Template Method)と第4回(Strategy)、第5回でその組み合わせです。前提のコードは第1〜2回にあります
  • 動くバックアップだけ欲しい: 第2回の差分バックアップまでで、動くツールとして一区切りです

全8回

  1. Perl でバックアップツールを自作したい。再帰コピーで動く最小版を作る
  2. 毎回全ファイルをコピーして遅い。更新時刻の比較で差分だけ処理する
  3. バックアップの if 文が増えてきた。Template Method で処理の骨格を切り出す
  4. バックアップ方式を切り替えたい。フルと差分と増分を Strategy で差し替える
  5. Template Method と Strategy は、どちらがループを持つべきか。2つを組み合わせる
  6. tar.gz にまとめたい。Engine を触らず圧縮の戦略を足す
  7. 夜間バッチで失敗に気づけるようにしたい。ログと例外処理を足す
  8. このバックアップツールのどこが変わりやすく、どこが変わらないのか。設計を振り返る

困りごとから探す

まず動くバックアップが欲しい、遅いのを直したい

  • 第1回 — 再帰的にコピーする最小版と、毎回全ファイルをコピーする弱点
  • 第2回 — 更新時刻の比較で、2回目以降を約5秒から0.08秒へ

条件が増えて、コピー処理の if 文が読みにくい

  • 第3回 — 処理の流れを親クラスに固定する Template Method

フル・差分・増分を切り替えたい

  • 第4回 — 方式ごとに戦略クラスを作り、呼び出し側を変えずに差し替える
  • 第5回 — 骨格と戦略を組み合わせ、巡回をどちらが持つか決める

圧縮など、新しい方式を足したい

  • 第6回 — 全ファイルを tar.gz にまとめる戦略を、既存コードを触らず足す

夜間に無人で動かしても安心したい

  • 第7回 — ログ出力、例外処理、一過性のエラーへの再試行
  • 第8回 — 設計の振り返りと、クラウド保存・暗号化・通知を足す場所
comments powered by Disqus
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。