ファイル整合性チェックツールの作成と検証(by #ChatGPT )

2025年5月19日


概要

結城浩さんが管理しているメールマガジンの原稿ファイル(例:mm685.txt)について、ファイル名と本文の整合性を確認するための自動チェックスクリプトを作成しました。対象となるのは、カレントディレクトリに存在する mmNNN.txt 形式のファイル群であり、それぞれに日付とボリューム番号が記載されています。

実施内容

以下の観点で検査を行う Ruby スクリプト lint-file-integrity を作成しました:

  • ファイル名(例:mm685.txt)と本文中の Vol.685番号の一致
  • 本文から抽出した 日付に重複がないか
  • 各ファイルの 日付が火曜日になっているか
  • 並び順に見て、1週間ごとの間隔で連続しているか

スクリプトの構成と特徴

  • タイトル行から 結城浩の「…」YYYY年MM月DD日 Vol.NNN のパターンを正規表現で抽出。
  • Date.new により日付を構造的に扱い、曜日の検査や日付間の差分を計算。
  • 出力は標準出力に表示され、問題がなければ "✅ 問題は見つかりませんでした" と表示。
  • ファイル名と Vol 番号が一致しない・日付に異常がある・火曜日でない場合などは明示的にエラー表示。

結果

2025年5月19日時点で確認されたファイル群において、以下の結果が得られました:

  • ファイル名とVol.番号の不一致:なし
  • 火曜日でない日付が5件見つかりました。
    • これにより、日付間の不規則な間隔も確認されました。
  • これらの問題は、いずれも誤記によるものであり、連番のずれや構造的な欠陥ではありませんでした
  • 2012年に発行されたサンプル版が火曜日でないことも確認されました。

コメント

このツールを活用することで、将来的にファイルの追加や編集が行われた際にも、自動的に整合性をチェックしやすくなります。必要に応じて、抜け番号の検出や年をまたぐ処理の強化なども今後対応可能です。

original gist

(2025年5月19日)