ダミーファイル生成

画像・音声・動画・PDF・テキストなど、指定したバイト数ちょうどのダミーファイルをブラウザだけで生成します。アップロードフォームのサイズ上限テストに便利です。ファイルは一切サーバーに送信されません。

形式

形式 拡張子 MIME タイプ 仕様上の上限 備考
テキスト (TXT) .txt text/plain 実質無制限 読める繰り返しテキストで詰めます
CSV .csv text/csv 実質無制限 ヘッダー付きのダミー表データ
JSON .json application/json 実質無制限 1つの文字列フィールドに詰めます
バイナリ (BIN) .bin application/octet-stream 実質無制限 0x00〜0xFF を繰り返す任意バイト列
画像 (PNG) .png image/png 実質無制限 有効な 1x1 画像 + 詰め物チャンク
音声 (WAV) .wav audio/wav 4 GiB 無音の PCM データ(実際に再生可能)
動画 (MP4) .mp4 video/mp4 実質無制限 対応ブラウザでは実録画、非対応時は構造のみのプレースホルダー
動画 (WebM) .webm video/webm 実質無制限 実際に録画した数秒のアニメーション(対応ブラウザのみ)
PDF .pdf application/pdf 実質無制限 白紙 1 ページの有効な PDF
ZIP .zip application/zip 4 GiB 無圧縮の単一エントリアーカイブ
広告

ダミーファイル生成とは

アップロード機能を作ると、サイズ上限や拡張子の判定が意図どおり働くかを確かめる必要があります。そのために「指定したバイト数ちょうどで、形式としては正しいファイル」が必要になりますが、手元にそういう都合のよいファイルはなかなかありません。このツールは、テキスト・画像・音声・動画・PDF・ZIPなどを、狙ったサイズちょうどで生成します。

生成されるファイルは、形式の仕様に沿った有効なデータです。多くの形式には「読み飛ばしてよい」と決められた領域があり、そこを使ってサイズを調整しているため、開いてもエラーになりません。処理はすべてブラウザ内で完結し、生成した内容がサーバーへ送られることはありません。なおWAVとZIPは仕様上4GiBが上限です。

ダミーファイルの作り方

  1. ファイル形式を選ぶ テスト対象が受け付ける形式を選びます。拡張子とMIMEタイプの判定を試したい場合は、その形式そのものを選んでください。
  2. サイズを指定する 数値と単位を入力します。上限が「10MB」の場合は、10,000,000バイトと10,485,760バイトのどちらの解釈かで境界が変わる点に注意してください。
  3. ファイル名を決める 拡張子を含めた名前を指定できます。名前で弾く仕組みを試したいときはここを変えて確認します。
  4. 生成してダウンロードする 「生成する」を押すとファイルが作られます。大きなサイズでは時間がかかるため、その間はキャンセルもできます。

使いこなすためのヒント

  • アップロードフォームの検証ロジックは 拡張子・MIME タイプ・ファイルサイズ の3つを別々にチェックしていることが多いです。このツールはすべて仕様に沿った値で生成するため、サイズ制限だけを狙い撃ちしてテストできます。
  • 「10MB まで」という制限は、実装によって 10,000,000 バイト(106 だったり 10,485,760 バイト(220 だったりします。単位セレクトで両方の基準を選べるので、境界値ちょうど・1バイト超えの両方をテストできます。
  • Chrome や Edge では保存先のドライブに直接ストリーム書き込みするため、数十GB規模のファイルもメモリを圧迫せず生成できます。Firefox・Safari では一旦メモリ上に組み立てるため、サイズに実用的な上限があります。
  • 動画(MP4/WebM)は対応ブラウザではブラウザ内蔵のエンコーダーで実際に数秒のアニメーションを録画するため、開けば本当に再生できます。それ以外の部分(ファイルの大半を占める詰め物)や、その他の画像・音声形式の中身はダミーです。あくまでサイズ・拡張子・MIME タイプの検証が目的です。

ダミーファイルの活用シーン

アップロード上限の境界値テスト

上限ちょうどのファイルと、1バイトだけ超えたファイルを作って両方試せます。エラーメッセージが出る境界が仕様どおりかを確認できます。

拡張子とMIMEタイプの判定確認

許可した形式と禁止した形式をそれぞれ生成して投入すれば、どちらの基準で弾いているのかを切り分けられます。

大容量転送時の挙動確認

数GB規模のファイルで、進捗表示やタイムアウト、途中中断からの復帰が正しく動くかを検証できます。実データを用意する必要がありません。

ストレージや帯域の見積もり

想定サイズのファイルを実際に置いてみることで、保存先の消費量や転送にかかる時間を実測できます。

広告

ファイル検証まわりの用語

MIME タイプ
ファイルの種類を示す文字列です。image/png のように表記され、アップロードの可否判定に使われます。
境界値テスト
上限や下限のちょうど境目とその前後を試す検証方法です。不具合が最も出やすい箇所として重視されます。
詰め物
目的のサイズに合わせるために追加する、意味を持たないデータのことです。形式が読み飛ばす領域へ入れるため中身は壊れません。
GiB と GB
GiB は1,073,741,824バイト、GB は1,000,000,000バイトを指します。上限の解釈がずれる原因になりやすい違いです。
ストリーム書き込み
データを少しずつ保存先へ書き出す方式です。メモリに全体を載せずに済むため、大きなファイルでも扱えます。

よくある質問

いいえ。生成処理はすべてブラウザ内で完結し、内容がサーバーに送信されることは一切ありません。

はい、対応ブラウザ(Chrome 等)ではブラウザ内蔵のエンコーダーで実際に数秒のアニメーションを録画しているため、開けば再生できます。ファイルの大部分は正確なサイズに合わせるための詰め物です。MP4 は録画に対応していないブラウザでは自動的に「構造のみ有効なプレースホルダー」に切り替わるため、生成自体が失敗することはありません。WebM は録画に対応したブラウザでのみ選択できます。

どちらの形式もファイルサイズを記録するフィールドが仕様上 32bit(最大約 4.29 GB)に固定されているためです。私たちの実装の制約ではなく、フォーマット仕様そのものの上限です。

TXT・CSV・JSON・BIN・PNG・PDF・MP4・WebM はフォーマット仕様上の上限がないため、Chrome や Edge の最新版(ディスクへの直接書き込みに対応)であれば非常に大きなサイズまで生成できます。
ツールくん

余談ですが ― 「有効なファイル」と「壊れたファイル」の境界線

ほとんどのファイル形式には、パーサーが「読み飛ばしてよい」と定めた領域があります。PNG の未知チャンク、MP4 の free ボックス、WebM の Void 要素、ZIP のコメント領域などがその例です。これらは元々「将来の拡張のために予約された、今のパーサーが無視すべき場所」として設計されており、詰め物を入れてもファイルが壊れることはありません。

動画については、詰め物の前に「本物の映像」を置くことで実際に再生可能にしています。自前で映像コーデックのビット単位のエンコードを書くのは正確さを保証しづらいため、代わりにブラウザ自身の内蔵エンコーダー(MediaRecorder API)に数秒のアニメーションを録画させ、その後ろに詰め物を追加する方式を採っています。「常に確実に有効なファイルを返す」という方針と、「本当に見える動画」という要望を両立させる工夫です。

興味深いことに、ZIP ファイルは末尾の「セントラルディレクトリ」を読むだけで中身の一覧が分かる設計になっています。これは磁気テープ時代に末尾から読み進める運用を想定した名残とも言われ、今でも大きな ZIP から特定の1ファイルだけを高速に取り出せる理由になっています。

広告