102:一時的な作業ファイルは一時ファイル置き場に作成する

プログラミング迷子: 作成済みファイル一覧にゴミファイルが

  • 後輩W:ユーザーから、領収書PDF一覧に開けないファイルがあるって連絡が来ました。

  • 先輩T:開けない? どのファイルなのか聞いた?

  • 後輩W:そのファイルを送ってもらったんですが、 generated_receipt.pdf というファイル名で、1,024byteしかないんですよ。しかも、一覧ページをリロードしたらそのファイルはなくなったそうです。

  • 先輩T:それ、もしかして書き込み処理中のファイルが見えちゃってたのでは。

作成処理中の一時ファイルを最終的な保存用ディレクトリに作成してはいけません。 このとき、作成の途中で別の処理がこのディレクトリにアクセスした場合、 書き込みが最後まで完了したファイルと一時ファイル generated_receipt.pdf を同等に扱ってしまうと問題になります。

cover

(中略)詳細は書籍 自走プログラマー をご参照ください

ベストプラクティス

一時的な作業ファイルは一時ファイル置き場に作成することで、作成中ファイルへのアクセスの可能性や、エラー時の残骸問題を避けられます。 一時ファイル置き場を用意した場合、定期的に不要ファイルをクリーンアップしましょう。