Closed4

たぶんこれが一番小さいと思います

四ツ山伊吹四ツ山伊吹

極小のファイルサイズを目指す

一覧

ファイル形式 ファイルサイズ [bytes]
テキスト 0
JSON 2
property list (JSON) 2
property list (XML) 181
property list (binary) 42
GIF
JPEG
PNG
HTML
PDF
WAV

環境

項目 バージョン
OS macOS 10.14 Mojave
shell GNU bash, version 5.1.16
shell utilities OSに準ずる
FFmpeg 5.0 "Lorentz"
ImageMagick 7.1
Python 3.9
四ツ山伊吹四ツ山伊吹

テキストファイル(?)

tiny.txt
$ : > tiny.txt

$ od -- 'tiny.txt' # -> empty

$ stat -f 'file size: %z bytes%nblock size: %k blocks' -- 'tiny.txt'
file size: 0 bytes
block size: 4096 blocks

$ file --brief --mime -- 'tiny.txt'
inode/x-empty; charset=binary

解説

空のファイル。

ファイルサイズは0バイトである。

IANAのMedia Typesにはこれに該当するものは登録されていない。macOS 10.14 Mojaveの file(1) からはinode/x-empty; charset=binaryが取得できるが、これはPHP由来らしい。

四ツ山伊吹四ツ山伊吹

JSONファイル

tiny.json
{}
$ echo -n '{}' > tiny.json

$ stat -f 'file size: %z bytes%nblock size: %k blocks' -- 'tiny.json' 
file size: 2 bytes
block size: 4096 blocks

$ python3 -m 'json.tool' -- 'tiny.json' 
{}

解説

中身はJavaScriptのオブジェクトリテラルで空のオブジェクトを表す{}の2文字で、そのファイルサイズは2バイトである。

Pythonのjson.toolモジュールはこれを妥当なJSONファイルとして処理している。

四ツ山伊吹四ツ山伊吹

property listファイル

tiny.json.plist
{}
tiny.xml1.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
$ echo '' | plutil -convert 'json'    -o 'tiny.json.plist'    -- - 
$ echo '' | plutil -convert 'xml1'    -o 'tiny.xml1.plist'    -- - 
$ echo '' | plutil -convert 'binary1' -o 'tiny.binary1.plist' -- -

$ plutil -lint -- 'tiny.'{json,xml1,binary1}'.plist'
tiny.json.plist: OK
tiny.xml1.plist: OK
tiny.binary1.plist: OK

$ stat -f '%N:  %z bytes' -- 'tiny.'{json,xml1,binary1}'.plist'
tiny.json.plist:	2 bytes
tiny.xml1.plist:	181 bytes
tiny.binary1.plist:	42 bytes

$ xxd -- 'tiny.binary1.plist'
00000000: 6270 6c69 7374 3030 d008 0000 0000 0000  bplist00........
00000010: 0101 0000 0000 0000 0001 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0009                 ..........

解説

plutil(1) を使うことで、標準入力から対応する形式のproperty listファイルへ変換できる。

このとき-convertオプションの引数に応じて、次の異なる3種のファイルが生成される:

  • json形式の場合、JavaScriptのオブジェクトリテラルで空のオブジェクトを表す{}の2文字が出力される。
  • xml1形式 (version 1 of the XML plist format) の場合、plistObjectで空のdict要素を含むXML文書が出力される。
  • binary1形式 (version 1 of the binary plist) の場合、先頭が"bplist00" (62 70 6c 69 73 74 30 30) のマジックナンバーで始まる、Apple独自のバイナリ形式で出力される。

property list形式の詳細については plist(5) のman pageを参考のこと。

このスクラップは2022/04/08にクローズされました