生成PDFの保管と再発行の設計

オブジェクトストレージへの保存と、いつでも同じ帳票を再発行できる仕組み

Vercel Blob保管再発行オブジェクトストレージ履歴
読了時間: 8分

はじめに

帳票を自動生成できるようになると、つい「作れたらゴール」と思いがちです。ですが実務では、むしろ作ったあとのほうが長いんです。

「先月送った請求書をもう一度ください」「あの納品書の控えが欲しい」——こうした依頼は日常的に発生します。そのたびに元データから作り直していては、以前と本当に同じ内容が出るのか不安が残ります。

この記事では、生成した帳票PDFをどう保管し、いつでも同じものを再発行できるようにするか、その設計を解説します。使ったのはVercel Blobというオブジェクトストレージです。

「作って終わり」にしない理由

帳票は繰り返し求められる

請求書や納品書は、一度送ったら終わりの書類ではありません。取引先の経理処理、自社の監査、問い合わせ対応——さまざまな場面で、過去の帳票が改めて必要になります。

このとき、帳票がどこにも残っていないと困ります。「たしか作ったはずだけど、ファイルが見当たらない」という状態は、テンプレート運用の手元PCによく起きる話です。帳票は求められたときに確実に出せることが、作れることと同じくらい重要なんです。

作り直しは「同じもの」を保証しない

「元データがあるなら、また生成すればいい」と思うかもしれません。ですが、これには落とし穴があります。

マスタや書式は時間とともに変わります。だからこそ、発行した瞬間のPDFそのものを保存しておくことに意味があります。作り直しではなく、当時の現物を取り出せることが理想です。

オブジェクトストレージへの保管

なぜVercel Blobか

生成したPDFの保存先として選んだのがVercel Blobです。これはファイルをそのまま置いておけるオブジェクトストレージで、アプリケーションと同じ基盤上で扱えるのが利点でした。

PDFのようなバイナリファイルは、データベースに詰め込むより、ファイルとしてオブジェクトストレージに置くほうが素直です。取り出しもURL経由でシンプルに行えます。

保存の流れ

帳票を生成したら、そのバイト列をそのままストレージに預けます。

生成から保管までの流れ
PDFを生成

明細とプロファイルからPDFのバイト列を組み立てる

ストレージに保存

生成したPDFをVercel Blobにアップロード

参照情報を記録

どの帳票がどこに保存されたかを台帳として残す

ここでのポイントは、PDFの保存場所を帳票の識別情報とひも付けて記録しておくことです。「この取引の請求書はこのファイル」という対応が分かって初めて、あとから引き出せます。

いつでも再発行できる設計

保存済みを取り出すだけ

再発行を求められたときの動きはシンプルです。元データから作り直すのではなく、保存済みのPDFをストレージから取り出すだけ。

再発行のアプローチ
BEFORE
毎回作り直す

その時点のマスタ・書式で生成されるため、当時の現物と一致する保証がない

保管方式へ
AFTER
保存済みを取り出す

発行した瞬間のPDFがそのまま出る。何度出しても完全に同じ帳票

これなら、半年前の請求書でも、当時送ったものと一字一句同じものを渡せます。「本当に同じか」を気にする必要がなくなり、対応する側も安心です。

履歴として積み上がる価値

保管を続けると、生成した帳票が履歴として蓄積されていきます。これは単なるバックアップ以上の価値を持ちます。

いつ、どの取引先に、どんな帳票を発行したか。その記録が残っていること自体が、監査や問い合わせ対応の土台になります。帳票を作る仕組みが、そのまま帳票の履歴を残す仕組みにもなっている——保管を設計に組み込む意義は、ここにあります。

まとめ

帳票は「作って終わり」ではなく、「いつでも同じものを再発行できる」ところまで設計してはじめて実用になります。

  • 帳票は発行後も繰り返し求められるため、確実に保管しておく必要がある
  • マスタや書式は変わるので、再生成では当時の現物と一致しない場合がある
  • 生成したPDFをVercel Blobに保存し、識別情報とひも付けておく
  • 再発行は保存済みを取り出すだけ。完全に同じ帳票を何度でも出せる
  • 蓄積された帳票は履歴となり、監査や問い合わせ対応の土台になる

このシリーズでは、帳票をコードで作る全体像を 請求書・納品書PDFの自動生成 で、日本語表示の技術を 日本語フォント埋め込みとファイルサイズ最適化 で、会社情報の管理を 宛先・自社プロファイルのマスタ管理 で解説しています。